我换了新的主板、CPU,并重新命名了一台机器。旧机器名称为bulldozer
,新机器名称为skylake
。我用了hostnamectrl --static
根据如何在 Fedora 21 中永久更改主机名因为机器是 Fedora 25。
当机器启动时,systemd
仍然使用旧名称:
skylake:~$ sudo dmesg | grep bulldozer
[ 1.085387] systemd[1]: Set hostname to <bulldozer>.
skylake:~$ hostname
skylake
根据honamectrl
手册页,听起来--static
应该这样做:“...用于在启动时初始化内核主机名的静态主机名...”。
Grepping/etc
没有显示任何旧名称的匹配结果:
skylake:~$ sudo grep -R bulldozer /etc/ 2>/dev/null
skylake:~$
我也尝试过/sbin/sysctl -q -w kernel.hostname=skylake
根据正确设置主机名 - Amazon EC2 上的 Fedora 20。但它也没有奏效。
如何更改 的主机名systemd
?
答案1
根据本文,您应该运行hostnamectl set-hostname name
where name
is 您想要的主机名。我认为你应该以 root 身份运行它。
答案2
这是一个糟糕的答案,但它是为了完整性而提供的。今天更新了内核。旧的 Fedora 内核是4.9.13-200.fc25.x86_64
.新内核是4.9.13-201.fc25.x86_64
.
内核更新后,我手动删除旧内核的/boot
使用rm
。这是我在 Linux 上的标准过程(我总是执行它来删除不需要的东西)。在这种情况下,我跑了:
su -
cd /boot
rm -rf *4.9.13-200*
rm -rf .*4.9.13-200*
手动删除后,我重新生成 Grub 菜单,然后重新启动。这也是我在 Linux 上的标准流程。
grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
重新启动后,旧名称不再存在:
$ dmesg | egrep -i '(bulldozer|skylake)'
[ 0.065941] Performance Events: PEBS fmt3+, Skylake events, 32-deep LBR, full-width counters, Intel PMU driver.
[ 1.096957] systemd[1]: Set hostname to <skylake>.
所以,有些东西影响了 systemd 使用的主机名,但我不确定它是什么。
我之前尝试过再生grub.cfg
,所以我不相信这是答案。我猜测某个包触发了修正,重新启动后我观察到事情正如预期的那样。
答案3
当前版本的 systemd 中已弃用此方法,但我将其保留在这里作为一些评论的参考。
最快的方法是
sudo echo -e "bulldozer" > /etc/hostname
重新启动。Systemd 的网络堆栈应该会选择它并在启动时应用它。
您还可以使用文本编辑器并
/etc/hostname
手动创建/编辑。 (我推荐nano
,但是你需要先在fedora上手动安装)
看来今天Systemdhostnamectl
应该是实现这一目标的方法。