红联Linux门户
Linux帮助

虚拟机中RedHat Linux 2.4内核升级为2.6内核方法

发布时间:2015-02-26 10:05:34来源:linux网站作者:linux人

1.去Linux的官方网站上下一个linux 2.6的内核!http://www.kernel.org;


2.安装一个modules-init-tools-3.0.tar.gz工具包,因为2.4.x的modutils工具包已经不适合新的2.6.x内核,必须将它升级到modele-init-tools工具包。

可以到http://www.kernel.org/pub/linux/kernel/people/rusty/modules/module-init-tools-3.0.tar.gz下载


3.安装modele-init-tools工具包

#configure --prefix=/

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

#make all install

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


4.安装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 device-mapper-1.00.19-2.i386.rpm

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

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


5.安装binutils-2.17.tar.gz,(这个是升级虚拟机中的LINUX所必备的),依次执行如下命令:

tar zxf binutils-2.17.tar.gz

cd binutils-2.17

./configure

make

make install


6.在升级之前,还要确定以下一些软件不低于以下的版本:

Name: Minimum version: How to find version:

Gnu C Compiler 2.95.3 gcc--version

Gnu Make 3.78 make--version

binutils 2.12 ld-v

util-linux 2.10o fdformat--version

module-init-tools 0.9.9 depmod-V

procps 2.0.9 ps--version

(参见“Documentation/Change”中的最新更新)

接下来正式开始升级:

#tar xzvf linux-2.6.20.tar.gz /usr/src/

#./configure //生成Makefile文件,如果已经有Makefile这步就没必要了

#make menuconfig //开始配置内核

关于menuconfig中的配置,以下几点值得注意:

关于"Loadable Module support"选项, 一定要选上"Module unloading"和"Automatic kernel module loading"这两个选项.

关于"Processor type and features"选项, 一定要选上"Preemptible Kernel"选项, 这是2.6.x内核优于2.4.x内核的重要原因之一.

关于"Device Driver"的主菜单里配置以下内容:

关于"Block Devices"的配置, 一定要选上对looPBack和ramdisk的支持.

关于"Multi-device support(RAID and LVM)", 要选上"device mapper".

关于"Input device support", 记得要选上"Keyboards"和"Mice"的支持.

关于"Graphics support", 要选上对frame buffer的支持.

关于sound选项里,与ALSA有关的, 要选上"OSS API emulation"选项. OSS可以不用了.

关于USB, 能选的都选上

关于文件系统,常用的几种一定要选上,比如

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

注意1:另外,如果使用虚拟机的一定要把sics的驱动选择上

配制好内核后保存退出(保存的名字推荐使用默认的.config,这样做的好处是在下次再menuconfig时,它会自动自动装载这次.config中的配置), 然后就可以直接编译了, "make dep"这一步在2.6已经不需要了。

接下来可以开始编译了:

# make bzImage

注意2:在这一步快要完成时可能会出现一下错误提示:

....

OBJCOPY arch/i386/boot/compressed/vmlinux.bin

BFD: Warning: Writing section `.bss' to huge (ie negative) file offset 0xc0277000.

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

解决办法:

在arch/i386/Makefile里面做一些修改:

将OBJCOPYFLAGS改成如下的:

OBJCOPYFLAGS := -O binary --change-section-lma .bss-0xc0000000 -R .note -R .comment -S

然后重新make bzImage OK!

# make modules

# make modules_install

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

注意3:这一步用于解决SCSI硬盘+VMWARE+RedHat架构中,因为BusLogic被编译进了内核而不是一个module的形式(2.4内核的Buslogic模块即使静态编译进内核也不行)。解决方式是直接将BusLogic.o文件复制过去.(如果不是SCSI硬盘+VMWARE+REDHAT架构中上面的拷贝可以省略)

# make install

重启系统

到这里内核的编译已经完成,可以重新启动linux系统了

#shutdown -r now