您的位置:首页 > 运维架构 > Linux

linux 2.4.21--->2.4.37 update

2015-04-15 16:56 204 查看
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,可以参考。

总之,这种遇到问题查找问题的解决办法,最后再把问题解决的过程是痛苦的,但学到的是丰富的。在挫折中进步,在探索中学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: