日期:2014-05-16  浏览次数:20596 次

如何安装定制 Linux 内核【转】
1. 准备
   2. 获取源代码
   3. 源代码解包
   4. 配置内核
   5. 创建内核
  1. make-kpkg
  2. --append-to-version
  3. --revision
  4. Kernel package names
  5. fakeroot
  6. 生成内核映像
   6. 安装内核映像包
   7. 打包完工
  1. 保持内核!
  2. 删除 symlink
  3. 备份你的内核
  4. 制作新引导盘
  5. 创建你的下一版内核
  6. 使用原有配置
   8. 检查列表
   9. 其他链接
=========================================

Linux内核是Ubuntu操作系统的心脏。Ubuntu自带的内核通常包含你所需要的所有驱动程序,但有时你希望调整你的内核或如果由于某些特别原因你需要重新编译,本手册将帮助你。

象这个不太详尽的文档事实上可以在 KernelCompileHowto 找到。

准备

要创建内核,你需要 build-essential fakeroot 和 kernel-package 包.
[code:1]
bash:~$ sudo apt-get install build-essential fakeroot kernel-package
[/code:1]
内核创建工作在/usr/src/目录进行,为此,添加src组
[code:1]
bash:~$ sudo adduser my_username src
Adding user my_username to group src...
Done.
[/code:1]
注销并重新登录,或使用su再登录(切换用户):
[code:1]
bash:~$ su my_username
bash:~$ groups
my_username src audio adm dialout cdrom floppy video plugdev lpadmin
[/code:1]
会列出所有组名,src是其中之一。

获取源代码

你可以用下面的办法搜索内核源代码
[code:1]
bash:~$ apt-cache search source 2.6
[/code:1]
选择你想要的内核源代码.

    * 问题:内核原代码有时叫kernel-source-2.6.5等,而有时又叫linux-source-2.6.8.1,为什么?

kernel-source来自于Debian,linux-source来自Ubuntu。如果可能请尽量使用linux-source。所有的依赖关系都还没有改变,虽然如此,如果你通过linux-source得到像"uninstalled package kernel-source"(反安装内核源码包)的错误警告,你可以安全地忽略他们--Bronson.

使用下列命令下载内核源代码:
[code:1]
bash:~$ sudo apt-get install linux-source
[/code:1]
建议安装libncurese-dev和libqt3-dev包,第一个是menuconfig所需要的,第二个用于xconfig,安装他们中的一个是很小的(见下面的内容)

下载并放源代码至 /usr/src

源代码解包

我将使用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".

--append-to-version

第一个选项让你添加特别项至内核版本号中,它会成为内核名的一部分。你可以使用字母,"+"和"."(小数点或句号);但不能使用下划线"_"。

这个是当前运行的内核:
[code:1]
bash:/usr/src$ /usr/src/$ uname -a
Linux da5id 2.6.8.1-2-k7 #1 Sat Sep 18 11:23:11 BST 2004 i686 GNU/Linux
[/code:1]
使用--append-to-version时要避免使用象"-686","-k7"和"-sparc"的字串,因为它们常常在Debian预编译内