博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux 2.4.21--->2.4.37 update
阅读量:4138 次
发布时间:2019-05-25

本文共 4313 字,大约阅读时间需要 14 分钟。

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

一、系统环境

操作系统:linuxES3.0

原内核版本:2.4.21-32.EL

升级内核版本:linux2.4.37

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

 

二、实践操作

1、下载内核源码,网址:,从该网站中下载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命令进行窗口的配置方式。对内核进行配置时有几项内容是必须需要配置的。可以参考进行配置。下面我说一下几个必须的配置。

(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://anhvi.baihongyu.com/

你可能感兴趣的文章
Python-OpenCV人脸检测(代码)
查看>>
python+opencv之视频人脸识别
查看>>
人脸识别(OpenCV+Python)
查看>>
6个强大的AngularJS扩展应用
查看>>
网站用户登录系统设计——jsGen实现版
查看>>
第三方SDK:讯飞语音听写
查看>>
第三方SDK:JPush SDK Eclipse
查看>>
第三方开源库:imageLoader的使用
查看>>
自定义控件:飞入飞出的效果
查看>>
自定义控件:动态获取控件的高
查看>>
第三方开源库:nineoldandroid:ValueAnimator 动态设置textview的高
查看>>
第三方SDK:百度地图SDK的使用
查看>>
Android studio_迁移Eclipse项目到Android studio
查看>>
JavaScript setTimeout() clearTimeout() 方法
查看>>
CSS border 属性及用border画各种图形
查看>>
转载知乎-前端汇总资源
查看>>
JavaScript substr() 方法
查看>>
JavaScript slice() 方法
查看>>
JavaScript substring() 方法
查看>>
HTML 5 新的表单元素 datalist keygen output
查看>>