preseed.cfg忽略主机名设置


13

我正在使用在VirtualBox中安装Debian Wheezy(netinstall)preseed.cfg

我尝试了d-i netcfg/get_hostname string somehostd-i netcfg/get_hostname string somehost,但是在两种情况下,主机都设置为“ debian”。我同时尝试了两者,但主机仍设置为“ debian”。

Debian指南中有关预配置文件的摘录:

如果要强制使用主机名,无论DHCP服务器返回什么或IP的反向DNS条目是什么,请取消注释并调整以下行

di netcfg /主机名字符串somehost

这是一个错误还是我很不幸?

Answers:


10

不是解决方案,而是解决方法

我也遇到过类似的问题,我通过在安装结束时通过添加以下行来设置主机名来解决此问题pressed.cfg

d-i pressed/late_command string\
    in-target /bin/bash -c 'echo desired_name > /etc/hostname'

in-target是必要的,这样的/指的是目标文件系统(即最终将成为你的根文件系统),通常出现/target在安装过程中。


1
我还使用了此功能,但稍作修改,以便从DNS查找自动设置主机名:d-i pressed/late_command string in-target /bin/bash -c 'echo $(dig +short -x $(facter ipaddress)) | sed -e \'s/\.$//\' > /etc/hostname'。这使用来自puppetlabs的“因素”来获取IP地址,但是您可以使用ip addr和进行类似的操作sed
大卫·加德纳

9

如果您正在网络引导(使用PXE和朋友),则在获取预置文件之前先设置主机名,因此应在内核命令行上设置主机名,如下所示:

hostname=myhostname domain=mydomain

从debian-installer手册的附录B(在播种中)开始:

预播方法之间的重要区别是预配置文件的加载和处理点。对于initrd预先播种,这是在安装开始时进行的,甚至在询问第一个问题之前。对于预装文件,这是在CD或CD映像加载之后。对于网络预置,仅在配置网络之后。


4

我发现priority=critical从网络安装命令行(通过pxelinux.cfg目录条目)传递给内核的参数中删除该问题后,该问题就消失了。

我认为这意味着询问主机名的问题的优先级低于“关键”,因此将使用默认答案进行填充。

如果您进行了此更改,则可能会发现您必须在安装过程中稍后针对其他问题提出一些低于关键要求的答案...


3

这是debian-installer的限制。到您从网络上获取预先配置的配置文件时,netcfg它已经完成了工作并消失了,因此它不会重新获取值。

在您的preseed.cfg行中使用了一些官方的kludge

d-i preseed/run string http://example.net/d-i/jessie/preseed.sh

然后在其中preseed.sh指定:

#!/bin/sh
kill-all-dhcp; netcfg

这样一来,当建立网络preseed.cfg是牵强,preseed.sh也将是获取和运行,所以它会重新启动netcfg,然后将读取所有预置的值netcfg/*,并正确地配置它们(/etc/hostsname/etc/hosts/etc/network/interfaces如果你设置静态IP配置通过的preseed等)


您可以在没有单独文件的情况下执行此操作:d-i preseed/early_command string kill-all-dhcp; netcfg在您的预置文件中就足够了。在自动netinstall中使用Stretch进行了测试。
scy
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.