CentOS 5.4: installing new kernel 2.6.32.9 guide

wget "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.32.9.tar.bz2"#
Recently I've spent a few days in fight with the following new kernel panics:

insmod: error inserting '/lib/dm-region-hash.ko': -1 File exists
mount: could not find filesystem '/dev/root'

After some googling I didn't find any useful fixes, so I started to dig deeper and figured that default built initrd image does't include LVM utility. Here detailed strategy guide how to install 2.6.32.9 kernel on CentOS 5.4

UPD: see at the end

# mkdir ~/kernel
# cd ~/kernel
# wget "http://www.kernel.org/pu>blinux/kernel/v2.6/linux>-2.6.32.9.tar.bz2"
# tar jxf linux-2.6.32.9.tar.bz2
# cd linux-2.6.32.9
# cp /boot/config-2.6.18-164.1>1.1.el5.img .config
# make menuconfig
I don't make any changes except CPU type and set Preemption Mode to (none) No Forced Preemption (Server)).Save changes.

# make && make modules_install headers_install install
Now let's look inside new kernel image, it's interesting:

# cd ..
# mkdir newinitrd
# cp /boot/initrd-2.6.32.9.img .
# cd newinitrd
# zcat ../initrd-2.6.32.9.img | cpio -i
# ls
bin  dev  etc  init  lib  proc  sbin  sys  sysroot
# ls bin
dmraid  insmod  kpartx  lvm  modprobe  nash
If you see lvm then just reboot and dance. Else:

 # cp /sbin/lvm.static bin/lvm
Now look at init script, it should look like this:

# cat init
#!/bin/nash

mount -t proc /proc /proc
setquiet
echo Mounting proc filesystem
echo Mounting sysfs filesystem
mount -t sysfs /sys /sys
echo Creating /dev
mount -o mode=0755 -t tmpfs /dev /dev
mkdir /dev/pts
mount -t devpts -o gid=5,mode=620 /dev/pts /dev/pts
mkdir /dev/shm
mkdir /dev/mapper
echo Creating initial device nodes
mknod /dev/null c 1 3
mknod /dev/zero c 1 5
mknod /dev/urandom c 1 9
mknod /dev/systty c 4 0
mknod /dev/tty c 5 0
mknod /dev/console c 5 1
mknod /dev/ptmx c 5 2
mknod /dev/rtc c 10 135
mknod /dev/tty0 c 4 0
mknod /dev/tty1 c 4 1
mknod /dev/tty2 c 4 2
mknod /dev/tty3 c 4 3
mknod /dev/tty4 c 4 4
mknod /dev/tty5 c 4 5
mknod /dev/tty6 c 4 6
mknod /dev/tty7 c 4 7
mknod /dev/tty8 c 4 8
mknod /dev/tty9 c 4 9
mknod /dev/tty10 c 4 10
mknod /dev/tty11 c 4 11
mknod /dev/tty12 c 4 12
mknod /dev/ttyS0 c 4 64
mknod /dev/ttyS1 c 4 65
mknod /dev/ttyS2 c 4 66
mknod /dev/ttyS3 c 4 67
echo Setting up hotplug.
hotplug
echo Creating block device nodes.
mkblkdevs
echo "Loading ehci-hcd.ko module"
insmod /lib/ehci-hcd.ko
echo "Loading ohci-hcd.ko module"
insmod /lib/ohci-hcd.ko
echo "Loading uhci-hcd.ko module"
insmod /lib/uhci-hcd.ko
mount -t usbfs /proc/bus/usb /proc/bus/usb
echo "Loading jbd.ko module"
insmod /lib/jbd.ko
echo "Loading ext3.ko module"
insmod /lib/ext3.ko
echo "Loading libata.ko module"
insmod /lib/libata.ko
echo "Loading ata_piix.ko module"
insmod /lib/ata_piix.ko
echo "Loading dm-mod.ko module"
insmod /lib/dm-mod.ko
echo "Loading dm-log.ko module"
insmod /lib/dm-log.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-mirror.ko module"
insmod /lib/dm-mirror.ko
echo "Loading dm-zero.ko module"
insmod /lib/dm-zero.ko
echo "Loading dm-snapshot.ko module"
insmod /lib/dm-snapshot.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
mkblkdevs
echo Scanning and configuring dmraid supported devices
echo Scanning logical volumes
lvm vgscan --ignorelockingfailure
echo Activating logical volumes
lvm vgchange -ay --ignorelockingfailure  VolGroup00
resume /dev/VolGroup00/LogVol01
echo Creating root device.
mkrootdev -t ext3 -o defaults,ro /dev/VolGroup00/LogVol00
echo Mounting root filesystem.
mount /sysroot
echo Setting up other filesystems.
setuproot
echo Switching to new root and running init.
switchroot

First two bolded rows are
  duplicates, remove them, it will fix first error (see above), second bolded commands usual missed, so just add them exactly before first /dev/VolGroup name occured (i.e before resume /dev/VolGroup00/LogVol01 as I did), it will fix second error. Now pack fixed kernel image back:
 # find . | cpio -c -o > ../initrd
# cd ..
Now compress kernel image (I prefer -2 -- it loads faster):
 # gzip -2 < initrd > initrd-2.6.32.9.img
Now install it:

# cp -f initrd-2.6.32.9.img /boot
# reboot
...
# uname -sr
Linux 2.6.32.9
Cheers!

UPD: you might need to set CONFIG_SYSFS_DEPRECATED_V>2=y in kernel config




А так же :

Проблема отцов и детей
Бог изгнал Адама и Еву из рая за то, что они его ослушались… Этот отрывок из Библии как нельзя лучше свидетельствует о том, что проблема «отцов и детей» будет актуальна всегда. Дети не могут слушаться и во всем потакать родителям, потому что так заложено во всех нас. Каждый из нас - индивидуальность и каждый имеет свою точку зрения.


Николай Левашов. Спящая Россия


Памяти «копейки»


Active Credit Portfolio Management


The Coasters (1955-1994)



Hosted by uCoz