现在的位置: 首页 > 综合 > 正文

Red Hat Linux 9.0 内核升级大法(2.4.20-8 ~ 2.6.20)

2013年10月01日 ⁄ 综合 ⁄ 共 3958字 ⁄ 字号 评论关闭
 

Red Hat Linux 9.0 内核升级大法(2.4.20-8 ~ 2.6.20)

前些天升级了Red Hat Linux 9.0的内核,从2.4.20-8升级到2.6.20版本。

升级过程曲折而艰辛,不过经过努力,还是成功了,愿与大家共享。

这个升级过程不局限于从2.4.20-8升级到2.6.20版本,可供将内核从2.4.x升级到2.6.x的用户使用。

首先,要做好准备工作,你的手中至少要有以下四套软件包:

1、Linux的2.6.20版本内核包(linux-2.6.20.tar.gz):作用就不多说了,自然是内核的源码包;

2、Modutils 3.2 工具包(module-init-tools-3.2.tar.gz):原2.4.x下的工具包不适用于2.6.x,必须升级;

3、Mkinitrd 4.1.18-2 工具包(mkinitrd-4.1.18-2.i386.rpm):在make install时需要使用该工具;

4、Device Mapper 开发包(device-mapper-1.00.19-2.i386.rpm):Mkinitrd工具包依赖该包;

5、LVM 开发包(lvm2-2.00.25-1.01.i386.rpm):Device Mapper依赖该包;

6、Binutils 开发包(binutils-2.17.tar.gz):如升级安装于虚拟机上的Red Hat Linux,则必需该包。

呵呵,准备就绪了吗?在这里我都没有给出下载地址,是因为不同的机器在不同的地域,不同的网络上,可能会有下载速度的较大差异。以前我用别人提供的下载地址,下载的都十分缓慢。所以,我在这里告诉大家如何快速的去获得这些工具包:一定要到Google(推荐)或BAIDU上搜索,搜索的时候要用文件名全名进行搜索,假如要搜索LVM 开发包,那么填写关键字时要写lvm2-2.00.25-1.01.i386.rpm,然后在找到的结果中选择以“Index of ……”为标题的网页。这样的网页会有很多,选择的时候要根据每一条记录最后一行给出的域名,选出离自己地理位置最近的网页。比如说“*.ch.kernel.org”之类的域名下的网页。这样可以有效保证下载速度,不会让你一边玩着游戏,一边升级内核,等软件包都下载完了,心思也就全跑到游戏上了。:)

现在开始安装工具包吧!首先安装Modutils 3.2 工具包,将当前目录切换到module-init-tools-3.2.tar.gz的下载目录下,依次执行如下命令:

tar zxf module-init-tools-3.2.tar.gz

cd module-init-tools-3.2

./configure --prefix=/

make moveold(将原来的工具程序改名,这样还可继续使用原来的2.4.x内核)

make all install

./generate-modprobe.conf /etc/modprobe.conf(生成2.6.x内核的新配置文件)

下面安装Mkinitrd 4.1.18-2 工具包,将当前目录切换到mkinitrd-4.1.18-2.i386.rpm、device-mapper-1.00.19-2.i386.rpm和lvm2-2.00.25-1.01.i386.rpm的下载目录(三个文件最好在同一目录)下,依次执行如下命令:

rpm -ivh --nodeps --force lvm2-2.00.25-1.01.i386.rpm

rpm -ivh --nodeps --force device-mapper-1.00.19-2.i386.rpm

rpm -ivh --nodeps --force mkinitrd-4.1.18-2.i386.rpm

在虚拟机上运行Red Hat Linux 9.0或安装内核到最后出现bzImage编译错误的情况,则必须安装Binutils 开发包,虚拟机上该类型的错误消息一般为:

OBJCOPY arch/i386/boot/compressed/vmlinux.bin
BFD: Warning: Writing section `.bss' to huge (ie negative) file offset 0xc025d000.
objcopy: arch/i386/boot/compressed/vmlinux.bin: File truncated
make[2]: *** [arch/i386/boot/compressed/vmlinux.bin] Error 1
make[1]: *** [arch/i386/boot/compressed/vmlinux] Error 2
make: *** [bzImage] Error 2

将当前目录切换到binutils-2.17.tar.gz下载目录,依次执行如下命令:

tar zxf binutils-2.17.tar.gz

cd binutils-2.17

./configure

make

make install

好了,所有安装包均已齐备,现在开始编译新内核吧!

将当前目录切换到linux-2.6.20.tar.gz下载目录,依次执行如下命令:

cp ./linux-2.6.20.tar.gz /usr/src

tar zxf linux-2.6.20.tar.gz

cd linux-2.6.20

make mrproper

make menuconfig

此时会出现一个图形界面,列出了所有的内核配置选项,其中有几项是必需的,用“Y”键选中:

“Loadable Module support”中,选“Module unloading”和“Automatic kernel module loading”;

“Device Drivers”→“Block Devices”中,选“Loopback device support”;

“Device Drivers”→“Multi-device support(RAID and LVM)”中,选“device mapper support”;

“Device Drivers”→“Graphics support”中,选“Support for frame buffer devices”;

“Device Drivers”→“USB support”中,若不在虚拟机环境中,应尽量全选以支持USB;

“Device Drivers”→“Network device support ”→“Ethernet (10 or 100Mbit)”中,选“AMD PCnet32 PCI support”;

由于Red Hat 9.0使用ext3作为文件系统,故“File System”中的所有关于ext2、ext3的选项必选;

如果在VMware虚拟机下编译内核,SCSI硬盘,则以下三个选项必选:

“Device Drivers”→“SCSI device support”;

“Device Drivers”→“SCSI device support”→“SCSI disk support”;

“Device Drivers”→“SCSI device support”→“SCSI low-level drivers”→“BusLogic SCSI support”;

对于要求系统提供比较多样的网络协议的开发人员,还应在“Network Support”中进行相应设置。

设置完成!开始进行真正的内核编译工作。依次执行如下命令:

make

make modules

make modules_install

make install

如果是VMware虚拟机+SCSI硬盘的用户,在make install之前,还要执行以下命令:

cp /usr/src/linux-2.6.20/drivers/scsi/BusLogic.o /lib/modules/2.6.20/kernel/drivers/scsi

内核编译到此就完全结束了,若想要成功启动内核,还要做一些后续的工作。依次执行如下命令:

cp /usr/src/linux-2.6.20/arch/i386/boot/bzImage /boot/vmlinuz-2.6.20(使用VMware的用户必需)

cp /usr/src/linux-2.6.20/System.map /boot/System.map-2.6.20

cd /boot

rm -rf System.map(删除原有的内核启动连接)

ln -s System.map-2.6.20 System.map(设置新的内核启动连接)

若你的Linux为GRUB启动,则还要修改相应的启动文件:

cd /boot

new-kernel-pkg --mkinitrd --depmod --install 2.6.20

df(该命令查看根分区,即标识为“/”的分区,看好后要记住它的名字,假设为/dev/sda2

gedit /boot/grub/grub.conf

在弹出的编辑窗口中,将“default=1”改为“default=0”,并将“kernel”行的“LABEL=/”改为上一步所查看的分区,按我们上一步的假设,改完以后的“kernel”行应该是下面的样子:

kernel /vmlinuz-2.6.20 ro root=/dev/sda2

由于本人使用虚拟机安装,所以上面的内容可能会与实环境有些出入,但蓝色粗体部分一定是这样的。

如果想在新内核下支持Hotplug、USB设备或体验sysfs文件系统等,还需要安装相应的工具包并改变配置文件。关于这些问题,这里不再叙述,以后开辟新帖供大家专门研究讨论。

好了,整个内核升级大功告成!重新启动之后,在操作系统选择栏中会看到如下两项:

Red Hat Linux(2.6.20)
Red Hat Linux(2.4.20-8)

选择第一项,就可以真正使用2.6.20的Linux系统了。Enjoy the new kernel!

【上篇】
【下篇】

抱歉!评论已关闭.