前些天升级了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 将当前目录切换到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) 选择第一项,就可以真正使用2.6.20的Linux系统了。Enjoy the new kernel! |
Red Hat Linux 9.0 内核升级大法(2.4.20-8 ~ 2.6.20)
最新推荐文章于 2022-11-02 10:26:48 发布
Red Hat Linux 9.0 内核升级大法(2.4.20-8 ~ 2.6.20)