Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1914694
  • 博文数量: 383
  • 博客积分: 10011
  • 博客等级: 上将
  • 技术积分: 4061
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-24 18:53
文章分类

全部博文(383)

文章存档

2011年(1)

2010年(9)

2009年(276)

2008年(97)

我的朋友

分类: LINUX

2008-12-02 11:07:30

一、编译环境

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

二、编译过程

1.到下载内核linux-2.6.26.tar.gz

2.cp linux-2.6.26.tar.gz /usr/src  //将下载好的内核拷贝到/usr/src目录下

3.tar zvxf linux-2.6.26.tar.gz  //解压该文件

4.cd linux-2.6.26  //到该文件的目录

5.ln -s linux-2.6.26 linux  //建立符号连接,不这样做,也可以,目的是使目录更好记,方便拼写

6.cd linux   //到该文件的目录,也就是到linux-2.6.26目录下

7.make mrproper  //配置前的准备,第一次升级内核可以不执行该命令

8.make menuconfig  //可以更改,默认也可以,但是必须选择保存

9.make dep   //编译依赖性

10.make clean //清理临时文件

11.make bzImage  //编译镜像文件

12.make modules  //编译模块

13.make modules_install  //模块安装

14.depmod -a   //创建到模块的链接

15.cp System.map /boot/System.map-2.6.26  //拷贝该文件到/boot/System.map-2.6.26下

16.cp arch/i386/boot/bzImage /boot/vmlinuz //拷贝该文件到/boot/vmlinuz下

17.cd /boot  //进入启动目录

18.new-kernel-pkg --mkinitrd --depmod --install 2.6.26  //新内核的生成

19.vi /boot/grub/menu.lst  //编辑grub,添加以下一段文件,可以复制已有的来修改即可

title Red Hat Enterprise Linux AS (2.6.26.EL)
     root(hd0,4)
     kernel /boot/vmlinuz ro root=/LABLE=/1 rhgb quiet
     initrd /boot/initrd-2.6.26.img

20.shutdown -r now //重启电脑

21.选择要启动的内核


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

错误一:

错误提示:Kernel   panic—not syncing :vfs:unable to mount root fs on unkown—block (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 ATA(SATA)support 选为 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即可
阅读(1398) | 评论(0) | 转发(0) |
0

上一篇:读Linux源码小技巧

下一篇:人生哲理

给主人留下些什么吧!~~