How to Compile 2.6 kernel for RedHat 9/8: Also how to get fedora updates on the 2.6.x build - Redhat

This is a discussion on How to Compile 2.6 kernel for RedHat 9/8: Also how to get fedora updates on the 2.6.x build - Redhat ; See (STEP 18) if just interested in Fedora updates for Redhat 9/8.0 How to Compile 2.6 kernel for RedHat 9/8 Mike Chirico Last Updated: Tue May 11 18:59:04 EDT 2004 The latest version of this document can be found at: ...

+ Reply to Thread
Results 1 to 2 of 2

Thread: How to Compile 2.6 kernel for RedHat 9/8: Also how to get fedora updates on the 2.6.x build

  1. How to Compile 2.6 kernel for RedHat 9/8: Also how to get fedora updates on the 2.6.x build

    See (STEP 18) if just interested in Fedora updates for Redhat 9/8.0 How to
    Compile 2.6 kernel for RedHat 9/8
    Mike Chirico
    Last Updated: Tue May 11 18:59:04 EDT 2004

    The latest version of this document can be found at:
    http://prdownloads.sourceforge.net/s...6.txt?download

    For configs ref:
    http://sourceforge.net/project/showf...kage_id=109944



    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/kern...ols-3.0.tar.gz

    http://www.kernel.org/pub/linux/kern....21-23.src.rpm



    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/show...kage_id=109944

    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 as desired.
    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/s...ar.gz?download



    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/s...t.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 (GETTING UPDATES: YUM):

    Yum works with RPM based systems to update packages
    automatically. Yum is an officially supported update
    mechanism for Fedora, and Fedora mirrors are set up
    as Yum repositories.

    Download:

    http://linux.duke.edu/projects/yum/download.ptml

    Before installing Yum, or any RPM package, you'll need
    to do the following:

    export LD_ASSUME_KERNEL=2.4.19

    Next, install Yum

    rpm -ivh yum-2.0.7-1.noarch.rpm

    The "/etc/yum.conf" may need to be updated. Here is an
    example file with the values for redhat 9 entered in
    directly


    [main]
    cachedir=/var/cache/yum
    debuglevel=2
    logfile=/var/log/yum.log
    pkgpolicy=newest
    distroverpkg=redhat-release
    tolerant=1
    exactarch=1

    [fedora-stable-9]
    name=Fedora Project Stable RPMS for RHL 9
    baseurl=http: //download.fedora.us/fedora/redhat/9/i386/yum/stable/
    gpgcheck=1

    [fedora-updates-9]
    name=Fedora Project update RPMS for RHL 9
    baseurl=http: //download.fedora.us/fedora/redhat/9/i386/yum/updates/
    gpgcheck=1


    NOTE: If you're using Redhat 8, replace 9 with "8.0"

    The following will download a lot of "HEADER" files, but WILL NOT update
    anything. Yes, I too thought my system was being updated with old files,
    but IT IS NOT.

    yum check-update

    After this runs, which takes awhile. You can then update selected
    packages.
    Here is an example of the "libpng10" package being updated.

    yum -y update libpng10

    Also, subsequent calls to "yum check-update" shows what needs to be
    updated.


    To update every currently installed package

    yum -y update






    STEP 19 (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/s...ar.gz?download




    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=e...p=linux.kernel
    http://linuxdevices.com/articles/AT3855888078.html

    http://prdownloads.sourceforge.net/s...6.txt?download
    http://prdownloads.sourceforge.net/s...t.txt?download
    http://prdownloads.sourceforge.net/s...ar.gz?download
    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/c...ar.gz?download

    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



  2. Re: How to Compile 2.6 kernel for RedHat 9/8: Also how to get fedora updates on the 2.6.x build

    Hopefully the following will help... I've added how to import Fedora keys as
    well.rpm --import http://www.fedora.us/FEDORA-GPG-KEYHow to Compile 2.6
    kernel for RedHat 9/8
    Mike Chirico
    Last Updated: Tue May 11 23:48:32 EDT 2004

    The latest version of this document can be found at:
    http://prdownloads.sourceforge.net/s...6.txt?download

    For configs ref:
    http://sourceforge.net/project/showf...kage_id=109944



    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/kern...ols-3.0.tar.gz

    http://www.kernel.org/pub/linux/kern....21-23.src.rpm



    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/show...kage_id=109944

    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 as desired.
    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/s...ar.gz?download



    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/s...t.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 (GETTING FEDORIA UPDATES: YUM):

    Yum works with RPM based systems to update packages
    automatically. Yum is an officially supported update
    mechanism for Fedora, and Fedora mirrors are set up
    as Yum repositories.

    Download:

    http://linux.duke.edu/projects/yum/download.ptml

    Before installing Yum, or any RPM package, you'll need
    to do the following:

    export LD_ASSUME_KERNEL=2.4.19

    Next, install Yum

    rpm -ivh yum-2.0.7-1.noarch.rpm

    The "/etc/yum.conf" may need to be updated. Here is an
    example file with the values for redhat 9 entered in
    directly


    [main]
    cachedir=/var/cache/yum
    debuglevel=2
    logfile=/var/log/yum.log
    pkgpolicy=newest
    distroverpkg=redhat-release
    tolerant=1
    exactarch=1

    [fedora-stable-9]
    name=Fedora Project Stable RPMS for RHL 9
    baseurl=http:
    //download.fedora.us/fedora/redhat/9/i386/yum/stable/
    gpgcheck=1

    [fedora-updates-9]
    name=Fedora Project update RPMS for RHL 9
    baseurl=http:
    //download.fedora.us/fedora/redhat/9/i386/yum/updates/
    gpgcheck=1


    NOTE: If you're using Redhat 8, replace 9 with "8.0"

    Next update your GPG-KEY

    rpm --import http://www.fedora.us/FEDORA-GPG-KEY

    The following will download a lot of "HEADER" files, but WILL NOT update
    anything. Yes, I too thought my system was being updated with old files,
    but IT IS NOT.

    yum check-update

    After this runs, which takes awhile. You can then update selected
    packages.
    Here is an example of the "libpng10" package being updated.

    yum -y update libpng10

    Also, subsequent calls to "yum check-update" shows what needs to be
    updated.


    To update every currently installed package

    yum -y update

    or to exclude packages like kernel and httpd:

    yum --exclude kernel* --exclude httpd* -y update



    STEP 19 (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/s...ar.gz?download




    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=e...p=linux.kernel
    http://linuxdevices.com/articles/AT3855888078.html

    http://prdownloads.sourceforge.net/s...6.txt?download
    http://prdownloads.sourceforge.net/s...t.txt?download
    http://prdownloads.sourceforge.net/s...ar.gz?download
    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


    FEDORA:

    http://fedora.artoo.net/faq/


    YUM:

    http://linux.duke.edu/projects/yum/download.ptml
    http://www.linuxjournal.com/article.php?sid=7448


    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/c...ar.gz?download

    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



+ Reply to Thread