如果您不太了解 Linux,或者其他任何一种 UNIX 或类似 UNIX 的操作系统,而且想要了解如何配置、编译和安装 Linux 内核,那么本教程很适合您的需要。从中,您将学习什么是 Linux 内核,什么是模块以及如何下载、编译和安装一个新的内核。本教程将带领您经历内核完整的编译过程。
如果您以前曾经编译过 Linux 内核,您将发现这篇教程能更新想法。作者: 网普科技 时间: 2005-6-22 10:34 AM 标题: 第二部分 内核入门
当您听到"Linux" 这个词眼时您想到了什么?当我听到它时,我通常会想到一个完整的 Linux 软件包和其中所有包含的程序。
但是,您也许会惊奇地发现,从技术上而言,Linux 是一个内核,而且只是一个内核。其余我们所通常称之为 "Linux" (例如一个 shell 和编译器)的部分实质上只是整个软件包的一部分,它们从技术上而言是与 Linux (内核)是分开的。 当许多人使用 "Linux" 这个词来表达"基于 Linux 软件包"时,每个人都会同意 Linux 内核是每个软件包的心脏。
与硬件接口
Linux 内核的重要职责是与您系统中的硬件直接接口。内核提供了一个在裸设备与应用程序间的抽象层 。例如,程序本身不需要了解您的母板芯片集或磁盘控制器的细节了 -- 它们可以在更高层次上读写磁盘。
抽象 CPU
Linux 内核还提供了在您系统处理器上的一层抽象 -- 允许多个程序看起来在同时运行。Linux 通过允许多个 UNIX 进程一起运行 -- 而内核负责将处理器在其间分享。
一个 Linux 内核可以支持一个或多个 CPU -- 而您正在使用的内核可能是“可支持-单处理器”(UP-aware)或“可支持-对称多处理器”(SMP-aware)。如果您碰巧有一块 SMP 母板,但您使用的是一个 UP 内核,Linux 将无法“看到”您多余的处理器!要解决这个问题,您需要为您的硬件编译一个特定的 SMP 内核。当前,SMP 内核也可运行在单处理器系统上,但会有少许的性能影响。
Linux 的一个出名之处是它健壮的网络功能,尤其是 TCP/IP 支持。如果您猜测 TCP/IP 栈是实现在 Linux 内核,那您就对了!内核为需要在网络上发送数据的程序提供了一个易用、高层次的接口。在这后面,Linux 内核直接与您的以太网卡或 Modem 直接接口,而且处理底层的 Internet 通讯细节操作。
优秀的网络支持
Linux 一系列优点中出色的一点是所有有用的功能都能包含在内核中,尤其是与网络相关的。例如,您可以配置一个内核来允许您整个的家庭网络通过您 Linux 上的 Modem 访问因特网 -- 这被称为 IP Masquerading,或 IP NAT。
另外,Linux 内核可以被配置为载出或安装(mount)基于网络的 NFS 文件系统,使得其他在您 LAN 上的 UNIX 机器与您的 Linux 系统轻松共享数据。
Once a real 2.4 series kernel comes out (like 2.4.0), don't assume that the kernel is ready for use on a mission-critical system like a server. Even though 2.4 is supposed to be a stable series, early 2.4 kernels are likely to be not quite up to snuff. As is often the case in the computer industry, the first version of anything can have fairly sizable bugs. While this may not be a problem if you're testing the kernel on your home workstation, it is a risk you may want to avoid when you machine provides valuable services to others.
老式配置内核的方法是极为痛苦的过程,并涉及到进入 /usr/src/linux 目录并输入 make config 命令。请放弃这种配置内核的方式 -- 除非您想在命令行上回答几百个(对!几百个)“yes/no”的问题。
配置的新途径
我们是现代人类,我们不在输入 make config,而是输入 make menuconfig 或者 make xconfig。如果您想要配置您的内核,使用上述选择之一。如果您输入 make menuconfig,您将使用一个漂亮的基于文本的彩色菜单系统来配置内核。如果您输入 make xconfig,您将使用一个更漂亮的基于 X-Window 的 GUI 界面来配置内核的各种选项。这里有一个使用 "make menuconfig" 的屏幕截图:
一旦您的内核配置完毕,就可开始编译它了。在我们能编译它前,我们需要生成依赖(dependency)信息并清除任何老的"编译结果"。这可以通过在 /usr/src/linux 下输入 make dep; make clean 完成。
make bzImage
现在是编译真正的二进制内核映像时候了。输入 make bzImage。过几分钟后,编译会结束而且您在 /usr/src/linux/arch/i386/boot(x86 PC 内核)目录下找到 bzImage 文件。我们将待会告诉您如何安装这个新内核,但是现在我们要看看模块编译了。
编译模块
现在我们有了 bzImage,下面要编译模块了。即使您在配置内核时没有使用任何模块,也不要跳过此步骤 -- 在编译完 bzImage 后立刻编译模块是个好习惯。而且,如果您真的没有模块需要编译,这个步骤也非常快就结束了。输入 make modules; make modules_install。这将导致模块被编译而且被安装到 /usr/lib/<内核版本号> 目录下。
祝贺您!您的内核已经被编译完成了,您的内核模块也编译完成并被安装。现在是要重新配置 LILO,这样您能使用新的内核。作者: 网普科技 时间: 2005-6-22 10:40 AM 标题: 第六部分 启动配置
现在是最后来重新配置 LILO 的时候了,它将负责载入新的内核。LILO 是最流行的 Linux 引导工具,而且为所有的主流 Linux 发行商所采用.
LILO 入门
现在是最后来重新配置 LILO 的时候了,它将负责载入新的内核。LILO 是最流行的 Linux 引导工具,而且为所有的主流 Linux 发行商所采用。您要作的第一件事是察看您的 /etc/lilo.conf 文件。它将包含一行看似 "image=/vmlinuz" 的语句。该语句告诉 LILO 到何处找到内核。
启动配置, 第二部分
要配置 LILO 来使用新的内核,您有两种选择。第一个是覆盖您现有的内核 -- 除非您手头上有一些紧急启动措施如还有此内核的引导盘,这很危险的方法。
更为安全的选择是配置 LILO 是得它能从新的或旧的内核引导。LILO 可配置成从新内核缺省启动,但仍提供一种方法让您遇上问题时能选择旧的内核来启动。这是推荐的作法,也是我们将随后介绍的方法。