我可以从自定义 kickstart .iso 更改系统文件吗?

我可以从自定义 kickstart .iso 更改系统文件吗?

我已经设置了 CentOS 7 的 Kickstart .iso 安装,并且安装得很好(.iso 是用里面的 ks.cfg 文件编译的)。

我还没有弄清楚的是,我是否可以从 iso 安装中编辑系统文件,以便能够创建其中包含代理配置的文件 /etc/profile.d/proxy.sh ,并且稍后还能够传递一些yum 命令,以便它自行更新(这是我在本论坛中读到的,但如果没有代理设置,yum 无法执行任何操作)。

我尝试过简单地传递(就像我在终端中输入它们一样)ks.cfg 文件的 %post 部分中的命令,但它什么也没做,所以我可能不太清楚它是如何工作的。

这可以完成吗?或者我应该自动化 ansible 来完成它?

我尝试了以下 %post 部分:

%post
touch /etc/profile.d/proxy.sh
echo 'Proxy info' >> /etc/profile.d/proxy.sh
yum install whatever
%end

但我不认为我可以像这样向它发出命令,因为从技术上讲我位于安装介质而不是系统本身。

答案1

对我来说效果很好。

我使用了这个启动配置:

text
url --url=http://mirror.facebook.net/centos/8-stream/BaseOS/x86_64/os/

keyboard --vckeymap=us --xlayouts='us'
lang en-US.UTF-8
network --bootproto=dhcp --ipv6=auto --activate
firewall --enabled --service=ssh
timezone US/Eastern --isUtc
selinux --enforcing
bootloader --location=mbr
clearpart --all --initlabel
autopart
reboot --eject

rootpw --plaintext secret

%packages
@Core
%end

%post
echo 'Proxy info' >> /etc/profile.d/proxy.sh
%end

像这样测试过:

$ virt-install --name centos8-stream -r 4096 \
  --disk pool=default,size=10 \
  --os-variant centos8 \
  --location http://mirror.facebook.net/centos/8-stream/BaseOS/x86_64/os/ \
  -w network=default \
  --graphics=none \
  --console pty,target_type=serial \
  --initrd-inject ks.cfg \
  --extra-args='inst.ks=file:/ks.cfg console=ttyS0,115200n8'

当系统启动时,该文件正如预期的那样存在:

CentOS Stream 8
Kernel 4.18.0-373.el8.x86_64 on an x86_64

localhost login: root
Password:
Last login: Thu Apr 14 22:46:23 on ttyS0
-bash: Proxy: command not found
[root@localhost ~]# cat /etc/profile.d/proxy.sh
Proxy info

如果您看到不同的行为,请发布一个重现该行为的示例,我很乐意仔细查看。

相关内容