升级2.6内核

2009-03-01 21:43


PS:我自己也在网上找了好久,才一步步搞过来,搞了6次,最后一次终于可以了。之前是因为按照网上的做法没有成功,后来百度了很久才发现软件包没有全。(http://topic.csdn.net/u/20080515/22/89cb144a-e871-4891-af91-ea5c7c6e8c73.html)其中我所用的软件包和本文的版本不一样,为了方便就直接复制了。

软件包:
1、Linux的2.6.18版本内核包(linux-2.6.18.tar.bz2)

2、Modutils 3.2 工具包(module-init-tools-3.2.tar.gz

3、Mkinitrd 4.1.18-2 工具包(mkinitrd-4.1.18-2.i386.rpm)

4、Device Mapper 开发包(device-mapper-1.00.19-2.i386.rpm)

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

6、Binutils 开发包(binutils-2.17.tar.gz):如升级安装于虚拟机上的Red Hat Linux,则必需该包。
网上很多人都没有装Binutils 开发包因此都会出现错误(之前我也不知道后来在网上百度了很久才找到原因)。如下类似:

Loading BusLogic.o module

No module found in object

insmod:error inserting '/lib/BusLogic.o':-1 Invalid module format

ERROR:/bin/insomd exited abnormally!

Mounting /proc filesystem

Creating block devices

VFS:Cannot open root device "LABEL=/dev/sda2" or unknown-block(0,0)

Please append a correct "root=" boot option

Kernel panic - not syncing:VFS:Unable to mount root fs on unknown-block(0,0)

 

升级步骤:

1、先安装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内核的新配置文件)

2、安装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

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

tar zxf binutils-2.17.tar.gz

cd binutils-2.17

./configure

make

make install

4、开始编译新内核

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

cp ./linux-2.6.18.tar.bz2/usr/src

tar zjvf linux-2.6.18.tar.bz2

cd linux-2.6.18

make mrproper

make menuconfig

4.1、配置内核
此时时会出现一个图形界面,列出了所有的内核配置选项,选中:

“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”;


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

make

make modules

make modules_install

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

make install

cp /usr/src/linux-2.6.18/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18

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

cd /boot

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

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

设置GRUB启动,修改相应的启动文件:

 

如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)

在/boot目录下,执行以下命令:

# new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候你的/boot下生成一个initrd-2.6.18.img,并且你的grub.conf也作了相应更改)

# df (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是”/”,千万不要搞错哦。我的为 /dev/hda2)

# vi grub/grub.conf

进入grub.conf文件,找到如下信息:

default=1

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.6.18)

root (hd0,0)

kernel /vmlinuz-2.6.18 ro root= LABEL=/

initrd /initrd-2.6.18.img

做两处修改:

(1)将default=1改为default=0(不改的话,重启之后默认进入2.4内核)

(2)将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)

此步很重要,修改错误将会可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:

default=0

timeout=10

splashimage=(hd0,0)/grub/splash.xpm.gz

title Red Hat Linux (2.6.18)

root (hd0,0)

kernel /vmlinuz-2.6.18 ro root=/dev/sda3

initrd /initrd-2.6.18.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

最后就大功告成!赶快重启,看看升级后的2.6内核吧!


blog.csdn.net/xqt8888/archive/2007/09/21/1795234.aspx博客中这个说明很好:

# make modules (编译可加载模块)
  # make modules_install (安装可加载模块)
  安装成功后,系统会在/lib/modules目录下生成一个2.6.18子目录,里面存放着新内核的所有可加载模块。
  # make install (安装新内核)
  注意:make install的时候可能会出现如下错误信息:
  No module BusLogic found for kernel 2.4.12
  mkinitrd failed
  此问题一般只出现在SCSI硬盘+VMWARE+REDHAT架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将可以BusLogic.o文件复制过去:
  # cp /usr/src/linux-2.6.18/drivers/scsi/BusLogic.o /lib/modules/2.6.18/kernel/drivers/scsi
  不过别忘记,复制过后再执行一下make install。
  (如果make menuconfig时,把BusLogic模块选成M--Module模式--就不会出现这个提示。)
  四、启动新内核
  10、将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令:
  # cp /usr/src/linux-2.6.18/arch/i386/boot/bzImage /boot/vmlinuz-2.6.18
  # cp /usr/src/linux-2.6.18/System.map /boot/System.map-2.6.18
  # cd /boot (进入boot目录)
  # rm –rf System.map (删除原来的连接)
  # ln -s System.map-2.6.18 System.map (重新建立连接)
  11、修改Grub启动管理器
  如果没有错误的话, 下面开始修改grub配置文件(不要告诉我你用的lilo)
  在/boot目录下,执行以下命令:
  # new-kernel-pkg --mkinitrd --depmod --install 2.6.18 (这时候你的/boot下生成一个initrd-2.4.12.img,并且你的grub.conf也作了相应更改)
  # df (查看根目录在那个分区,下一步要用到。注意,这里根分区不时boot的那个50M的分区,而一般是你最大的那个分区,也就是”/”,千万不要搞错哦。我的为 /dev/hda2)
  # vi /grub/grub.conf
  进入grub.conf文件,找到如下信息:
  default=1
  timeout=10
  splashimage=(hd0,0)/grub/splash.xpm.gz
  title Red Hat Linux (2.6.18)
  root (hd0,0)
  kernel /vmlinuz-2.6.18 ro root= LABEL=/
  initrd /initrd-2.6.18.img
  做两处修改:
  (1) 将default=1改为default=0(不改的话,重启之后默认进入2.4内核)
  (2) 将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)
  此步很重要,修改错误将会可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:
  default=0
  timeout=10
  splashimage=(hd0,0)/grub/splash.xpm.gz
  title Red Hat Linux (2.6.18)
  root (hd0,0)
  kernel /vmlinuz-2.6.18 ro root=/dev/hda2
  initrd /initrd-2.6.18.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,OK,大功告成!赶快重启,看看升级后的2.6内核吧~~~~

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值