自己定制ISO使用ks.cfg实现自动安装时,可以在%post阶段执行添加文件、创建帐号、安全加固等操作,一般都会涉及从安装介质拷贝文件到目标系统,网上很多文章都是直接mount固定设备比如/dev/sr0,但实际安装过程中,ISO文件可能被刻录成光盘或U盘,另外UEFI和BIOS模式也有影响,因此无法提前知道是哪个设备。
看一下安装过程,实际上是先引导了一个内存中的vmlinuz + initrd,以它为基础实现将需要的文件安装到目标系统,此时安装介质被挂载到/run/install/repo,目标系统被挂载到/mnt/sysimage,在安装后处理的%post阶段,允许你指定在内存系统中操作还是chroot到目标系统中操作。如果需要拷贝安装介质上的文件,就以--nochroot模式运行,如果需要在目标系统上执行操作比如创建帐号,那就以chroot模式运行。并且ks.cfg中允许存在多个%post,放个例子:
# 以nochrrot模式运行,此时在内存系统上运行,可以访问原始安装介质
# 如果要记录日志,注意需要放到/mnt/sysimage下,否则重启就没了
%post --nochroot --log=/mnt/sysimage/var/log/inst1.log
cp -rf /run/install/repo/soft /mnt/sysimage #把安装介质上的soft目录拷贝到目标系统的根目录下,方便后面访问
%end
# 以chroot模式运行,此时相当于在目标系统上操作,/就是目标系统的根
# 安装日志可以直接放到/var/log下
%post --log=/var/log/inst2.log
useradd -s /sbin/nologin test #在目标系统创建帐号
mkdir /usr/local/test #在目标系统创建目录
cp -f /soft/test.cfg /usr/local/test #此时的/soft就是上面步骤拷贝过来的
%end