在 initrd 中将 debian 安装程序的 preseed 指定为内核参数

在 initrd 中将 debian 安装程序的 preseed 指定为内核参数

我正在使用 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 的根目录上。

  1. 从 initrd 中提取文件:

    $ mkdir /tmp/1; cd /tmp/1; cat /boot/initrd.gz |gzip -d|cpio -i

  2. 将 preseed 文件复制到 initrd 的根目录:

    $ cp preseed.cfg。

  3. 重新创建 initrd:

    $ find|cpio -o --format=newc|gzip -9c > ../initrd-custom1.gz

对每个预置文件重复上述步骤...

答案2

如果它们都是 cpio 文件,则可以使用多个 initrd 文件。其工作方式(取决于引导加载程序)是,您拥有一个 cpio 形式的常规安装程序 initrd 文件和一个仅由存储在 cpio 样式 initrd 中的按下文件组成的第二个 initrd。在启动时加载这两个 initrd 文件。这样,您就可以独立更新常规 initrd 和预置 initrd,并且可以从引导加载程序的菜单中选择每个 initrd 的多个版本。

相关内容