web-dev-qa-db-ja.com

Linuxでfreebsdスライスパーティションをマウントする

私はLinuxの下にあります:

       Device   Boot      Start         End      Blocks   Id  System
/filename.img      *         63     1007999      503968+  a5  FreeBsd

上記のパーティションの下に、ufsファイルシステムとスワップの2つのスライスがあります。 ufsパーティションをマウントするためのマウントオフセットを決定する方法がわかりません。

mount -r -t ufs -o loop,offset=32256,ufstype=ufs2 filename.img /test/

dmesg出力

ufs_read_super: bad magic number

動いていない。

7
user1003182

私はそれがだと思う

mount -r -o loop,offset=32768,ufstype=ufs2 filename.img /test/

私の記憶が正しければ、最初のBSDパーティションは、ディスク全体に対して32kBの境界から始まります。これは512Bの64セクターです。 PCパーティションは、ディスク全体に対して1セクターのオフセットで開始するため、PCパーティションに対して、BSDパーティションのオフセットは63セクターです。ディスクの最初のセクターには、パーティションテーブルが含まれています。

Rozcietrzewiaczが提案しているように、BSDパーティションのオフセットは次のように確認できます。

partx -l filename.img

Linuxカーネルがループデバイスのパーティションへの自動アクセスをサポートするための パッチ があります。 Debianはそれをカーネルに適用します。このパッチを適用している場合は、loopドライバーに十分な大きさのmax_partパラメーターがあることを確認してください(rmmod loop; modprobe max_part=63を実行する必要がある場合があります)。すると、BSDパーティションは/dev/loop0p5/dev/loop0p6のように表示されます。

すべてのヒントをありがとう。

# partx -l filename.iso
HDIO_GETGEO: Inappropriate ioctl for device

/ dev/mapperディレクトリに論理マッピングを作成するファイル名マッピングを追加しました

# kpartx -a filename.iso

# ls -l /dev/mapper/
control  loop0p1

最後のチェック

# partx -l /dev/mapper/loop0p1 
1:         0-       -1 (        0 sectors,      0 MB)
2:         0-       -1 (        0 sectors,      0 MB)
3:         0-       -1 (        0 sectors,      0 MB)
4:         0-    49999 (    50000 sectors,     25 MB)
1:   8388671-142078859 (133690189 sectors,  68449 MB)
2:        63-  8388670 (  8388608 sectors,   4294 MB)

そして成功した最後のもの

mount -r -t ufs -o loop,offset=$((8388671*512)),ufstype=ufs2 filename.iso /test/

よろしく!

2
user1003182