Chinaunix首页 | 论坛 | 博客
  • 博客访问: 571746
  • 博文数量: 107
  • 博客积分: 3079
  • 博客等级: 少校
  • 技术积分: 1306
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-08 00:03
个人简介

emmoblin.github.com

文章分类

全部博文(107)

文章存档

2012年(8)

2011年(15)

2010年(49)

2009年(9)

2008年(26)

分类: LINUX

2008-11-17 12:28:42

Contents


准备工作

收集硬件信息

         /sbin/lspci 可以获得usb,网卡,显卡等信息。

         cat /proc/cpuinfo 获得cpu信息。

 

指定唯一标志

Makefile中最开始的几行:

               VERSION = 2

               PATCHLEVEL = 4

               SUBLEVEL = 22

               EXTRAVERSION = -1

              

在安装内核的时候,所有模块会被按照如下形式cp/lib/modules下,

/lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL-$EXTRAVERSION.

所以为了避免覆盖掉以前的系统模块,要修改EXTRAVERSION为一个有意义的唯一标示。

 

备份config文件

$ cd linux

$ cp .config config.save

 

make mrproper --> 回到初始裝態 (移除 *.o , 清除".config")
make clean -->
移除 *.o (不會清除 ".config")

 

编译内核

make menuconfig

自然是执行make menuconfig,如果有图形环境推荐使用make xconfig

具体配置过程根据需要配置,对于每个选项的意义可以参考:

<内核编译配置选项简介>> ----作者:

 

配置完成后,如果是2.4内核需要使用make dep生成依赖信息,在2.6内核不需要dep。在编译的时候自动会执行dep

 

然后执行:

$make clean

 

$make bzImage
编译后镜像在arch/i386/boot目录下
 
$ make modules
$ sudo make modules_install
模块会被cp/lib/modules/KERNEL_VERSION.
 

创建Ramdisk

系统启动需要加载根文件系统,但是要加载跟文件系统在没有驱动之前是不能加载的,而驱动程序又在操作系统内。为解决这个问题就要使用initrdRamdisk镜像可以加载文件系统中的驱动。制作ramdisk

$ mkinitrd /boot/initrd-2.6.0.img 2.6.0

 

安装内核

$ cp arch/i386/boot/bzImage /boot/bzImage-KERNEL_VERSION

$ cp System.map /boot/System.map-KERNEL_VERSION

$ ln -s /boot/System.map-KERNEL_VERSION /boot/System.map

把编译生成的bzImageSystem.map复制到/boot目录下,

bzImage可以改成vmlinuz也可以不改名。

 

修改gurb

menu.list中添加

title Test Kernel (2.6.0)
root (hd0,1)
kernel /boot/bzImage-2.6.0 ro root=LABEL=/

initrd /boot/initrd-2.6.0.img

 

2.6内核编译优化

编译2.6内核不需要这么多步骤,2.6内核作了优化,只需要执行

make

make install

make  时系统会自动完成make   dep     make   bzImage   所做的工作。
sudo   mkinitrd   /boot/initrd.img-2.6.15.1     2.6.15.1
也不用,

make   install会自动作的,并且在grub中加入新内核的启动项。

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