linux 内核升级

适用于内核从 2.4.x 升级到 2.6.x 。对虚拟机很适用的!

 

(1)在虚拟机上运行 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

 (2) 如果选择linux 2.6.18版本,可能会在内核启动的时候,运行到

  ImPS/2 Generic Wheel Mouse as /class/input/input1就不动了。

  我是通过选择2.6.20.1版本后才成功的。


 

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

 

1 Linux 2.6.20 .1 版本内核包( linux-2.6.20.1.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 上搜索,搜索的时候要用文件名全名

下载完后 . 现在开始安装工具包吧!首先安装 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

 

 

将当前目录切换到 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.1.tar.gz /usr/src

tar zxf linux-2.6.20..1tar.gz

cd linux-2.6.20.1

make mrproper

make menuconfig

make clean( 如果以前 make 失败过 )

 

此时会出现一个图形界面,列出了所有的内核配置选项,其中有几项是必需的,用“ 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 ,其实在vmvare 6.0以后都应该尽量全选以支持usb.

 

注意,在 Vmware 下以下选项必须选上,否则编译要出问题:

Device Drivers --->SCSI device support ---><*> SCSI disk support

Device Drivers --->SCSI device support --->SCSI low-level drivers ---> <*> BusLogic SCSI

support

Device Drivers ---> Fusion MPT device support ---> Fusion MPT (base + ScsiHost) drivers

Fusion MPT misc device (ioctl) driver (这个不确定) # 注意:只能选模块方式,直接编译进内核,就出错,不知道为什么,这个浪费了我好多时间才找到,编译了几十次的成果。

Device Drivers ---> USB support ---><*> USB Mass Storage support (*suppor for host-side Usb 选上 )

Device Drivers ---> Networking support --->Ethernet (10 or 100Mbit) ---> <*> AMD PCnet32 PCI

 

support

 

最好把 ext3 文件系统支持也编译进内核(我这个版本默认是模块形式)

 

<*> Ext3 journalling file system support

<*>Ext3 extended attributes

<*>Ext3 POSIX Access Control Lists

<*>Ext3 Security Labels

<*>JBB (ext3) debugging support

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

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

make bzImage

make modules

make modules_install

make install

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

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

内核编译到此就完全结束了.

 

若想要成功启动内核,还要做一些后续的工作。

依次执行如下命令(其实这些命令,已经不需要执行了,因为make install 已经做了这件事了,可以到/boot下面执行命令 ll  验证)

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

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

cd /boot

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

rm -rf vmlinux

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

ln -s vmlinuz-2.6.20.1 vmlinuz


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

cd /boot

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

 



vi  /boot/grub/grub.conf

 

(1)将“ default=1 ”改为“ default=0 ”,

----------------以下这一步不一定需要执行,只有当起不来的时候再进就内核执行这一部。

(2)将“ kernel ”行的“ LABEL=/ ”改为

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

所查看的分区,按我们上一步的假设,改完以后的“ kernel ”行应该是下面的样子:

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


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

Red Hat Linux 2.6.20 .1

Red Hat Linux 2.4.20 -8

选择第一项,就可以真正使用 2.6.20 .1 Linux 系统了。

 

 

 

这是一篇关于2.6.18内核升级的文章:http://blog.yam.com/carl44/article/13042579。可以摘取文件系统配置部分进行参考。

你可能感兴趣的:(linux 内核升级)