I'm using overlayroot configured as
overlayroot=tmpfs:swap=1,recurse=0 in my /etc/overlayroot.conf.
overlayroot is working as expected. I've managed to update grub by simply disabling overlayroot and then reenabling it as I wish (I'm setting up an image, therefore I'm making quite a few changes along the way)
The problem is, on reboot I get the grub menu appearing for 30s regardless of how I've set the grub config. Oh and I should mention, each time I've run update-grub and was not in read-only mode.
Here's my grub config. I also tried to no avail
# If you change this file, run 'update-grub' afterwards to update # /boot/grub/grub.cfg. # For full documentation of the options in this file, see: # info -f grub -n 'Simple configuration' GRUB_DEFAULT=0 GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_TIMEOUT_QUIET=true GRUB_TIMEOUT=0 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian` GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" GRUB_CMDLINE_LINUX="" # Uncomment to enable BadRAM filtering, modify to suit your needs # This works with Linux (no patch required) and with any kernel that obtains # the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...) #GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef" # Uncomment to disable graphical terminal (grub-pc only) #GRUB_TERMINAL=console # The resolution used on graphical terminal # note that you can use only modes which your graphic card supports via VBE # you can see them in real GRUB with the command `vbeinfo' #GRUB_GFXMODE=640x480 # Uncomment if you don't want GRUB to pass "root=UUID=xxx" parameter to Linux #GRUB_DISABLE_LINUX_UUID=true # Uncomment to disable generation of recovery mode menu entries #GRUB_DISABLE_RECOVERY="true" # Uncomment to get a beep at grub start #GRUB_INIT_TUNE="480 440 1" # Disable OS Prober for selecting dual boot scenarios. GRUB_DISABLE_OS_PROBER=true
I think what is happening is, overlayroot changes the mount points. So when overlayroot is disabled it boots without showing the grub menu, whereas with it enabled it sees more mount points and decides to load the menu.
I've also tried the accepted answer in this post: https://serverfault.com/questions/549166/how-to-update-grub-on-a-system-running-overlayroot however I still get the error '/usr/sbin/grub-probe: error: failed to get canonical path of `/dev/mmcblk0p2'.'