做了部分的修订,主体没有变. 自己按照这个过程走了的,没有问题!
参见:http://blog.youkuaiyun.com/flyfox315/archive/2007/01/31/1499054.aspx
虚拟机:vmware linux发行版:Redhat9 linux内核:2.4.20-8
目标:要将内核从2.4.20-8升级到2.6.10标准内核
步骤如下:
1、查看Linux内核版本
# uname -a
2、从kernel.org下载2.6.10标准内核源码 linux-2.6.10.tar.gz
3、从google搜索下载内核升级工具
(1)下载 module-init-tools-3.2.tar.bz2
(2)下载 mkinitrd-4.1.18-2.i386.rpm
(3)下载 lvm2-2.00.25-1.01.i386.rpm
(4)下载 device-mapper-1.00.19-2.i386.rpm
这四个工具,在新浪爱问下载
全部都要进行unzip了:
# unzip module-init-tools-3.2.tar.bz2.zip
#unzip module-init-tools-3.2.tar.bz2.zip
#unzip lvm2-2.00.25-1.01.i386.rpm.zip
#unzip device-mapper-1.00.19-2.i386.rpm.zip
只需要下载这四个工具就好,内核从这里下载
然后,给redhat9 安装vmwaretools ;完成之后重启;就可以拷贝文件了
4、将下载好的内核源码包和4个升级工具都拷贝到/usr/src文件夹下。注意拷贝的时候,按照文件拷贝,好像不能拷贝文件夹
5、拷贝完毕,开始解压新内核,具体操作请依次执行以下命令:
# cd /usr/src (进入到/usr/src目录下,如果已经在/usr/src目录下,可不执行该命令)
# rm –rf linux (删除linux文件夹。值得一提的是,如果内核先前从未编译过,则没有这个文件夹,此命令行可略过)
# tar zvxf linux-2.6.10.tar.gz (解压新内核)
# ln -s linux-2.6.10 linux (重新生成linux文件夹)
6、安装module-init-tools工具
在/usr/src目录下,依次执行下列命令:
# tar jvxf module-init-tools-3.2.tar.bz2 (解压module-init-tools)
# cd module-init-tools-3.2 (由/usr/src目录进入module-init-tools目录下)
#./configure --prefix=/
# make moveold
# make all install
#./generate-modprobe.conf /etc/modprobe.conf
7、安装另外三个升级工具
回到/usr/src目录下,依次执行下列3个命令来安装另外三个升级工具:
# rpm -ivh --nodeps mkinitrd-4.1.18-2.i386.rpm (注意,这里一定要加入--nodeps参数,下同)
# rpm -ivh --nodeps lvm2-2.00.25-1.01.i386.rpm
# rpm -ivh --nodeps device-mapper-1.00.19-2.i386.rpm
8、配置内核选项。
# cd linux-2.6.10 (进入到/usr/src/linux-2.6.10目录下)
# make mrproper (该命令可确保源代码目录下没有不正确的.o文件)
# make menuconfig (配置内核各选项)
此时会出现一个图形界面,列出了所有的内核配置选项。
(1)Loadable Module support选项中,选上“Module unloading”和“Automatic kernel module loading”这两项;
(2)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 Mass Storage support”
Device Drivers --->;Network device support --->Ethernet (10 or 100Mbit) ---><*> AMD PCnet32 PCI support
(3)File system--->(以下9个选项是关于ext2和ext3文件系统配置,全部选上)
Second extended fs support
Ext2 extended attributes
Ext2 POSIX Access Control Lists
Ext2 Security Labels
Ext3 journalling file system support
Ext3 extended attributes
Ext3 POSIX Access Control Lists
Ext3 Security Labels
JBD (ext3) debugging support
File system--->DOS/FAT/NT Filesystems --->选上“NTFS file system support”;
(4)Device Drivers ---><*>SCSI device support
Device Drivers ---><*>SCSI device support ---><*>SCSI disk support
Device Drivers---><8>SCSI device support--->SCSI low-level drivers---><*>; BusLogic SCSI support
在这里编译配置完成后, 建议您,重新make menuconfig 配置内核,然后检查上面的配置, 配置一旦出错,后面会有各种各样奇怪的问题,因此要保证配置的正确性.
9、开始编译
在/usr/src/linux-2.6.10目录下,执行以下命令即可编译。
# make dep (建立编译时所需的从属文件。注意:如果内核从未编译过,此步可跳过)
# make clean (清除内核编译的目标文件。注意:如果内核从未编译过,此步可跳过)
# make bzImage (注意大小写。这一步才是真正编译内核)
内核编译成功后,会在/usr/src/linux/arch/i386/boot目录中生成一个新内核的映像文件bzImage。
# make modules (编译可加载模块)
# make modules_install (安装可加载模块)
安装成功后,系统会在/lib/modules目录下生成一个2.6.10子目录,里面存放着新内核的所有可加载模块。
将BusLogic.o文件复制:
# cp /usr/src/linux-2.6.10/drivers/scsi/BusLogic.o /lib/modules/2.6.10/kernel/drivers/scsi
# make (新添加的,一定要make 完成之后,再进行make install)
# make install (安装新内核)
10、将新内核bzImage和System.map文件拷贝到/boot目录下,依次执行以下命令:
# cp /usr/src/linux-2.6.10/arch/i386/boot/bzImage /boot/vmlinuz-2.6.10
# cp /usr/src/linux-2.6.10/System.map /boot/System.map-2.6.10
# cd /boot (进入boot目录)
# rm –rf System.map (删除原来的连接)
# ln –s System.map-2.6.10 System.map (重新建立连接)
11、修改Grub启动管理器
在/boot目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.6.10 (这时候你的/boot下会生成一个initrd-2.6.10.img,并且你的grub.conf文件也作了相应更改)
# df (查看根目录/在那个分区,下一步要用到。我的为 /dev/sda2)
# vi grub/grub.conf
进入grub.conf文件,找到如下信息:
default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.10)
root (hd0,0)
kernel /vmlinuz-2.6.10 ro root= LABEL=/
initrd /initrd-2.6.10.img
做两处修改:
(1) 将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)
(2) 将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)
此步很重要,修改错误将可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:
注意在linuz-2.6.10 ro root = 的那一行我们去掉了"=LABEL"
default=0
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Linux (2.6.10)
root (hd0,0)
kernel /vmlinuz-2.6.10 ro root=/dev/sda2
initrd /initrd-2.6.10.img
title Red Hat Linux (2.4.20-8)
root (hd0,0)
kernel /vmlinuz-2.4.20-8 ro root=LABEL=/
initrd /initrd-2.4.20-8.img
12、完成,重启。