在一些场景下需要在业务安装之前升级操作系统内核版本,既如此,直接定制内核版本,当操作系统灌装完成时自带高版本内核,效率会更高。
安装依赖
1 | yum install -y createrepo genisoimage syslinux isomd5sum ncurses-devel bc flex |
挂载官方Minimal镜像
这里我们先采用Minimal镜像进行实验
1 | [root@localhost opt]# cd /opt |
拷贝镜像内容
1 | [root@localhost opt]# mkdir /ISO |
替换5.15内核包
此前在在CentOS 7上编译和升级Linux内核一文中,介绍了如何编译和升级5.15内核,这里我们就复用。
先看下Minimal镜像中自带的内核相关包
1 | [root@localhost opt]# cd /ISO/Packages/ |
删除3.10内核包:
1 | rm -f kernel-3.10.0-1160.el7.x86_64.rpm |
将5.15.145版本内核放入/ISO/Packages/
内
1 | [root@localhost Packages]# ls -lrt kernel-*.rpm |
编辑引导文件
BIOS引导
编辑isolinux/isolinux.cfg
文件,需要修改label linux部分,其中label部分menu default唯一,设置镜像默认进入模式
1 | label linux |
EFI引导
编辑EFI/BOOT/grub.cfg
文件,修改menuentry ‘Install CentOS 7’部分
1 | search --no-floppy --set=root -l 'CentOS 7 x86_64' |
准备comps.xml
在生成安装盘之前,需要注意对comps.xml
文件进行修改。这个文件用来告知安装程序anaconda,用户选择了某个组是应该有哪些包需要安装,定义了在安装过程中,包是如何被捆绑在一起的。
1 | [root@localhost ISO]# ls -lrt /mnt/cdrom/repodata/ |
拷贝comps.xml
,用于二次编辑使用
1 | [root@localhost ISO]# cp /mnt/cdrom/repodata/*-c7-minimal-x86_64-comps.xml /ISO/comps.xml |
在kernel-tools处,添加新内核kernel-ml
1 | <packagereq type="default">iwl7260-firmware</packagereq> |
生成repodata
删除旧有的repodata,并通过刚才编辑的comps.xml
文件重新生成新的repodata
1 | [root@localhost ISO]# rm -rf /ISO/repodata/ |
生成ISO镜像
1 | [root@localhost ISO]# genisoimage -joliet-long -V CentOS7 -o CentOS-7.9-minimal-kernel-5.15.145.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -cache-inodes -T -eltorito-alt-boot -e images/efiboot.img -no-emul-boot /ISO/ |
查看生成的镜像
1 | [root@localhost ISO]# ls -lrt *.iso |
isohybrid则是syslinux的一个组件,可以将ISO镜像转换为可在BIOS和UEFI两种模式下启动的混合镜像。
1 | [root@localhost ISO]# isohybrid CentOS-7.9-minimal-kernel-5.15.145.iso |
使用implantisomd5校验并写入md5值
1 | [root@localhost ISO]# implantisomd5 CentOS-7.9-minimal-kernel-5.15.145.iso |
版本验证
1 | [root@192 develop]# uname -a |
DVD版本镜像处理
上面Minimal镜像的处理,如果使用DVD版本,则处理时略有部分不同,首先看一下DVD版本相关的kernel包
1 | [root@localhost Packages]# ls -lrt kernel-*.rpm |
相比Minimal镜像多出不少,因此需要将kernel-devel也做处理
1 | [root@localhost Packages]# rm -f kernel-3.10.0-1160.el7.x86_64.rpm kernel-devel-3.10.0-1160.el7.x86_64.rpm |
将5.15.145版本内核和devel包放入/ISO/Packages/
内
1 | [root@localhost Packages]# ls -lrt kernel-*.rpm |
在编辑comps.xml
文件时也有不同,需要在kernel-tools处同时添加kernel-ml、kernel-ml-devel
1 | [root@localhost Packages]# cp /mnt/cdrom/repodata/*-c7-x86_64-comps.xml /ISO/comps.xml |
另外DVD版本中携带了vdo相关包,其中vdo-6.1.3.23和kmod-kvdo-6.1.3.23依赖内核kernel-3.10.0-1160
1 | Running transaction |
因此需要将comps.xml中如下两行删除
1 | <packagereq type="default">kmod-kvdo</packagereq> |
否则在DVD版本采用Gnome Desktop或者Server with GUI时会出现Error checking software selection
。
其他步骤则与Minimal镜像一样,制作完毕后安装即可。
参考
1、https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/storage_administration_guide/vdo-integration
2、https://wiki.syslinux.org/wiki/index.php?title=Isohybrid
3、https://linux.die.net/man/1/implantisomd5
4、https://fedoraproject.org/wiki/How_to_use_and_edit_comps.xml_for_package_groups