Ich habe eine externe USB-Festplatte mit GParted in zwei Partitionen aufgeteilt. Beide sind primäre Partitionen, die als FAT32 formatiert sind und dieselbe Größe (500 GB) haben. Dies ist die Ausgabe von file -s
:
/dev/sdb1: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 64, reserved sectors 64, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 2048, sectors 976760832 (volumes > 32 MB), FAT (32 bit), sectors/FAT 119232, reserved 0x3, serial number 0x99034dfb, label: "TOSHIBA1 "
/dev/sdb2: DOS/MBR boot sector, code offset 0x58+2, OEM-ID "mkfs.fat", sectors/cluster 64, reserved sectors 64, Media descriptor 0xf8, sectors/track 63, heads 255, hidden sectors 976762880, sectors 976760832 (volumes > 32 MB), FAT (32 bit), sectors/FAT 119232, reserved 0x1, serial number 0x96cbe274, label: "TOSHIBA2 "
/dev/sdb2
Was ist in hidden sectors
und warum ist es größer als sectors
? Die Differenz beträgt 2048, was zufällig der Wert von hidden sectors
für ist /dev/sdb1
. Ist das ein Zufall? Ein Fehler von GParted oder des file
Befehls? Und noch wichtiger: Ist das etwas, worüber man sich Sorgen machen muss?
Antwort1
tl;dr
Nichts, über das man sich sorgen sollte.
Wikipedia-ArtikelAufbau des FAT-Dateisystemserwähnt "versteckte Sektoren" einige Male und die allgemeine Beschreibung der relevanten Metadateneinträge ist
Anzahl der versteckten Sektoren vor der Partition, die dieses FAT-Volume enthält. Dieses Feld sollte auf nicht partitionierten Medien immer Null sein.
(mit ein paar Macken). Diese Beschreibung scheint auf die Werte zu passen, die Sie in Ihrem speziellen Fall beobachten.
Ich gehe davon aus, dass Linux-Tools diesen Wert standardmäßig nie verwenden. In Ihrem Fall sind die jeweiligen Werte 2048
und 976762880
im Kontext von gültig /dev/sdb
, aber wenn Sie /dev/sdb1
bzw. berücksichtigen /dev/sdb2
, sind diese Geräte nicht partitioniert, sodass in ihrem Kontext „versteckte Sektoren“ sein sollten 0
.
Normalerweise wird mit wie gemountet mount /dev/sdb1 /some/mountpoint
, aber wenn die Partition bei einem Offset von 2048 Sektoren mit 512 Bytes beginnt, dann können Sie dasselbe mit tun
mount -o offset=$((2048*512)) /dev/sdb /some/mountpoint
Es gibt also keinen klaren Hinweis darauf, welcher Kontext für Linux der „richtige“ ist. Ein weiterer Hinweis darauf, dass der Wert „versteckte Sektoren“ keine Rolle spielen sollte, ist die Tatsache, dass er Informationen, die zur Partitionstabelle gehören, in die Metadatenstrukturen des Dateisystems einbettet. Heutzutage neigen wir dazu, Abstraktionsschichten nicht auf diese Weise zu vermischen. Es ist relativ einfach, die beiden Informationen zu „desynchronisieren“. Und da das Betriebssystem die Partitionstabelle lesen muss, um das Dateisystem überhaupt zu finden, sind redundante Informationen über den Offset, die erst verfügbar sind, wenn Sie den Offset bereits kennen, kaum nützlich.
Beachten Sie, dass es noch eine weitere redundante Information gibt: Partitionstabellen enthaltenPartitions-IDs(MBR) oderPartitionstyp-GUIDs(GPT), die den tatsächlichen Dateisystemen in den Partitionen entsprechen sollten, aber nicht müssen. Diese Informationen sind jedoch, wenn sie kohärent sind, recht nützlich, da Sie durch die Untersuchung nur der Partitionstabelle erfahren können, was zu erwarten ist (welches Betriebssystem, mögliches Multiboot, Swap-Partitionen). In der Praxis ist dies manchmal für Menschen und manchmal für Maschinen nützlich; insbesondere UEFI muss wissen, welche PartitionEFI-Systempartition. Wenn Sie Linux jedoch dazu auffordern, mount /dev/sdb1 …
wird es versuchen, das tatsächliche Dateisystem dort zu erkennen, anstatt es zu untersuchen /dev/sdb
, die Partitionstabelle zu lesen und die Partitions-ID/GUID zu verwenden.
Ich weiß nicht, was der Grund für die „versteckten Sektoren“ war. Trotzdem scheint es einige Geräte gegeben/gegeben zu haben, die irgendwie auf diesen Wert angewiesen sind. Vergleichen Sieman 8 mkfs.fat
:
-h number-of-hidden-sectors
Wählen Sie die Anzahl der versteckten Sektoren im Volume. Anscheinend bekommen einige Digitalkameras Magenprobleme, wenn Sie ihnen eine CF-Karte ohne solche versteckten Sektoren zuführen. Mit dieser Option können Sie sie zufriedenstellen. Wird angenommen,0
wenn in der Befehlszeile kein Wert angegeben ist.
Es scheint, dass GParted weitergemacht und versucht hat, sogar „einige Digitalkameras“ oder was auch immer zufriedenzustellen. Das ist also eingute Sache. Sie müssen es auf keinen Fall mit einem anderen Werkzeug wiederholen.
Antwort2
'Versteckte Sektoren' ist eine falsche Bezeichnung für den Partitionsoffset, wie er im FAT- oder NTFS-Bootsektor gespeichert ist, in einer Datenstruktur (ebenfalls irreführend) namensBIOS-Parameterblock; hier bezieht sich „BIOS“ auf eine Komponente von MS-DOS und nicht auf die Systemfirmware. Der Wert ist (sollte) die Anzahl der Sektoren sein, die dem Bootsektor auf der Festplatte vorangehen. Nicht mehr und nicht weniger. Für ein FAT-Dateisystem, das sich auf einem nicht partitionierten Medium befindet und die gesamte Festplatte umfasst, sollte der Wert Null sein.
Wenn der FAT- oder NTFS-Bootsektor geladen wird, verwendet er den Wert „versteckte Sektoren“, um die Partition auf der Festplatte zu lokalisieren. Von dort aus kann der Bootsektor Dateisystemstrukturen lokalisieren und einen späteren Bootloader wie IO.SYS (MSLOAD), NTLDR oder BOOTMGR laden. Ansonsten wird der Wert im Allgemeinen nicht verwendet. Wenn Sie also nicht vorhaben, von diesem Dateisystem auf einem BIOS-System zu booten, sollte es überhaupt keine Rolle spielen … obwohl Sie nie wissen, auf welche verrückten FAT-Implementierungen Sie stoßen werden.