Skip to contentSkip to conversation

Kernel binrpm produces brokes grub2 config

PATCH Richard Weinberger 3 participants 3 messages Jul 29, 2014 Kbuild

lore
Share & tools
lore
#0 lore raw

Hi!

I'm not sure who to blame, but the below commit breaks the kernel binrpm target for me. It produces a faulty grub2 config.
After installing such a kernel grub2 looks for vmlinuz-XY-rpm and initrd-XY-rpm. These files are not existing and the machine does no longer boot.
Luckily an addition boot entry without the -rpm suffix exists, if remote access works one can recover the machine.

My question is, why do we need these copy of vmlinuz anyway? After calling installkernel on the -rpm variants you delete them again...

This <insert swear word here> happens on openSUSE 13.1, maybe their installkernel script needs fixing.

commit 3c9c7a14b6274074cc3af2b83d56a92547188f27

Author: Mike Marciniszyn <[email protected]>
Date:   Mon Jun 24 10:38:22 2013 -0400

rpm-pkg: add %post section to create initramfs and grub hooks

/sbin/installkernel is used to insure grub hooks are inserted and the initramfs is created on the target system.

The invokation installkernel will work with any kernel as long as:
- /sbin/installkernel exists
- the kernel and sysem map files are readable

scripts/package/mkspec +9 -0
index fdd3fbf..0aa6a24 100755
@@ -112,6 +112,15 @@ echo ""
 echo "%clean"
 echo 'rm -rf $RPM_BUILD_ROOT'
 echo ""
+echo "%post"
+echo "if [ -x /sbin/installkernel -a -r /boot/vmlinuz-$KERNELRELEASE -a -r /boot/System.map-$KERNELRELEASE ]; then"
+echo "cp /boot/vmlinuz-$KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm"
+echo "cp /boot/System.map-$KERNELRELEASE /boot/System.map-$KERNELRELEASE-rpm"
+echo "rm -f /boot/vmlinuz-$KERNELRELEASE /boot/System.map-$KERNELRELEASE"
+echo "/sbin/installkernel $KERNELRELEASE /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm"
+echo "rm -f /boot/vmlinuz-$KERNELRELEASE-rpm /boot/System.map-$KERNELRELEASE-rpm"
+echo "fi"
+echo ""
 echo "%files"
 echo '%defattr (-, root, root)'
 echo "%dir /lib/modules"

Thanks,
//richard

#1 lore raw
Quoted 11 lines · Richard Weinberger

Hi!

I'm not sure who to blame, but the below commit breaks the kernel binrpm target for me. It produces a faulty grub2 config.
After installing such a kernel grub2 looks for vmlinuz-XY-rpm and initrd-XY-rpm. These files are not existing and the machine does no longer boot.
Luckily an addition boot entry without the -rpm suffix exists, if remote access works one can recover the machine.

My question is, why do we need these copy of vmlinuz anyway? After calling installkernel on the -rpm variants you delete them again...

The typical /sbin/installkernel script does a cp "$2" "/boot/...", so you can't use the already installed files as its arguments.

Quoted 1 line

This <insert swear word here> happens on openSUSE 13.1, maybe their installkernel script needs fixing.

I guess that the problem is that grub2-mkconfig sees the temporary /boot/vmlinuz-*-rpm file and creates a menu entry for it. I guess we should create the temporary kernel and initrd files somewhere else than in /boot.

Michal

#2 lore raw

В Tue, 29 Jul 2014 14:23:54 +0200
Michal Marek <[email protected]> пишет:

Quoted 17 lines · Richard Weinberger
Quoted 11 lines

Hi!

I'm not sure who to blame, but the below commit breaks the kernel binrpm target for me. It produces a faulty grub2 config.
After installing such a kernel grub2 looks for vmlinuz-XY-rpm and initrd-XY-rpm. These files are not existing and the machine does no longer boot.
Luckily an addition boot entry without the -rpm suffix exists, if remote access works one can recover the machine.

My question is, why do we need these copy of vmlinuz anyway? After calling installkernel on the -rpm variants you delete them again...

The typical /sbin/installkernel script does a cp "$2" "/boot/...", so you can't use the already installed files as its arguments.

Quoted 7 lines
Quoted 1 line

This <insert swear word here> happens on openSUSE 13.1, maybe their installkernel script needs fixing.

I guess that the problem is that grub2-mkconfig sees the temporary /boot/vmlinuz-*-rpm file and creates a menu entry for it. I guess we should create the temporary kernel and initrd files somewhere else than in /boot.

Or name it differently - e.g. rpm-vmlinuz-XY.

Quoted 2 lines

Michal