Error when recompiling 2.4.31 Kernel for SMP and HIGHMEM
SlackwareThis Forum is for the discussion of Slackware Linux.
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
Error when recompiling 2.4.31 Kernel for SMP and HIGHMEM
I am just recently aquired a IBM Netfinity 6000 server. The server has 4 older Xeon processors, and 2048Mb of ram installed. Also installed is an IBM ServeRAID-4M Raid card that is configured for RAID-5 with 3 IBM 18.2 SCSI drives.
I just installed Slackware 10.2 on the machine, and I am trying to recompile the kernel for SMP support for the processors and HIGHMEM support. Everytime that I finish and reboot the machine I get a kernel panic and the computer states that, "Please append a correct "=root" boot option."
I have compiled the kernel when installing Slackware for RAID support using the raid.s image. I have read in some of the fourms that certian thing need to be compiled into the kernel and not as a module but I am unsure just what this means and I think that it might be part of my problem.
I have followed all of the instructions on several of the post on this web page for recompiling the kernel, but have had no luck getting it to work. Any more advice would be greatly appreciated.
I've never compiled for multiple processors or RAID, but the error you posted
Quote:
"Please append a correct "=root" boot option."
means you don't have support in the kernel for your / filesystem.
What OS was on the box when you got it?
Is that still available and working now?
Have you had a Slackware OS running, and if so, with which kernel?
I am not exactly clear on this
Quote:
I have compiled the kernel when installing Slackware for RAID support
using the raid.s image. Although I am not sure if I need to do it again
after the kernel recompile or if it is even possible.
but your answers to the above questions will help. This sounds to me like you
got Slackware running, and you're trying to recompile the kernel?
If you post a link to your kernel .config file, one of us can probably tell you what
needs to be changed/added.
Sorry that I haven't offered much "help" here, but I found you on the zero replies
thread list, and with 34 previous views, I'm probably not the only one with more
questions than answers.
Due to information security issues, there were no OS on it when I recieved the box.
Quote:
Is that still available and working now?
The only OS that is currently on it is Slack 10.2, Slackware installs just fine but when I try to enable the SMP and HIGHMEM and recompile the kernel is when I get the problems.
Quote:
Have you had a Slackware OS running, and if so, with which kernel?
Yes, Slackware 10.2 with the default installiation with the 2.4.31 kernel.
I have read on serveral of the threads that certian things must be compiled into the kernel rather than installed as a module. I am not quite sure what this is refering to, but I think that it might be one of my problems. I am working on getting my kernel config file, I will post it as soon as I can
SMP and HIGHMEM if they were really giving you problems I would not expect those problems to crop up at boottime. That being said.... have you checked into the possiblity the kernel your trying to compile changes the RAID support?
Maybe your SMP and HIGHMEM enabled kernel only support your RAID via module as where your previous kernel supports it within the kernel. The reason this makes a difference is that if you build the RAID driver as a module then you need to use a boot RAM disk image that can load the module to allow the kernel to read the file system, otherwise you receive an error just like the one your getting.
To summarize... I'm saying your real problem has nothing to do with SMP and HIGHMEM but instead your RAID and/or filesystem support.
Please post the .config file, would be good info to have here.
Okay, Mike, I've never done a RAID array in Linux, but will help as I
can until someone else shows up. As the other guy said, SMP and the
HIGHMEM option have nothing to do with booting the kernel. Its' the
support for that / filesystem that needs to be built in (Y) rather than
modules (M), or you need an initial ram disk (initrd.img).
For the memory, you'll need to build into your kernel (Y, not M=module)
the option "CONFIG_HIGHMEM4G" which is for memory greater than 1G
but less than 4G. So under Processor Types and Features, it should say
"CONFIG_HIGHMEM4G=y" and "CONFIG_HIGHMEM=y" for your box.
For the mulitprocessor support you'll need "CONFIG_SMP=y"
For RAID maybe /usr/doc/Linux-FAQs/Linux-RAID-FAQ/Linux-RAID-FAQ
would be a good document on your Slackware system, but that looks
pretty dated to me (Revision v0.0.12, 2003-03-05). Maybe these http://www.tldp.org/HOWTO/HOWTO-INDEX/os.html#OSRAID
would be better.
Thanks to everyone that has posted a reply. I am now thinking that the problem is, from what everyone has said, that when the kernel is being recompiled that the RAID support that is built into the kernel when I install Slackware is not being put in the kernel when I recompile. That being said I am not sure how I find out if the support is being put in or not, or now to enable it.
On another note, what is the best way to get the kernel config file off of the computer and onto the fourm. I have used PICO to make a text version of it and formatted a floppy. But when I move it over to my desktop it says that the floppy is not formatted. Thanks again to everyone for their help.
In a terminal as root issue "mount /mnt/floppy" and then to get your new kernel
config file onto the floppy "cp /path/to/.config /mnt/floppy/config.txt" and then you
can read it on whatever box you open it on.
I don't know where you're building this new kernel, but it should be somewhere
under your /home directory. I build in /home/username/kernel/ all the time. If you
doubt this instruction, read what Linus Torvalds has said about that for well over
5 years now. Here's a link > Linus says don't build kernel under /usr/src/
Here's the relevant quote from that message:
Quote:
I would suggest that people who compile new kernels should:
- NOT do so in /usr/src. Leave whatever kernel (probably only the
header files) that the distribution came with there, but don't touch
it.
- compile the kernel in their own home directory, as their very own
selves. No need to be root to compile the kernel. You need to be root
to _install_ the kernel, but that's different.
And I've wanted to ask ... since you're compiling a new kernel, is there some
reason you're using 2.4.31, rather than the latest stable kernel, 2.6.13.2?
The main reason that I am using the 2.4.31 kernel is because it is the one that comes with the raid.s kernel when I install slackware. I am going to reinstall slack tonight with the lastest kernel and try the recompile with the instructions that have been posted. Also when I recompile the kernel how would I know if it is being built into the kernel or being used as a module?
Because you are the one compiling, and making the choices. If you choose M for
module, it is not built into the kernel. If you choose Y, it is built into the kernel. That
is what we mean by "built into" the kernel, rather than "built as modules." These
are loaded every time with your kernel, before it starts detecting your hardware,
so it's already got support for the devices. If you don't build support for your /
filesystem, and your IDE (or whatever drive boots the box) chipset into your
kernel, you have to make an (initial ram disk) initrd.img to load those modules
for you so you can boot the system.
If you mean you are going to install Slackware with the test26.s kernel, make
sure you read Pat's instructions in the RELEASE_NOTES file. Otherwise, if you
need more help on this post back.
Sounds like you need a good Kernel Rebuild Guide, also. But I strongly advise
you to build it under /home/<username>/kernel and not under /usr/src.
My guess (from my experience with IBM Servers and ServeRAID adapters) is that you'll be needing the "ips" kernel module. Your stock Slackware linux kernel comes with ips as a module, and Slackware hotplug is able to detect that it needs to load it.
When you recompiled the kernel, you either forgot to add support for ServerRAID (CONFIG_SCSI_IPS=m) or disabled other SCSI support that might be needed. You did compile and install the kernel modules after compiling and installing the kernel?
You could re-try posting the kernel .config that you've created.
BTW I always compile kernels in /usr/src :-) IMO, the reason Linus had for building outside /usr/src is not applicable nowadays, at least not with Slackware, which comes with its own kernel-headers package. That solves the symlink problem Linus mentions in his post.
There is no reason against compiling outside /usr/src either - it's just a matter of preference.
These are the instructions that I used to recompile my kernel. Thanks again for everyones help.
Quote:
First, we need to edit lilo.conf. Pick your favorite editor...one that is easy for newbies (and I still use this from time to time) is pico.
pico /etc/lilo.conf
Add this to your config...you can just copy what is there and add the .old stuff.
image = /boot/vmlinuz.old
root = /dev/hda1
label = slack.old
read-only
Note: Replace /dev/hda1 with the correct location of your root partition.
Now we need to edit the Makefile to make sure your new kernel is copied to the appropriate directory.
If you are using 8.1 or later, open /usr/src/linux/Makefile in a text editor, scroll to line 74 and
uncomment the the line #export INSTALL_PATH=/boot.
For 8.0 you must leave this line commented.
So...cd /usr/src/linux
pico Makefile
scroll to line 74 and
uncomment the the line #export INSTALL_PATH=/boot.
For 8.0 you must leave this line commented.
Now for the fun
make menuconfig (make your changes here...when done, save your new configuration)
make dep (sets all the kernel dependencies)
make clean (removes un-needed files)
make bzImage (builds the kernel)
make
make install (installs, moves and renames all the needed files and updates lilo)
make modules (builds all the kernel modules)
make modules_install (installs the modules)
With the current 2.6 kernel from kernel.org I add the entry with;
image = /boot/vmlinuz.old
and everything else the same
cd /usr/src
rm linux (if it is there)
ln -s (new kernel)linux
cd /usr/src/linux
make menuconfig
make
make modules_install
make install (this copys everything and runs lilo)
Last edited by comprookie2000; 09-27-2005 at 02:18 PM.
Upon further reading I have found out that SMP and HIGHMEM are not modules they are either turned on or off in the kernel. With that said do I still need to run:
make modules
make modules_install ???
Also I think that one of my problems might be that I was not using "initrd" since the infromation to run my raid card is on the root file system, it is kinda of the chicken before the egg problem. Thanks for everyones help.
OK, upon further reading on the internet tonight I think that the only think that I am doing wrong is not making a INITRD disk, the files that are need to run my filesystem are on the file system before it can be opened. Now from what I have read on the internet I am still not sure just what I need to do to make the disk. My main question is where are the drivers that I need to put on the disk for the system to boot?
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.