From eb770a4a207b2e9e3080068c1df22b69ed44d4b5 Mon Sep 17 00:00:00 2001 From: Beniamino Galvani Date: Thu, 7 May 2020 07:48:12 +0200 Subject: [PATCH] network-manager: set kernel hostname from the command line Since commit ff70adf873ef ("initrd: save hostname to a file in /run"), the initrd generator of NetworkManager parses the hostname from 'ip=' options of the kernel command line and writes it to /run/NetworkManager/initrd/hostname. When that file exists, set the kernel hostname. In presence of multiple hostnames in the command line, the last one wins. Hostnames from command line always have precedence over ones received through DHCP. This is a bit different from the legacy network module that gives higher precedence to the hostname (from DHCP or command line) of the last interface that is brought up, which depends on the udev order. --- modules.d/35network-manager/nm-run.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules.d/35network-manager/nm-run.sh b/modules.d/35network-manager/nm-run.sh index fc5280a1..61752384 100755 --- a/modules.d/35network-manager/nm-run.sh +++ b/modules.d/35network-manager/nm-run.sh @@ -10,6 +10,10 @@ for i in /usr/lib/NetworkManager/system-connections/* \ else /usr/sbin/NetworkManager --configure-and-quit=initrd --no-daemon fi + + if [ -s /run/NetworkManager/initrd/hostname ]; then + cat /run/NetworkManager/initrd/hostname > /proc/sys/kernel/hostname + fi break done