如何在 CentOS 中创建自定义 ISO 映像

Ram*_*mar 20 iso kickstart disk-image

我正在尝试创建一个自定义 ISO 映像,它将安装所需的最小 RPMS 以及我的应用程序的一些自定义编写的 RPM。并且还想执行一些安装后步骤,例如配置我的应用程序和 VPN 配置等。

我在 google 上看到了一些链接,但它们指向从安装的磁盘或 ISO 映像创建 repo 和 ISO。

谢谢拉梅什

Aar*_*ley 49

  1. 创建一个目录来挂载你的源代码。

    mkdir /tmp/bootiso
    
    Run Code Online (Sandbox Code Playgroud)
  2. 循环挂载您正在修改的源 ISO。(从 Red Hat / CentOS 下载。)

    mount -o loop /path/to/some.iso /tmp/bootiso
    
    Run Code Online (Sandbox Code Playgroud)
  3. 为您的自定义媒体创建一个工作目录。

    mkdir /tmp/bootisoks
    
    Run Code Online (Sandbox Code Playgroud)
  4. 将源媒体复制到工作目录。

    cp -r /tmp/bootiso/* /tmp/bootisoks/
    
    Run Code Online (Sandbox Code Playgroud)
  5. 卸载源 ISO 并删除目录。

    umount /tmp/bootiso && rmdir /tmp/bootiso
    
    Run Code Online (Sandbox Code Playgroud)
  6. 更改工作目录的权限。

    chmod -R u+w /tmp/bootisoks
    
    Run Code Online (Sandbox Code Playgroud)
  7. 将已针对软件包修改的 Kickstart 脚本复制%post到工作目录。

    cp /path/to/someks.cfg /tmp/bootisoks/isolinux/ks.cfg
    
    Run Code Online (Sandbox Code Playgroud)
  8. 将任何其他 RPM 复制到目录结构并更新元数据。

    cp /path/to/*.rpm /tmp/bootisoks/Packages/.
    cd /tmp/bootisoks/Packages && createrepo -dpo .. .
    
    Run Code Online (Sandbox Code Playgroud)
  9. 将 kickstart 添加到启动选项。

    sed -i 's/append\ initrd\=initrd.img/append initrd=initrd.img\ ks\=cdrom:\/ks.cfg/' /tmp/bootisoks/isolinux/isolinux.cfg
    
    Run Code Online (Sandbox Code Playgroud)
  10. 创建新的 ISO 文件。

    cd /tmp/bootisoks && \ 
    mkisofs -o /tmp/boot.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -V "CentOS 7 x86_64" -R -J -v -T isolinux/. .
    
    Run Code Online (Sandbox Code Playgroud)
  11. (可选)isohybrid如果要将ddISO 文件复制到可启动 USB 密钥,请使用。

    isohybrid /tmp/boot.iso
    
    Run Code Online (Sandbox Code Playgroud)
  12. 添加 MD5 校验和(以允许测试媒体)。

    implantisomd5 /tmp/boot.iso
    
    Run Code Online (Sandbox Code Playgroud)

如果您在创建 Kickstart脚本时需要更多帮助,我建议您从 Red Hat 官方文档开始。

  • @AaronCopley 是的,你可能是对的。我还发现了这个:https://github.com/joyent/mi-centos-7 对我有帮助。 (3认同)
  • 我也遇到了第 4 步的问题。使用“cp”命令它不会复制隐藏文件 .discinfo 和 .treeinfo。如果没有这些,在安装过程中创建的 iso 会失败,并抱怨“找不到 CD/ROM”。 (2认同)