UbuntuHelp:Kernel/Compile/zh
来自Ubuntu中文
点击翻译: |
English • 中文 |
//*^*本人只是个自由软件爱好者,是个菜鸟,译错莫怪。
免责声明
'构建和使用一个定制的内核将使你的系统很难获得支持。'编译你自己的内核(kernel)只能算是一个学习过程,所以针对你自己编译出来的内核去提交 BUG 是不允许的(如果你这么做,他们就会拒绝这个 BUG,也不做任何解释)如果你有一个与 Ubuntu/Canonical 签订的商业支持合同,你的自编译内核也不会在这种合同支持的范围之内。另外还请注意,本页介绍的是针对 Edgy (2.6.17) 或以上版本的内核!直到这个内核源之前,我们没有任何到位的机制来使人们容易的编译他们自己的内核。我们是有意为之。本文并没有介绍如何编译来自于 kernel.org 的原始内核,而只是说明如何重建当前的 Ubuntu 内核源。
编译内核的原因
- 你是一个内核开发者。
- 你需要内核编译成一种特殊的方式,而官方内核并没有这样做(例如,使能一些实验功能)。
- 你正试图调试一个关于原Ubuntu内核你已经提交或即将提交的问题。
- 你有的硬件原Ubuntu的内核不支持。
不建议编译内核的情况
- 你只需要编译一个特殊的驱动。对于这种情况,你只需要安装linux-headers包。
- 你不知道在做什么,和你损坏了某一部分,你需要帮助修复它。依据你的错误情况,也许你最终需要重新安装你的系统。
- 你偶然接触到这篇文章,但是因为看上去有趣而被迷住。相信我,这一点都没趣。:)
如果你想要安装一个新的不需要编译的内核,你能使用Synaptic,,搜索你想要安装的linux-image和内核版本。
一个更容易的方法是点击System > Administration > Update Manager >点击Check按钮>接受包括kernel在内的所有更新。
你需要的工具
一开始,你需要安装一些新的包。
sudo apt-get install linux-kernel-devel fakeroot build-essential
这会安装与编译器有关的包和内核打包工具。它也安装这git-core包,它是与Ubuntu 内核源最好的交互方式。
获得内核源
这儿有几种获得内核源的方法:
- 使用git(你能找到详细说明在Kernel Git Guide) -这会使你总是保持与最新的Ubuntu内核源同步。
- 下载源文件存档-对于那些想要重建包括额外补丁的标准Ubuntu包的人,这是最简单和有用的,注意这几乎总是滞后于最新开发源,如果你需要带最新补丁的内核源,你应该使用git(选项1)。下载源文件的操作:
- 下载源码包(进一步的详细说明在这页下面AltBuildMethod Alternate Build Method: The Old-Fashioned Debian Way)-请注意这跟选项2不一样
sudo apt-get build-dep linux-source apt-get source linux-source
对于Hardy (8.04)版本,命令变为:
sudo apt-get build-dep linux-image-$(uname -r) apt-get source linux-image-$(uname -r)
修改你所需的内核源文件
对大多数人来说,简单的修改一下配置configs已经足够。如果你需要安装内核补丁,请阅读此补丁提供者的说明,已确定如何使用。 原Ubuntu configs是被安装在(debian/config/ARCH/)-ARCH目录是你刚刚建立的。在这个目录下有很多文件。这"config"文件是其架构中所有对象的基础。这儿有几个针对特定目标的config.FLAVOUR(config.xxx)。例如,下面是2.6.20,i386的文件:
ls -l debian/config/i386/ total 108 -rw-r--r-- 1 root src 73962 2007-08-13 01:29 config -rw-r--r-- 1 root root 1369 2007-08-13 01:29 config.386 -rw-r--r-- 1 root root 1330 2007-08-13 01:29 config.generic -rw-r--r-- 1 root root 1395 2007-08-13 01:29 config.server -rw-r--r-- 1 root root 1756 2007-08-13 01:29 config.server-bigiron -rw-r--r-- 1 root root 8 2007-08-13 01:25 lowlatency -rw-r--r-- 1 root root 194 2007-08-13 01:25 vars.386 -rw-r--r-- 1 root root 218 2007-08-13 01:25 vars.server-bigiron
如果你在debian/config中没有找到config配置文件,你会在/boot目录中找到它们,例如,/boot/config-2.6.22-14-generic。 如果你需要改变某一个配置选项,简单的修改包括这选项的文件。如果你修改"config"文件,会影响这结构中的所有对象。如果你修改其中一个对象配置,它仅仅影响此对象。 当你打了一个补丁,或者调整了配置之后,最好去重新生成配置文件以确保他们是一致的。 去重新生成所有的配置,请运行:
debian/rules updateconfigs
如果你仅仅想要更新一个配置,请运行:
debian/scripts/misc/oldconfig ARCH