[Bug 1845239] [NEW] preseed/early_command doesn't work from kernel command line

Andrew Kanaber 1845239 at bugs.launchpad.net
Tue Sep 24 17:36:00 UTC 2019


Public bug reported:

Using the Ubuntu netboot installer as obtained from
http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/installer-
amd64/current/images/netboot/ubuntu-installer/amd64/ the installer fails
to run a preseed/early_command set from the kernel command line (added
to the menu entry in grub.cfg).

A precisely equivalent config does cause the command to run in Debian 10
and 9, so this appears to be a difference between Debian's version of
debian-installer and the one in Ubuntu. The preseeded command can be
made to work in Ubuntu if instead placed in a preseed.cfg inserted into
the initrd, so the issue appears to be specific to setting
preseed/early_command from the kernel commandline.

For example, setting only the following grub config options: (this is on
a Xen system)

    set root=(xen/xvdd,msdos1)
    linux /installer-ubuntu/18.04/linux "preseed/early_command=logger wibble"
    initrd /installer-ubuntu/18.04/initrd.gz      

and the interrupting the install, starting a shell and running 'grep
wibble /var/log/syslog' shows only the kernel commandline, whereas on
Debian 10 with the following grub config

    set root=(xen/xvdd,msdos1)
    linux /installer-debian/10/vmlinuz "preseed/early_command=logger wibble"
    initrd /installer-debian/10/initrd.gz

and again interrupting the install and running 'grep wibble /var/log/syslog' from the shell produces:
Sep 24 17:09:57 kernel: [    0.000000] Command line: "preseed/early_command=logger wibble"
Sep 24 17:09:57 kernel: [    0.412794] Kernel command line: "preseed/early_command=logger wibble"
Sep 24 17:09:57 preseed: running preseed command preseed/early_command: logger wibble
Sep 24 17:09:57 root: wibble

adding DEBCONF_DEBUG=5 to the kernel command line on Ubuntu and running
'egrep early_command\|wibble /var/log/syslog' produces: 
Sep 24 17:19:13 kernel: [    0.000000] Command line: "preseed/early_command=logger wibble" DEBCONF_DEBUG=5
Sep 24 17:19:13 kernel: [    0.000000] Kernel command line: "preseed/early_command=logger wibble" DEBCONF_DEBUG=5
Sep 24 17:19:14 frontend: --> GET preseed/early_command
Sep 24 17:19:14 frontend: --> SET preseed/early_command logger wibble
Sep 24 17:19:14 frontend: --> METAGET preseed/early_command type
Sep 24 17:19:14 frontend: --> FSET preseed/early_command seen true

So the preseed value does get picked up by debconf, it's just that the
installer never actually runs the command.

Thanks for your help,

** Affects: base-installer (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to base-installer in Ubuntu.
https://bugs.launchpad.net/bugs/1845239

Title:
  preseed/early_command doesn't work from kernel command line

Status in base-installer package in Ubuntu:
  New

Bug description:
  Using the Ubuntu netboot installer as obtained from
  http://archive.ubuntu.com/ubuntu/dists/bionic-updates/main/installer-
  amd64/current/images/netboot/ubuntu-installer/amd64/ the installer
  fails to run a preseed/early_command set from the kernel command line
  (added to the menu entry in grub.cfg).

  A precisely equivalent config does cause the command to run in Debian
  10 and 9, so this appears to be a difference between Debian's version
  of debian-installer and the one in Ubuntu. The preseeded command can
  be made to work in Ubuntu if instead placed in a preseed.cfg inserted
  into the initrd, so the issue appears to be specific to setting
  preseed/early_command from the kernel commandline.

  For example, setting only the following grub config options: (this is
  on a Xen system)

      set root=(xen/xvdd,msdos1)
      linux /installer-ubuntu/18.04/linux "preseed/early_command=logger wibble"
      initrd /installer-ubuntu/18.04/initrd.gz      

  and the interrupting the install, starting a shell and running 'grep
  wibble /var/log/syslog' shows only the kernel commandline, whereas on
  Debian 10 with the following grub config

      set root=(xen/xvdd,msdos1)
      linux /installer-debian/10/vmlinuz "preseed/early_command=logger wibble"
      initrd /installer-debian/10/initrd.gz

  and again interrupting the install and running 'grep wibble /var/log/syslog' from the shell produces:
  Sep 24 17:09:57 kernel: [    0.000000] Command line: "preseed/early_command=logger wibble"
  Sep 24 17:09:57 kernel: [    0.412794] Kernel command line: "preseed/early_command=logger wibble"
  Sep 24 17:09:57 preseed: running preseed command preseed/early_command: logger wibble
  Sep 24 17:09:57 root: wibble

  adding DEBCONF_DEBUG=5 to the kernel command line on Ubuntu and running
  'egrep early_command\|wibble /var/log/syslog' produces: 
  Sep 24 17:19:13 kernel: [    0.000000] Command line: "preseed/early_command=logger wibble" DEBCONF_DEBUG=5
  Sep 24 17:19:13 kernel: [    0.000000] Kernel command line: "preseed/early_command=logger wibble" DEBCONF_DEBUG=5
  Sep 24 17:19:14 frontend: --> GET preseed/early_command
  Sep 24 17:19:14 frontend: --> SET preseed/early_command logger wibble
  Sep 24 17:19:14 frontend: --> METAGET preseed/early_command type
  Sep 24 17:19:14 frontend: --> FSET preseed/early_command seen true

  So the preseed value does get picked up by debconf, it's just that the
  installer never actually runs the command.

  Thanks for your help,

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/base-installer/+bug/1845239/+subscriptions



More information about the foundations-bugs mailing list