我新安装的 Ubuntu 显示lele-ThinkPad-X230
为其主机名。我下载了 debian-installer 和 ubuntu-installer (ubiquity) 来查看代码,但没有找到任何有用的信息。这是 DHCP 还是某种硬件数据库?
lele-ThinkPad-X230
,用破折号分隔:第一个lele
是我的用户名,其余的是机器名称(联想)。那么当我没有输入主机名时,安装程序如何获取这些信息?
答案1
Debian 和 Ubuntu 安装程序都通过 DHCP 获取其主机名,因为大多数 DHCP 服务器都会随租约提供该主机名。
例如,在我的 Windows 笔记本电脑上运行 Ubuntu GUI 安装程序会建议使用主机名“Ed-PC”,因为这是我在 Windows 下分配的名称,也是我在请求 DHCP 租约时分配的名称。
根据 Debian 安装文档https://www.debian.org/releases/stable/amd64/ch03s03.html.en#idp52296784:
如果您所连接的网络使用 DHCP(动态主机配置协议)来配置网络设置,则您不需要此信息,因为 DHCP 服务器将在安装过程中将其直接提供给您的计算机。
答案2
当我使用 Ubuntu 时我相信它使用lele-laptop
。
有一个名为 的 Debian 软件包laptop-detect
。它是“是/否”测试,然后用于笔记本电脑的额外设置。Ubuntu 会将其用作“-laptop”后缀。
laptop-detect 的手册页引用了dmidecode
. dmidecode
报告了机器的命名信息,如“Thinkpad X230”(大概有足够的信息来判断它是否是笔记本电脑)。它不需要庞大的硬件数据库,它只是依赖于供应商在固件中提供的有用信息(呵呵)。
将硬件名称放入主机名可能是一个合乎逻辑的扩展。
我认为我已经看到一些 Windows 版本进行了类似的设置,但只是使用供应商(例如联想)......尽管据我所知,它可能是供应商对操作系统的修改。
DHCP 机制是可行的 - 如果您看到的内容与笔记本电脑的先前主机名完全匹配。但这似乎不太可能,Ubuntu 必须明确实现它 - 我看不出为什么他们会这么做。
答案3
您可以通过编辑文件 /etc/hostname 来设置系统主机名。您还应该编辑 /etc/hosts 并更新它(如果它出现在那里)。
答案4
hostname
该包负责创建/etc/init/hostname.conf
文件,进而设置系统主机名。该包已预先安装在您的 Ubuntu 操作系统上(默认)。
$ dpkg -S /etc/init/hostname.conf
hostname: /etc/init/hostname.conf
$ cat /etc/init/hostname.conf
# This task is run on startup to set the system hostname from /etc/hostname,
# falling back to "localhost" if that file is not readable or is empty and
# no hostname has yet been set.
description "set system hostname"
start on startup
task
exec hostname -b -F /etc/hostname
从man hostname
When called without any arguments, the program displays the current
names.
hostname will print the name of the system as returned by the gethost‐
name(2) function.