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,可以参考。
总之,这种遇到问题查找问题的解决办法,最后再把问题解决的过程是痛苦的,但学到的是丰富的。在挫折中进步,在探索中学习。
一、系统环境
操作系统: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网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- LinuxSir.Org > 编程开发讨论区 —— LinuxSir.Org > 嵌入式Linux讨论区──实验田版 > 编译microwindows出错..
- 对于linux中>和>>的说明
- ibatis <dynamic> 标签 update 的相关问题总结
- <property name="hibernate.hbm2ddl.auto">update</property>
- linux网络编程常用函数详解与实例(socket-->bind-->listen-->accept)
- <<探讨linux/unix>>之创建文件
- <<探讨linux/unix>>之tab键
- linux 学习心得笔记<初级>第一篇
- <转载>在Linux下文件的三种时间标记:访问时间、修改时间、状态改动时间
- <Linux+Qt>计时函数
- 2012-Linux->18(1_20 error)->2 <do u know reasons?>
- Oracle11gR2 在 Linux CentOS 5.3,RHEL 5.4 上的安装 &lt;转&gt;
- linux中断导读之--初始化<2>
- Linux Platform Device and Driver,platform_add_devices()->platform_driver_register()
- linux设备模型之mmc,sd子系统<一>
- Linux初学笔记之<cd -和 cd 和whereis命令>
- Linux 如何查找命令的路径 <zZ>
- Linux学习笔记_系统输入输出标准(重定向,>,>>,<,2>&1,xargs)
- Linux中2>&1 >/dev/null和>/dev/null 2>&1的区别