5. 构建 JavaStation 就绪的文件系统

本章介绍如何构建适用于运行 LinuxJavaStation 的文件系统。

5.1. 为构建您自己的文件系统做准备

JavaStation 构建文件系统是一项耗时但对执行者来说有益的任务。您将比以往任何时候都更深入地了解库依赖性,同时努力保持整体镜像大小尽可能小。

警告:这不是一项容易的任务。创建一个持久的文件系统不适合新手。如果您认真考虑执行此步骤,请准备好预算一些时间来使事情恰到好处,特别是如果您计划制作一个符合 8MB 限制的嵌入式根文件系统。您现在已被正式警告。

在构建新的可用于 JavaStation 的文件系统时,可以采用两种常见方法。

  1. 从已建立的发行版的文件系统开始,并精简到核心。

  2. 从已建立的发行版的 “救援磁盘” 文件系统开始,并添加所需的功能。

当然,您选择哪条路径完全取决于您。 “救援磁盘” 构建过程似乎效果最好,因为救援磁盘中的更多基本命令是静态链接的,这增加了初始镜像大小,但减少了初始库的麻烦。救援磁盘上包含的命令也恰好是精简的,没有编译许多多余的选项。

显然,在 JavaStation 的上下文中构建文件系统时,您将基于现有的 Linux/SPARC 文件系统。 RedHat、SuSE 或 Debian 发行版附带的文件系统是很好的起点。

Warning

将来,您还需要确保基于使用编译的 32 位模式可执行文件构建的文件系统,因为 64 位用户空间项目目前正在为 64 位 SPARC Linux 内核进行中。截至 2001 年 10 月,这仍然遥遥无期,但现在提到这一点是为了将来考虑。

5.2. “/etc/fstab” 文件的内容

放入 “/etc/fstab” 中的配置行取决于您将使用 “NFS-Root” 还是 “Embedded-Root” 文件系统配置。

5.2.1. “NFS-Root” 文件系统 fstab

这是一个用于 “NFS-Root” 启动选项的 “/etc/fstab” 示例。

###
#
your.nfs.server:/path/to/filesystem  /  nfs defaults,rsize=8192,wsize=8192 1 1
#
none                    /proc                   proc    defaults        0 0
###

5.2.2. “Embedded-Root” 文件系统 fstab

这是一个用于 “Embedded-Root” 启动选项的 “/etc/fstab” 示例。

###
#
/dev/ram /     ext2  defaults
#
/proc    /proc    proc  defaults
###

5.3. “Embedded-Root” 镜像创建过程

准备 “Embedded-Root” 启动镜像需要一些额外的步骤。由于这些额外的步骤,建议 “NFS-Root” 文件系统选项供 Linux on JavaStation 的初学者使用。您也可以尝试本文档中指出的示例。如果您仍然希望自己构建嵌入式镜像,本节概述了基本说明。

创建 “Embedded-Root” 启动镜像是一个 5 步过程

  1. 原型化您的文件系统

    本章全部讨论滚动您自己的文件系统。在此步骤中,假定您创建了自己的文件系统,可能是通过在工作的 “NFS-Root” 文件系统配置上原型化一个文件系统。

    需要记住的一件事是,与您的 “NFS-Root” 文件系统不同,“Embedded-Root” 文件系统必须适合您分配的 RAM 磁盘的范围内,通常为 4-16 MB。您的最大大小取决于 RAM 磁盘驱动程序的设置。

  2. 为您的文件系统创建一个空文件

    您现在需要创建一个基于文件的文件系统 “容器”。这只是一个文件,其大小与您的 RAM 磁盘的大小相同。

    要创建此文件,请尝试dd命令

    dd if=/dev/zero of=./fs_test.img bs=1k count=8000 
    

    使用此示例,您现在应该有一个名为 “fs_test.img” 的 8 MB 文件。注意:确保 您使用的计数与您在内核的 RAM 磁盘驱动程序中为 RAM 磁盘分配的大小相匹配!

  3. 格式化您的文件系统 “容器”

    现在您有了一个文件系统的 “容器”,现在是时候格式化它并在其上放置一个裸文件系统了。

    在我们的内核阶段,我们添加了对 ext2 文件系统的支持。我们现在将使用此文件系统类型格式化我们的 “容器”

    mkfs.ext2 ./fs_test.img
    

    忽略任何关于文件不是块设备的警告,并继续进行。这是一个预期的警告消息。

  4. 挂载文件系统 “容器” 并写入它

    现在您有了文件系统容器,您可以挂载它并将您的原型文件系统加载到它上面。

    要挂载容器,请使用内核环回设备。确保您的服务器的内核已启用环回支持,并发出

    mount -o loop ./fs_test.img /mnt
    

    将您的文件复制到文件系统,并确保 “/etc/fstab ” 具有本文档其他地方描述的 RAM 磁盘条目。

    为避免符号链接被更改为文件的实际副本,请使用 “tar”“cpio” 等复制工具,而不是 “cp”

  5. 卸载并压缩根文件系统

    卸载您刚刚创建的根文件系统。

    umount /mnt
    

    使用最大 “gzip” 压缩级别压缩文件系统文件。

    gzip -v9 ./fs_test.img
    

    您现在应该有 “fs_test.img.gz” 文件。

  6. 将根文件系统挂钩到您的内核镜像的背面

    现在您必须将文件系统镜像附加到您的内核上。

    您可以使用一个名为 “piggyback” 的实用程序程序来完成此操作。 piggyback 程序负责附加两者并让内核知道它和文件系统的开始和结束位置的任务。

    “piggyback” 程序位于您的内核源代码树下的 <LINUXROOT>/arch/sparc/boot 中。也可能在您最喜欢的 ftp.kernel.org 站点上找到。

    为了使 piggyback 工作,它需要您的 AOUT 格式内核镜像、来自您的内核源代码根目录的 System.map 文件以及您刚刚创建的压缩根文件系统。

    我们将它们放在一起使用

    piggyback vmlinux.aout System.map fs_test.img.gz
    

    务必先备份您的内核镜像,因为 piggyback 使用相同的 “vmlinux.aout” 文件名作为输出。给出此命令后检查您的 “vmlinux.aout” 文件的大小,您可以验证文件系统是否已附加。

恭喜!您已经创建了一个 “Embedded-Root” 内核/文件系统启动镜像。

5.4. 示例文件系统

这里有一些示例文件系统供您开始使用。它们由各种 JavaStation 用户贡献。

警告:其中一些文件系统镜像可能被认为是过时的,应避免在生产环境中使用。您自己决定运行它们给您带来的责任风险。文档作者和文件系统贡献者不对因使用这些文件而造成的任何损害承担责任。它们不提供任何担保。

5.4.1. jsroot_varol_19991221

文件系统 (md5sum 450669bc5f3f8a4006fdc75471c0454b): http://dubinski-family.org/~jshowto/Files/filesystems/jsroot_varol/jsroot_varol_19991221.tar.bz2

描述

此镜像由 Varol Kapton 创建,基于 RedHat 6/SPARC。它具有日期为 19990823 的 Xfree 3.3.5 帧缓冲服务器,但仅适用于 Krups。如果您正在使用 Mr. Coffee 设备,则必须替换本 HOWTO 稍后讨论的其他 X 服务器。

由于包含的网络设置配置为 Varol 的网络,您必须首先挂载此镜像,并相应地编辑 /etc/hosts 和 /etc/resolv.conf。

确认 OK:是

适用于 Mr. Coffee:是

适用于 Krups:否

适用于 Espresso:否

5.5. 示例 X 服务器

用户最常问的问题之一是从哪里获取 X 服务器。这里有一些示例 X 服务器供您开始使用。它们由各种 JavaStation 用户贡献。

警告:其中一些文件可能被认为是过时的,应避免在生产环境中使用。您自己决定运行它们给您带来的责任风险。文档作者和文件系统贡献者不对因使用这些文件而造成的任何损害承担责任。它们不提供任何担保。

5.5.1. XF86_FBDev_3.3.3.1_19990104

X 服务器 (md5sum 88b49bbbfa1c36a5049b62b44c54ed81): http://dubinski-family.org/~jshowto/Files/xfree/XF86_FBDev_3.3.3.1_19990104.bz2

XF86Config 文件 (md5sum d9fa291efbd178812b3bd253dffb1893): http://dubinski-family.org/~jshowto/Files/xfree/XF86Config_FBDev_3.3.3.1_19990104.txt

描述

这是一个用于 XFree 3.3.3.1 的服务器,支持 Mr. Coffee 和 Krups 的帧缓冲器。

确认 OK:是

适用于 Mr. Coffee:是

适用于 Krups:是

适用于 Espresso:否

5.6. 外部示例文件系统

当然,本文档之外还存在其他文件系统和工具,并且已被 JavaStation 用户使用。以下是一些在 sparclinux 邮件列表中报告已被使用的文件。

  1. http://busybox.lineo.com(一个包含数十个常用 unix 工具功能的单个可执行文件)

  2. http://www.ultralinux.org/js (Jim Mintha 的文件系统)