安装在 initrd 根目录中的 preseed.cfg 在 Ubuntu 安装中无法被识别(17.10 amd64 桌面或服务器)

安装在 initrd 根目录中的 preseed.cfg 在 Ubuntu 安装中无法被识别(17.10 amd64 桌面或服务器)

一段时间以来,我一直在使用一种在 Debian ISO 中预置 initrd 的过程。我刚刚尝试对 Ubuntu 17.10 ISO 的桌面版和服务器版执行相同的过程,一切看起来都很好,直到我启动它时,完全看不到安装程序看到preseed.cfg我放置在其 initrd 中的迹象。例如,安装程序首先询问我使用哪种语言/语言环境,尽管我的系统preseed.cfg有:

d-i debian-installer/locale string en_US.UTF-8
d-i console-setup/ask_detect boolean false
d-i keyboard-configuration/layoutcode string us
d-i debian-installer/keymap select us
d-i keymap select us
d-i keyboard-configuration/xkb-keymap select us

我查看了所有 F* 键选项,但找不到任何与 Debian 安装程序的“自动安装”相当的选项,该选项会解压缩 initrd 并preseed.cfg在其根目录中查找/使用来回答所有可能的安装程序问题。Ubuntu 预置文档确认 Ubuntu 预置应该以相同的方式工作,如下所示:

…加载和处理预配置文件的时间点。对于 initrd 预置,这是在安装开始时,在第一个问题被询问之前。

是否有人能根据 Ubuntu ISO 和 Debian ISO 之间的差异以及通过 initrd 预先植入它们的过程对可能出现的问题提供一些有用的提示?

这些页面(这里这里, 和这里) 表明,据报道较新的桌面 ISO 无法预置,而服务器 ISO 应该可以“更好地”工作。因此,我下载了 17.04(和 17.10)服务器,用它重复了我的测试,并得到了相同的行为。

FTR,我使用的嵌入 initrd 的过程preseed.cfg取自Debian 维基。具体来说,我使用的是“isofiles”方法,即挂载 ISO(我使用 udevil),将文件复制到本地存储,然后将预置文件添加到 initrd

正如我所说的,这个过程对于 Debian ISO 来说非常有效,但对于我尝试过的任何桌面或服务器 Ubuntu ISO 似乎根本不起作用。

Ubuntu 帮助证实我的假设是正确的:

如果您使用 initrd 预置,则只需确保preseed.cfginitrd 的根目录中包含一个名为的文件。安装程序将自动检查此文件是否存在并加载它。

我接下来尝试的是将我的preseed.cfgUbuntu 官方示例预置文件看看 di 和 Ubuntu 安装程序使用/支持不同的预置指令是否存在问题。我没有发现太大差异。为确保万无一失,我逐字逐句地安装了Ubuntu 官方示例预置文件在 17.10 服务器 ISO 的 initrd 中,生成的安装程序仍然需要人工回答问题,就好像根本没有预先设置一样。

答案1

在服务器上,为了获得语言问题的答案,您必须将其添加auto=true到启动菜单中。

下面是一个使用 pxe 菜单的示例auto=true(grub 菜单应该类似):

label install
    menu default
    menu label ^Preseed Install
    kernel ubuntu-installer/amd64/linux
    append auto=true vga=normal initrd=ubuntu-installer/amd64/initrd.gz 

取自https://wiki.debian.org/DebianInstaller/Preseed#Loading_the_preseeding_file_from_a_webserver

“auto”命令以自动模式启动安装,其中主机名、语言环境和键盘映射的配置被推迟,以便可以从网络加载的预置文件中回答这些问题。您可以使用“install url=...”,但您必须手动回答这些问题,无论您的预置配置中有什么。如果未指定服务器路径,则将尝试路径“di//preseed.cfg”,例如 di/stretch/preseed.cfg。请注意,网络配置选项(netcfg/*)不能通过网络加载的 preseed.cfg 文件应用,因为必须先配置网络,然后才能获取预置文件。如果必须声明网络配置选项,则需要将所需选项作为内核选项传递(例如 netcfg/choose_interface=eth0)。

相关内容