一段时间以来,我一直在使用一种在 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.cfg
initrd 的根目录中包含一个名为的文件。安装程序将自动检查此文件是否存在并加载它。
我接下来尝试的是将我的preseed.cfg
与Ubuntu 官方示例预置文件看看 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)。