admin 管理员组文章数量: 1086019
2024年4月29日发(作者:什么时候用return)
编译你自己的Linux内核(Kernel)
摘要:
你马上就会发现,你也可以获得(get),配置(configure),编译(compile)和安装(install)
属于你自己的Linux内核(Kernel)。
引言
为什么你想要编译并安装一个完全属于你自己的内核(Kernel)?可能是下列原因中的一
种吧:
新内核提供更好的硬件支持能力。
新内核有某些特殊的优点,例如,对多处理器(SMP)更好的支持,或者是支持USB。这
些特性已经被加入到2.4.x内核中。
新内核修正了一些BUG。
你自己定制的内核去除了多余的元素,因此它更快,更稳定。
编译(或说“轧制”)你自己的内核需要对计算机(译者
注:不仅要对机器本身有了解,还要对Linux系统有一定的了解)有一定的理解——这是一
个难题。
因此一个Linux新手是根本不会尝试编译内核的。这篇文章中展示了一些在使用“make
xconfig”命令编译内核过程中的截图。
使用这个命令(“makexconfig”),用户可以通过图形用户界面(GUI)和鼠标来对内核进行
处理。
这里有差不多40张截图,它们解释了在某种特定的情况下为什么你需要或不能选择某个特
定的内核选项(options)。
将这40幅截图逐一讨论看上去似乎有些夸张,但这的确是解释内核的内部工作机理(internal
workings)以及特定内核选项存在的原因和工作原理的比较好的方法。
这些截图是kernel-2.4.6的。最新的内核是2.4.19,但是除去在菜单中有一些新的项目(e.g.
对新硬件的支持)以外,
屏幕的显示以及编译的过程应该是一样的。建议你在开始编译前把这篇文章打印出来,这样
你就可以随时查找必要的信息!
本文的结构如下。首先讨论你在Internet的什么地方能够找到内核的源码以及如何安装这些
源码,
然后通过屏幕截图讨论使用图形界面配置内核。一旦内核配置完毕,它就需要被编译,但
是一个新编译的内核并不能直接使用。
首先,新内核需要和引导程序“lilo”一起安装,然后,在使用lilo前你必须写配置文件
“/etc/”。
另外,还有需要指出一些特殊的要点(specificpoints),比如笔记本电脑需要的PCMCIA支
持。
看上去象信用卡的PCMCIA,小型板卡(smallinserts)通常负责联网任务,在2.4.x的内核
中已经可以直接提供支持。
但之前的内核需要重新编译安装后才能提供PCMCIA支持。SuSELinux还有一个问题,那
就是ALSA声卡驱动程序的音效支持。
这些驱动程序并不是内核的一部分,它们需要被编译进去然后重新安装,因为原始的驱动程
序通常没有工作。
更麻烦的是,从一个系列的内核转到另一个系列的内核,比如从2.2.x系列转到2.4.x系列,可
能会由于使用某种(某些)内核工具(kernel
utilities)而产生一些问题。这就是所谓的“modutils”(译者注:可以看为“Modules
Utilities”的所写,这样就不会对这个名称感到费解了),包括代码(code)需要载入(load)
的内核模块(kernel
module):图3解释了什么是内核模块。有时新内核不知道如何处理老的modutils,所以你
必须编译和安装更新版本的modutils。
这样的问题虽然不多但是它们的确存在,而且目前只能预先指出它们。
但是如果你完全按照本文的步骤进行,几乎不会发生错误。新内核被添加到lilo,或者被复
制(copy)到loadlin所在的分区。
因此,在紧急情况下,你仍然可以通过老内核启动机器。然后可以在老内核下试着解决新内
核的问题。
即使你遇到modutils的问题,你也可以从老内核重新启动计算机,然后通过将它们(内核和
modutils)分别编译和安装来修复(fix)这个问
题:所有新版本的modutils都对老内核向下兼容,所以新modutils在老内核下可以很好的
工作。
安装内核源码
你在这一节所进行的所有工作都需要root权限,所以你必须以root登录(login)。
首先,也是最重要的,你必须安装内核源码,比如从安装盘上。在SuSE中,源码是被放
在“d”类(为开发准备的文档)的“lx_kernel”包中。
安装适合你的发行版(distribution)的内核是比较适当的,因为不同的GUI在那时都会被自
动安装。
一旦这件事情完成,最新版本的Linux内核的tar包,比如2可以从
/pub/linux/utils/kernel/modutils/v2.4/
。注意modutils的版本号和内核的版本号可以不完全吻合:只需要下载并安装最新的版本
就行。编译并安装modutils将在后面的“安装modutils”讨论,现在我们先讨论内核的安装。
你机器上的内核(译者注:指的是你的老内核)的源码被放在/usr/src/linux/目录下。比较
明智的做法是保证源码的安全,比如通过更名(rename)linux目录:
cd/usr/src
mvlinuxlinux-2.2.19(如果原来的内核源码是2.2.19.的)
只有当你安全的保存了原始内核后,你才可以解包新的内核:你将会看见2
默认将所有东西解包到
“linux”目录,如果这个目录已经存在,它将重写这个目录,然后,你将会遇到一个麻烦:
你无法重新编译老内核,你已经没有它的配置和其他东西。
在这个例子中,我在解包linux-2.4.6.的源码后立即将“linux”更名(rename)为“linux-2.4.6”,
并且创建一个新的符号
链接“linux”到“linux-2.4.6”。这样的优点是你可以马上知道系统现在使用的内核的版本。
另外,还可以很容易的安装一个内核补丁(kernelupgrade)。命令是:(以root身份执行,
版权声明:本文标题:编译你自己的Linux内核 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1714365505a676918.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论