目标:基于Rocky9.5官方ISO做定制,构建自己的ISO
- 可以添加非官方预装的RPM包
- 实现Kickstart自动化安装, 完成分区等操作
- ISO安装后,可以执行自定义脚本,比如安装你手动添加的RPM包
Rocky9 官方ISO内容分析
BaseOS/ #这个目录包含了Rocky Linux的基础操作系统环境。它提供了操作系统的核心组件和必要的软件包,用于构建和运行基本的系统
EFI/ #这个目录包含了用于UEFI(统一可扩展固件接口)启动的文件。这些文件使得系统能够在支持UEFI的硬件上启动
images/ #这个目录包含了用于云环境的Rocky Linux镜像。这些镜像可以被用于各种云服务提供商,以便于在云中部署Rocky Linux
isolinux/ #这个目录包含了启动Rocky Linux安装介质所需的引导装载器文件。这些文件负责在系统启动时加载Linux内核和初始化RAM磁盘
LICENSE #这个文件包含了Rocky Linux发行版的许可证信息。它说明了用户可以如何使用和分发Rocky Linux
media.repo #这个文件是一个YUM仓库配置文件,它允许用户直接从安装介质(如DVD或USB驱动器)安装软件包。这个文件指定了安装介质中软件包的位置,使得系统能够从本地介质而不是网络仓库安装软件
minimal/ #这个目录包含了用于最小化安装的Rocky Linux环境。它通常用于安装一个最小化的Rocky Linux系统,不包括完整的DVD镜像或者通过网络安装
.discinfo
.treeinfo
定制ISO的流程
- Rocky-9.5-x86_64-minimal.iso
- 使用Rocky-9.5-x86_64-minimal.iso安装一台虚拟机
- 将Rocky-9.5-x86_64-minimal.iso挂载到/ISO目录下
- 复制/ISO中的内容到/newISO
- 将rpm包复制到/newISO/minimal/Pakages
- 编写ks.cfg,实现kickstart定制化的自动安装
- 调用genisoimage生成VA的ISO, 调用implantisomd5校验ISO的md5
1.下载Rocky9.4 minimal官方ISO, 挂载ISO
wget https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.5-x86_64-minimal.iso
mkdir /newISO /ISO
mount -o loop Rocky-9.5-x86_64-minimal.iso ISO/
2.用下载的ISO安装一台RockyLinux9.5编译机,安装必要的编译依赖
#复制ISO文件
rsync -avz /ISO /newISO
#先记录当前rpm包列表
rpm -qa > old_rpm_list
#下载必要工具以及安装其他的rpm包
dnf install -y epel-release genisoimage anaconda createrepo mkisofs rsync
#记录安装rpm包后的rpm包列表
rpm -qa > new_rpm_list
#对比
diff old_rpm_list new_rpm_list
> perl-English-1.11-481.el9.noarch
> perl-Math-Complex-1.59-481.el9.noarch
> perl-Math-BigInt-1.9998.18-460.el9.noarch
> perl-DBI-1.643-9.el9.x86_64
> libecap-1.0.1-10.el9.x86_64
> perl-Digest-SHA-6.02-461.el9.x86_64
> httpd-filesystem-2.4.57-11.el9_4.1.noarch
> squid-5.5-13.el9_4.x86_64
#逐一下载对比的包
dnf download squid-5.5-13.el9_4.x86_64
.............
# 把所有RPM包传到/newISO/minimal/Packages目录下
#修改2a3a205fa582fa6c9e5574f71dc156ea1db70a975b1a855cc6e3c83d435ca4ce-x86_64.xml
#找到软件组为
<group>
<id>core</id>
<name>Core</name>
...........
<packagereq type="mandatory">wget</packagereq> #必定安装
<packagereq type="default">squid</packagereq> #默认安装这样在安装系统时会自动去拉本地源中的rpm包进行安装
<packagereq type="optional">docker-buildx-plugin</packagereq> #可选组件
..........
</packagelist>
</group>
# 调用createrepo更新RPM信息, 删掉原来的xml
cd /newISO/minimal
createrepo -g repodata/2a3a205fa582fa6c9e5574f71dc156ea1db70a975b1a855cc6e3c83d435ca4ce-x86_64.xml ./
3. 添加ks.cfg,实现Kickstart自动化安装ISO
ks.cfg内容可以参考本机/root目录下的/root/anaconda-ks.cfg
cp /root/anaconda-ks.cfg /newISO/ks.cfg
#修改isolinux.cfg
vim /newISO/isolinux/isolinux.cfg
内容:
label auto
menu label ^Auto Install Rocky with telnet
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=Rocky-9-5-x86_64-dvd inst.ks=cdrom:/ks.cfg
结束
4.构建ISO
cd /root
mkisofs -o RockyTelnet2.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T -V "Rocky-9-5-x86_64-dvd" -input-charset utf-8 -eltorito-alt-boot -e images/efiboot.img -no-emul-boot -isohybrid-gpt-basdat -isohybrid-apm-hfsplus /newISO/
#-V "Rocky-9-5-x86_64-dvd" 这个最好保持不动,原来是什么就是什么
测试, 安装ISO
最后安装ISO, 测试KickStart安装是否成功。