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


20

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

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

谢谢拉梅什


你也可以更容易和更灵活的选择更多的信息在这里使用红帽的kickstart这个工作access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/...
fyarci

Answers:


45
  1. 创建目录以挂载源。

    mkdir /tmp/bootiso
    
  2. 循环挂载您要修改的源ISO。(从Red Hat / CentOS下载。)

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

    mkdir /tmp/bootisoks
    
  4. 将源媒体复制到工作目录。

    cp -r /tmp/bootiso/* /tmp/bootisoks/
    
  5. 卸载源ISO并删除目录。

    umount /tmp/bootiso && rmdir /tmp/bootiso
    
  6. 更改工作目录上的权限。

    chmod -R u+w /tmp/bootisoks
    
  7. 将已为软件包修改的Kickstart脚本复制%post到工作目录。

    cp /path/to/someks.cfg /tmp/bootisoks/isolinux/ks.cfg
    
  8. 将所有其他RPM复制到目录结构并更新元数据。

    cp /path/to/*.rpm /tmp/bootisoks/Packages/.
    cd /tmp/bootisoks/Packages && createrepo -dpo .. .
    
  9. 将kickstart添加到启动选项。

    sed -i 's/append\ initrd\=initrd.img/append initrd=initrd.img\ ks\=cdrom:\/ks.cfg/' /tmp/bootisoks/isolinux/isolinux.cfg
    
  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/. .
    
  11. (可选)isohybrid如果要将ddISO文件转换为可引导USB密钥,请使用。

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

    implantisomd5 /tmp/boot.iso
    

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


1
那么,您是否有可能错过了步骤4或使其步履蹒跚?
亚伦·科普利2014年

3
@AaronCopley是的,您可能是对的。我也发现了这一点:github.com/joyent/mi-centos-7对我有帮助。
sivann 2014年

1
我相信在步骤9中,您必须提供last参数。(点)表示当前目录。奇怪的默认行为,但没有这些,mkisofs创建一个iso文件,该文件仅包含顶层目录中的文件,不包含子目录及以后的子目录。
hshib 2015年

2
我在第4步中也遇到了问题。使用“ cp”命令不会复制隐藏文件.discinfo和.treeinfo。没有这些,创建的iso将在安装过程中失败,并抱怨“找不到CD / ROM”。
hshib 2015年

1
您可以使用以下命令通过-cp -r / tmp / bootiso /。/ tmp / bootisoks /复制所有内容(这有点棘手,请注意/ tmp / bootiso /之后的单行。)
hshib 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.