升级linux 2.6.37.2内核

 

昨天因为/etc/rc.d/rc文件被我弄坏,不得不重新安装系统,安装的发行版内核用的还是2.6.18,决定要赶紧升级下内核,呵呵。话说linux2.6.37.2内核出来也已经有一段时间了,目前2.6.38还在开发当中,于是还是下个stable的,步骤如下:

 

1.  ftp://ftp.kernel.org/pub/linux-2.6.37.2.tar.bz2获取源代码,放在/usr/src/kernel下, 并用tar解压

2.  首先看一下源目录中Documentation/Changes,看看要升级哪些软件

o  Gnu C                  3.2                     # gcc --version
o  Gnu make               3.80                    # make --version
o  binutils               2.12                    # ld -v
o  util-linux             2.10o                   # fdformat --version
o  module-init-tools      0.9.10                  # depmod -V
o  e2fsprogs              1.41.4                  # e2fsck -V
o  jfsutils               1.1.3                   # fsck.jfs -V
o  reiserfsprogs          3.6.3                   # reiserfsck -V 2>&1|grep reiserfsprogs
o  xfsprogs               2.6.0                   # xfs_db -V
o  squashfs-tools         4.0                     # mksquashfs -version
o  btrfs-progs            0.18                    # btrfsck
o  pcmciautils            004                     # pccardctl -V
o  quota-tools            3.09                    # quota -V
o  PPP                    2.4.0                   # pppd --version
o  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep version
o  nfs-utils              1.0.5                   # showmount --version
o  procps                 3.2.0                   # ps --version
o  oprofile               0.9                     # oprofiled --version
o  udev                   081                     # udevinfo -V
o  grub                   0.93                    # grub --version
o  mcelog                 0.6
o  iptables               1.4.2                   # iptables -V

Changes中包含了大多数软件包的下载地址,按找版本要求安装即可

我需要升级e2fsprogs,reiserfsprogs,xfsprogs,squashfs-tools,btrfs-progs,mcelog,iptables

安装iptables的时候,要把/sbin中的iptables*和ip6tables*删除,并将/usr/local/sbin中的相应文件复制到/sbin中

3.好,安装完需要的软件包后,可以开始进入配置内核的界面了

#make mrproper 确保源代码目录下没有不正确的.o文件

#make menuconfig 根据自己硬件配置,不确定的选择默认吧

需要注意的是,在General setup --->

                                               [*] enable  deprecated sysfs features to support old  userspace too

                                               [*] enabled deprecated sysfs features by default

要选中,否则会因为mkinitrd和nash的版本问题出现如下错误:

mount: could not find filesystem ‘/dev/root’
setuproot: moving /dev failed: No such file or directory
setuproot: error mounting /proc: No such file or directory
setuproot: error mounting /sys: No such file or directory
switchroot: mount failed: No such file or directory

#make dep 建立编译时需要的从属文 件,没有编译过的代码可以跳过

#make clean 这里也可以跳过

#make

漫长的等待中...

#make modules (编译模块)

#make modules_install

#make install(安装内核)

[root@localhost linux-2.6.37.2]# make install
sh /usr/src/kernels/linux-2.6.37.2/arch/x86/boot/install.sh 2.6.37.2 arch/x86/boot/bzImage /
                System.map "/boot"

4.把新镜像文件放到tmp中

# cp /boot/initrd-2.6.37.2.img /tmp

在tmp中新建一个文件夹

# mkdir /tmp/newinitrd

# cd /tmp/newinitrd

然后解压initrd-2.6.37.2.img到newinitrd文件夹

[root@localhost newinitrd]# zcat ../initrd-2.6.37.2.img | cpio -i
11260 blocks
[root@localhost newinitrd]# ls
bin  dev  etc  init  lib  proc  sbin  sys  sysroot

用vim修改init文件

其中:

echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko
echo "Loading dm-region-hash.ko module"
insmod /lib/dm-region-hash.ko

删去重复的两行,不然启动会echo这个错误!

重新打包镜像

[root@localhost newinitrd]# find . | cpio -c -o > ../initrd-2.6.37.2_new.img
11260 blocks

然后把新的镜像文件移动到/boot

[root@localhost newinitrd]# mv ../initrd-2.6.37.2_new.img /boot
修改/boot/grub/grub.conf

#boot=/dev/sda
default=1    #改为0
timeout=15
splashimage=(hd0,7)/grub/splash.xpm.gz
hiddenmenu
title Red Hat Enterprise Linux Server (2.6.37.2)
        root (hd0,7)
        kernel /vmlinuz-2.6.37.2 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.37.2.img         #改为initrd /initrd-2.6.37.2_new.img
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
        root (hd0,7)
        kernel /vmlinuz-2.6.18-164.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-164.el5.img
title Other
        rootnoverify (hd0,1)
        chainloader +1

5.重新启动

#reboot

 

 

 

 

你可能感兴趣的:(升级linux 2.6.37.2内核)