[Bug 1868138] Re: 18.04LTS upgrade of grub-common:amd64 FAILs in post-install; incorrectly REWRITES user's /etc/default/grub

pgnd 1868138 at bugs.launchpad.net
Thu Mar 19 20:35:51 UTC 2020


in comments from ubuntu-devel

	[17:50] <juliank> Continuation lines seem wrong to have in that file
	[17:50] <juliank> If you add a continuation line between 8.14 and 8.15, you can remove the continuation line again
	[17:51] <juliank> A future update should probably handle that, but a continuation line here is not expected, and there's no point rolling it back as that's a non default unexpected thing

as stated clearly at

        https://www.gnu.org/software/grub/manual/grub/html_node/Simple-
configuration.html#Simple-configuration-handling

	...
	The file /etc/default/grub controls the operation of grub-mkconfig. It is sourced by a shell script, and so must be valid POSIX shell input; normally, it will just be a sequence of ‘KEY=value’ lines, but if the value contains spaces or other special characters then it must be quoted
	...

per POSIX

https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_02_01

                Escape Character (Backslash)

                        A <backslash> that is not quoted shall preserve
the literal value of the following character, with the exception of a
<newline>. If a <newline> follows the <backslash>, the shell shall
interpret this as line continuation. The <backslash> and <newline> shall
be removed before splitting the input into tokens. Since the escaped
<newline> is removed entirely from the input and is not replaced by any
white space, it cannot serve as a token separator.

all that's to say that continuation lines are, and have been, supported
in posix-shell-compliant /etc/default/grub

that it's "non default unexpected thing" is specious ... at _best_ it's
unused/untested by the pacakgers.

fwiw, with grub2-2.04 on numerous _other_ systems there are no problems
whatsoever with these continuation lines;  and Ubu 18LTS didn't either
... until 'recently'.

no, i don't yet have an identifying bisect ...


also, it's been commented that current bug is 'non-destructive'.

that's open to interpretation.

modifying an end-user config file persistently, and without user-
interaction/-confirmmation ... such that a subsequent
(re)upgrade/(re)install doesn't fix the problem, but rather requires a
manual edit/fix of the config in order qualifies as 'destructive'. here,
anyway.

-- 
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/1868138

Title:
  18.04LTS upgrade of grub-common:amd64 FAILs in post-install;
  incorrectly REWRITES user's /etc/default/grub

Status in grub2 package in Ubuntu:
  Incomplete

Bug description:
  upgrading packages, as usual, on a long-time-in-production Ubuntu
  1804LTS server instance,

  	lsb_release -rd
  		Description:    Ubuntu 18.04.4 LTS
  		Release:        18.04
  	uname -rm
  		5.3.0-40-generic x86_64

  today's update included grub,

          cat /var/log/apt/history.log

  		Start-Date: 2020-03-19  08:58:38
  		Commandline: apt-get upgrade
  		Upgrade: grub-common:amd64 (2.02-2ubuntu8.14, 2.02-2ubuntu8.15), grub2-common:amd64 (2.02-2ubuntu8.14, 2.02-2ubuntu8.15), grub-pc:amd64 (2.02-2ubuntu8.14, 2.02-2ubuntu8.15), grub-pc-bin:amd64 (2.02-2ubuntu8.14, 2.02-2ubuntu8.15)
  		Error: Sub-process /usr/bin/dpkg returned an error code (1)
  		End-Date: 2020-03-19  09:01:52

  
  the update FAILs in grub post-processing

  apparently, the install is -- new behavior -- REWRITING, incorrectly,
  the 'GRUB_CMDLINE_LINUX=' stanza in /etc/default/grub -- my _local_
  end-user config

  before

  	cat /etc/default/grub
  		...
  		GRUB_CMDLINE_LINUX_DEFAULT=""
  	53	GRUB_CMDLINE_LINUX="rd.shell rd.udev.log_priority=info rd.auto=1 \
  		 dolvm lvmwait=/dev/mapper/VG0_ROOT \
  		 rootfstype=ext4 rootdelay=90 rootflags=journal_checksum \
  		 noresume pcie_aspm=off max_loop=256 transparent_hugepage=never clocksource=tsc clocksource_failover=tsc tsc=reliable force_tsc_stable=1 \
  		 scsi_mod.use_blk_mq=1 \
  		 net.ifnames=1 biosdevname=0 \
  		 showopts noquiet \
  		 log_buf_len=16M print_fatal_signals=1 systemd.log_level=info systemd.log_target=kmsg earlyprintk=vga,keep \
  		 mitigations=auto spec_store_bypass_disable=on \
  		"
  		...

  exec an update, as usual

  	apt-get update && apt-get upgrade
  		Hit:1 http://security.ubuntu.com/ubuntu bionic-security InRelease
  		Hit:2 http://us.archive.ubuntu.com/ubuntu bionic InRelease
  		Hit:3 http://us.archive.ubuntu.com/ubuntu bionic-updates InRelease
  		Hit:4 http://us.archive.ubuntu.com/ubuntu bionic-backports InRelease
  		Reading package lists... Done
  		Reading package lists... Done
  		Building dependency tree
  		Reading state information... Done
  		Calculating upgrade... Done
  		0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
  		1 not fully installed or removed.
  		After this operation, 0 B of additional disk space will be used.
  		Do you want to continue? [Y/n]
  	-> Y
  		Do you want to continue? [Y/n] Y

  now, fails

  		Setting up grub-pc (2.02-2ubuntu8.15) ...
  		Sourcing file `/etc/default/grub'
  		/etc/default/grub: line 53: unexpected EOF while looking for matching `"'
  		dpkg: error processing package grub-pc (--configure):
  		 installed grub-pc package post-installation script subprocess returned error exit status 2
  		Errors were encountered while processing:
  		 grub-pc
  		E: Sub-process /usr/bin/dpkg returned an error code (1)

  it's incorrectly re-written /etc/default/grub

  	cat /etc/default/grub
  		...
  		GRUB_CMDLINE_LINUX_DEFAULT=""
  	53	GRUB_CMDLINE_LINUX="rd.shell rd.udev.log_priority=info rd.auto=1 dolvm lvmwait=/dev/mapper/VG0_ROOT rootfstype=ext4 rootdelay=90 rootflags=journal_checksum noresume pcie_aspm=off max_loop=256 transparent_hugepage=never clocksource=tsc clocksource_failover=tsc tsc=reliable force_tsc_stable=1 scsi_mod.use_blk_mq=1 net.ifnames=1 biosdevname=0 showopts noquiet log_buf_len=16M print_fatal_signals=1 systemd.log_level=info systemd.log_target=kmsg earlyprintk=vga,keep mitigations=auto spec_store_bypass_disable=on"
  		 dolvm lvmwait=/dev/mapper/VG0_ROOT \
  		 rootfstype=ext4 rootdelay=90 rootflags=journal_checksum \
  		 noresume pcie_aspm=off max_loop=256 transparent_hugepage=never clocksource=tsc clocksource_failover=tsc tsc=reliable force_tsc_stable=1 \
  		 scsi_mod.use_blk_mq=1 \
  		 net.ifnames=1 biosdevname=0 \
  		 showopts noquiet \
  		 log_buf_len=16M print_fatal_signals=1 systemd.log_level=info systemd.log_target=kmsg earlyprintk=vga,keep \
  		 mitigations=auto spec_store_bypass_disable=on \
  		"

  prepending the EXISTING 'GRUB_CMDLINE_LINUX=' with a duplicate of
  itself ... plus an errant trailing `"'

  fyi,

  apt-cache policy grub2
  grub2:
    Installed: (none)
    Candidate: 2.02-2ubuntu8.15
    Version table:
       2.02-2ubuntu8.15 500
          500 http://us.archive.ubuntu.com/ubuntu bionic-updates/universe amd64 Packages
       2.02-2ubuntu8 500
          500 http://us.archive.ubuntu.com/ubuntu bionic/universe amd64 Packages

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



More information about the foundations-bugs mailing list