您的位置:首页 > 运维架构 > Linux

升级linux 2.6.37.2内核

2011-02-27 14:29 363 查看
昨天因为/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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: