Public bug reported: [Impact] Ubuntu's ZFS boot support (`/etc/grub.d/10_linux_zfs`) will fail to generate any GRUB entries for ZFS roots if any of the checked `/etc/fstab` entries fails to mount. This includes all past ZFS snapshots.
[Test Case] 1. On a system that has a ZFS root (e.g. one installed with zsys), run `sudo update-grub`. 2. Verify that there are GRUB boot entries for ZFS: sed -n '/^### BEGIN \/etc\/grub\.d\/10_linux_zfs ###$/,/^### END \/etc\/grub\.d\/10_linux_zfs ###$/p;/^### END \/etc\/grub\.d\/10_linux_zfs ###$/q' /boot/grub/grub.cfg 3. To reproduce the problem, create or edit a `/boot` entry that will fail mounting. (Back up the existing line if you have one and are working on a real system.) Example: echo 'UUID=deaddead-dead-4ead-dead-deaddeaddead /boot ext2 discard,nofail 0 2' | sudo tee -a /etc/fstab 4. (Optional) Take a ZFS snapshot of the dataset that provides `/etc`: sudo zfs snap "$(df /etc -t zfs | sed '/^Filesystem/d' | awk '{print $1}')"@repro 5. If you performed step 4, restore the `/etc/fstab` back to its original working condition: sudo sed -i '/^UUID=deaddead-dead-4ead-dead-deaddeaddead/d' /etc/fstab 6. Run `sudo update-grub` again. 7. See that the GRUB boot entries for ZFS roots have been wiped out: sed -n '/^### BEGIN \/etc\/grub\.d\/10_linux_zfs ###$/,/^### END \/etc\/grub\.d\/10_linux_zfs ###$/p;/^### END \/etc\/grub\.d\/10_linux_zfs ###$/q' /boot/grub/grub.cfg [Regression Potential] The patch adds a sanity check for a mount that could fail. The sanity check prevents the entire `/etc/grub.d/10_linux_zfs` from being wiped out from that failed mount. The new behavior causes the `get_system_directory()` function in `/etc/grub.d/10_linux_zfs` to act as if the bad mount didn't exist. The function would then continue to the next case, which is currently documented as "Handle zfs case, which can be a snapshots." ** Affects: grub2 (Ubuntu) Importance: Undecided Status: New ** Tags: eoan ** Attachment added: "/etc/grub.d/10_linux_zfs: Ignore failed /etc/fstab mount in the get_system_directory() function" https://bugs.launchpad.net/bugs/1849347/+attachment/5299227/+files/10_linux_zfs.patch -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1849347 Title: /etc/grub.d/10_linux_zfs gives up if any checked /etc/fstab entry is invalid To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1849347/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs