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
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs