在本教程中,我们将向您演示如何从源代码编译 Linux 内核。在演示过程中,我们将讨论各种重要的内核配置选项,更深入地介绍有关内核中 PCI 和 USB 支持的信息。

一。关于教程

本教程涉及哪些内容?

在本教程中,我们将向您演示如何从源代码编译 Linux 内核。在演示过程中,我们将讨论各种重要的内核配置选项,更深入地介绍有关内核中 PCI 和 USB 支持的信息。在本系列教程(共 8 篇;本文是第 6 篇)结束时,您将具备成为 Linux 系统管理员所必需的知识,而假如您选择参加 LPI 考试,您将有能力取得 Linux Professional Institute 颁发的 LPIC Level 1 证书。

LPI 徽标是 Linux Professional Institute 的商标。

我应该学习这一教程吗?

这篇教程对于那些想学习或提高 Linux 内核编译和配置技能的读者是理想的学习资料。而且本教程特别适合那些将配置 Linux 服务器或台式机的读者。对于许多读者,文中的许多问题可能是初次碰到,但经验较丰富的 Linux 用户会发现这个教程是巩固重要的 Linux 内核技能的极佳途径。

假如您是 Linux 新手,我们建议您在继续之前先学完 LPI 证书 101 和 102 考试准备教程系列前面的文章,包括

  • 101 系列, 第 1 部分: Linux fundamentals
  • 101 系列, 第 2 部分: Basic administration
  • 101 系列, 第 3 部分: Intermediate administration
  • 101 系列, 第 4 部分: Advanced administration
  • 102 系列, 第 1 部分: Compiling sources and managing packages

关于作者

有关本教程内容中的技术问题,请和作者联系:

  • 通过 drobbins@gentoo.org 和 Daniel Robbins 联系

Daniel Robbins 居住在美国新墨西哥州阿尔伯克基(Albuquerque),他是 Gentoo Technologies, Inc. 的总裁兼 CEO,也是 Gentoo Linux(PC 上的高级 Linux)和 Portage 系统(Linux 的下一代移植系统)的创建者。他还是 Macmillan 出版的 Caldera OpenLinux UnleashedSuSE Linux UnleashedSamba Unleashed 等书的撰稿作者。Daniel 自小学二年级起就和电脑结下不解之缘,那时他第一次接触 Logo 编程语言,并沉溺于 Pac-Man 游戏中。这也许就是为什么至今他仍担任 SONY Electronic Publishing/Psygnosis 首席图像设计师的原因所在。Daniel 喜欢和妻子 Mary 和他们的女儿 Hadassah 一起共度时光。

二。介绍内核

而内核是 ... Linux!

通常,“Linux”一词指的是完整的 Linux 分发版(distribution)和使分发版工作的任何协作运行程式。然而,您或许会惊奇地发现从技术角度讲 Linux 是并且只是个内核。尽管一般所指的“Linux”的其他部分(如 shell 和编译器)是完整的操作环境的基本组成部分,但从技术角度讲,这些部分和 Linux(内核)是分开的。尽管如此,人们仍用“Linux”来指“基于 Linux 的分发版”。但是,至少每个人都认同 Linux 内核是任何“Linux 操作系统”的心脏

和硬件进行相互操作

Linux 内核的主要作用是直接和系统中的硬件进行相互操作。内核在原始硬件和应用程式之间提供了一个抽象层。例如,按此方式,程式本身无需知道特定主板芯片组或磁盘控制器的周详信息 ― 而是能够在向磁盘读写文档的更高层次上进行操作。

CPU 抽象

Linux 内核还在系统的处理器(或多处理器)之上提供一个抽象层次 ― 使多个程式看起来象是同时运行。内核负责使每个进程公平、分时共享处理器的计算资源。

若正在运行 Linux,那么正在使用的内核不是支持 UP(单处理器)的,就是支持 SMP(对称多处理器)的。假如您正好有一块 SMP 主板,但使用的是 UP 内核,那么 Linux 将不会“看见”额外的处理器!修正这一问题需要编译用于您硬件的特别 SMP 内核。现在,SMP 内核也可运行在单处理器系统上,但性能略有下降。

抽象 IO

内核还处理大量需要的任务:抽象任何文档输入输出格式。设想一下,假如每个程式都必须直接和特定的磁盘硬件打交道,会发生什么 ― 假如您更换磁盘控制器,任何的程式都会停止运行!幸运的是,Linux 内核遵循 UNIX 模型:提供任何程式都能够使用的简单数据存储和访问抽象。这样的话,您喜欢的数据库就无需考虑数据是存储在 IDE 硬盘上、还是存储在 SCSI RAID 阵列上或是存储在挂装于网络的文档系统上。

以网络为中央

Linux 赢得声誉的主要因素之一是其健壮的连网功能,尤其是 TCP/IP 支持。假如您猜想 TCP/IP 栈在 Linux 内核中,那么您猜对了!内核为在网络上发送数据的程式提供了符合标准的高层次接口。在幕后,Linux 内核直接和特定的以太网卡或 pppd 守护程式进行相互操作,并处理低层次的因特网通信周详信息。请注意:本系列的下一篇教程(第 7 部分)将讨论 TCP/IP 和连网。

连网的长处

Linux 的长处之一是内核中有大量可用的可选特性,特别是和连网有关的特性。例如,能够将内核配置为允许整个内部网络经过 Linux 调制解调器访问因特网 ― 这称为 IP 伪装(IP Masquerading)或 IP NAT。

此外,能够将 Linux 内核配置为导出或挂装基于网络的 NFS 文档系统,这是考虑到允许 LAN 上其他 UNIX 机器能够轻松地和 Linux 系统共享数据。内核中有许多好东西,一旦开始研究 Linux 内核的众多配置选项,您就会了解。

引导回顾

现在是快速复习 Linux 引导过程的良好时机。启动基于 Linux 的系统时,内核映象(以单个二进制文档形式存储)由引导装入程式(如 LILO 或 GRUB)从磁盘装入内存。此时,内核接管系统。内核首先做的事情之一是检测并初始化任何他找到且配置成支持的硬件。硬件正确初始化之后,内核就准备启动常规用户空间程式(也称为“进程”)。

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!