我将使用UBuntu服务器上的最新的2.6.8.1内核为例来写说明
[code:1]
bash:~$ cd /usr/src
bash:/usr/src$ ls -l
linux-source-2.6.8.1.tar.bz2
[/code:1]
如果你看到一个指向较老内核源代码的linux链接,请删除它。
[code:1]
bash:/usr/src$ rm linux
[/code:1]
如果原来的linux链接仍保存在这里的话不要解包。因为如果你的新源代码直接解包至旧内核原代码目录中,创建工作将不会成功。
解开压缩包用:
[code:1]
bash:/usr/src$ tar xjvf linux-source<version>.tar.bz2
[/code:1]
不要使用sudo,这里并不需要。
如果源代码是.bz2格式,使用tar jxvf,如果是.gz则用tar zxvf
这里应该会以你和src组名义创建一个叫linux-source-2.6.8.1的目录。
创建一个叫linux的内核源代码链接
[code:1]
bash:/usr/src$ ln -s linux-source-2.6.8.1 linux
[/code:1]
在当前位置查看一下,你将看到象这样的情况:
[code:1]
bash:/usr/src$ ls
linux@ linux-source-2.6.8.1/ linux-source-2.6.8.1.tar.bz2
[/code:1]
配置内核
有几种方法来配置内核。你将可能使用"xconfig"。改变当前目录至/usr/src/linux目录,象这样启动:
[code:1]
bash:/usr/src/linux$ make xconfig
[/code:1]
如果你未使用X,或你不想使用鼠标:
[code:1]
bash:/usr/src/linux$ make menuconfig
[/code:1] 警告:至少,你必须确认将你所用的总线(bus)、磁盘(disk)、根分区文件系统(root filesystem)驱动程序直接编译进你的内核。否则,你的新内核映像将无法启动。查看 KernelBuildpackageHowto 来获得无需重新配置内核的方法。
创建内核
make-kpkg
创建内核你要用到"make-kpkg",脚本会自动替换这个命令系列"make dep; make clean; make bzImage; make modules"。花点时间阅读手册中make-kpkg部分。make-kpkg命令行可能有些复杂而首次使用会被吓倒。它的基本语法是:
[code:1]
bash:/usr/src$ make-kpkg <options> <target>
[/code:1]
你的目标target将成为"kernel_image"。让我们以较为重要而通用的两个选项(options)进行探讨,"--append-to-version"和"--revision".
你刚安装好内核,要创建另一个引导磁盘。得到另一个软件--覆盖你的旧引导盘不是个好主意;你还没有足够长的时间使用你的新内核来验证它的工作。如果你弄糟了你的系统,一张引导盘是必须的。
[code:1]
bash:/usr/src# cd /boot
bash:/boot# mkboot /boot/vmlinuz-2.4.18.030320
[/code:1]
创建你的下一个内核
如果你因为刚刚买了一块新声卡想重新编译你的内核,或你在第一次编译时忘了某个新功能,你需要做的是重新配置,"fakereoot make-kpkg clean",用不同的--append-to-version值重新编译。看起来象这样:
[code:1]
bash:~$ cd /usr/src
bash:/usr/src$ ln -s linux-source-2.6.8.1 linux
bash:/usr/src$ cd linux
bash:/usr/src/linux$ make xconfig
(reconfigure your kernel)
bash:/usr/src/linux$ fakeroot make-kpkg clean
(lots of cleaning here)
bash:/usr/src/linux$ fakeroot make-kpkg --append-to-version=.181004 kernel_image --initrd binary
(screens and screens of stuff)
[/code:1]
使用已经存在的配置