在尝试为 CentOS 8 构建自定义启动 ISO 时,我在运行安装程序时遇到了困难。ISO 现在可以启动了,但启动过程挂在我认为安装程序应该启动的地方。
在添加自定义的 kickstart 文件时,我需要编辑两个文件以在启动时引用该 kickstart 文件。
- 对于 BIOS 安装,这一页告诉我编辑
isolinux/isolinux.cfg
以添加ks=cdrom:/ks.cfg
到以 开头的行的末尾append
。 - 对于 UEFI 安装,这一页建议编辑
EFI/BOOT/grub.cfg
以添加inst.ks=cdrom:/ks.cfg
到以 开头的行的末尾linuxefi
。
这些修改中的一个或两个导致安装程序启动过程挂起。但是,如果我将 a 添加/ks.cfg
到 ISO 的根目录并执行mkisofs
没有修改这些文件,我可以获得默认安装程序。所以,
某物添加[inst.]ks=cdrom:/ks.cfg
到这两个文件会导致 ISO 安装程序挂起,而 kickstart 文件的简单存在并不是一个因素。
答案1
旧的处理方式在 CentOS 8 中不再适用。从 kickstart 文件查找和执行的选项范围已经扩大。这迫使inst.ks
选项比以前更加详细。第一条线索来自Red Hat高级启动选项文档。它说,
如果指定设备而不是路径,安装程序会在您指定的设备上的 /ks.cfg 中查找 Kickstart 文件。
但是,[inst.]ks=cdrom:/ks.cfg
实际上并没有指定设备!如果您查看这些append
或linuxefi
行,您将看到 stage2 安装程序的条目:
inst.stage2=hd:LABEL=CentOS-8-3-2011-x86_64-dvd
请注意,它指定了设备类型hd
。 stage2 安装程序的特定hd
设备由 标识LABEL=CentOS-8-3-2011-x86_64-dvd
。因此,考虑到上面的 Red Hat 块引用,指定ks.cfg
ISO 根目录中命名的 kickstart 文件的正确方法是
inst.ks=hd:LABEL=CentOS-8-3-2011-x86_64-dvd
如果您想为 kickstart 文件使用不同的名称,您可以添加
inst.ks=hd:LABEL=CentOS-8-3-2011-x86_64-dvd:/<filename>
使用适合您的用例的任何文件名。有关 ISO 引导选项格式的更多信息,看一下这个。