我正在为 CentOS 7 构建一个自定义 ISO,现在我只是打算将其作为绝对最小安装(基本上是概念验证)。
我正在通过使用 mkisofs 重新创建 ISO。我输入的命令是:
Mkisofs –o custom.iso –b isolinux.bin –c boot.cat –no-emul-boot –V ‘CentOS’ –boot-load-size 4 –boot-info-table –R –J –v –T isolinux/
这样就成功创建了iso并允许我将其安装到VirtualBox的光驱中。安装后,我在 rdsosreport.txt 中收到一条错误消息:
localhost dracut-initqueue[581]:警告:无法启动。
localhost dracut-initqueue[581]:警告:/dev/root 不存在
到目前为止,我已经: 将 .treeinfo、.discinfo 复制到我制作 iso 的根目录中。使用最新 CentOS-7-x86_64-Minimal-1503-01 以及 /images 和 /LiveOS 目录中的所有 /isolinux 数据创建了子目录 /isolinux。我还将 repo .xml 文件复制到根目录中。
我已经尝试了多种启动文件,但我使用的当前版本是超简约的,只是为了让它在某个时刻发挥作用。
install
cdrom
text
keyboard us
lang en_US.UTF-8
rootpw --iscrypted $6$XRIetvtFyLXRFVzZ$jX7xRxsN6M.DIqwJ9DQui9ytaqK3IAzauSqB4zeRNvMKJo6xCJQAk90XIaxh.SBn0IBtyZM7ZlHK8eSk55VnG0
timezone America/New_York --isUtc
clearpart --none --initlabel
%packages
@core
%end
我的 ks.cfg 位于 isolinux/ks/ks.cfg 中,当我启动到我正在运行的系统时linux inst.ks=cdrom:/dev/cdrom:/ks/ks.cfg
我有点迷失在哪里进一步调查,因为我想做的就是加载一个非常简单的启动文件来让 Linux 进行一键安装。我不一定需要被告知,只是为了指出正确的方向,因为我已经尝试了相当多不同的启动配置并出现了相同的错误。
编辑:我通过编辑 isolinux.cfg 文件并将卷 ID 更改为 mkisofs 中设置的 -V 卷 ID,然后在安装时选择此菜单选项来实现此功能。
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS quiet inst.ks=cdrom:/dev/cdrom:/ks/ks.cfg
由于我的 kickstart 文件太贫乏,我现在正在调查 iso 中存在其他错误。
答案1
如果存在于主文件系统中,并且相关设备预计不会在启动时动态创建,则您可能会成为不正确 mkisof/dev/root
的受害者, 并且无法按预期工作。mkisofs
我建议首先检查一下:
find isolinux/ -name root -ls
验证 /dev/root 是否在 master 中,然后调用:
isoinfo -i custom.iso -R -J -find -name root -ls
验证 ISO 映像是否也包含 /dev/root。
答案2
作为旁注,任何时候您看到dracut
(例如您的dracut-initqueue
)都意味着您位于您的initrd
.这initrd
是一个小映像,会加载到 RAM 中,负责挂载root
分区,然后切换到它并调用init
.我的猜测是,您的inst.stage2
具体问题是解决问题的,它告诉initrd
在哪里可以找到root
分区(标记为“CentOS”的分区)。