Erkennen von LBA
-
Hi Leute!
Woran kann ich eig. erkennen, ob eine Platte mit LBA oder CHS Adressierung läuft bzw. im BIOS eingestellt ist. Ich hab das Problem, dass ich einen HD-Treiber geschrieben hab, der aber momentan nur mit CHS läuft und da die sektoren-umrechnung unterschiedlich ist, stimmt nur der erste sektor (also MBR), wenn ich dort aber die partitions-start-adressen auslese, kommt da mit CHS was falsches raus.
gibt es da spezielle flags für die LBA-Partitionen (bei FAT weiß ichs, aber wie ist das mit den anderen) oder kann ich da das BIOS befragen???cu todo
-
In der Partitionstabelle unter OS-Type kannst du es unterscheiden:
Die Partitionstabelleneinträge haben folgenden Aufbau:
Offset Größe Funktion
0x00 1 Byte 0x80: bootfähig 0x00: nicht bootfähig
0x01 1 Byte Startkopf der Partition (0 bis n)
0x02 1 Byte Bit 0-5 Startsektor (1 bis 31) Bit 6-7 sind zusätzliche Bits für den Startzylinder
0x03 1 Byte Startzylinder (0 bis 1023)
0x04 1 Byte OS-Type:
0x00 = Eintrag leer
0x01 = FAT12
0x02 = Xenix
0x03 = Xenix
0x04 = FAT16 (max. 32 MB)
0x05 = extended DOS-Partition (max. 2 GB)
0x06 = FAT16 (max. 2 GB)
0x07 = HPFS/NTFS
0x08 = OS/2 Boot-Manager
0x0B = FAT32 (CHS Adressierung)
0x0C = FAT32 (LBA Adressierung)
0x0E = FAT16 (LBA Adressierung)
0x0F = extended Partition (LBA,mehr als 1024 Zylinder)
0x82 = Linux Swap
0x83 = Linux native
0xDB = Concurrent DOS
0x05 1 Byte Endkopf der Partition (0 bis n)
0x06 1 Byte Bit 0-5 Endsektor (1 bis 31) Bit 6-7 sind zusätzliche Bits für den Endzylinder
0x07 1 Byte Endzylinder (0 bis 1023)
0x08 4 Byte Anfangssektor der Partitionsdaten (absoluter LBA)
0x0C 4 Byte Größe der Partition in Sektoren