这里使用的是镜像本地安装法,即定制的镜像一般用于本地安装(其实也可以作为pxe联网所需的镜像)至于pxe网络安装,也是需要类似的镜像定制操作,此文不再赘述。
需理解的概念:
GRUB引导,kickstart自动化安装,应答文件,repodata缓存
操作步骤
1.定制镜像前,我们先将源镜像手动安装成系统,即需要定制的系统,一般为图形化安装方式,需要手工操作步骤,如选取磁盘,建立分区,选择安装源,时区,语言和网络配置等,比较慢。2.进入系统,确认安装源镜像(这里是光盘)已经挂载,并确定挂载点。
3.配置yum源,安装自己想自定义的软件包,createrepo,genisoimage/mkisofs,这几个包的rpm包可以用yumdownloader(安装yum-utils)下载到单独的位置,并记录下这些自定义包的名字@1(标记)
4.建立工作目录,将源镜像内除Packages,repodata外的所有目录和拷贝到此;rsync -a --exclude
5.查询系统安装完成实际所需的安装包;rpm -qa @2
6.@2-@1的部分在源镜像目录的Packages内,将@1和@2都拷贝到工作目录的Packages目录(新建空目录即可),这样就可以实现定制的镜像内只有我们需要的安装包
7.repodata内,根据当前系统的安装方式(最小化安装还是正常安装),在源镜像repodata找到一个合适的comps-xml结尾的文件,只将其拷贝到工作目录的repodata目录(新建空目录即可)
8.工作目录的comps文件进行定制
这里给出简要讲解,文件结构大体如下
大体如上--
9.第8步操作改动了comps文件,需要重新生成repodata缓存;createrepo #1 #2 //#1为 此xml文件路径 #2为工作目录
10.进入工作目录的isolinux目录,修改grub启动配置文件isolinux.cfg,很多博客已有讨论,这里不再赘述,一般而言,我们只需如果注意引导所用的驱动盘用的LABEL,则后面跟的id必须与最后制作镜像时制定的镜像ID一致,此id标识为@3
11.定制ks.cfg文件
安装完系统后,我们可以将root下的anaconda.cfg文件作为应答模板(其中的参数即为这个系统在安装时用到的参数),然后对每个参数进行定制化,其中可参考https://www.jianshu.com/p/2fc090340d62
这里提一下,前面已经添加的自定义的软件包怎么加在ks文件里面配置自动安装?
很简单,@package标签内自行添加,用之前comps文件内定义的groupid和packagereq的值都可以。
ps,比如为了安装界面不需要图形化,只需要文本模式安装(这样加载速度快),那么我们把里面的graphical改为text即可
ps2,比如我们分区想分一个swap分区,然后剩下的空间都给/根分区
这部分可以这样去写(示例)
# Partition clearing information
clearpart --none --initlabel
# Disk partitioning information
part swap --fstype="swap" --ondisk=sda --size=1024
part / --fstype="ext4" --ondisk=sda --size=1 --grow
12.制作镜像
示例:mkisofs
mkisofs -o /ftp/c7cv1.iso -v -cache-inodes -joliet-long -R -J -T -V centos7 -c isolinux/boot.cat -b isolinux/isolinux.bin -no-emul-boot -boot-load-size 4 -boot-info-table -eltorito-alt-boot -b images/efiboot.img -no-emul-boot .
这里:
-o /ftp/c7cv1.iso是我的镜像输出的目标路径;
-V centos7指定了该iso镜像的标签LABEL,提供给@3处使用;
后面-eltorito-alt-boot -b images/efiboot.img -no-emul-boot .也兼容了UEFI启动(另外UEFI还需要修改grub.cfg,支持BIOS修改isolinux/isolinux.cfg,类似地,UEFI需修改EFI/BOOT/grub.cfg,前者被普通BIOS使用,后者是UEFI启动时使用)。