修改重新封装 Linux ISO
Lapin Gris Lv3

请注意:本文档旨在帮助您根据现有的 ISO 来创建一个 自定义的ISO文件。如果您希望从零开始,可以参考OpenCloudOS ISO镜像构建项目,

https://gitee.com/OpenCloudOS/ocs_lorax_build_image

以 Rocky-9.4-x86_64-dvd.iso 为例,

挂载 ISO

挂载 ISO 到 /mnt 目录, 因为 ISO 镜像挂载后是只读的,因为我们需要先将 ISO 里的文件复制到新的目录,后续对 ISO 的修改在这个新的目录中进行。

# 挂载 iso
mount -o loop Rocky-9.4-x86_64-dvd.iso /mnt

# 将 ISO 文件拷贝到工作目录,本示例使用的工作目录为 /opt/iso
cp -a /mnt /opt/iso

# umount iso
umount /mnt

新增/删除 RPM 包

大多是时候,修改 ISO 是新增/删除 RPM 包,比如更换内核包,添加自定义包等等。

Rocky 9.4 ISO RPM 存放目录在 AppStream 和 BaseOS 两个目录下, 与其 yum 源的目录结构相同。

RPM 以及 repodata, 目录结构如下:

# tree -d 1 AppStream/
AppStream/
├── Packages
└── repodata

# tree -d 1 BaseOS/
BaseOS/
├── Packages
└── repodata

子目录 Packages 存放 RPM 包文件,repodata 存放 RPM 包的元数据。在 Packages 目录下放入新的包或者删除不需要的包后,需要重新生成 repodata。

createrepo --update AppStream/
createrepo --update BaseOS/

ISO 换标

修改 Rocky 为 CustomizedRocky,

sed -i 's/Rocky/CustomizedRocky/g' EFI/BOOT/grub.cfg
sed -i 's/Rocky/CustomizedRocky/g' isolinux/grub.conf
sed -i 's/Rocky/CustomizedRocky/g' isolinux/isolinux.cfg

封装 ISO

完成修改后,重新封装 ISO, 命令如下,

genisoimage -U -r -v -J -joliet-long -V "CustomizedRocky-9-4-x86_64-dvd" -volset "CustomizedRocky-9-4-x86_64-dvd" \
-A "CustomizedRocky-9-4-x86_64-dvd" -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
-boot-info-table -eltorito-alt-boot -e images/efiboot.img -no-emul-boot \
-o /Rocky-9.4-x86_64-customized.iso .

需要注意的是,确保命令中 -V, -volset 和 -A 选项的值与 ISO 里的引导加载程序配置匹配。

参考链接

1、Working with ISO Images

2、使用 overlay2 或 bind 重新构建 ISO 镜像 适用于 ISO CICD 方案的一种加速方案