asdf@MiWiFi-R2D-srv:~$ hostnamectl
Static hostname: Debian
Transient hostname: MiWiFi-R2D-srv
Icon name: computer-desktop
Chassis: desktop 🖥️
Machine ID: 3b0e2483f1a718e2cd0885fd53e8b700
Boot ID: 65661c83045b4ffc81d64d49e4cca518
Operating System: Debian GNU/Linux 12 (bookworm)
Kernel: Linux 6.1.0-9-amd64
Architecture: x86-64
Hardware Vendor: Gigabyte Technology Co., Ltd.
Hardware Model: G1.Sniper B5
Firmware Version: F6
/etc/hostname 用的是 Static hostname\\
而 hostname 修改的是 Transient hostname\\
电脑启动的时候用的是 Transient hostname\\
我们需要
hostnamectl set-hostname Debian
这个命令修改 hostname 为 Debian\\
这样会同时把 static 和 transient 名字修改了\\
当重启后,''transient hostname''就会改为 ''static'' 遵循的是重启读取的是''/etc/hostname''\\
**linux设置了静态IP之后还会获取动态IP导致hostname无法修改的问题解决**
原因是network与NetworkManager服务冲突
第一步是禁用NetworkManager服务
systemctl stop NetworkManager.service
systemctl disable NetworkManager.service
第二步重启network服务
systemctl restart network
\\
\\
原因是connman\\
https://wiki.archlinuxcn.org/wiki/ConnMan\\
ConnMan 默认会更改临时 hostname。与 X authority 一起使用时会有问题:如果用旧的 hostname 生成了 xauth magic coookie 之后,ConnMan 改变了你的 hostname,那么将无法创建新的窗口,会显示诸如 No protocol specified 和 Can't open display: :0.0 的错误。手动重置 hostname 可以解决这个问题,但根本的解决办法是从一开始就防止 ConnMan 改变你的 hostname。把下面的配置加入 /etc/connman/main.conf 即可:
[General]
AllowHostnameUpdates=false
改变这个文件后记得重启 connman.service。\\
要测试的话,建议一边观察 systemd 日志,一边插拔几次网线接口。