在本章中,我们将下载 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 . |
然后,从 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 的方式。将根设备的值更改为你的根 (/) 文件系统挂载到的设备。这是通过 root=device 完成的。一个例子可能是 root=/dev/sda3。如果不确定,请登录到另一个终端并使用 mount 命令进行检查。
7248 配备了内置的 Crystal Audio cs4232 声卡。Linux 内核中支持此声卡。配置内核时,请检查声音设置是否正确。它们应该看起来像这样
声音: Y
OSS 声音模块: Y
支持基于 Crystal CS4232 (PnP) 的声卡: M
编译内核非常简单。如果你还没有进入,请进入内核树顶层目录中的 linux 目录,并执行以下命令序列
cd /usr/src/linux make dep && make clean && make zImage && make modules && make modules_install |
现在是时候安装你新鲜出炉的内核了。在大多数基于 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 |
dd if=/boot/zimage-2.4.21 of=/dev/sda1 |
mv /boot/System.map /boot/System.map.old ln -s /boot/System.map-2.4.21 /boot/System.map |
在重新启动之前,我们必须发送一些参数来配置声音模块。在 YellowDog、SuSE 和 Mandrake 上,这是在 /etc/modules.conf 中完成的。在 Debian 中,使用 /etc/modutils/sound。编辑此文件,并添加以下行
alias sound cs4232 pre-install sound /sbin/insmod sound dmabuf=1 options cs4232 io=0x534 irq=5 dma=1 dma2=0 mpuio=0x330 mpuirq=5 |