Chinaunix首页 | 论坛 | 博客
  • 博客访问: 83717
  • 博文数量: 22
  • 博客积分: 2071
  • 博客等级: 大尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-08 09:23
文章分类

全部博文(22)

文章存档

2012年(3)

2011年(2)

2010年(12)

2009年(5)

我的朋友

分类:

2009-12-08 11:35:08

虚拟机RedHat9 linux2.4内核升级为linux 2.6

 

前期准备:

 

 

1.linux的官方网站上下一个linux 2.6的内核!

 

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

/pub/linux/utils/kernel/modele-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.rpmdevice-mapper-1.00.19-2.i386.rpmlvm2-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”中的最新更新)

 

 

 

 

 

 

 

接下来正式开始升级:

 

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

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

       #make menuconfig    //开始配置内核

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

 

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

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

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

                       o 关于"Block Devices"的配置, 一定要选上对loopbackramdisk的支持.

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

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

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

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

                    o 关于USB, 能选的都选上

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

                    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

内核编译到此就完全结束了,若想要成功启动内核,还要做一些后续的工作。依次执行如下命令:

   # cp /usr/src/linux-2.6.20.14/arch/i386/boot/bzImage

   # /boot/vmlinuz-2.6.20.14

   # cp /usr/src/linux-2.6.20.14/System.map /boot/System.map-2.6.20.14

   # cd /boot

   # mkdir backup

保存原来的System.mapvmlinuzbackup中。

接下来:

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

   # rm -rf vmlinux

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

   # ln -s vmlinuz-2.6.20.14 vmlinuz

 

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

   # cd /boot

   # new-kernel-pkg --mkinitrd --depmod --install 2.6.20.14

 

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

   # gedit /boot/grub/grub.conf

在弹出的编辑窗口中,将“default=1”改为“default=0”,并将“kernel”行的“LABEL=/”改为上一步所查看的分区,按我们上一步的假设,改完以后的“kernel”行应该是下面的样子:

kernel /vmlinuz-2.6.20.14 ro root=/dev/sda1

好了,整个内核升级大功告成!

阅读(1170) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~