Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3311237
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: LINUX

2008-09-08 13:18:26

本人因工作需要做过一段时间的linux内核的编译升级,以及内核的裁减,这当中有过许多故事,趁着有时间,一吐为快!

声明:

1、      本文不是专门介绍内核编译过程的文章,相关资料请google搜索。重点介绍自己在内核编译中遇到的错误和问题的解决方法。

2、     本文可能是自己编译内核中遇到的问题的解决方案,也可能因为硬件原因并不适合于你,所以仅供参考。

正文:

一、编译环境

内核:原版本RedHat AS4.5 (内核2.6.9-55)目标版本:2.6.18.8

硬件:IBM、超微服务器;公司定做的一套机器(三类机器都做过升级)

二、内核编译升级命令

1、 make mrproper

2、 make menuconfig

3、 make

4、 make modules_install

5、 make install

三、内核选项的选择

内核选项的选择是决定内核升级成功的关键,执行make menuconfig,系统会自动根据当前的硬件和原内核版本中的选项选定目标版本(2.6.18.8)的选项,不做任何选项的改动,保存选项生成.config继续编译。不出意外的话,新内核都能成功启动,如果未能成功启动,那恭喜你,本文可能对你有莫大的帮助!

四、内核编译中遇到的错误以及解决之道

错误一:

错误提示:Kernel   panicnot syncing :vfs:unable to mount root fs on unkownblock (0,0)

错误分析:initrd-*.*.img文件有问题;未能成功挂载真正的根文件系统。

解决方法:请你确认执行了make install 命令,我就因为没有执行这条命令而浪费了一周时间(后面专门详细说明)

错误二:

错误提示:Create root device

mkrootdev: label / not found

Mounting root filesystem

mount :error 2 mounting ext3

mount :error 2 mounting none

switchroot mount failed:22

umount /initrd/dev failed :2

kernel panic-not synicncing :Attempted to kill init .

(错误提示是不是有点长,貌似错误很多哦,其实可能就一个原因导致)

错误分析:1、根文件系统找不到挂载点 ,修改grub.conf文件为 root=/dev/ *

          2、硬盘驱动未能找到,请看看你机器的硬盘是都是 SATA盘,是的话同样恭喜你本文对你有帮助。

解决方法:

1.、修改grub.conf文件试试,具体修改点 root=/dev/*       * 指的是原系统中/分区的挂载点。修改后,重启进入新内核系统,估计十有八九又会遇到如下错误提示:

Mounting root filesystem

mount :error 6 mounting ext3

mount :error 2 mounting none

switchroot mount failed:22

umount /initrd/dev failed :2

kernel panic-not synicncing :Attempted to kill init .

如果不幸被我言中,请接着往下看。

2、 硬盘驱动未能成功找到,SCSI驱动有问题。我在内核编译升级中遇到这个问题,对内核选项选了又选,方法试了很多种,总经理都亲自来做了几次,错误依旧。最终让我无意中选正确选项,成功升级内核。

具体选项是:Device Drivers--------SCSI device support------SCSI low-level drivers----Serial ATASATAsupport 选为 M,然后再选择相应的子选项,我选择了Intel PIIX/ICH SATA support new)后机器就成功启动了。

错误三

错误提示:Enforcing mode requested but no policy loaded. Halting now.

kernel panic - not syncing: Attenpted to kill init!

错误分析:原内核中启用了selinux,新内核未选择selinux的选项,不能成功启动。

解决方法:修改grub.conf文件,在root=LABEL=/ 后加入 enforcing=0

题外话:(以下内容可不看)

    本人真正接触的第一项工作就是内核编译升级,当时公司刚来了个人,总经理将其任命为后台经理,说其在我们负责的项目方面很有经验。原以为是个高人呢,结果,靠(请原谅我这么说,实在是气人啊!),编译内核的时候就因为没有执行make install那一步一直编译不成功,来回折腾了一个礼拜!

    俺是菜鸟一个,第一次编译内核,你一个后台经理也是第一次编译内核?!靠,还说了一个什么不污染原内核的技巧,扯淡,就因为他给的编译脚本有问题:一直不成功,还非要说选项有问题。最最恶心人的事,当初只有一台机器,他非要拉着三四个人一起升级内核,结果有的人正在选择内核选项,有人却选择完了重启了电脑,那个郁闷啊!还天天的给俺施压,害得我其中一天晚上牙疼了一夜。现在想象小子估计是故意的,想给俺一个下马威吧。

    至于现在:俺直接不摆他,什么有经验,什么高人,就吹吧。

阅读(1046) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~