boot options truncated for foreign kernels in Grub menu

It’s an old bug I reported (or mentioned in another bug report about os-prober) and fixed a while ago in the os-prober version available in my repo. At this time, nobody cared because you guys weren’t using Grub2, But now it’s going to hit (linux) multi booters.

If you wonder why your Fedora boot entry (for example) looks like this in openSUSE 12.2 Grub menu:

menuentry 'Fedora release 16 (Verne)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-01a7cb76-434b-4eeb-9fac-c8b5c8229835' {
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos21'
	if  x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos21 --hint-efi=hd0,msdos21 --hint-baremetal=ahci0,msdos21 --hint='hd0,msdos21'  01a7cb76-434b-4eeb-9fac-c8b5c8229835
	else
	  search --no-floppy --fs-uuid --set=root 01a7cb76-434b-4eeb-9fac-c8b5c8229835
	fi
	linux /boot/vmlinuz-3.4.9-1.fc16.x86_64 root=/dev/sda13
	initrd /boot/initramfs-3.4.9-1.fc16.x86_64.img
}

Here’s the answer:

# zypper info os-prober
Loading repository data...
Reading installed packages...


Information for package os-prober:

Repository: openSUSE-12.2-Oss
Name: os-prober
Version: 1.49-2.1.2
Arch: x86_64
Vendor: openSUSE

Fedora is on sda13. So let us check sda13 with linux-boot-prober:

# **linux-boot-prober /dev/sda13**
/dev/sda13:/dev/sda13::/boot/vmlinuz-3.4.9-1.fc16.x86_64:/boot/initramfs-3.4.9-1.fc16.x86_64.img:root=/dev/sda13
/dev/sda13:/dev/sda13::/boot/vmlinuz-3.4.9-2.fc16.x86_64:/boot/initramfs-3.4.9-2.fc16.x86_64.img:root=/dev/sda13

Now let’s try the same with os-prober 1.53 from my repo.

# zypper update os-prober
Loading repository data...
Reading installed packages...
There is an update candidate for 'os-prober', but it is from different vendor. Use '**zypper install os-prober-1.53-78.1.x86_64'** to install this candidate.
Resolving package dependencies...

Nothing to do.

# **zypper install os-prober-1.53-78.1.x86_64**

#** linux-boot-prober /dev/sda13**
/dev/sda13:/dev/sda13:Fedora 16 (Verne) - kernel 3.4.9-2:/boot/vmlinuz-3.4.9-2.fc16.x86_64:/boot/initramfs-3.4.9-2.fc16.x86_64.img:root=UUID=01a7cb76-434b-4eeb-9fac-c8b5c8229835 ro rd.md=0 rd.lvm=0 rd.dm=0 KEYTABLE=us quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 LANG=en_US.UTF-8 nouveau.nomodeset=0 rd.driver.blacklist=nouveau
/dev/sda13:/dev/sda13:Fedora 16 (Verne) - kernel 3.4.9-2 (recovery mode):/boot/vmlinuz-3.4.9-2.fc16.x86_64:/boot/initramfs-3.4.9-2.fc16.x86_64.img:root=UUID=01a7cb76-434b-4eeb-9fac-c8b5c8229835 ro single rd.md=0 rd.lvm=0 rd.dm=0 KEYTABLE=us quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 LANG=en_US.UTF-8 nouveau.nomodeset=0 rd.driver.blacklist=nouveau
/dev/sda13:/dev/sda13:Fedora 16 (Verne) - kernel 3.4.9-1:/boot/vmlinuz-3.4.9-1.fc16.x86_64:/boot/initramfs-3.4.9-1.fc16.x86_64.img:root=UUID=01a7cb76-434b-4eeb-9fac-c8b5c8229835 ro rd.md=0 rd.lvm=0 rd.dm=0 KEYTABLE=us quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 LANG=en_US.UTF-8 nouveau.nomodeset=0 rd.driver.blacklist=nouveau
/dev/sda13:/dev/sda13:Fedora 16 (Verne) - kernel 3.4.9-1 (recovery mode):/boot/vmlinuz-3.4.9-1.fc16.x86_64:/boot/initramfs-3.4.9-1.fc16.x86_64.img:root=UUID=01a7cb76-434b-4eeb-9fac-c8b5c8229835 ro single rd.md=0 rd.lvm=0 rd.dm=0 KEYTABLE=us quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 LANG=en_US.UTF-8 nouveau.nomodeset=0 rd.driver.blacklist=nouveau

Now let’s rewrite the Grub menu.

# grub2-mkconfig -o /boot/grub2/grub.cfg

And the boot entry for Fedora kernel is now complete (it matters if some options are necessary to boot) :

menuentry 'Fedora release 16 (Verne)' --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-01a7cb76-434b-4eeb-9fac-c8b5c8229835' {
	insmod part_msdos
	insmod ext2
	set root='hd0,msdos21'
	if  x$feature_platform_search_hint = xy ]; then
	  search --no-floppy --fs-uuid --set=root --hint-bios=hd0,msdos21 --hint-efi=hd0,msdos21 --hint-baremetal=ahci0,msdos21 --hint='hd0,msdos21'  01a7cb76-434b-4eeb-9fac-c8b5c8229835
	else
	  search --no-floppy --fs-uuid --set=root 01a7cb76-434b-4eeb-9fac-c8b5c8229835
	fi
	linux /boot/vmlinuz-3.4.9-2.fc16.x86_64 root=UUID=01a7cb76-434b-4eeb-9fac-c8b5c8229835 ro rd.md=0 rd.lvm=0 rd.dm=0 KEYTABLE=us quiet SYSFONT=latarcyrheb-sun16 rhgb rd.luks=0 LANG=en_US.UTF-8 nouveau.nomodeset=0 rd.driver.blacklist=nouveau
	initrd /boot/initramfs-3.4.9-2.fc16.x86_64.img
}

Quod erat demonstrandum. :slight_smile:

  • I don’t say you should use my os-prober version (and you won’t anyway). But at least, you’ll know why you might not be able to boot some foreign Linux kernels directly (chainloading their Grub is of course possible).