Linux 的 BFS 文件系统

BFS 文件系统由 SCO UnixWare 操作系统用于 /stand 分区,该分区通常包含内核镜像和启动过程所需的一些其他文件。

为了在 Linux 下访问 /stand 分区,您显然需要知道分区号,并且内核必须支持 UnixWare 磁盘分区(CONFIG_UNIXWARE_DISKLABEL 配置选项)。然而,BFS 支持不依赖于是否支持 UnixWare 磁盘标签,因为也可以通过环回方式挂载 BFS 文件系统。

# losetup /dev/loop0 stand.img
# mount -t bfs /dev/loop0 /mnt/stand

其中 stand.img 是包含 BFS 文件系统镜像的文件。当您使用完毕并卸载后,还需要通过以下方式释放 /dev/loop0 设备:

# losetup -d /dev/loop0

您可以通过直接键入以下命令来简化挂载:

# mount -t bfs -o loop stand.img /mnt/stand

这将自动分配第一个可用的环回设备(并在必要时加载 loop.o 内核模块)。如果环回驱动程序没有自动加载,请确保您已编译该模块并且 modprobe 功能正常。请注意,如果系统上的 /etc/mtab 文件是 /proc/mounts 的符号链接,则 umount 不会释放 /dev/loopN 设备。您需要使用 losetup(8) 的 “-d” 开关手动执行此操作。阅读 losetup(8) 的手册页以获取更多信息。

要在 UnixWare 下创建 BFS 镜像,您首先需要找出哪个分区包含它。prtvtoc(1M) 命令是您的好帮手

# prtvtoc /dev/rdsk/c0b0t0d0s0

(假设您的根磁盘位于 target=0,lun=0,bus=0,controller=0)。然后您查找标签为 “STAND” 的分区,它通常是分区 10。有了这些信息,您可以使用 dd(1) 创建 BFS 镜像

# umount /stand
# dd if=/dev/rdsk/c0b0t0d0sa of=stand.img bs=512

为了以防万一,您可以通过检查魔术数字来验证是否操作正确

# od -Ad -tx4 stand.img | more

前 4 个字节应该是 0x1badface。

如果您对此 BFS 实现有任何补丁、问题或建议,请联系作者

Tigran Aivazian <aivazian.tigran@gmail.com>