<div dir="ltr"><div dir="ltr"><div>Yes, all of the command output was run within the initramfs, not the fully booted system. /etc/hostname exists in the initramfs. <br></div><div><br></div><div>I ran a couple of tests using systemd.hostname as a kcmdline parameter:<br></div><div><br></div><div>=> cat /etc/hostname <br>testvm<br></div><div>=> cat /proc/cmdline <br>bgrt_disable systemd.hostname=testvm<br>=> journalctl -u systemd-resolved.service<br>Apr 29 13:57:36 testvm systemd-resolved[109]: Positive Trust Anchors:<br>Apr 29 13:57:36 testvm systemd-resolved[109]: . IN DS 20326 8 2 e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d<br>Apr 29 13:57:36 testvm systemd-resolved[109]: Negative trust anchors: home.arpa 10.in-addr.arpa 16.172.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa <a href="http://23.172.in-addr.ar">23.172.in-addr.ar</a>><br>Apr 29 13:57:36 testvm systemd-resolved[109]: Defaulting to hostname 'archlinux'.<br>Apr 29 13:57:36 testvm systemd[1]: Started Network Name Resolution.</div><div><br></div><div>=========<br></div><div><br></div><div>=> cat /etc/hostname <br>testvm<br>=> cat /proc/cmdline <br>bgrt_disable systemd.hostname=testvm2<br>=> hostname <br>testvm2</div><div>=> cat /proc/sys/kernel/hostname <br>testvm2<br>=> journalctl -u systemd-resolved.service<br>Apr 29 14:17:15 testvm2 systemd-resolved[109]: Positive Trust Anchors:<br>Apr 29 14:17:15 testvm2 systemd-resolved[109]: . IN DS 20326 8 2 e06d44b80b8f1d39a95c0b0d7c65d08458e880409bbc683457104237c7f8ec8d<br>Apr 29 14:17:15 testvm2 systemd-resolved[109]: Negative trust anchors: home.arpa 10.in-addr.arpa 16.172.in-addr.arpa 17.172.in-addr.arpa 18.172.in-addr.arpa 19.172.in-addr.arpa 20.172.in-addr.arpa 21.172.in-addr.arpa 22.172.in-addr.arpa 23.172.in-addr.a><br>Apr 29 14:17:15 testvm2 systemd-resolved[109]: Defaulting to hostname 'archlinux'.</div><div><br></div><div>I didn't originally notice, but look at the journalctl output. Systemd-journald knows the correct hostname in both examples in this email and also in my original email. The journal is not using the compiled fallback hostname (archlinux). So even in the initramfs, the hostname is set properly and parts of systemd are picking up the correct information. Systemd-resolved isn't getting that information, though, and uses the compiled fallback hostname. I think the core of the problem is that systemd-resolved doesn't try to read the kernel hostname, and is solely reliant on querying the hostname through dbus. <br></div><div><br></div><div>I forgot to include version information in my original post:</div><div>glibc 2.39-2</div><div>linux 6.8.7.arch1-2<br>systemd 255.5-2<br></div><div><br></div><div>Thanks,</div><div>Justin<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 29, 2024 at 6:29 AM Mantas Mikulėnas <<a href="mailto:grawity@gmail.com">grawity@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 29, 2024 at 9:16 AM Justin Brown <<a href="mailto:Justin.Brown@fandingo.org" target="_blank">Justin.Brown@fandingo.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Hello,</div><div><br></div><div>I'm having some trouble the resolved as a multicast DNS responder in early boot. I'm trying to setup a headless system with full disk encryption, and I need to connect remotely (currently using tinyssh) to unlock sysroot and other volumes before the boot continues. I use networkd to setup the dhcp interface, which works fine. The problem is that resolved won't use the value in /etc/hostname, and I can't find a resolved or networkd option to specify a hostname.</div></div></blockquote><div><br></div><div>Does your initramfs actually contain /etc/hostname? resolved will use the value that's been set as the *kernel* hostname.</div><div><br></div><div>Usually the loading of /etc/hostname into the kernel hostname is done by systemd, and if it hasn't done so then I'm guessing the file is not part of the initrd...<br></div><div><br></div><div>(But you can use "/bin/hostname -f" or "sysctl kernel.hostname" or "echo testvm > /proc/sys/kernel/hostname" or pass "systemd.hostname=testvm" as a kernel command line option to achieve the same thing.)<br></div></div><br><span class="gmail_signature_prefix">-- </span><br><div dir="ltr" class="gmail_signature"><div dir="ltr">Mantas Mikulėnas</div></div></div>
</blockquote></div></div>