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.
Are you new to LinuxQuestions.org? Visit the following links:
Site Howto |
Site FAQ |
Sitemap |
Register Now
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.
|
By mchirico at 2004-03-24 14:34
|
How to Compile 2.6 kernel for RedHat 9/8
Mike Chirico
Last Updated: Wed Mar 24 09:12:06 EST 2004
The latest version of this document can be found at:
http://prdownloads.sourceforge.net/souptonuts/README_26.txt?download
For configs ref:
http://sourceforge.net/project/showfiles.php?group_id=79320&package_id=1...
STEP 1:
Download the latest version of the kernel and any patches.
This documentation is done with linux-2.6.3, but look for
later versions.
http://www.kernel.org/pub/linux/kernel/v2.6/
Also take a look at
http://www.codemonkey.org.uk/post-halloween-2.5.txt This has
some useful hints on some of the changes needed.
STEP 2:
Download the latest version of module-init-tools
"module-init-tools-3.0.tar.gz" and
"modutils-2.4.21-23.src.rpm"
http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-...
http://www.kernel.org/pub/linux/kernel/people/rusty/modules/modutils-2.4...
STEP 3:
Install module-init-tools. This will replace depmod
[/sbin/depmod] and other tools.
tar -zxvf module-init-tools-3.0.tar.gz
cd module-init-tools-3.0
./configure --prefix=/sbin
make
make install
./generate-modprobe.conf /etc/modprobe.conf
STEP 4:
Install modutils-2.4.21-23.src.rpm. You may get warnings
about user rusty and group rusty not existing. Also, yes,
you'll have to force the install. If you don't do these steps
for both Redhat 9 and Redhat 8, you'll have problems with the
make modules_install.
rpm -i modutils-2.4.21-23.src.rpm
rpmbuild -bb /usr/src/redhat/SPECS/modutils.spec
rpm -Fi /usr/src/redhat/RPMS/i386/modutils-2.4.21-23.i386.rpm
STEP 5:
Install and configure the kernel. Do NOT use the /usr/src/linux
area! Reference the README. I put my files in /home/src/kernel/
gunzip linux-2.6.3.tar.gz tar -xvf linux-2.6.3.tar cd
linux-2.6.3
If you have patches install these now:
bzip2 -dc ../patch-2.6.xx.bz2 | patch -p1
STEP 6:
Copy the appropriate /usr/src/linux-2.4/configs
[kernel-2.4.20-i686.config, kernel-2.4.20-i686-smp.config]
to .config in whatever directory you are installing. In my
case it's /home/src/kernel/linux-2.6.3
cp /usr/src/linux-2.4/configs/kernel-2.4.20-i686.config \
/home/src/kernel/linux-2.6.3/.config
If you don't have the source configs, you can download them
from here:
https://sourceforge.net/project/showfiles.php?group_id=79320&package_id=...
I've also included a file config2.6-chirico which was a 2.6
version for some of my systems. This isn't a bad reference if
you run into trouble.
STEP 7:
Assuming you copied the appropriate kernel-2.4 config to
.config, run the following which will run through necessary
questions for the 2.6 kernel. Or, you might want to use the
config2.6-chirico...this has already been run through make
oldconfig on my system, and I've answered the necessary questions
for a general system.
make oldconfig
STEP 8:
This is very important. Make sure you're .config has the
following in it CONFIG_EXT3_FS=y You'll run into the following
error if you leave this =m instead of =y:
pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed
This is because Redhat 9.0 and 8.0 use the ext3 filesystem
for /boot ...
STEP 9:
Edit the Makefile and add changes to the Extraversion is needed.
Patches will update these values as well.
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 3
EXTRAVERSION = -skim-ch6
STEP 10:
make bzImage
STEP 11:
make modules
STEP 12:
make modules_install
STEP 13:
make install
If you come across errors here, what version of "depmod" is
being picked up in your path?
Also, if you get a module not found, say the following:
No module aic7xxx found for kernel 2.6.x
Then, in /lib/modules/2.6.x/kernel/drivers/scsi/aic7xxx/
cp aic7xxx.ko aic7xxx.o
insmod should look for aic7xxx.ko ;but , it looks for aic7xxx.o
If you still have trouble, make the following change in the
.config
CONFIG_BLK_DEV_SD=y
and go back to STEP 10.
You also may want to ref
kernel-2.6.3-i686-smp-chirico-aic7xxx.config
in
http://prdownloads.sourceforge.net/souptonuts/configs-0.3.tar.gz?downloa...
STEP 14:
mkdir /sys
STEP 15:
/etc/rc.sysinit needs to be modified. Look for the following
line:
action $"Mounting proc filesystem: " mount -n -t proc /proc /proc
and after this line enter the following:
action $"Mounting sysfs filesystem: " mount -t sysfs none /sys
Here's my /etc/rc.sysinit for reference:
http://prdownloads.sourceforge.net/souptonuts/rc.sysinit.txt?download
Be very careful at this step. Backup the /etc/rc.sysinit file.
Thomer [http://thomer.com/linux/migrate-to-2.6.html ] also added
changes to /etc/fstab. I only had to do STEP 16 below.
STEP 16:
Add the following to /etc/fstab for usb support.
/proc/bus/usb /proc/bus/usb usbdevfs defaults 0 0
STEP 17 (CHECKING EVERYTHING):
Check the following:
a. The new image file should be installed on boot and there
should be sym link to it. My latest kernel is 2.6.3-skim-ch6,
and I got the "-skim-ch6" from the values I put in the Makefile,
so I see the following:
/boot
vmlinuz -> vmlinuz-2.6.3-skim-ch6
System.map -> System.map-2.6.3-skim-ch6
/boot/grub/grub.conf Should have been automatically
updated from make.
In /boot/grub/grub.conf change "default=0" to boot
with the new kernel. Here's an example of my
grub.conf:
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making
# NOTICE: You have a /boot partition. This means that
# all kernel and initrd paths are relative to
# root (hd0,2)
# kernel /vmlinuz-version ro root=/dev/hda6
# initrd /initrd-version.img
#boot=/dev/hda
default=0
timeout=10
splashimage=(hd0,2)/grub/splash.xpm.gz
title Red Hat Linux (2.6.3-skim-ch6)
root (hd0,2)
kernel /vmlinuz-2.6.3-skim-ch6 ro root=LABEL=/
initrd /initrd-2.6.3-skim-ch6.img
b. The directory /sys exists
c. You added the mount command for sys in /etc/rc.sysinit
d. CONFIG_EXT3_FS=y was used in the .config
e. Run /sbin/lsmod or cat /proc/modules to make
sure a 2.4 kernel module wasn't forgotten. Also
look at "$cat /proc/iomem"
STEP 18 (DEVELOP YOUR OWN 2.6 MODULES):
You're done with the 2.6 build. So learn how to develop
2.6 kernel modules. First, checkout the following article
http://lwn.net/Articles/driver-porting/
Then, take a look at the following sample code, which shows how
to create /proc entries for communicating with the kernel and writing
out to any available tty device.
http://prdownloads.sourceforge.net/souptonuts/procreadwrite.0.0.1a.tar.g...
REFERENCES:
http://www.codemonkey.org.uk/post-halloween-2.5.txt
http://kerneltrap.org/node/view/799
http://thomer.com/linux/migrate-to-2.6.html
http://www.kernel.org/
http://bugzilla.kernel.org/
http://groups.google.com/groups?hl=en&lr=&ie=UTF-8&oe=UTF-8&group=linux....
http://linuxdevices.com/articles/AT3855888078.html
http://prdownloads.sourceforge.net/souptonuts/README_26.txt?download
http://prdownloads.sourceforge.net/souptonuts/rc.sysinit.txt?download
http://prdownloads.sourceforge.net/souptonuts/configs-0.3.tar.gz?downloa...
https://sourceforge.net/forum/forum.php?forum_id=353715
http://www.redhat.com/software/rhel/kernel26/
http://www.tldp.org/HOWTO/KernelAnalysis-HOWTO.html
http://www-124.ibm.com/linux/projects/?topic_id=2
KERNEL DRIVER DEVELOPMENT IN 2.6:
Excellent (series of articles):
http://lwn.net/Articles/driver-porting/
Here's my sample program:
http://prdownloads.sourceforge.net/cpearls/procreadwrite.0.0.1a.tar.gz?d...
Good but dated for 2.4 kernel:
http://www.oreilly.com/catalog/linuxdrive2/
http://linuxdevices.com/articles/AT4389927951.html
http://linuxdevices.com/articles/AT5793467888.html
|
|
|
All times are GMT -5. The time now is 09:47 AM.
|
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.
|
Latest Threads
LQ News
|
|
[root@Master linux-2.6.6]# make install
ake[1]: `arch/i386/kernel/asm-offsets.s' is up to date.
CHK include/linux/compile.h
Kernel: arch/i386/boot/bzImage is ready
sh /home/basem/src/kernel/linux-2.6.6/arch/i386/boot/install.sh 2.6.6 arch/i386/boot/bzImage System.map ""
NO module /bin/true found for kernel 2.6.6
mkinitrd failed
make[1]:***[install] Error 1
make:***[install] Error 2
what i'm suppose to do
i already installed
module-init-tools-3.0
modutils-2.4.22-8.ser.rpm
on RedHat ~9
Thanks for the great tutorial
I followever your tutorial step by step (except for the modutils-2.4.21-22.src.rpm package, which is the only one available from your site
Everything goes fine, except two things:
I have to copy module aic7xxx.ko to module aic7xxx.o, same for sg.ko -> sg.o
When I reboot my machine, I see the followings errors:
Loading aic7xxx.o module
insmod: can't read '/lib/aic7xxx.o'
Loading sg.o module
insmod: can't read '/lib/sg.o'
Initializing USB controller (uhci): FATAL: Module uchi not found
Initializing USB controller (usbcore): FATAL: Module usbcore not found
Initializing USB controller (hid): FATAL: Module hid not found
Mouting USB filesystem
grep: /proc/bus/usb/drivers: No such file or directory:
Initializing USB keyboard: FATAL: Module keybdev not found
Initializing USB mouse: FATAL: Module mousebdev not found
Mounting local filesystems: mount: fs type vfat not supported by kernel
Mount /*proc/bus/usb already mounted or /proc/bus/usb busy
FLushing all current rules and user defined chains: iptables v 1.2.7a: can't initialize iptables table 'filter': iptables who? (do you need insmod?)
Perhaps iptables or your kernel needs to be upgraded
Tons of errors
I followed the tutorial excactly as you mentioned. I will appreciate any response since I've been trying to compile a 2.6.x kernel for a few months now
Regards
Xavier
"Missing }."
???
How can that be. I've had this problem for SOO long now and never found anything usefull on the net yet about it.
But still I allow myself to add here a tiny supplement that shows how to use a kernel that doesn't have the 'ext3.ko' module built in. Yes, it is possible. It worked for me with 2.6.15 original kernel source.
First make sure you have the old 'mkinitrd' package, that came with your RH9 distribution installed.
Build the initrd image the same way as you did for previous 2.4 kernels (yes, I know it will be bad).
$ cd /boot
$ mkinitrd initrd-2.6.x.img 2.6.x
// whre 'x' is a minor version of the kernel.
Now we try to fix the image. It is most likely the gzipped archive.
$ mkdir /mnt/image
$ gzip -dc initrd-2.6.x.img > 26.img
$ mount 26.img /mnt/image -o loop
Look at the directory and see what it contains:
$ cd /mnt/image
$ ls
// looks sweet
Now see what subdir 'lib' contains. It is most likely empty... :/
$ ls lib
// was it?
If so, copy the necessary modules from /lib/modules subdirectory
$ cp /lib/modules/2.6.15/kernel/fs/ext3/jbd.ko ./lib/
$ cp /lib/modules/2.6.15/kernel/fs/ext3/ext3.ko ./lib/
Now replace the old 'insmod' binary, that resided in ./bin or ./sbin subdirectories with the one that is shipped with 'module-init-tools' package.
$ cp /sbin/insmod.static ./sbin/insmod
$ vi linuxrc
Now in the top of the file, before anything else, add the insmod command that inserts both modules to the kernel.
$ insmod /lib/jbd.ko
$ insmod /lib/ext3.ko
Go back to the boot directory and replace the 'initrd' image.
$ cd /boot
$ umount 26.img
$ gzip -c9 26.img > initrd-2.6.15.img
Thats it. Depending on if you're using LILO or GRUB make necessary configuration changes like simply editing 'lilo.conf' or 'grub.conf' and perform a reboot. If everything went fine, the kernel should boot without any problems. Yes, it worked for me...
P.S. If at the boot time you see some QM_MODULES not implemented and you kernel panics then boot back with 2.4 and replace the 'insmod' binary within the initrd image, you have created. Most likely, you've added an old insmod from 'modutils' package and not the one that comes with 'module-init-tools'.