Package: preseed Version: 1.113 Severity: normal X-Debbugs-Cc: Salvatore Bonaccorso <car...@debian.org>
Filing this against preseed for visibility, after Salvatore Bonaccorso reported that D-I Bookworm Alpha 1 was dealing with preseeding hostname=foo just fine, and that it's no longer the case with D-I Bookworm Alpha 2: the hostname question is asked, with either the default value (“debian”) or a value determined from the DHCP hostname (if any). The relevant code didn't change on the installer side, but Linux mainline got a relevant commit: 5a704629f2 (first released in v6.0-rc1): https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=5a704629f2c1ba33bbb444cb18e6957e97c76e8f At first glance, a side effect is that the kernel seems to “eat” the hostname=foo parameter instead of leaving it alone as it did in earlier versions, possibly hiding it from the installer: -Unknown kernel command line parameters "--- BOOT_IMAGE=/install.amd/vmlinuz vga=788 hostname=miaou", will be passed to userspace +Unknown kernel command line parameters "--- BOOT_IMAGE=/install.amd/vmlinuz vga=788", will be passed to userspace <red herring> Now, parameters might be added before or after the '---' marker, and moving hostname=foo from after to before this marker makes this issue go away. Checking the story behind that marker, i.e. debian-installer-utils version 1.109 first published in jessie to fix #762007, I'm not sure what to think about it… A cursory look at it suggests parameters found after that marker should be visible to both the installer and the kernel, but that's not the case here. Looking at the user-space side, I'm still seeing “hostname=foo” at the end of /proc/cmdline, but calling user-params only returns “quiet”, and that's the case for both D-I Bookworm Alpha 1 and Alpha 2. Both images have the same /etc/preseed_aliases, which dictates what user-params does. </red herring> Adding DEBCONF_DEBUG=developer on the kernel command line, searching for lines with “cdebconf” and “hostname”, the big difference is that line, only in Alpha 1: debconf: Adding [ID] -> [netcfg/get_hostname] It happens early in the boot process (at start-up), and that comes from debconf's question_variable_add() function. Right after that, there's an extra “frontend” line (not “cdebconf” this time) marking that question as seen, which means the hostname prompt is skipped down the line. Why the difference? The actual consequence of the Linux change is not in /proc/cmdline or user-params or preseed, it's just just about early start-up: /init is run without hostname=foo in its environment, which explains why the debconf preseeding is no longer happening. I'm not sure where to go from here though. Compensate for this change by adding a special case for this parameter in env2debconf? The existing code seems unfriendly enough as it is… maybe implement /proc/cmdline lookup from netcfg instead? Not doing anything? All three options seem suboptimal to me… Cheers, -- Cyril Brulebois -- Debian Consultant @ DEBAMAX -- https://debamax.com/