Hallo zusammen, Ich werfe die Frage einfach mal direkt in den Raum: Allgemain gefragt: "Worann erkennt das Betriebssysten (zB das BIOS) ob der Datenträger partitioniert ist oder nicht?" Etwas spezieller: Wenn man ein unpartitionierten Datenträger hat findet man im 1. Sektor des physikalischen Datenträgers einen VBR(nicht MBR denn der MBR enthält auch die Partitionstabellen) vor. Der Anfang des VBR sieht im Hex Editor immer so ähnlich aus EB 58 90 4D 53 44 4F .... ëXMSDOS5.0....h Hat man aber einen partitionierten Datenträger steht im 1. Sektor der MBR dieser beschreibt die Aufteilung des Datenträgers mit Partitionstabellen. In der Partitionstabelle wird auf die einzelnen Partitionen verwiesen, bzw auf den 1.Sektor der jeweiligen Partition. Der 1. Sektor einer Partition enthält einen VBR. In einem Programm muss ich einen physikalischen Datenträger ansprechen können. Dieser kann unpartitioniert sein oder bis zu 4 primäre Partitionen enthalten. Wie erkenne ich dass ein Datenträger Partitioniert ist? Gibt es ein spezielles Muster an dem man einen MBR oder einen VBR eindeutig identifizieren kann? Habe selbst dazu nicht viel im Internet gefunden bzw nichts was so tief in die Materie geht.
Unterscheiden ist schwierig (Höchstens an der Partitionstabelle (Offset 0x1BE)). Ein Bios unterscheidet da gar nichts. Das Bios lädt den 1. Sektor nach 0x7C00 ins RAM und startet dann. Geprüft wird lediglich, dass die letzten 2 Bytes die Kennung 0x55AA enthalten. Dann wird der Sktor für bootbar gehalten.
>Worann erkennt das Betriebssysten (zB das BIOS)
Seit wann wird das BIOS als Betriebssystem bezeichnet?
@Raphael Baum Daran dachte ich auch schon, weil diese nur MBR vorkommt aber irgendwelche zufälligen bytes ab 0x1BE könnte man möglicherweise fehlinterpretieren. Im VBR steht an der stelle oftmals ein String zb "NTLDR Datenträgerfehler...." Man müsste vielleicht noch schauen ob die Einträge der Partitionstabelle wirklich auf eine gültige Partition zeigen... aber das kommt mir alles nicht ganz richtig vor(ich denke das muss einfacher gehen)... deshalb frag ich :) man findet halt leider kaum etwas daruber im internet oder ich suche mit den falschen begriffen. :) @Jens G. "Ein Betriebssystem ist eine Software, die Grundfunktionen für die Verwendung (den Betrieb) eines Computers bereitstellt. Es verwaltet Betriebsmittel wie Speicher, Ein- und Ausgabegeräte und steuert die Ausführung von Programmen." - Wikipedia ;).. Genau das macht das BIOS nur einfach sehr Hardwarenahe. Das BIOS ist nur nicht so komfortabel wie moderne Betriebssysteme.. Aber wenn mans darauf anlegt kann man alleine mit den vom BIOS bereitgestellten Routinen einen Brief schreiben und ihn auch ausdrucken. ;) Ich war mir aber zu 99% sicher das sich in dem Thread irgendwann jemand daran aufhängen wird.. deshalb hab ichs so gelassen :P
Jens G. schrieb: >>Worann erkennt das Betriebssysten (zB das BIOS) > > Seit wann wird das BIOS als Betriebssystem bezeichnet? Coreboot, ehemals LinuxBIOS, kommt in verschiedenen Varianten: http://www.coreboot.org/Welcome_to_coreboot
Schau, ob der Bootsektor gültig ist. Z.B. Dateisystemsignatur Offset 36h (Fat12/16) bzw 52h (Fat32) oder Media Descriptor Offset 15h oder Bytes pro Sektor Offset 0Bh (immer 512). Wenn Du hier kein gültiges Fat-Dateisystem findest, gehst Du von einem Partitionssektor aus. fchk
>Bytes pro Sektor Offset 0Bh (immer 512)
auch bei Festplatten mit 4kByte Sektoren?
>"Ein Betriebssystem ist eine Software, die Grundfunktionen für die >Verwendung (den Betrieb) eines Computers bereitstellt. Es verwaltet >Betriebsmittel wie Speicher, Ein- und Ausgabegeräte und steuert die >Ausführung von Programmen." - Wikipedia ;).. >Genau das macht das BIOS nur einfach sehr Hardwarenahe. Das BIOS ist nur Speicherverwaltung, Programmsteuerung, ... sind nicht Aufgaben des BIOS. Das BIOS soll nur initialisieren, und den Bootvorgang anstarten, und bietet noch paar Grundfunktionen für die weitere Laufzeit. Viel mehr macht es dann nicht mehr, wenn einmal das Betriebssystem (wie Linux/windows) die Kontrolle hat. Zurück zum MBR/VBR: Das Bios muß den unterschied nicht kennen, denn es startet einfach den Code im ersten Sektor , wenn die Signatur am Ende gültig ist. Der Code in diesem BR weis dann schon selbst, was er zu tun hat. Wenn es ein MBR ist, liest er die Partitionstabelle, und started dann entsprechend den Br der jeweiligen Partition. Ein VBR wird nicht nach einer Partitionstabelle fragen. Er startet dann den weiteren Code, der im jeweiligen Filesystem liegt. wenn Du selbst das unterscheiden willst, dann wurde ja eigentlich schon alles gesagt. Da jedes Betriebssystem aber seinen eigenen VBR mitbringt, und deren fdsik-Programme auch unterschiedlichen MBR-Code in denersten Sektor schreiben, gibt's eigentlich keine allgemeingültige Regel, wie man beides auseinanderhalten kann. Bei NTFS/HPFS und FAT sieht man anhand der der Filesystemsignatur, was für ein Filesystem es sein dürfte. Bei Linux dagegen erkennt man eigentlich gar nix richtiges mehr, wenn ich mich noch richtig erinnere (keine Filesystemsignatur oder andere Strings). Den MBR auf gültige Werte zu prüfen ist vielleicht so das einfachste (die Werte zeigen üblicherweise auf die jeweils ersten/letzten Sektoren einer Spur bzw Head/Cylinder, was man als Indiz für einen gültigen MBR deuten kann).
Vielen Dank! Das war schonmal sehr hilfreich. Werde noch ein wenig recherche betreiben... aber vermutlich werd ichs dann so realisieren. PS.: Was die speicherverwaltung angeht hast du recht ;) Und BIOS war in diesem fall ein schlechtes beispiel jetzt da ich weiß das der boot code im 1. sektor den aufruf der VBRs selbst regelt ;) thx
Jens G. schrieb: > Den MBR auf gültige Werte zu prüfen ist vielleicht so das einfachste > (die Werte zeigen üblicherweise auf die jeweils ersten/letzten Sektoren > einer Spur bzw Head/Cylinder, was man als Indiz für einen gültigen MBR > deuten kann). Das stimmt seit Windows Vista/7 nicht mehr! Dort wird die erste Partition auf LBA 2048 gelegt. Der Grund ist, dass die alte, von Dir beschriebene Methode für Platten mit 4k Sektoren extrem ungünstig ist und daher allgemein nicht mehr empfohlen wird. fchk
Robert L. schrieb: >>Bytes pro Sektor Offset 0Bh (immer 512) > > auch bei Festplatten mit 4kByte Sektoren? Auch für die. Die arbeiten nach außen mit 512b Sektoren, nur intern sind es 4k-Sektoren. fchk
Nur aus Interesse: Hast du irgendwo vernünftige Quellen zum VBR gefunden? Mich interresiert die ganze Thematik zur Zeit auch :) Also der Aufbau und so Zum MBR findet man ja recht viel.
@Frank K. (fchk) >Das stimmt seit Windows Vista/7 nicht mehr! Dort wird die erste >Partition auf LBA 2048 gelegt. Der Grund ist, dass die alte, von Dir >beschriebene Methode für Platten mit 4k Sektoren extrem ungünstig ist >und daher allgemein nicht mehr empfohlen wird. Ich gebe zu, das von mir ist nur noch bißchen Altwissen, was zumindest bis XP noch gültig ist. Mit den Vista/Win7-Strukturen habe ich mich nicht mehr befaßt.
Hi,.. @Masl Ein guter Hex-Editor in dem man Datenträger physikalisch öffen und bearbeiten lassen: WinHex (muss unter win7 als admin ausgeführt werden da er sonst keine physikalischen zugriffe machen kann) Sehr schön an dem Editor sind die Schablonen für den Bootsektor / Partitionstabellen..., in denen alle Werte direkt leserlich mit Beschreibung als Dezimalzahlen / Strings etc angezeigt werden. So lässt sich mit Partitionen spielen zB in dem man bestimmte Werte ändert und nachschaut ob Windows die Partitionen noch erkennt. Oder man nimmt den Taschenrechner her und versucht Offsetadressen der Partitionen zu bestimmen.. Das hat mir sehr viel geholfen die Thematik besser zu verstehen. Für eine Testumgebung hab ich mir unter Windowes 7 im Datenträgermanager ein Virtual Hard Disk angelegt und partitioniert. Jede Partition habe ich mit verschiedenen Dateisystemen formatiert. Ein Datenbalatt zu Fat16/32 von Microsoft kann da auch hilfreich sein. Da stehen zB Formeln drin wie man aus den Werten im VBR Offsetadressen zu Filetable Filename Entries usw berechnet. http://staff.washington.edu/dittrich/misc/fatgen103.pdf
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.