Mounten Sie die Freebsd-Slice-Partition unter Linux


7

Ich habe unter Linux:

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

Unter der obigen Partition habe ich zwei Slices: UFS-Dateisystem und Swap. Ich weiß nicht, wie ich den Mount-Offset für die Mount-UFS-Partition bestimmen kann.

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

dmesg Ausgabe

ufs_read_super: bad magic number

Es funktioniert nicht.


Das von fdiskIhnen eingefügte zeigt nicht das von Ihnen beschriebene Partitionslayout an. Versuchen Sie, das Layout zu verwenden partedoder partxanzuzeigen, und wenn dies fehlschlägt, versuchen Sie es testdiskmit der Datei, da die Partitionstabelle möglicherweise beschädigt ist.
Rozcietrzewiacz

@rozcietrzewiacz Wenn Sie annehmen, dass "zwei Slices" ein Fehler für "zwei BSD-Partitionen" waren, stimmt der Text mit der Ausgabe überein.
Gilles 'SO - hör auf böse zu sein'

@ Gilles Eigentlich war ich etwas ungenau - ich meinte, dass die bereitgestellte fdiskAusgabe die BSD-Disklabel-Partitionen nicht anzeigt. Ich sehe jetzt auch, dass meine spätere Erwähnung der Partitionstabelle irreführend war, da auch hier das Disklabel überprüft werden muss.
Rozcietrzewiacz

@rozcietrzewiacz Die fdiskAusgabe ist eindeutig die fdisk von Linux und zeigt, was in der PC / Linux-Terminologie eine Partition und in der BSD-Terminologie ein Slice ist. Innerhalb dieser PC-Partition, auch bekannt als BSD-Slice, ist es plausibel, dass es zwei BSD-Partitionen gibt, root und swap.
Gilles 'SO - hör auf böse zu sein'

@ Gilles Das ist genau das Problem, auf das ich hinweisen wollte - dass Linux fdiskdie BSD-Partitionen (disklabel) nicht sehen würde, daher sollte ein anderes Tool verwendet werden.
Rozcietrzewiacz

Antworten:


2

Ich vermute es ist

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

Wenn ich mich richtig erinnere, beginnt die erste BSD-Partition an einer 32-KB-Grenze relativ zur gesamten Festplatte. Das sind 64 Sektoren von 512B. In Bezug auf die PC-Partition beträgt der Versatz der BSD-Partition 63 Sektoren, da die PC-Partition mit einem Versatz von 1 Sektor relativ zur gesamten Festplatte beginnt: Der erste Sektor der Festplatte enthält die Partitionstabelle.

Wie von rozcietrzewiacz vorgeschlagen, können Sie den Offset der BSD-Partition mit bestätigen

partx -l filename.img

Es gibt einen Patch für den Linux-Kernel, der den automatischen Zugriff auf Partitionen von Loop-Geräten unterstützt. Debian wendet es in ihren Kerneln an. Wenn Sie diesen Patch haben, stellen Sie sicher, dass der loopTreiber über einen ausreichend großen max_partParameter verfügt (möglicherweise müssen Sie dies tun rmmod loop; modprobe max_part=63). Dann erscheinen die BSD-Partitionen als so etwas wie /dev/loop0p5und /dev/loop0p6.


2

Vielen Dank für alle Hinweise.

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

Ich habe eine Dateinamenzuordnung hinzugefügt, die eine logische Zuordnung im Verzeichnis / dev / mapper erstellt hat

# kpartx -a filename.iso

# ls -l /dev/mapper/
control  loop0p1

der letzte Scheck

# 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)

und der letzte mit Erfolg

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

Grüße!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.