update-grub fails in the face of overlayroot
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
| grub2 (Ubuntu) |
High
|
Unassigned | ||
| Trusty |
High
|
Unassigned |
Bug Description
Info on overlayroot: http://
Mount configuration for an overlayroot-
$ mount
overlayroot on / type overlayfs (rw,errors=
/dev/sda5 on /media/root-ro type ext3 (ro,relatime,
/dev/sda6 on /media/root-rw type ext3 (rw,relatime,
/dev/sda1 on /boot type ext3 (rw)
When attempting to update-grub:
$ sudo update-grub
[sudo] password for administrator:
/usr/sbin/
The issue comes about in this line of the /usr/sbin/
GRUB_DEVICE=
In the short term, I'm hacking that script to pass in a value for GRUB_DEVICE, but the ideal would be to have the grub-probe binary detect when an overlayfs is / and return the device which is the bottom of the overlay.
Changed in grub2 (Ubuntu): | |
importance: | Undecided → High |
status: | New → Triaged |
tags: | added: rls-t-notfixing |
tags: | added: trusty |
Mike Friedrich (mfriedrich74) wrote : | #1 |
Matthias Kruzenski (m4dm4x1337) wrote : | #2 |
WORKING SOLUTION
================
After encountering this problem, I developed a very simple solution:
nano /usr/sbin/
-----[BEGIN]
#!/bin/sh
ARGS=
for ARG in $@; do
if [ "${ARG%%[!/]*}" = "/" ]; then
OPTIONS=
if FSTYPE=$( findmnt -n -o FSTYPE "$ARG" ); then
if [ "$FSTYPE" = "overlay" ]; then
OPTIONS=
fi
elif FSTYPE=$( findmnt -n -o FSTYPE / ); then
if [ "$FSTYPE" = "overlay" ]; then
OPTIONS=
fi
fi
if LOWERDIR=$(echo "$OPTIONS" | grep -m 1 -oP 'lowerdir=
# echo "[DEBUG] Overlay filesystem detected \${ARG} --> \${LOWERDIR}
ARG=
fi
fi
ARGS="$ARGS $ARG"
done
grub-probe-default $ARGS
exit $?
-----[END]
mv /usr/sbin/
ln -s /usr/sbin/
OPTIONAL STEP:
==============
apt-mark hold grub-pc
NOTE: package name can also be "grub-efi-amd64" or "grub-efi-ia32" or something else, depending on what you use
PROS
====
- works perfectly with overlay filesystem
- shows a general solution (maybe someone can use it to fix the grub-probe source code)
- no patching of grub scripts required (some people tried patches as solution, but grub-probe is used in many grub scripts --> patching nightmare)
CONS
====
- grub-probe must be renamed (for this reason, I recommend that you set the status of your grub package to "hold")
Matthias Kruzenski (m4dm4x1337) wrote : | #3 |
Sorry, I forgot
chmod +x /usr/sbin/
Mike Rushton (leftyfb) wrote : | #4 |
This bug is still present in Ubuntu 16.04.5
This affects all releases, not just trusty. e.g. xenial and bionic