redhat9升级内核2.4.20-8到2.6.20

来源:互联网 发布:广告招牌设计软件 编辑:程序博客网 时间:2024/05/18 16:38

     本人也是linux菜鸟,经过N次的尝试,终于把RedHat9从2.4.20-8升级到2.6.20了,现在把详细步骤写下来,以备以后查看。

 

     1.下载内核2.6.20放到目录/usr/src/,地址:http://www.kernel.org/pub/linux/kernel/v2.6/。

     2.安装一个modules-init-tools-3.4.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.4.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的下载目录(三个文件最好在同一目录,我放在/usr/src/)下,依次执行如下命令(注意,按照下面的顺序安装):

  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

  (一般情况下RedHat9中这些软件符合上述版本要求)

  如上述完成后,接下来:

 

      进入你下载的内核源码目录也就是/usr/src/,执行下面命令:

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

  #./configure                      //(生成Makefile文件,如果已经有Makefile这步就没必要了,例如我下的是 linux-2.6.20.tar.bz2,                                                  //就不需要这一步) 

  #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的支持.

  

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

  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的,也选上。


      (最好把Ext2和Ext3都编译进模块,要不然在整个过程完成后当你想重启启用新内核时会失败,我就是被这个问题折磨了好久)
  注意1:另外,如果使用虚拟机的一定要把sics的驱动选择上

  配制好内核后保存退出(保存的名字推荐使用默认的.config,这样做的好处是在下次再menuconfig时,它会自动自动装载这次.config中的配置), 然后就可以直接编译了, "make dep"这一步在2.6已经不需要了。(我有.config的备份,能成功编译并顺利重启,想要的话可以给我消息,不过建议大家还是自己动手配置一次,其实大部分都可以使用默认的,上面列出的就要自己配置一下)。



  接下来可以开始编译了:

  # make bzImage(或者make,我就是用的make)

  注意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

  解决办法:

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

  将OBJCOPYFLAGS改成如下的:

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

  然后重新make bzImage(若上面用的make,这儿最好 也用make,反正只要前后对应就行)。

 

      2).安装binutils-2.17.tar.gz,安装后记得重新编译

  # 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(或者reboot)

 

       PS:如果还有什么错误出现,建议你重新用RedHat9安装光盘重新安装一次2.4.20-8,并且选择安装全部软件包,然后再从第一步开始,肯定能成功的。

原创粉丝点击