Bugzilla – Bug 491959
installation of kernel-default-base produces lot of FATAL errors
Last modified: 2009-08-21 13:10:50 UTC
Installation of kernel-default-base produces lot of FATAL errors on elzar.suse.cz. There was installed kernel-pae before. Instaluje se: kernel-default-base-2.6.27.19-5.1 [HOTOVO] Additional rpm output: Setting up /lib/modules/2.6.27.19-5-default Kernel image: /boot/vmlinuz-2.6.27.19-5-default Initrd image: /boot/initrd-2.6.27.19-5-default Root device: /dev/system/root (mounted on / as ext3) Resume device: /dev/system/swap FATAL: Module processor not found. WARNING: no dependencies for kernel module 'processor' found. FATAL: Module thermal not found. WARNING: no dependencies for kernel module 'thermal' found. FATAL: Module ata_generic not found. WARNING: no dependencies for kernel module 'ata_generic' found. FATAL: Module piix not found. WARNING: no dependencies for kernel module 'piix' found. FATAL: Module ide_pci_generic not found. WARNING: no dependencies for kernel module 'ide_pci_generic' found. FATAL: Module fan not found. WARNING: no dependencies for kernel module 'fan' found. FATAL: Module dm_snapshot not found. WARNING: no dependencies for kernel module 'dm-snapshot' found. FATAL: Module usbhid not found. WARNING: no dependencies for kernel module 'usbhid' found. FATAL: Module linear not found. WARNING: no dependencies for kernel module 'linear' found. Kernel Modules: dock scsi_mod libata ata_piix jbd mbcache ext3 dm-mod edd crc-t10dif sd_mod usbcore ohci-hcd ehci-hcd uhci-hcd Features: dm block usb lvm2 resume.userspace resume.kernel Bootsplash: SLES (800x600) 25662 blocks
You haven't met the dependencies required for your initrd. If you install kernel-default then they'll be met and the initrd will be created properly. I've been seeing a lot of reports about these, so I'm going to assign to Michal Marek as an enhancement request.
Install kernel-default before kernel-base?? It is not possible due to dependencies: > rpm -ivh kernel-default-2.6.30-master_20090515173431_9c6d4c14.x86_64.rpm error: Failed dependencies: kernel-default-base_x86_64 = 2.6.30-master_20090515173431_9c6d4c14 is needed by kernel-default-2.6.30-master_20090515173431_9c6d4c14.x86_64
Guys, the error messages are expected on a normal system, as long as you install kernel-default as the next step. The list of modules needed for the initrd is unfortunately not a static thing and therefore at rpm level it's not possible to say which packages are needed for the initrd. The "FATAL" error comes from modprobe and is misleading here (mkinitrd and the kernel %post script can handle that): # modprobe xxx FATAL: Module xxx not found.
Why does kernel-default-base try to set up an initrd and menu.lst-entry at all instead of waiting for kernel-default to be installed if it is not functional alone?
Because it doesn't know whether it's functional alone until it tries to create the initrd.
The package itself doesn`t know it, right? ... but you as a package creator know it. ... or is there in deed any way to use kernel-default-base without kernel-default?
It could be user in a minimal virtual guest where it doesn't need most drivers. BTW the same problem is with kernel-default vs. kernel-default-extra. The list of needed modules depends on configuration, it can't be expressed via rpm dependencies.
Perhaps kernel-default-base should wait for kernel-default to be installed if some module dependencies can not be met by the current sysconfig. If module dependencies are not met it could prompt the user to additionally install kernel-default not setting up any initrd or menu.lst-entry. That would save some time at install time as well as skipping those FATAL-messages; if that should not be too hard to do.
I do plan to change it to do all the work in a %posttrans script after all packages are installed (if you run rpm -i kernel-default{-base,,-extra}), unfortunately that won't have any effect when using zypp, because it still installs packages separately. BTW there is no way to prompt the user for anything from within an rpm package, if the user wishes to install only a subset of the kernel packages, the script has to simply try it.
Using %posttrans is a good idea (By 'prompt' I simply meant the %postin-script to output something like: please continue to install kernel-default.).
It might also be nice to figure out if there is a way to identify when drivers have been included into the monolithic kernel. As Elmar reports in bug #496954, even the mkinitrd after kernel-default-extra is throwing "FATAL" errors due to missing modules - but it's because Greg incorporated them into the main kernel image. To remove them from $INITRD_MODULES would just break earlier kernels.
See bug 430405, I plan to generate a modules.builtin file during kernel build and install it in /lib/modules/*/.
*** Bug 489104 has been marked as a duplicate of this bug. ***
For me as a non-developer this output disturbing: --- # 2009-08-03 19:27:41 kernel-desktop-base-2.6.31-1.1.i586.rpm installed ok # Additional rpm output: # Free diskspace below /boot: 9158056 blocks # Setting up /lib/modules/2.6.31-rc4-1-desktop # /etc/modprobe.conf: No such file or directory # /etc/modprobe.conf.local: No such file or directory # # Kernel image: /boot/vmlinuz-2.6.31-rc4-1-desktop # Initrd image: /boot/initrd-2.6.31-rc4-1-desktop # cp: cannot stat `/etc/scsi_id.config': No such file or directory # Root device: /dev/sda2 (mounted on / as ext3) # Resume device: /dev/sda5 # WARNING: no dependencies for kernel module 'ata_piix' found. # WARNING: no dependencies for kernel module 'sd_mod' found. # WARNING: no dependencies for kernel module 'uhci-hcd' found. # Features: block usb # 13243 blocks --- If I had not an alternative Debian installation and feared to loose access to my computer (no ata, sd...) I would have done CTRL-C and reboot... Please make extra kernel packages for extra use cases like: "could be user in a minimal virtual guest where it doesn't need most drivers."
(In reply to comment #15) > Please make extra kernel packages for extra use cases like: > "could be user in a minimal virtual guest where it doesn't need most drivers." Already done. That's what kernel-$flavor-base is.
FYI: https://features.opensuse.org/307154#comment_1 I think making the main package a superset of the -base package should fix these issues quite nicely. Each install would require either kernel-$flavor OR kernel-$flavor-base, but not both (although that shouldn't fail either).
In 11.2, kernel-$flavor-base won't be needed in normal installs.