我正在使用 PXE 和 USB 设置安装程序,它运行良好,但我需要在启动菜单中添加一些不同的选项以使用不同的预置文件。这适用于不同的情况,例如是否设置软件 RAID,以及使用多少个磁盘等。
因此,理想情况下,我希望滚动一个包含多个预置文件的 initrd 映像,并使用内核参数指定要使用哪一个,如手动的。但是,这不起作用。似乎无论我如何指定 preseed/file= ,安装程序都只会查找 /preseed.cfg 。
下面是我的 pxelinux.cfg/default 文件的一个示例(syslinux 也存在非常相似的配置):
DISPLAY boot.txt
DEFAULT install_raid_1disk
LABEL install_raid_1disk
kernel installer/2b/linux
append vga=normal initrd=/installer/2b/initrd.gz preseed/file=/preseed-net-raid-1disk.cfg --
LABEL install_raid_2disks
kernel installer/2b/linux
append vga=normal initrd=/installer/2b/initrd.gz preseed/file=/preseed-net-raid-2disks.cfg --
LABEL install_noraid
kernel installer/2b/linux
append vga=normal initrd=/installer/2b/initrd.gz preseed/file=/preseed-net-noraid.cfg --
PROMPT 1
TIMEOUT 20
答案1
Zoredache 的提议非常有趣。我会先尝试一下。如果不行,我建议为每个预置文件创建一个 initrd。将预置文件放在 initrd 的根目录上。
从 initrd 中提取文件:
$ mkdir /tmp/1; cd /tmp/1; cat /boot/initrd.gz |gzip -d|cpio -i
将 preseed 文件复制到 initrd 的根目录:
$ cp preseed.cfg。
重新创建 initrd:
$ find|cpio -o --format=newc|gzip -9c > ../initrd-custom1.gz
对每个预置文件重复上述步骤...
答案2
如果它们都是 cpio 文件,则可以使用多个 initrd 文件。其工作方式(取决于引导加载程序)是,您拥有一个 cpio 形式的常规安装程序 initrd 文件和一个仅由存储在 cpio 样式 initrd 中的按下文件组成的第二个 initrd。在启动时加载这两个 initrd 文件。这样,您就可以独立更新常规 initrd 和预置 initrd,并且可以从引导加载程序的菜单中选择每个 initrd 的多个版本。