- 论坛徽章:
- 0
|
Contents
1 准备工作
1.1 收集硬件信息
1.2 指定唯一标志
1.3 备份config文件
2 编译内核
2.1 创建Ramdisk
3 安装内核
3.1 修改gurb
4 2.6内核编译优化
准备工作
收集硬件信息
/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
系统启动需要加载根文件系统,但是要加载跟文件系统在没有驱动之前是不能加载的,而驱动程序又在操作系统内。为解决这个问题就要使用initrd。Ramdisk镜像可以加载文件系统中的驱动。制作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
把编译生成的bzImage和System.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中加入新内核的启动项。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/84810/showart_1420024.html |
|