[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