- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
附录 2 如何编译Linux 内核:
Linux 内核源码的组织结构
Linux内核作为一个特殊的程序,同样需要经过编译、链接之后才能运行,仅仅是它执行时拥有特殊的权限,位于特定的空间,并且不会也不可能依赖其他的软件罢了。
Linux发展至今(笔者在书写本书时的版本为2.4),其内核的组织结构日渐清晰,层次日渐分明。一旦基本系统安装完毕,具有系统管理员权限的用户即可编译内核。一般来说,Linux系统内核的源码放置在/usr/src/linux目录下,它将依赖于体系结构的代码和独立于体系结构的代码分离开来(前者仅占5%,通常是一些汇编代码和局部的,针对于不同体系结构的局部处理细节,如时钟定时器频率),为了帮助你理清内核结构,下面列出了几个重要的源代码目录:
arch/目录:该目录存放具体的依赖于体系结构实现的代码,在这个目录下,针对不同体系结构所移植的版本都有三个子目录:kernel/,lib/ 和mm/。kernel/子目录包含依赖于体系结构实现的一般内核功能,例如信号处理、时钟处理等等。lib/子目录包含库函数的本地实现,如果从依赖于体系结构的源代码编译,则运行的更快。mm/子目录包含存储管理实现的代码。
drivers/目录:这个目录拥有50%以上的内核源码,所有的驱动程序源代码均位于该目录之下。
fs/目录:该目录存放所有的系统支持的文件系统的实现代码。
include/目录:一些重要的头文件。
ipc/目录:处理进程间通信的全部所需的代码都放在ipc/目录下。
init/目录:该目录存放所有系统的初始化代码,许多重要的文件,例如main.c就位于该目录下,该文件包含了许多核心代码 —— 比如实现fork()的代码和最常执行的代码——cpu-idle()循环。
lib/目录: 该目录放置内核其它部分经常所需要的代码。例如,inflate.c就放在这里,它能够在引导时解压内核并装入内存,它也知道如何解压标准PKZIP 8 位压缩算法。
kernel/目录:许多最常调用的内核函数放在该目录下。调度器fork()和timer.c就放在这里。你还能在这个目录下找到printk.c。
mm/目录:该目录包含所有linux实现虚拟内存管理的源代码。
net/目录:所有提供网络支持的代码都放在这个目录下。
Documention/目录:该目录存放了大量的内核代码相关文档,用户开发/维护手册。
如何配置及编译Linux 内核
在能够实际的编译内核之前,必须告诉编译程序你需要那些功能,还必须告诉它是将这些功能模块编到内核中去还是将其配制成动态可装载的模块。下表列出了配置内核的命令:
类型 命令(必须具有管理员权限) 文本提示 make config 文本菜单 make menuconfig GUI(需要运行X-Window) make xconfig
如上表,make config 将打开一个字符模式的对话框,在终端上一个接一个的问问题直到回答了所有的问题。对每一问题有三种可能的答案:Yes,No和Module。Module告诉内核配置在运行时使用动态可装载模块,而不是静态地将功能连接到内核中。
make menuconfig 和 make xconfig 分别打开一个文本图形对话框和一个GUI对话框,功能显然和make config相同,但是可以只配置自己关心的部分,显然比make config 方便的多。另外,如果你不希望对原始配置做过多的修改,可以选用make oldconfig选项。
make config 命令中各个选项的意义如下:
Code maturity level options 代码成熟等级。此处只有一项:prompt for development and/or incomplete code/drivers,如果你要试验现在仍处于实验阶段的功能,比如khttpd、IPv6等,就必须把该项选择为Y了;否则可以把它选择为N。
Loadable module support 对模块的支持。这里面有三项:
Enable loadable module support:除非你准备把所有需要的内容都编译到内核里面,否则该项应该是必选的。
Set version information on all module symbols:可以不选它。
Kernel module loader:让内核在启动时有自己装入必需模块的能力,建议选上。
Processor type and features:CPU类型。
General setup 这里是对最普通的一些属性进行设置。这部分内容非常多,一般使用缺省设置就可以了。下面介绍一下经常使用的一些选项:
Networking support:
文档评论(0)