如果我想运行一个 shell 脚本,而该脚本是来自我的 RHEL7 kickstart%post
部分的自己的文件,我需要把这个额外的文件放在哪里,我将使用什么路径来运行它?例如,如果我的kickstart.cfg
文件位于我的isolinux
目录中,我是否应该将额外的 shell 脚本放在 isolinux 文件中,然后通过放入./shell-script
我的%post
部分来运行它?我想我的一些困惑来自于不理解 ISO 如何在安装时解压所有内容以成为系统。
我希望这样做可以使我的 ISO 更加模块化,因为我想要运行的 shell 脚本有几千行长,我觉得这会使 kickstart 文件变得复杂,特别是如果我想在安装后运行多个脚本时。
作为参考,这是我的 kickstart 文件:
lang en_US
keyboard us
timezone <location> --isUtc
rootpw <password> --iscrypted
#platform x86, AMD64, or Intel EM64T
reboot
text
cdrom
bootloader --location=mbr --append="rhgb quiet crashkernel=auto"
zerombr
clearpart --all --initlabel
autopart
auth --passalgo=sha512 --useshadow
selinux --enforcing
firewall --enabled --ssh
skipx
firstboot --disable
%pre
%end
%post
<RUN SHELL SCRIPT HERE>
%end
%packages
%end
答案1
我将脚本放在我的isolinux
目录中,并将以下内容添加到%post
我的 kickstart 文件的部分:
%post --nochroot --logfile=/mnt/sysimage/root/ks-post.log
cp /run/install/repo/script.sh /mnt/sysimage/root/
sh /mnt/sysimage/root/script.sh
%end
请注意,要将文件复制到/root
新安装的系统的目录中,您需要该--nochroot
标志。这给我带来了一些问题,因为我尝试运行的脚本中有一些/
以基本目录开头的路径。我仍然想出了如何解决这个问题,但我已经为此开了一个新票。