这可能与将 18.04 LTS 作为虚拟机运行有关(主机是 Win 2016 DC),但我不知道如何解决。我尝试了所有我知道的方法来更改主机名,但它总是在重新启动时恢复到我构建机器时输入的主机名。我尝试了以下方法:
- hostnamectl 设置主机名 xxx。
- 直接编辑主机名。
- 向 hostnamectl 添加 --static。
- 编辑主机文件并添加所需的主机名。
- 重新启动之前搜索驱动器以查找对旧主机名的引用。
- 我在网上还发现了一些其他奇怪的建议,不值得一提。
我目前没有该服务器的 DNS。
例子:
XXXX@iwrxmail:~# hostnamectl
Static hostname: iwrxmail
Pretty hostname: Interwrx Ubuntu Mail Server
Transient hostname: ctl
Icon name: computer-vm
Chassis: vm
Machine ID: 01ef0d836d2c4945b51a4fab8e506381
Boot ID: e6608fe238d843f883cde52af7631a79
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
Kernel: Linux 4.15.0-20-generic
Architecture: x86-64
XXXX@iwrxmail:~# hostnamectl set-hostname test
XXXX@iwrxmail:~# hostnamectl
Static hostname: test
Icon name: computer-vm
Chassis: vm
Machine ID: 01ef0d836d2c4945b51a4fab8e506381
Boot ID: e6608fe238d843f883cde52af7631a79
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
Kernel: Linux 4.15.0-20-generic
Architecture: x86-64
root@iwrxmail:~# cat /etc/hostname
test
root@iwrxmail:~# cat /etc/hosts
127.0.0.1 localhost.localdomain localhost
::1 localhost6.localdomain6 localhost6
# The following lines are desirable for IPv6 capable hosts
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
However on reboot I get this again ....
XXXX@iwrxmail:~# hostnamectl
Static hostname: iwrxmail
Icon name: computer-vm
Chassis: vm
Machine ID: 01ef0d836d2c4945b51a4fab8e506381
Boot ID: 25a00676b22048eb8d43492c9de4f147
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
Kernel: Linux 4.15.0-20-generic
Architecture: x86-64
我在使用 18.04 测试版时就遇到过这个问题,但我想我会等待发布版本。我还认为这可能是因为我克隆了虚拟机,但这是一个使用刚刚发布的发行版从头构建的全新版本。
我错过了什么?
提前致谢。
答案1
首先编辑 /etc/cloud/cloud.cfg 并将参数“preserve_hostname”从“false”设置为“true”,然后编辑 /etc/hostname。
答案2
主机名正在被重置,cloud-init
可以通过以下方式禁用(之后您可以以正常方式设置主机名,例如使用hostnamectl
):
sudo touch /etc/cloud/cloud-init.disabled
或者您可以使用 cloud-init 并创建/修改文件user-data
(通常位于:)/var/lib/cloud/seed/nocloud-net/user-data
,以便将hostname:
条目设置为所需的主机名(假设preserve_hostname:
未设置)。首先,您需要清除现有配置:
sudo cloud-init clean
然后从新的/修改后的用户数据文件重新初始化 cloud-init 的配置:
sudo cloud-init init
然后重新启动。参见cloud-init 文档更多细节。
答案3
对于像我这样的“懒人”,一个复制粘贴的解决方案:)
sudo sed -i '/preserve_hostname: false/c\preserve_hostname: true' /etc/cloud/cloud.cfg && sudo hostnamectl set-hostname ReplaceThisWithTheHostnamePreferred
第一个命令允许操作系统记住新的主机名。
第二部分(&& 之后)仅当第一部分成功完成后才会运行,并将主机名设置为所需的值。
问候! 大号
答案4
如果您不想将旧版本保留在某处,则只需打开文件/var/lib/cloud/seed/nocloud-net/user-data
,然后在以下行更改您的主机名:
hostname: cm-lc-nc
然后运行:
cloud-init clean
cloud-init init
然后它将设置/etc/hostname
为新值,并在重新启动后保持一致。这将删除以前主机名的所有痕迹,并且如果preserve_hostname
由于某种原因重置或忽略,您仍然不会丢失新主机名。