估计编译时间: All default options: 4.20 SBU 估计所需硬盘空间: All default options: 181 MB |
Linux 内核是每一个Linux系统的心脏,它为系统提供生命的脉搏。当打开计算机电源并且引导Linux系统时,最先载入载入的Linux软件就是内核。内核初始化系统的硬件组件,诸如:串口、并口、声卡、网卡IDE控制器、SCSI控制器等等。简而言之,内核让软件能够在硬件上得以运行。
安装的文件: 内核和内核头文件
Linux 依赖于: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.
安装内核包括几步:配置,编译和安装。如果你不习惯本书中安装内核的方法,可以阅读内核源码中的 README 文件,以找出其他的方法。
准备编译前运行以下命令:
make mrproper |
这确保内核源代码树是绝对干净的。内核开发组推荐在每次编译内核前都这样做。你不能保证在解压后得到的源码是干净的。
用菜单界面来配置内核:
make menuconfig |
有时 make oldconfig 可能更好。请看 README 文件以获取更多信息。
如果你想,你可以直接从你的主系统拷贝一个内核配置文件 .config 到 $LFS/usr/src/linux-2.4.22 目录下,就能跳过内核配置这一步。不过我们不推荐这样做,因为浏览所有的菜单项并创建自己的内核对你的linux学习很有帮助。
关于 POSIX 共享内存支持,要打开内核参数中的"Virtual memory file system support"。这个参数在 "File systems" 菜单下,通常情况下是缺省打开的。
验证依赖关系,并创建依赖信息文件:
make CC=/opt/gcc-2.95.3/bin/gcc dep |
编译内核 image:
make CC=/opt/gcc-2.95.3/bin/gcc bzImage |
编译配置成模块的驱动等:
make CC=/opt/gcc-2.95.3/bin/gcc modules |
如果你要使用内核模块,你就需要一个/etc/modules.conf 文件。关于模块和内核配置的常用信息可以在内核文档中找到,位置是/usr/src/linux-2.4.22/Documentation. modules.conf的手册页和内核HOWTO(可以在http://www.tldp.org/HOWTO/Kernel-HOWTO.html 找到)也许你也有兴趣。
安装模块:
make CC=/opt/gcc-2.95.3/bin/gcc modules_install |
没有文档,任何软件包都不完整。因此我们这里编译内核的man文档:
make mandocs |
并安装它们:
cp -a Documentation/man /usr/share/man/man9 |
内核编译完成了,不过有一些创建的文件还留在源码树里。为了完成安装,要拷贝两个文件到 /boot 目录。
内核文件的路径在不同的平台上是不一样的。用以下命令安装内核:
cp arch/i386/boot/bzImage /boot/lfskernel |
System.map 是内核的符号文件。它映射内核 API 中每一个函数的接口(entrypoints)以及正在运行的内核数据结构地址。用下列命令来安装它:
cp System.map /boot |