2.2. 设计

2.2.1. 简化

花点时间浏览一下 Bootdisk-HOWTO 或 From-PowerUp-to-BASH-Prompt-HOWTO。这些 HOWTO 文档可以在 http://www.tldp.org/docs.html#howto 在线找到。这两份文档都出色地展示了启动并运行 GNU/Linux 系统需要什么。 其中也有大量信息需要消化。 请记住,我们的目标之一是“保持简单以避免压力”,因此我们希望忽略除了启动/根磁盘组绝对关键部分之外的所有内容。

基本上,它归结为以下必需项

我们甚至不需要 init 守护进程。 可以通过引导加载程序传递选项来告诉内核直接运行 shell。

为了便于构建,我们将构建一个双磁盘启动/根集,而不是尝试将所有内容都放在单张软盘上。 引导加载程序和内核将放在启动盘上,而 shell 将驻留在根盘上。

2.2.2. 启动盘

对于启动盘,我们只需要安装 GRUB 引导加载程序和一个 Linux 内核。 我们需要使用一个内核,该内核不需要模块来访问我们需要的硬件。 主要地,它应该内置支持软盘驱动器、内存盘、第二扩展文件系统、proc 文件系统、ELF 二进制文件和基于文本的控制台。 如果没有这样的内核可用,则需要从源代码构建。 Kwan Lowe 的 内核重建指南 是这项任务的一个很好的参考,但是我们可以忽略处理模块和初始内存盘的部分。

2.2.3. 根盘

对于根盘,我们将需要一张已准备好文件系统的软盘。 我们还需要一个静态链接的 BASH shell,这样我们可以避免共享库带来的额外复杂性。 BASH 源代码中的 configure 程序识别--enable-static-link此功能的选项。 我们还将使用--enable-minimal-config选项,以使 BASH 二进制文件保持在可管理的大小。 根盘的附加要求是/dev目录和一个用于控制台的设备文件。控制台设备是 BASH 能够与键盘和视频显示器通信所必需的。

2.2.4. CPU 兼容性

还有另一个不太明显的需要记住的要求,那就是 CPU 兼容性。 每一代 CPU 都比其前代产品具有更复杂的架构。 与旧的 486 或 386 相比,后代芯片具有额外的寄存器和指令。 因此,为新的快速 6x86 机器优化的内核将无法在较旧的机器上运行。 (请参阅READMELinux 内核源代码中的文件以获取详细信息。) 为 6x86 构建的 BASH shell 也可能无法在较旧的处理器上运行。 为了避免这个问题,我们可以选择 386 作为最低公分母 CPU,并为该架构构建所有代码。