如何在Fedora 21中永久更改主机名


35

我听说在新版本的fedora中更改主机名是通过hostnamectl命令完成的。另外,我最近(并且成功地)使用这种方法在Arch Linux上更改了主机名。但是,在运行时:

[root@localhost ~]# hostnamectl set-hostname --static paragon.localdomain
[root@localhost ~]# hostnamectl set-hostname --transient paragon.localdomain
[root@localhost ~]# hostnamectl set-hostname --pretty paragon.localdomain

重新启动后,更改不会保留(这与许多人的说法相反)。怎么了?

  • 真的不想/etc/hostname手动编辑。

我还应该指出,这是完全库存的软呢帽。我什至还没有安装我的核心应用程序。


这也有关于该问题的类似信息:ask.fedoraproject.org/en/question/37413/…和此:dbaora.com/install-fedora-20
slm

确实,这是我的资料之一。但是,我无法从该页面提取的任何解决方案都有效……
PythonNut 2014年

您最近安装/设置了该系统?自安装以来是否存在问题?还有那些hostnamectl命令有错误吗?最好的线索指向发布了某些东西的bugzilla错误的链接。
slm

我安装在10/1/14上,此后hostnamectl命令不起作用,但现在它们起作用了。
PythonNut 2014年

对您而言,可接受的解决方案中链接的错误只是一个不幸的时机。他们已经将其固定在上游,并且应该为将来的用户而努力。
slm

Answers:


39

设置主机名的命令肯定是hostnamectl

root ~ # hostnamectl set-hostname --static "YOUR-HOSTNAME-HERE"

这是标题为此功能的其他更多信息,标题为:在Amazon EC2上正确设置主机名-Fedora 20

此外,手册页hostnamectl

HOSTNAMECTL(1)                    hostnamectl                   HOSTNAMECTL(1)

NAME
       hostnamectl - Control the system hostname

SYNOPSIS
       hostnamectl [OPTIONS...] {COMMAND}

DESCRIPTION
       hostnamectl may be used to query and change the system hostname and
       related settings.

       This tool distinguishes three different hostnames: the high-level
       "pretty" hostname which might include all kinds of special characters
       (e.g. "Lennart's Laptop"), the static hostname which is used to
       initialize the kernel hostname at boot (e.g. "lennarts-laptop"), and
       the transient hostname which is a default received from network
       configuration. If a static hostname is set, and is valid (something
       other than localhost), then the transient hostname is not used.

       Note that the pretty hostname has little restrictions on the characters
       used, while the static and transient hostnames are limited to the
       usually accepted characters of Internet domain names.

       The static hostname is stored in /etc/hostname, see hostname(5) for
       more information. The pretty hostname, chassis type, and icon name are
       stored in /etc/machine-info, see machine-info(5).

       Use systemd-firstboot(1) to initialize the system host name for mounted
       (but not booted) system images.

Fedora 21中有一个错误,其中SELinux阻止了hostnamectl访问,其标题为:Bug 1133368-SELinux阻止了systemd-hostnam对文件hostname的访问进行“取消链接”

该错误似乎与之相关。/etc/hostname安装时SELinux上下文未正确应用于文件存在问题。这体现在hostnamectl无法操纵文件的工具中/etc/hostname。该线程提供了以下解决方法:

$sudo restorecon -v /etc/hostname

注意:该修补程序已应用于Anaconda(安装工具),以便将来对新用户而言此问题将消失。


3

可能的原因是您的dhcp客户端。如果您使用的是dhcpcd(这很常见),则解决方案是将以下行添加到/etc/dhcpcd.conf

nohook hostname

这样可以防止dhcpcd调出更改系统主机名的脚本。

默认情况下,dhcpcd运行所有存在的挂钩/lib/dhcpcd/dhcpcd-run-hooks(系统上的路径可能不同)。使用nohook禁用特定的。


1
对于我的21和Rawhide安装,/etc/dhcpd.conf都不存在。此外,systemctl status dhcpcd返回not-found (Reason: No such file or directory)
PythonNut 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.