市场上存在大量的音频硬件,每种声卡都有其特定的配置。有关如何设置特定声卡的详细信息,我们可以参考来自Linux 文档项目的 Sound-HOWTO。 然而,从更广义的意义上讲,我们可以将声卡视为任何其他新的硬件。 要向 GNU/Linux 系统添加新硬件,我们需要配置内核以识别它,并配置/dev根磁盘上的文件以访问它。
为 mp3blaster 程序创建更多空间的可能最简单的方法是挂载一个额外的存储设备。 有几个挂载点的选择。 到目前为止/usr, /home和/opt都是空目录,它们中的任何一个都可以用来挂载软盘、CD-ROM 或额外的压缩 ramdisk 镜像。/usr目录是放置应用程序的逻辑选择,但是媒体的选择呢? Mp3blaster 和其所需的库太大,无法容纳在 1.44M 软盘上,并且刻录 CD-ROM 似乎是一个繁琐的工作,只为了一个小程序。 因此,鉴于这些限制,最好的选择是将程序放在压缩软盘上。
挂载 CD 和未压缩的软盘很容易,但是如何将压缩镜像从软盘加载到 ramdisk 中呢? 这必须手动完成,因为自动挂载压缩软盘仅适用于根磁盘。 并且使用 mount /dev/fd0 将不起作用,因为软盘上没有文件系统,只有 gzip 文件的内容。 实际的文件系统包含在 gzip 文件中。 那么我们如何挂载隐藏在 gzip 文件下面的文件系统呢? 通过检查用于创建熟悉的压缩根磁盘软盘的步骤,可以解决这个难题。
创建一个 ramdisk,挂载它并填充文件。
卸载 ramdisk 设备。
使用 dd 将 ramdisk 的内容转储到镜像文件。
使用 gzip 压缩镜像文件。
使用 dd 将压缩镜像文件写入软盘。
如果这就是压缩镜像从 ramdisk 到压缩软盘的路径,那么从压缩软盘到 ramdisk 应该就像反向运行这些步骤一样简单。
使用 dd 从软盘读取压缩镜像文件。
使用 gunzip 解压缩镜像文件。
使用 dd 将镜像文件的内容转储到 ramdisk 中。
挂载 ramdisk 设备。
文件可用。
我们可以通过使用管道组合 dd 和 gunzip 来切断中间的镜像文件,像这样:dd if=/dev/fd0 | gunzip -cq > /dev/ram1。现在压缩的软盘直接进入 ramdisk,并在运行时解压缩。
我们将在示例中使用的示例 mp3 文件足够小,可以放在未压缩的软盘上,因此无需刻录 CD。 但是,严肃的音乐爱好者可能希望能够挂载一个装满音乐的自定义 CD-ROM,并且该选项将需要对额外硬件的支持。
我们希望 mp3blaster 的所有必需库和其他支持文件都作为压缩/usr镜像的一部分提供,以便 mp3blaster 可以正确运行。 熟悉的 ldd 命令可用于确定 mp3blaster 需要哪些库。 任何额外的库都可以放在/usr/lib中。 即使某些库可能出现在开发系统的/lib中,它们仍然可以放在袖珍 Linux 系统的/usr/lib中。 动态链接器ld-linux.so足够智能,可以在加载库时同时查找这两个位置。
因为 mp3blaster 使用 curses(或 ncurses)屏幕控制库,所以我们还需要一个额外的文件。 curses 库需要知道它控制的终端的特性,并且它从 terminfo 数据库中获取该信息。 terminfo 数据库由/usr/share/terminfo目录下的所有文件组成,并且与我们可用的磁盘空间相比非常大。 但是,由于袖珍 Linux 仅支持 PC 控制台,因此我们只有一个终端类型需要担心,因此只需要一个文件。 我们需要的 terminfo 数据库部分是文件/usr/share/terminfo/l/linux,因为我们正在使用“Linux”终端。 有关 curses 主题的更多信息,请参阅 John Strang 的名为“Programming with Curses”的书籍,该书可从O'Reilly publishing获得。
在声卡、ramdisk、CD-ROM 和 terminfo 之间,有很多需要跟踪的东西。 因此,让我们花一点时间来组织和总结使袖珍点唱机成为现实所必需的任务。
创建一个新的内核磁盘,其中包括对音频硬件、IDE 设备和 CD-ROM 文件系统的内置支持。
在根磁盘上创建适当的/dev文件以支持音频硬件、额外的 ramdisk 和 IDE CD-ROM。
安装 gunzip 实用程序以启用 usr 镜像的解压缩。
创建一个启动脚本,将压缩镜像从软盘加载到 ramdisk 中,并将 ramdisk 挂载到/usr.
上。 创建一个压缩软盘,其中包含 mp3blaster 程序、其所需的库和 terminfo 文件。