preseed.cfg 忽略主机名设置

Tod*_*ddM 14 debian hostname netcfg preseed

我正在使用preseed.cfg.

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

摘自Debian 的关于预配置文件的指南

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

di netcfg/hostname 字符串 somehost

这是一个错误还是我只是不走运?

Jos*_* R. 10

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

我也遇到了类似的问题,我通过在安装后通过在我的末尾添加的以下行设置主机名来解决它pressed.cfg

d-i pressed/late_command string\
    in-target /bin/bash -c 'echo desired_name > /etc/hostname'
Run Code Online (Sandbox Code Playgroud)

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


小智 9

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

hostname=myhostname domain=mydomain
Run Code Online (Sandbox Code Playgroud)

来自debian-installer 手册的附录 B(预置)的介绍

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


小智 5

我发现当我priority=critical从 net install 命令行(通过 pxelinux.cfg 目录条目)传入内核的参数中删除时,这个问题就消失了。

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

如果您确实进行了此更改,您可能会发现您必须在稍后的安装过程中为其他问题预先准备一些其他低于关键的答案......


Mat*_*lis 5

这是 debian 安装程序的限制。当您从网络获取预置配置文件时,它netcfg已经完成了它的工作并且消失了,因此它不会重新获取值。

有点官方的拼凑是在你的行中使用preseed.cfg

d-i preseed/run string http://example.net/d-i/jessie/preseed.sh
Run Code Online (Sandbox Code Playgroud)

然后在其中preseed.sh指定:

#!/bin/sh
kill-all-dhcp; netcfg
Run Code Online (Sandbox Code Playgroud)

这样,当网络建立并被preseed.cfg获取时,preseed.sh也将被获取并运行,因此它将重新启动,netcfg然后读取所有预置值netcfg/*并正确配置它们(/etc/hostsname,,/etc/hosts如果/etc/network/interfaces您通过预置等设置静态IP配置)

  • 您可以在没有单独文件的情况下执行此操作:`di preseed/early_command string Kill-all-dhcp; 您的预置文件中的 netcfg` 就足够了。在自动网络安装中使用 Stretch 进行了测试。 (4认同)