linux 彻底定制指南,8.3. Linux-2.6.11.12 《Linux 彻底定制指南》[翻译:金步国]...

8.3.1. 安装内核

编译内核包含几个步骤(配置、编译和安装)请阅读内核源码树里的 README 文件,选择不同于本书的其它配置内核的方式。

运行下面的命令做编译前的准备:

make mrproper

这样可以确保内核源码树是绝对干净的,内核开发组推荐每次编译内核之前都先运行这个命令。请不要以为解包后内核源码树自动就是干净的。

如果在 Section 7.6. "配置 Linux 控制台" 中决定了要把键盘映射表编入内核,请运行下面的命令:

loadkeys -m /usr/share/kbd/keymaps/[path to keymap] > \

drivers/char/defkeymap.c

例如,如果您使用荷兰语键盘,请使用 /usr/share/kbd/keymaps/i386/qwerty/nl.map.gz 。

通过菜单界面配置内核:

make menuconfig

BLFS 有一些关于 LFS 之外的一些软件包的特别的内核配置需求,具体参见这里:http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index 。另外,在某些情况下 make oldconfig 可能是更恰当的,请参考 README 以获得更多信息。

如果您愿意,可以跳过配置内核的步骤,直接把宿主系统里的内核配置文件 .config(如果存在的话)复制到解压后的 linux-2.6.11.12 目录下。当然,我们不推荐这样做,考察全部的配置菜单并从头开始创建内核配置是更好的办法。

807c832940fb4584a59630ee0763602a.png

注意

NPTL 的支持要求内核使用 GCC-3.x 及以上的版本编译,在这本书里是GCC-3.4.3 。不推荐使用 GCC-2.95.x ,因为它会导致 Glibc 测试套件失败并且在 LFS Book 中不会提及这样的失败,因为 LFS 不是用 GCC-2.95.x 创建的。很不幸,内核文档相当陈旧,还在建议使用 GCC-2.95.3 作为编译器。

编译内核镜像和模块:

make

如果使用内核模块,就需要 /etc/modprobe.conf 文件。关于模块和内核配置的信息请参考 linux-2.6.11.12/Documentation 目录下的内核文档,modprobe.conf(5) 也是有用的。

阅读其它文档的时候请小心,因为它们通常只适用于 2.4.x 版本的内核。据我们所知,关于 Hotplug 和 Udev 的内核配置问题还没有文档说明。这个问题是这样的:如果 Hotplug 或用户写的脚本把模块插入内核,Udev 只创建了一个设备节点,而且不是所有模块都可以被 Hotplug 检测到。请注意,/etc/modprobe.conf 文件里像下面这样的语句在 Udev 下是不起作用的:

alias char-major-XXX some-module

因为 Hotplug、Udev 和模块的复杂性,我们强烈推荐您从完全非模块化的内核配置开始,特别是第一次使用 Udev 的时候。

如果内核配置了模块,就安装它们:

make modules_install

内核编译完之后,还需要一些步骤来完成安装,有些文件要复制到 /boot 目录里去。

内核镜像文件所在的路径根据您使用的平台不同而不同,x86平台上请运行下面的命令安装内核:

cp -v arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12

System.map 是内核的符号文件,它映射了每个内核 API 函数的入口,以及运行中内核数据结构的地址。请运行下面的命令安装这个文件:

cp -v System.map /boot/System.map-2.6.11.12

上面 make menuconfig 这一步产生的内核配置文件 .config 包含了刚才编译的内核的全部配置选项,保留这个文件以备将来参考:

cp -v .config /boot/config-2.6.11.12

很重要的一点是要注意到内核源码目录里的文件所有者不是 root 。只要是用 root 用户解压软件包(像我们在 chroot 环境里做的那样),解压出来的文件的用户和组 ID 是这个软件包打包者计算机上的用户和组 ID,对于其它软件包,这通常不是问题,因为安装完这些软件包之后源码目录就删除了,但是 Linux 内核源码树常常会保存很长的时间,这样就有可能打包者的用户 ID 和您计算机上某个用户的 ID 相同,从而让您计算机上的这个用户获得了内核源码的写权限。

如果您准备保留内核源代码,在 linux-2.6.11.12 目录下运行 chown -R 0:0 命令以确保全部文件的所有者是 root 。

71253d59a8088c0229177d0a84357180.png

警告

一些内核文档推荐创建一个从 /usr/src/linux 指向内核源代码目录的符号连接。这只是一个对 2.6 以前版本内核的特殊要求,并且在 LFS 系统上是 不允许 这样做的,因为这样做会导致你的基本 LFS 系统安装好以后再安装别的软件包的时候导致问题。

另外,系统 include 目录下的头文件应当 永远 保持 Glibc 在编译时使用的那个版本,也就是 Linux-Libc-Headers 包中的那个版本。决不要 使用内核包中的头文件。

I. 简介 1. 简介 如何构建一个 LFS 系统? 与上一版本有何不同? 更新日志 资源 帮助 II. 构建前的准备工作 2. 准备一个新分区 简介 创建一个新分区 在新分区上创建文件系统 挂载新分区 3. 软件包和补丁 简介 全部软件包 需要的补丁 4. 最后的准备工作 关于环境变量 $LFS 创建 $LFS/tools 目录 添加 LFS 用户 设置工作环境 关于 SBU 关于软件包测试套件 5. 构建临时编译环境 简介 工具链技术说明 Binutils-2.16.1 - 第一遍 GCC-4.0.3 - 第一遍 Linux-Libc-Headers-2.6.12.0 Glibc-2.3.6 调整工具链 Tcl-8.4.13 Expect-5.43.0 DejaGNU-1.4.4 GCC-4.0.3 - 第二遍 Binutils-2.16.1 - 第二遍 Ncurses-5.5 Bash-3.1 Bzip2-1.0.3 Coreutils-5.96 Diffutils-2.8.1 Findutils-4.2.27 Gawk-3.1.5 Gettext-0.14.5 Grep-2.5.1a Gzip-1.3.5 M4-1.4.4 Make-3.80 Patch-2.5.4 Perl-5.8.8 Sed-4.1.5 Tar-1.15.1 Texinfo-4.8 Util-linux-2.12r 清理系统 改变所有者 III. 构建 LFS 系统 第六章 安装系统基础软件 简介 挂载虚拟内核文件系统 包管理 进入 Chroot 环境 创建系统目录结构 创建必需的文件与符号连接 Linux-Libc-Headers-2.6.12.0 Man-pages-2.34 Glibc-2.3.6 再次调整工具链 Binutils-2.16.1 GCC-4.0.3 Berkeley DB-4.4.20 Coreutils-5.96 Iana-Etc-2.10 M4-1.4.4 Bison-2.2 Ncurses-5.5 Procps-3.2.6 Sed-4.1.5 Libtool-1.5.22 Perl-5.8.8 Readline-5.1 Zlib-1.2.3 Autoconf-2.59 Automake-1.9.6 Bash-3.1 Bzip2-1.0.3 Diffutils-2.8.1 E2fsprogs-1.39 File-4.17 Findutils-4.2.27 Flex-2.5.33 GRUB-0.97 Gawk-3.1.5 Gettext-0.14.5 Grep-2.5.1a Groff-1.18.1.1 Gzip-1.3.5 Inetutils-1.4.2 IPRoute2-2.6.16-060323 Kbd-1.12 Less-394 Make-3.80 Man-DB-2.4.3 Mktemp-1.5 Module-Init-Tools-3.2.2 Patch-2.5.4 Psmisc-22.2 Shadow-4.0.15 Sysklogd-1.4.1 Sysvinit-2.86 Tar-1.15.1 Texinfo-4.8 Udev-096 Util-linux-2.12r Vim-7.0 关于调试符号 再次清理系统 最终的清理 7. 配置系统启动脚本 简介 LFS-Bootscripts-6.2 启动脚本是如何工作的? LFS 系统的设备和模块处理 配置 setclock 脚本 配置 Linux 控制台 配置 sysklogd 脚本 创建 /etc/inputrc 文件 Bash Shell 启动文件 配置 localnet 脚本 定制 /etc/hosts 文件 为设备创建惯用符号连接 配置网络脚本 8. 使 LFS 系统能够启动 简介 创建 /etc/fstab 文件 Linux-2.6.16.27 使 LFS 系统能够启动 9. 结束 结束 看看你是第几个? 重启系统 现在做什么?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值