FS#38713 - [grub] 10_archlinux can no longer load kernel image from btrfs subvolume

Attached to Project: Arch Linux
Opened by Jonathan Charest (jcharest) - Wednesday, 29 January 2014, 14:52 GMT
Last edited by Tobias Powalowski (tpowa) - Tuesday, 08 April 2014, 06:35 GMT
Task Type Bug Report
Category Packages: Core
Status Closed
Assigned To Tobias Powalowski (tpowa)
Ronald van Haren (pressh)
Architecture All
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

Description: The issue is about the image (kernel, initrd) path in the boot partition generated by 10_archlinux when using btrfs subvolumes:

linux /boot/vmlinuz-linux
initrd /boot/initramfs-linux.img

I think it should be (__active is my subvolume):

linux /__active/boot/vmlinuz-linux
initrd /__active/boot/initramfs-linux.img

10_archlinux does not prepend the subvolume name but 10_linux does.

I think there are two cases to consider:
1 - In my case the __active subvolume is the default subvolume so shouldn't grub have mounted it in the subvolume automatically ?
2 - In the case the subvolume is not the default or that grub will not mount the default subvolume, then the 10_archlinux needs to add the subvolume name to the path as 10_linux does.

I initially posted some info in  FS#38566  thinking it was the same issue I was having.

In the grub config file attached, I patched the image paths to be able to boot.

Steps to reproduce:
This is what I did but don't know if the issue might have been be there before this version since I don't generate grub.conf often.

- Upgrade to grub grub 1:2.02.beta2-1
- Generate grub.cfg
- Reboot
- Grub complains about missing theme files but the kernel boots (image is found in /boot)
- grub-install (try to fix the missing files errors)
- Reboot
- Theme works but grub not able to find kernel with the generated path
- Add subvolume prefix (/__active/)
- Kernel boots ok
This task depends upon

Closed by  Tobias Powalowski (tpowa)
Tuesday, 08 April 2014, 06:35 GMT
Reason for closing:  Fixed
Comment by Jonathan Charest (jcharest) - Wednesday, 29 January 2014, 14:54 GMT
Re-upload grub.cfg
   grub.cfg (9.4 KiB)
Comment by Jonathan Charest (jcharest) - Tuesday, 04 February 2014, 20:54 GMT
It appear using the real root (not mounting the default subvolume) is a conscious decision from the grub devs: http://savannah.gnu.org/bugs/?41449.

This means that the 10_archlinux script needs to use: 'make_system_path_relative_to_its_root' on the boot path to get the real path.
Comment by Keshav Amburay (the.ridikulus.rat) - Sunday, 09 February 2014, 01:06 GMT
Please test updated 10_archlinux script at http://ix.io/ap6 .
Comment by Jonathan Charest (jcharest) - Sunday, 09 February 2014, 18:22 GMT
Yes this does the trick for me. See attached config file. Thank you.
   grub.cfg (5.4 KiB)
Comment by Tobias Powalowski (tpowa) - Tuesday, 25 February 2014, 11:34 GMT
Please try 2.02.beta2-2 package from testing repository.
Comment by Jonathan Charest (jcharest) - Tuesday, 25 February 2014, 15:21 GMT
Yes this package works for me. See attached config file. Thank you.

Just one comment: In 10_archlinux lines 127,156 and 180 we see: "set gfxpayload=keep". Shouldn't it be conditional on the config from /etc/default/grub ? I just noticed this because on my home desktop using the nvidia binary blob, there are some warnings about using vesafb.
   grub.cfg (7.1 KiB)
Comment by John (graysky) - Tuesday, 25 February 2014, 20:01 GMT
No, 2.02.beta2-2 leaves me with an unbootable system. Back to 1:2.00.1282.g5ae5c54-1 for me. I can post the defective grub.cfg if you wish. All entries added by the script lead to either kernel panics or recovery mode.

Btrfs root on a subvol/UEFI here.
Comment by Keshav Amburay (the.ridikulus.rat) - Wednesday, 26 March 2014, 22:50 GMT
Please try 10_archlinux from https://aur.archlinux.org/packages/grub-git/ .
Comment by Jonathan Charest (jcharest) - Wednesday, 26 March 2014, 23:05 GMT
This script still works for me. Generates the same config file as before in my case.
Comment by Tobias Powalowski (tpowa) - Monday, 07 April 2014, 14:56 GMT
Please try latest grub from testing.
Comment by Jonathan Charest (jcharest) - Monday, 07 April 2014, 15:24 GMT
This script still works for me. It now adds this parameter to the kernel command lines:
rootflags=subvol=__active

It is not really required since the __active subvol is the default one but it does not cause problems. Since the subvol is required for the image path by grub it might be less error prone to specify it everywhere like it is done in this version.

Loading...