[Bug 1247905] Re: update-grub fails in the face of overlayroot

Maholemono For2ando 1247905 at bugs.launchpad.net
Mon Jun 13 15:59:55 UTC 2022


I have made some implovement to /usr/sbin/grub-probe-overlay code.

-----[BEGIN]--------------------------------------------------------------
#!/bin/sh

ARGS=

for ARG in $@; do
 if [ "${ARG%%[!/]*}" = "/" ]; then

  OPTIONS=

  path="$ARG"
  while true; do
   if FSTYPE=$( findmnt -n -o FSTYPE "$path" ); then
    if [ "$FSTYPE" = "overlay" ]; then
	 OPTIONS=$(findmnt -n -o OPTIONS "$path")
	 break
	else
	 break
    fi
   fi
   if [ "$path" = "/" ]; then break; fi
   path=$(dirname "$path")
  done

  if LOWERDIR=$(echo "$OPTIONS" | grep -m 1 -oP 'lowerdir=\K[^,]+'); then
   #echo "[DEBUG] Overlay filesystem detected ${ARG} --> ${LOWERDIR}${ARG%*/}" 1>&2
   ARG="${LOWERDIR}${ARG%*/}"
  fi
 fi
 ARGS="$ARGS $ARG"
done

grub-probe-default $ARGS

exit $?
-----[END]----------------------------------------------------------------

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

Title:
  update-grub fails in the face of overlayroot

Status in grub2 package in Ubuntu:
  Triaged
Status in grub2 source package in Trusty:
  Triaged

Bug description:
  Info on overlayroot:
  http://blog.dustinkirkland.com/2012/08/introducing-overlayroot-
  overlayfs.html

  Mount configuration for an overlayroot-configured box:

  $ mount
  overlayroot on / type overlayfs (rw,errors=remount-ro)
  /dev/sda5 on /media/root-ro type ext3 (ro,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
  /dev/sda6 on /media/root-rw type ext3 (rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered)
  /dev/sda1 on /boot type ext3 (rw)

  When attempting to update-grub:

  $ sudo update-grub
  [sudo] password for administrator: 
  /usr/sbin/grub-probe: error: cannot find a device for / (is /dev mounted?).

  The issue comes about in this line of the /usr/sbin/grub-mkconfig
  script:

  GRUB_DEVICE="`${grub_probe} --target=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.

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




More information about the foundations-bugs mailing list