[Bug 1543647] Re: grub-pc gets confused by variables in /etc/default/grub.d/*.cfg files

Ken Sharp 1543647 at bugs.launchpad.net
Fri Nov 2 15:23:48 UTC 2018


** Tags added: trusty

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

Title:
  grub-pc gets confused by variables in /etc/default/grub.d/*.cfg files

Status in grub2 package in Ubuntu:
  New

Bug description:
  I have made a Debian package, that installs a *.cfg file into
  /etc/default/grub.d/ with the following contents:

  GRUB_CMDLINE_LINUX_DEFAULT="$GRUB_CMDLINE_LINUX_DEFAULT
  usbcore.authorized_default=0"

  The package runs update-grub in its postinst script.

  The idea is, of course, to add "usbcore.authorized_default=0" to the
  kernel command line without having to edit /etc/default/grub. When the
  package gets installed after grub-pc is installed, everything seems to
  work as expected at first.

  But with every grub-pc update, /etc/default/grub gets changed and
  every time "usbcore.authorized_default=0" gets added to the
  GRUB_CMDLINE_LINUX_DEFAULT variable in /etc/default/grub, and the
  corresponding debconf variable gets updated to this value too. So with
  every update of grub-pc new redundant parameters are added to the
  kernel command line, and the kernel command line gets longer and
  longer.

  When my package gets installed before grub-pc (during a complete re-installation of the system), then /etc/default/grub will contain the following:
  GRUB_CMDLINE_LINUX_DEFAULT="usbcore.authorized_default=0"

  So in this case, the default value ("quiet splash") gets discarded
  completely.

  Is this working as intended? I would assume, that grub-pc should leave
  the GRUB_CMDLINE_LINUX_DEFAULT variable and the corresponding debconf
  variable unchanged.


  I also tried a different approach, that is putting a file in
  /etc/default/grub.d/ with the following contents:

  GRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.authorized_default=0"

  With this approach it is not possible to build multiple packages that
  each just add a single parameter to the kernel command line. But for
  my use-case this would be sufficient, but the value above ("quiet
  splash usbcore.authorized_default=0") still gets populated into
  /etc/default/grub and the corresponding debconf variable. So, when my
  package gets removed, I still have to modify /etc/default/grub and the
  debconf variable, to clean everything up, which I think the whole
  /etc/default/grub.d/  mechanism should prevent me from having to do.

  So this leads me to believe that the /etc/default/grub.d/ mechanism in
  grub-pc is broken.

  
  I think the problem is, that the config maintainer script of the package grub-pc is sourcing /etc/default/grub AND /etc/default/grub.d/*.cfg, when trying to find a sensible value for GRUB_CMDLINE_LINUX_DEFAULT, and then writes it back into the debconf database.

  I think the config script should only source /etc/default/grub, but
  not /etc/default/grub.d/*.cfg.

  
  Looking at the config maintainer script, the problem seems exist in all Ubuntu versions from Precise (probably even Quantal, haven't checked that, but IMHO this was when /etc/default/grub.d was introduced) to Wily. I have tested it myself in Precise and Trusty.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1543647/+subscriptions



More information about the foundations-bugs mailing list