linux 2.4.21--->2.4.37 update

来源:互联网 发布:广州火舞软件 编辑:程序博客网 时间:2024/05/01 13:48

http://wenku.baidu.com/link?url=sHuUxI_ditpb447xjm0tQhP63CiDUsoclVKTDlAMn0w_EUE0XNkP7CzDSsQJi5mIaEduwOiJ3eIh2Krc_xvp0oyHDEi1kpNEBBz8YzsqrIy

一、系统环境

操作系统:linuxES3.0

原内核版本:2.4.21-32.EL

升级内核版本:linux2.4.37

目的:为了学习内核配置、编译、安装的全过程

 

二、实践操作

1、下载内核源码,网址:http://www.kernel.org/pub/linux/kernel/,从该网站中下载2.4.37版内核。

 

2、把内核上传到linux系统的/usr/src目录,使用root用户操作。解压安装版,使用命令tar -zxvf linux-2.4.37.tar.gz或tar -jxvf linux-2.4.37.tar.bz2,两个安装包的后缀名不同,看你下载的是什么类型的包了。

 

3、检验系统安装需要的工具及其版本。进入内核目录cd linux-2.4.37/Documentation,查看Changes文件,使用命令more Changes,其中有介绍安装包的版本需求,例如:

o  Gnu C                  2.95.3                  # gcc --version
o  Gnu make               3.77                    # make --version
o  binutils               2.9.1.0.25              # ld -v
o  util-linux             2.10o                   # fdformat --version
o  modutils               2.4.14                   # insmod -V
o  e2fsprogs              1.25                    # tune2fs
o  jfsutils               1.0.12                  # fsck.jfs -V
o  reiserfsprogs          3.6.3                   # reiserfsck -V 2>&1|grep reiserfsprogs
o  xfsprogs               2.6.0                   # xfs_db -V
o  pcmcia-cs              3.1.21                  # cardmgr -V
o  quota-tools            3.09                    # quota -V
o  PPP                    2.4.0                   # pppd --version
o  isdn4k-utils           3.1pre1                 # isdnctrl 2>&1|grep version

 

4、系统要想能够正常安装需配置步骤3的工具,这是最主要的前提,否则接下来的工作将无法进行。Changes文件中也有记录这些安装包的用途和下载路径,需要花点时间去了解。接下来的工作就是开始配置和编译内核了。具体了解可以查看README文件。

     1>. 回到内核根目录/usr/src/linux-2.4.37,输入命令make mrproper清楚系统一些旧的配置。

     2>.使用make menuconfig配置内核,如果安装了QT的X窗口,可以使用make xconfig命令进行窗口的配置方式。对内核进行配置时有几项内容是必须需要配置的。可以参考http://www.linuxfocus.org/ChineseGB/July2002/article252.shtml进行配置。下面我说一下几个必须的配置。

(1)File system--->(以下反正关于ext2和ext3文件系统配置,全部选上,因为linux内核文件的格式就是ext2文件,如果不支持这个,那么系统连自己的文件都不会识别当然不能工作了)
Second extended fs support
Ext3 journalling file system support
JBD (ext3) debugging support
File system--->DOS/FAT/NT Filesystems --->选上“NTFS file system support”;

注意:
ext2和ext3文件系统配置很重要,也是必需的,如果对Ext3、Ext2文件的支持不直接编译进内核,在你reboot时机器就会当掉,出现如下错误信息:
kernel panic : no init found ,try passing init = option to kernel.....
或者是:
VFS:Cannot open root device "hdxy" or unknow-block(0,0)
Please append a correct "root=" boot option
kernel panic:VFS:Unable to mount root fs on unknown-block(0,0) 
或者是:
mount: error 19 mounting ext3
pivotroot: pivot_root(/sysroot,/sysroot/initrd) failed: 2
umount /initrd/proc fail: 2
Freeing unused kernel memory: 244k freed
Kernel panic – not syncing: No init found. Try passing init = option to kernel
我的系统出现的是第二种错误。

 

(2)SCSI support--->SCSI device support

SCSI support--->SCSI low-level drivers---><*>; BusLogic SCSI support

因为我使用的是在vmware下编译内核,硬盘用的是scsi。否则在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.4.37/drivers/scsi/BusLogic.o /lib/modules/2.4.37/kernel/drivers/scsi

 

(3)其他的配置根据自己需要选择。

 

     3>.编译内核,使用命令make dep后使用make bzImage,我编译没有出错,很成功。

     4>.编译模块代码,使用命令make modules

     5>.安装模块代码,使用命令make modules_install,安装好后配置为运行时加载的模块会被保存到/lib/modules/2.4.37文件夹中。

     6>.安装linux可以使用两种方式(make install或者手动复制)

(1)使用make install方式

      使用这种方式比较简单,直接输入命令make install,其中会报上面的一个问题

No module BusLogic found for kernel 2.4.12
mkinitrd failed

解决办法就是使用手动拷贝目标文件到安装目录。make install会把内核复制到/boot目录中,同时会复制System.map文件到/boot目录并命名为System.map-2.4.37,同时会调用mkinitrd命令生成initrd-2.4.37.img文件。

      make install后还需要修改/boot/grub中的grub.conf文件(该文件为系统启动时的节目的配置文件),修改刚安装的版本linux的“root=LABAL=/”为“root=/dev/sda2”,“/dev/sda2”为使用df命令查看系统根目录的分区。

 

(2)使用手动复制的方式

       使用这种方式比较麻烦,要一步一步操作。

第一步:将新内核和System.map文件拷贝到/boot目录下,依次执行以下命令: 
# cp /usr/src/linux-2.4.37/arch/i386/boot/bzImage /boot/vmlinuz-2.4.37 
# cp /usr/src/linux-2.4.37/System.map /boot/System.map-2.4.37 
# cd /boot (进入boot目录)
# rm –rf System.map (删除原来的连接) 
# ln –s System.map-2.4.37 System.map (重新建立连接) 
第二步:如果没有错误的话, 下面开始修改grub配置文件

在/boot目录下,执行以下命令:
# new-kernel-pkg --mkinitrd --depmod --install 2.4.37 (这时候你的/boot下会生成一个initrd-2.4.37.img,并且你的grub.conf文件也作了相应更改)
第三步:

# vi /etc/grub.conf 
进入grub.conf文件,做两处修改:
(1) 将default=1改为default=0(不改的话也可以,只不过重启之后会默认进入2.4内核)
(2) 将kernel行的“LABEL=/”换成根目录所在的分区(上一步查看的就是)
此步很重要,修改错误将可能导致进不去系统,我把我修改后的grub.conf文件列出来,不明之处,可以对照修改:

default=1
timeout=10
splashimage=(hd0,0)/grub/splash.xpm.gz
title Red Hat Enterprise Linux ES (2.4.37)
        root (hd0,0)
        kernel /vmlinuz-2.4.37 ro root=/dev/sda2
        initrd /initrd-2.4.37.img
title Red Hat Enterprise Linux ES (2.4.21-32.EL)
        root (hd0,0)
        kernel /vmlinuz-2.4.21-32.EL ro root=LABEL=/
        initrd /initrd-2.4.21-32.EL.img

 

5、重新启动操作系统,使用uname -a命令查看内核的版本。如果是2.4.37,那说明安装成功了。

 

 三、小结

在安装linux内核的时候遇到了很多问题,通过不断的去网上找资料,最后终于可以跑起来一个。下面链接对我的实践操作提供了很大的帮助,http://www.cnblogs.com/hustcat/articles/1530788.html,可以参考。

总之,这种遇到问题查找问题的解决办法,最后再把问题解决的过程是痛苦的,但学到的是丰富的。在挫折中进步,在探索中学习。

0 0
原创粉丝点击