Issue Booting Slackware 13 with Grub
Hi all, somewhat new Linux convert here with a first post.
For a few months I've been running WinXP, Slackware 13 (32-bit) and Linux Mint 7, using Grub as my bootloader. I recently decided to upgrade Mint to 8 and it upgraded Grub to version 1.97~beta4 in the process. It boots in to WinXP and Mint 8 with no problems, but all of the sudden there is a kernel panic when I try to load Slackware 13 (which I did not change). Here are some details... Error message (directly following the listing of all partitions): Quote:
Quote:
Thanks, and let me know if I can provide any more details. Mike |
I see a couple things that could be wrong. The main issue is that you don't have any information relating to the initrd, so the generic kernel won't work here. Which file system are you using?
I would at least add an entry for the huge kernel. For grub2, something like: menuentry "Slackware 2.6.29.6 huge" { set root=(hd0,7) linux /boot/vmlinuz-huge-2.6.29.6 root=/dev/sda7 ro } Good luck! |
Thanks for the response, I will definitely look in to the initrd. That came up a lot in my searches to try and fix this, but I'm always pretty hesitant to start trying anything resembling a solution until I find the one that makes sense to me. It always leads to a million failed attempts at fixing it by modifying files, adding files, deleting files, etc. and I always feel dirty at the end of that process...I digress.
I'll research the initrd -- don't really understand what it is, but I'm sure a few searches can catch me up. As far as the huge kernel, I do actually have that. I've got four different menu items for Slackware in grub, but all of them come to a grinding halt with the same kernel panic. |
Alright, a quick kernel how-to lesson for slackware :)
Slackware provides a huge, and a generic kernel. On 32-bit, it actually provides 2-huge kernels (one for -smp, and one for non-smp CPUs), and 2 generic (again, one -smp, and one for non-smp). Most systems these days can handle -smp kernels (even if they are single-processor), and this is typically the default. On 64-bit, there are only two kernels - one huge, and one generic. 64-bit capable processors will always handle -smp kernels just fine, so Pat only needs to provide 1 of each. So, the difference between huge and generic? Huge is, as it sounds, packed with just about every option enabled in the configuration. This means that most stuff, including chipset support, file systems, etc, are built into the kernel. The main use for this is installation, as almost all PC's will be have support without any trouble. However, in day-to-day tasks, it might be a little overkill. The generic kernel is more modular kernel. So, stuff like file systems, chipset, etc. are all compiled as modules, and loaded only as your system requests it. This means it will run a little more efficiently than the huge kernel, because you are only loading stuff you need. The huge kernel, since the file system and chipset are built into the kernel, will not require this initrd. However, the generic kernel, which has everything as a module, will. You need to have support in the ram disk for your file system + IDE/sata controller, otherwise the kernel will panic trying to mount your root partition (this is the error you are hitting trying to load that generic kernel). Check out this document, which kind of explains what an initrd is, why it is used, and even how to create one. If you've been using slackware for a few months, and haven't created one yet, you probably have been using the "huge" kernel up until now. I would at least fix the grub entry to boot this kernel before doing anything else, and then transition to a generic kernel if you'd like. http://slackware.osuosl.org/slackwar.../README.initrd |
Thanks for the lesson, very enlightening!
So I understand the concept now, and in fact when I went down to the third option an attempted loading the huge kernel everything worked fine. So it does appear to be an intitrd issue, and I read through that link which makes perfect sense, copied the correct packages off the install dvd, installed them and created my initrd tree with no problems and...... Progress! Still isn't working. Here are the last few lines: Quote:
I followed the instructions to use the reiserfs -- should I be doing the second example for an ext3 system using mbcache, jbd, etc? Here again I don't really understand what I'm doing. Obviously reiserfs is a type of file system, but is it referring to the one that is used for the initrd, or does it need to match the one slack is on, or...confusion... Thanks again for all your time, I truly appreciate it. |
if you have ide harddrives use root=/dev/hda7
|
Two SATA drives unfortunately.
|
you initrd most likley needs to be redone. doesn't look like the modules are getting loaded to access your sata drives
|
add this to your mkinitrd
ata_piix libata sd_mod scsi_mod got it from here: http://ubuntuforums.org/archive/index.php/t-30233.html |
Cool - glad it made some sense :)
You are right, you do need reiserfs in there. Basically, the kernel is trying to load support for your root partition, but without the reiserfs module, it won't know how. So, to fix, boot the huge kernel first, to get into the slackware environment. Then, as the README suggests, something like: # mkinitrd -c -k 2.6.29.6 -m reiserfs or, if you're on 32-bit slackware, and trying to use the -smp kernel: # mkinitrd -c -k 2.6.29.6-smp -m reiserfs This will add the reiserfs module to the initrd. If you are NOT using reiserfs as your file system, you will have to adjust. For example, "jfs" file system would be: # mkinitrd -c -k 2.6.29.6 -m jfs Then, to finish, you need to tell grub about the initrd image. I haven't tried this from grub2, but something like: menuentry "Slackware 2.6.29.6 generic" { set root=(hd0,7) initrd /boot/initrd.gz linux /boot/vmlinuz-generic-2.6.29.6 root=/dev/sda7 ro } I would ADD to your grub.cfg, and keep the huge kernel in there too, "just in case" :) Check the name if for the kernel; again, if you are on 32-bit, it may be "vmlinuz-generic-smp-2.6.29.6-smp" or whatever. |
Might i suggest simply making your own generic kernel and completely removing the need for an initrd?
http://blog.tpa.me.uk/2009/08/30/the-evil-of-initrd/ http://blog.tpa.me.uk/2009/08/31/com...ckware-kernel/ http://blog.tpa.me.uk/slackware-kernel-compile-guide/ |
More helpful advice from all, but even with the initrd I can't seem to get the non-huge kernels to boot:
Quote:
Thanks again to all for your help! |
Quote:
|
Quote:
Quote:
|
Or rather sd0,6
|
All times are GMT -5. The time now is 02:21 PM. |