在本章中,我们将下载 Linux 内核源代码,添加一些补丁,并在硬盘上编译和安装我们自己的定制内核。当我们成功完成这项激动人心的事件后,我们就不必再从安装启动软盘启动了。
到目前为止我们使用的内核是一个完整的 2.4 版本(YellowDog 为 2.2 版本)内核,由我提供。这是一个相当稳定且优秀的内核,但不确定它是否是你想要的。你应该构建自己的内核,以便了解你需要哪些补丁以及在真正需要时可以安装哪些模块。这里提供了所有源代码和补丁的链接,以及编译新内核的逐步指南。
对于我们刚刚完成的安装,你必须从软盘启动。如果能够直接从硬盘启动岂不是更好 - 顺便说一句,声音支持呢?让我们一起尽快设置好这些。
在开始下载文件和编译内核之前,请检查你是否已安装以下软件包
make gcc cpp glibc-devel ncurses-devel kernel-headers(此列表可能应该更长。)
请注意,这些软件包的名称在不同的发行版中可能会略有不同。
我们将使用最新的 2.4 内核源代码和一些补丁,其中包括 David Monro 提供的 IBM-E15 帧缓冲补丁,它为我们提供了一个可运行 XFree86 的工作帧缓冲控制台。这听起来可能很复杂,但请相信我,并非如此。按照下面的步骤操作,我们将在大约一个小时内完成设置。
我们将使用 Linux 内核的标准位置,即 /usr/src/ 。下载内核源代码和补丁时,将所有文件放在 /usr/src 中。
首先,我们必须获取可工作的 2.4 源代码。为了获取它,我们将使用 rsync 工具,因此请检查你是否已安装它。一些好心人在 source.mvista.com 上设置了一个 BitKeeper Linux/PPC 开发树的 rsync 服务器。非常感谢他们,请在你的心中和祈祷中记住他们。
注意:你可以使用来自任何 ftp.kernel.org 镜像站点的标准 Linux 内核源代码。像 2.4.21 这样的现代内核应该可以正常工作。我发现 devel 树在 7248 上运行得更好,所以我坚持使用它。
警告:不要通过低端链接(如调制解调器)执行此操作。这将花费很长时间。那么,让我们开始吧。执行以下命令
cd /usr/src mv linux linux.old mkdir linux-2.4 ln -s linux-2.4 linux cd linux rsync -avz --delete source.mvista.com::linuxppc_2_4_devel . chown -R root.root . chmod -R u+w .请注意,你可能需要等待几分钟才能通过 rsync 同步所有源代码。这是正常的。
然后,从 Leigh Brown 的站点页面 http://www.solinno.co.uk/7043-140/files/2.4.19-2/ 获取 David Monro 的 IBM E15 帧缓冲补丁
下一步是修补你刚刚下载的源代码文件。首先添加 IBM E15 补丁
cd /usr/src/linux patch -p1 < ../030-e15fb.diff如果你有更多补丁,请以相同的方式添加它们。现在内核源代码已准备好进行配置。
配置内核的细节超出了本文档的范围。要获得更多帮助,请尝试 内核 HOWTO。在这里,我们将仅介绍获取工作内核的基础知识。将 我的内核配置文件 下载到内核树的顶层目录 /usr/src/linux 中。
在顶层目录 (/usr/src/linux) 中,通过发出以下命令启动配置程序
make ibmchrp_config cp ingvar.config-2.4 .config make menuconfig在内核配置系统中,我们检查不同的菜单以了解我们的可能性。不要害怕更改任何内容。我们可以复制回原始文件,然后再次加载配置系统。在继续编译和安装之前,有一些事项需要检查
你真正应该检查并可能更改的一件事是初始内核命令行字符串,它位于General setup子菜单中。此字符串是以空格分隔的选项列表,在启动时发送到内核。这实际上是在配置引导加载程序,也是我们在 7248 上最接近 LILO、Grub 或 Yaboot 的方式。将根设备的 value 更改为你根 (/) 文件系统挂载的设备。这是通过 root=device 完成的。一个例子可能是 root=/dev/sda3。如果不确定,请登录到另一个终端并使用 mount 命令进行检查。
7248 配备了内置的 Crystal Audio cs4232 声卡。Linux 内核中对此声卡提供支持。配置内核时,请检查声音设置是否正确。它们应该看起来像这样
Sound: Y
OSS sound modules: Y
Support for Crystal CS4232 based (PnP) cards: M
编译内核非常简单。如果你还没有进入,请进入内核树顶层的 linux 目录,并发出以下命令序列
cd /usr/src/linux make dep && make clean && make zImage && make modules && make modules_install现在,去给自己泡一杯茶或咖啡,或者喝一杯啤酒,或者学习一下圣经几分钟。这可能需要一些时间。如果一切正常,当文本停止滚动后,最终你将拥有一个要安装的内核,这可能需要长达 20 分钟,具体取决于你的内核配置。
现在是时候安装你新鲜出炉的内核了。在大多数基于 Linux 的系统(如)上,我们将内核及其设置文件保存在 /boot 目录中。查看 Makefile 以检查你运行的版本,并在下面的命令中添加正确的版本号
head /usr/src/linux/Makefile cp /usr/src/linux/arch/ppc/boot/images/zImage.prep /boot/vmlinuz-2.4.21 cp /usr/src/linux/System.map /boot/System.map-2.2.18假设 sda1 是你的启动设备,带有 PReP 启动分区,并且你的内核版本为 2.4.21,请通过发出以下命令来安装新内核
dd if=/boot/zimage-2.4.21 of=/dev/sda1我们还希望 System map 链接指向我们的新 System.map。发出以下命令
mv /boot/System.map /boot/System.map.old ln -s /boot/System.map-2.4.21 /boot/System.map