喂!我目前正在从头开始在非lfs系统上工作,以busybox作为明星。现在,我的登录信息是:
(none) login:
因此,我的主机名已损坏。hostname
带给我(none)
太多。
我遵循的指南告诉我将主机名扔到/etc/HOSTNAME
。我也试过了/etc/hostname
。无论我做什么,都会hostname
返回(none)
-除非我运行hostname <thename>
或hostname -F /etc/hostname
。现在显然,我不希望每次有人刚安装发行版时都执行此操作-那么,真正的默认文件是什么(如果没有)/etc/hostname
?
提前致谢!
hostname
查询主机名时,包括BusyBox在内的常用工具集中的命令不会退回到文件中。它们仅报告内核从系统调用中返回的主机名称,内核将其初始化为字符串,例如“(none)”,该字符串可通过重新配置和重建内核来更改。(在系统术语中,这是动态主机名,又名瞬态主机名; Linux内核实际报告的主机名。)没有“默认文件”。
通常有一个单发服务在系统启动时运行,相当早就开始运行,它会查找这些不同的文件,提取主机名,并使用它初始化内核主机名。(在系统术语中,此配置字符串是静态主机名。)例如:
hostname
服务,该服务set-dynamic-hostname
在安装本地文件系统之后以及在用户登录服务之前运行工具集的命令。这项工作分为(仅)在更改配置时完成的工作和(每个)系统引导完成的工作:
/etc/hostname
和/etc/HOSTNAME
合并,并进行合并rc.conf
。rc.conf
配置此服务的hostname
环境变量。set-dynamic-hostname
无需关心所有配置源的可能性,只需从为服务配置的环境中获取环境变量,然后从中设置动态主机名即可。systemd
自身的代码中,该操作甚至在服务管理启动之前运行。该systemd
程序本身去并读取/etc/hostname
(和也/proc/cmdline
,但不能 /etc/HOSTNAME
也不 /etc/default/hostname
也不是 /etc/sysconfig/network
),并传递给内核。/etc/hostname
,并回退到从read读取的shell变量rc.conf
,并根据其值设置动态主机名。如果要“从头开始”构建系统,则必须提供与之等效的服务。用于从文件设置主机名的BusyBox和ToyBox工具为hostname -F "${filename}"
,因此您必须提供针对/etc/hostname
该文件或某些此类文件运行该命令的服务。
BusyBox附带runit的服务管理工具集,而简单的runit服务将类似于以下内容:
#!/ bin / sh -e exec 2>&1 exec主机名-F / etc / hostname
hostnamectl
。系统手册页。Freedesktop.org。set-dynamic-hostname
”。用户命令手册。nosh工具集。软件。rc.conf
合并”。nosh指南。软件。hostname
。Toybox命令列表。landley.net。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句