8. 缩小根文件系统大小

构建启动盘的主要问题之一是如何将所有内容放入一张(甚至两张)软盘中。即使文件经过压缩,这也可能非常困难,因为 Linux 系统组件不断增长。以下是一些常用的技术,用于使所有内容都适合。

8.1. 增加软盘密度

默认情况下,软盘格式化为 1440K,但可以使用更高的密度格式。您是否可以从更高密度的磁盘启动主要取决于您的 BIOS。fdformat将格式化以下大小的磁盘:1600K、1680K、1722K、1743K、1760K、1840K 和 1920K。请参阅 fdformat 手册页和/usr/src/linux/Documentation/devices.txt.

但是您的机器将支持哪些软盘密度/几何形状?以下是来自 fdutils 作者 Alain Knaff 的一些(经过少量编辑的)答案。

这更多是 BIOS 的问题,而不是磁盘的物理格式问题。如果 BIOS 判定任何扇区号大于 18 的扇区都是坏的,那么我们就无能为力。实际上,除了反汇编 BIOS 之外,试错似乎是唯一的找出方法。但是,如果 BIOS 支持 ED 磁盘(超高密度:36 扇区/磁道和 2.88MB),则 1722K 磁盘也有可能被支持。

扇区数超过 21 个扇区/磁道的超格式化磁盘可能无法启动:实际上,这些磁盘使用非标准大小的扇区(例如,一个扇区 1024 字节而不是 512 字节),并且可能无法启动。但是,应该可以编写一个特殊的引导扇区程序来解决这个问题。如果我没记错的话,DOS 2m 实用程序有这样的功能,OS/2 的 XDF 实用程序也是如此。

有些 BIOS 人为地声明任何扇区号大于 18 的扇区都必须是错误的。由于 1722K 磁盘使用的扇区号高达 21,因此这些磁盘将无法启动。最好的测试方法是将测试 DOS 或 syslinus 磁盘格式化为 1722K 并使其可启动。如果您使用 LILO,请不要使用 linear 选项(否则 LILO 会假定磁盘是默认的 18 扇区/磁道,即使 BIOS 支持该磁盘,磁盘也会启动失败)。

8.2. 使用 BusyBox 替换常用工具

许多根文件系统空间被常见的 GNU 系统实用程序占用,例如cat、chmod、cp、dd、df等等。BusyBox 项目旨在为这些常见的系统实用程序提供最小的替代品。BusyBox 提供一个单一的整体可执行文件,/bin/busybox,大约 150K,它实现了这些实用程序的功能。然后,您从不同的实用程序创建到此可执行文件的符号链接;busybox 会检测到它是如何被调用的,并调用正确的代码。BusyBox 甚至包含一个基本的 shell。BusyBox 以二进制包的形式提供给许多发行版,源代码可以从 BusyBox 网站 获取。

8.3. 使用备用 shell

一些流行的 Linux shell,例如 bashtcsh,体积很大并且需要许多库。如果您不使用 BusyBox shell,您仍然应该考虑更换您的 shell。一些轻量级的替代方案是 ashlshkisssmash,它们体积更小,需要的库更少(或没有)。这些替代 shell 中的大多数都可以在 http://www.ibiblio.org/pub/Linux/system/shells/ 找到。确保您使用的任何 shell 都能运行所有rc您包含在启动盘上的文件中的命令。

8.4. 精简库和二进制文件

许多库和二进制文件都带有调试信息。在这些文件上运行 file 将告诉您 ``未精简'' 如果是这样。当将二进制文件复制到您的根文件系统时,最好使用
      objcopy --strip-all FROM TO

Important

复制库时,请务必使用strip-debug而不是strip-all.

8.5. 将文件移动到实用程序磁盘

如果您的某些二进制文件不需要立即启动或登录,您可以将它们移动到实用程序磁盘。有关详细信息,请参阅 第 9.2 节。您也可以考虑将模块移动到实用程序磁盘。