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,可以参考。
总之,这种遇到问题查找问题的解决办法,最后再把问题解决的过程是痛苦的,但学到的是丰富的。在挫折中进步,在探索中学习。
- linux 2.4.21--->2.4.37 update
- Update Linux Kernel from 2.4.29 to 2.6. 16.8
- Linux Kernel Update(2.4 to 2.6)(note: vmware)
- linux update
- yum for linux update
- linux问题值update
- linux 进程调度 (update)
- Linux命令---- update-alternatives
- linux update命令详解
- linux update-alternatives command
- linux update更新源
- linux update git
- Howto: Update firefox on Linux
- linux kernel compile update etc
- Linux小Tips--持续update~
- linux 常用命令手册----不断update
- linux-sudo apt-get update
- oracle linux yum update加速
- Android设置默认输入法
- java.lang.IllegalArgumentException: matching editors or conversion strategy found
- js中的boolean原始类型和Boolean引用类型
- resin设置jvm启动参数
- 第六周(类模板)
- linux 2.4.21--->2.4.37 update
- 插入排序递归版
- C#生成验证码(转载)
- LeetCode:Reverse Linked List II 解法
- 1.11
- Varnish4.x配置文件详解
- 按位与运算符&
- 解决Andriod使用HttpURLConnection 失败问题
- 单ViewController多View下实现简易切换Animation