linux下挂载freebsd slice分区

use*_*182 7 linux freebsd filesystems

我在linux下有:

       Device   Boot      Start         End      Blocks   Id  System
/filename.img      *         63     1007999      503968+  a5  FreeBsd
Run Code Online (Sandbox Code Playgroud)

在上面的分区下,我有两个切片:ufs 文件系统和交换。我不知道,如何确定挂载 ufs 分区的挂载偏移量。

mount -r -t ufs -o loop,offset=32256,ufstype=ufs2 filename.img /test/
Run Code Online (Sandbox Code Playgroud)

消息输出

ufs_read_super: bad magic number
Run Code Online (Sandbox Code Playgroud)

它不起作用。

Gil*_*il' 3

我怀疑是

mount -r -o loop,offset=32768,ufstype=ufs2 filename.img /test/
Run Code Online (Sandbox Code Playgroud)

如果我没记错的话,第一个 BSD 分区开始于相对于整个磁盘的 32kB 边界。这是 512B 的 64 个扇区。相对于PC分区,BSD分区的偏移量为63个扇区,因为PC分区相对于整个磁盘的偏移量为1个扇区:磁盘的第一个扇区包含分区表。

根据 rozcietrzewiacz 的建议,您可以使用以下命令确认 BSD 分区的偏移量

partx -l filename.img
Run Code Online (Sandbox Code Playgroud)

Linux 内核有一个补丁来支持自动访问循环设备的分区。Debian 将其应用到他们的内核中。如果您有此补丁,请确保loop驱动程序具有足够大的max_part参数(您可能需要这样做rmmod loop; modprobe max_part=63)。然后 BSD 分区将显示为/dev/loop0p5和之类的内容/dev/loop0p6