PC Ubuntu下编译 Linux2.6 内核总结(3)

2, 准备一个.config文件.

内核配置选项众多, 一个个去配置相当麻烦. 建议使用手头已有的配置文件. 如果你手头没有, 有多种方法获得它:

(1) 使用make defconfig将在源码树的根目录得到.config.

(2) 使用当前系统内核的配置文件, 一般位于/boot目录中. 它的名称并不是.config.

(3) 使用别的发行版提供的配置文件(网上去下载).

slackware的.config是个不错的起点. 在它的配置文件基础上作出适合自己系统的修改, 比较方便. 也可以拷贝发行版提供商的.config文件.

3, 建议配置步骤:

(1) 将配置文件(不要将它命名为.config!)拷贝到内核源码树根目录.

(2) make menuconfig, 然后将上述的配置文件加载进去.

(3) 配置完成后, 将生成的配置文件备份(.config, 也可以在menuconfig中指定生成的配置文件名).

配置选项是最头疼的问题: 配置时候注意驱动的问题,

尤其是网络驱动. 使用 pppoe 的话, 要选上 ppp 相关的选项. 网卡驱动也要注意, 我刚开始配置的时候, 只加上了 lspci |

grep Ethernet 对应的网卡, 但是重启后找不到eth0, 一怒之下, 把所有的1000M 网卡驱动都选为模块. 总算成功.

以后有空仔细看看. 再就是声卡驱动也要注意.可参考我blog里另一篇文章:

配置2.6内核选项注解

也可以到

Linux Kernel Configuration Archive

看一看, 虽然它里面的内容与图形化配置工具中的help大同小异.

编译内核

配置完成后,就要进行编译了。编译2.6的内核很简单,Makefile自动检测依赖性,产生编译文件(bzImage),你也不用另外编译 modules!. 只需运行:

$ make

使用make编译内核的技巧

1, 可以略去编译信息(但仍能看到warning, error)

$sudo make > /dev/null

$sudo make -j2 > /dev/null

2, 加速编译过程.

(1)

可以使用 $ make -j . 其中n = 2 * cpu的个数. 对于一般的单CPU系统, 通常用 $ make -j2

. 为编译过程分配2个人物, 这样在进行磁盘I/O时候, CPU就不会空闲了. 一般这个选项可以将速度提高10%左右.

(2) 还可以使用

ccache

来提高编译速度. Debian/Ubuntu系统中默认没有安装, 首先安装它: $ sudo apt-get install ccache . 然后更改内核根目录的Makefile, 将CC和HOSTCC变量定义前添加ccache:

CC = $(CROSS_COMPILE)gccHOSTCC = gcc

更改为:

CC = ccache $(CROSS_COMPILE)gcc

HOSTCC = ccache gcc

编译生成的文件介绍

vmlinux : 未经压缩的原始linux内核镜像.

/arch//boot/zImage(bzImage): 使用zlib压缩后的内核镜像.

注意, 不同的体系结构对压缩后内核镜像的默认命名不同, 比如arm的是zImage, 而i386的是bzImage. (z表示zlib, bz表示"big zlib", 而非bzip2!)

安装内核

编译完成后, 在 arch/i386/boot目录中会有bzImage映象文件.

安装内核步骤如下:

(1)在/boot目录下新建mynewkernel目录,并将bzImage拷贝到/boot/mynewkernel目录下:

$ sudo cp arch/i386/boot/bzImage /boot/mynewkernel

(2)更改/boot/mynewkernel中bzImage的名字

$ sudo mv bzImage vmlinuz-2.6.17.13

(3)备份、修改grub配置文件

$sudo cp /boot/grub/menu.lst menu.lst.origin

修改menu.list,加入以下内容(从既有的menu.list中相关的内容拷贝):

title zp, make defconfig, 2.6.17.13

root (hd0,2)

kernel /boot/mynewkernel/vmlinuz-2.6.17.13 root=/dev/sda3 ro quiet splash

savedefault

boot

(4)安装模块:

$sudo make modules_install

reboot, 在grub启动菜单中选择新内核启动...

参考资料

(1)

Linux-kernel-tree/README

(2)

kernel-build-howto

(3) 关于ccache, 可参考IBM developworks上的

这篇介绍.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wwpyfx.html