Servus pit234a,
zwar durchschaue ich nicht wirklich Dein Anliegen und auch einzelne Punkte in Deinem PDF sind mir (noch) nicht so wirklich klar - es mag an der Uhrzeit von 04:52 morgens liegen, als ich mir das durchgelesen habe - aber ich will mal ein wenig kommentieren
Was findest Du daran insbesondere "gut"?
pit234a hat geschrieben:
http://weispit.eu/GPT.pdf
[...]
Nun hatte ich Gelegenheit, mir die Sache mal etwas genauer auf Byte-Ebene anzusehen und die Einzelheiten habe ich vorläufig zusammengeschrieben und mit ein wenig Farbe unterlegt. Das stellte ich dann oben ins Netz. Es gibt keinen Link von der index.html darauf, es liegt quasi im Verborgenen (das bedeutet, dass manche die Datei speichern müssen, wenn sie was damit anfangen wollen).
Nachdem Du den Link ja nun hier gepostet hast, kann das Dokument aber jeder finden. Wirklich verborgen ist er ja nun gerade nicht
Zum Beispiel ist das PDF bereits in Google zu finden.
Das mit dem "Speichern müssen" ist mir unklar.
pit234a hat geschrieben:
Vielleicht habt ihr Ideen oder Kommentare dazu.
In solchen Dingen bin ich recht dickköpfig und gehe meist nicht darauf ein. Aber wer weiß?
Vielleicht findet auch jemand Fehler. Ich habe das Thema nicht an der Uni studiert und mir alles einfach angesehen und zusammengereimt.
Grundlegend: Wünschenswert wäre, das PDF mit Seitenummern zu versehen - ich habe es (mache ich oft) ausgedruckt um es besser lesen und mir Notizen machen zu können bzw. etwas anzustreichen.
Grundlegend will ich auch, außer für wirklich große Platten oder Verbünde (sicher es werden bereits 2 TB HDds und größer verkauft) sowie Deine experimentellen Zwecke, den nutzen von EFI oder GPT Partitionstabellen in Zweifel ziehen
Zumindest auf derzeit noch üblichen Systemen für Otto Normalanwender ..... warum gerade Apple im Zuge der Umstellung von PowerPC auf Intel CPUs auf diesen Zug gesprungen ist, weiß ich nicht und mag auch nicht gern spekulieren. Ein Grund könnte jedoch gewesen sein, daß es - damals - die Installation eines naheliegenden Systems (Windows) auf Apple Hardware erschwerte (das Windows XP ja ein BIOS voraussetzt und von Haus auch nicht optimal mit GPT klarkommt), ferner erschwerte dies ja auch die Installation von MacOS X auf nicht-Apple Hardware (die ja in der Regel ohne EFI kommt).
für beides haben dann findige Leute Alternativen gefunden, zumindest für Problem #1 hat ja dann auch Intel offiziell Dual-Boot ermöglicht.
Nun zu Deiner Ausarbeitung:
Seite 2) gehört denn der klassiche MBR bzw. der Protective MBR wirklich zur (prim.) GPT? Ich meine nicht. Effektiv sind doch beide GPT (prim. wie sek.) 33 Blocks lang. Der Protective MBR wird ja nur angelegt, damit ein OS bzw. Tools zur formatierung, die mit GPT nichts anfangen können, nicht meinen, die Platte sei unformatiert. Sie erhalten dann entweder a) die Information die Platte sei vollkommen formatiert (PMBR) oder b) eben den die GPT Formatierung wiederspiegelnde Version des MBR (mit den Nachteilen von MBR und GPT kombiniert = maximal 4 Partionen möglich, maximal 2 TB)
Seite 3 und folgende) die "komische" Darstellung bestimmter Angaben wie GUID, Sektorenadressen usw. resultiert daraus, daß die GPT Geschichten in sog. "little endian" Darstellung geschrieben werden. Besonderheit bei den GUID ist, daß von den 5 durch "-" abgeteilten Bereichen nur die ersten 3 in dieser Darstellung geschrieben werden.
vgl. prinzipiell:
http://en.wikipedia.org/wiki/Little_endian bzw.
http://de.wikipedia.org/wiki/Byte-Reihenfolge und
vgl. die EFI Spezifikation oder ein einfaches Zitat aus:
Apple - Technical Note TN2166: Secrets of the GPTGPT is little endian; that is, multi-byte quantities are stored with the least significant byte first.
In GPT, GUIDs are considered to have a structure, and you must treat the structured parts as little endian. For example, the GUID for the ESP partition type is shown in the documentation as C12A7328-F81F-11D2-BA4B-00A0C93EC93B, but the bytes written to disk are 0x28 0x73 0x2a 0xc1 0x1f 0xf8 0xd2 0x11 0xba 0x4b 0x00 0xa0 0xc9 0x3e 0xc9 0x3b. That is, the first three dash-delimited fields of the GUID are stored little endian, and the last two fields are not. See Appendix A of the EFI specification for more details. Seite 4) Anzahl der Partitionen und Größe des Eintrages (pro Partition) - hierfür gibt es offenbar Mindestvorgaben, d.h. 128 Byte und 128 Partitionen (16 KB) .. was aber nicht ausschließt, daß bspw. ein größerer Bereich reserviert wird (mehr als 128 Partitionen) oder der einzelne Eintag größer ist
auch hier wieder siehe Spezifikation und ein Auszug aus dem Dokument oben:
GPT requires that the partition entry array be at least 16 KB long. [....]This is a minimum value; the partition entry array can be longer.
When iterating over the partition entry array, it is vital that you use the SizeOfPartitionEntry field of the partition table header to determine the size of the entries. Do not hardwire the current size of the partition entry (128 bytes).Seite 8) Der Partitionstyp-Eintrag von FreBSD-UFS und -ZFS ist auch bei Dir verschieden, die Unterschiede liegen in einer einzigen Angabe in Part #1
FreeBSD-UFS: 516E7CB
6-6ECF-11D6-8FF8-00022D09712B
FreeBSD-ZFS: 516E7CB
A-6ECF-11D6-8FF8-00022D09712B
Seite 13) Hier schreibst du einiges zum Thema Windows und Booten und EFI bzw. zu "teurer" Hardware und Festplatten mit 2 TB.
Schlussendlich liegen hier sowohl Gründe in der Ausdifferenzierung verschiedener OS-SW-Produkte (sonst würde ja jeder selbst auf dem Großrechner ein Windows XY Home, meinetwegen in 64bit installiren) und einfach technische Gründe vor (32-Bit Architektur / Ausgestaltung bspw. bei Treiber in den 32 Bit Varianten bzw. in der Spezifikation des BIOS, wobei man eben bei 2 ^ 32 logischen Blocks zu bei HDD 512 Byte und somit bei 2 TB (zur Basis 2) bzw. 2,1 - 2,2 TB (zur Basis 10) landet).
Insofern ja durchaus nur wenig auf das BIOS seitens des OS noch zugegriffen wird, ist hier war gf. eine Limiierung bzgl. der Bootfähigkeit relevant, für die eigentliche Nutzung bspw. von größeren HDDs über 2,1 TB existieren aber durchaus Lösungen, wobei ggf. weiter Einschränkungen an sich auf gewisse Grenzen gibt, bspw. das dann einzelne Partitionen nur max. 2 TB groß sein dürfen oder eben von untrhalb 2 TB gebootet werden muß. Desgleichen kennen wir ja auch bzgl. RAM bzw. dem Adressraum allgmein (d.h. dann inkl. I/O Adressen).
Exemplarisch verweise ich da nur mal auf:
http://www.seagate.com/www/en-us/support/beyond-2tb/Eine sinnvolle Nutzung ergibt sich faktisch dann eh mit 64 Bit Architekturen und begonnen hat dies damals wohl mit dem ganzen GPT und EFI Kram unter HPs/Intels IA64 Archtektur (dies NICHT identisch ist mit heutigen Intel-64/AMD64 Rechnern, sondern eben im professionellen Einsatz war und damit auch hochpreisiger angelegt wurde). Es handelt(e) sich dabei ja um vornehmlich Serversysteme, basierend auf Itanium CPU von Intel.
Hierfür gab es sogar eine "Windows XP 64 Bit Edition 2003", die wohl für den Workstation-Markt auf Basis von Itanium Systemen vorgesehen war, aber bald eingestampft wurde (weil es diesen Markt faktisch nie richtig gab). Windows Server 2003 etc. Systeme gab es aber weiter, eben wie Ports von bspw. Linux (Debian etc.) oder BSD Systemen. Wie stark sowas eingesetzt wurde / wird, weiß ich nicht. Dergleichen OS unterstützen denn auch GPT bzw. EFI.
Anscheinend ist aber diese ganze Itanium Geschichte eh gegessen, vgl. z.B.
heise.de aus 04/2010: Microsoft programmiert keine neue Itanium-Software mehrzu Seite 4) hier stellst Du einen Unterschied der GUID der GPT Tabelle als solches fest (zw. zwei Ausgaben verschiedener Tools) Den kann ich mir spontan auch nicht erklären. Am ehesten noch aus der Generierung selbst (und zwar aus einem Timestamp sowie einer Netzwerkadresse bzw. einer zufälligen Folge) sowie der Tatsache, das zwischen den beiden Ausgaben ggf. eine weitere Bearbeitung der Tabelle erfolgte? (somit also eine neue GUID generiert wurde?)
Grundlegendes zur Generierung findet sich auch wieder in der Spezifikation bzw. kannst Du ggf. auch in Artikeln zum Thema "Globally Unique Identifier" bzw. "Universally Unique Indentifier" nachlesen. In der EFI Spezifikation Version 1.02, die es bei Intel frei zum Download gibt, steht das in Appendix A: GUID and Time Formats.
Wenn Du Deine Beispieldaten anschaust, so siehst Du das auch gut. Nimm Dir nur z.B. die GUID des GPT Tabelle und die GUID "rawuuid" der vielen Partitionen von Seiten 9/10.
Der letzte Teil aus dem Schema 8-4-4-4-12 ist "0019D1F83C93" ... ist immer gleich und dürfte einer Netzwerkkarte (MAC Adresse) des Systems entsprechen, auf dem du Deine Tests durchgeführt hast. Die OUI "00-19-D1" gibt es jedenfalls und gehört zum Block von Intel.
Die Komponenten am Anfang (part #1 aus 8-4-4-4-12) habe ich jetzt nicht nachvollzogen, welche Zeiten (der Bearbeitung der Partitionstabelle) daraus resultieren.
EDIT: zu (zeitstempel-basierten) GUIDs gibt es eine wirklich schöne Seite inkl. Berechnungstools unter
http://www.famkruithof.net/guid-uuid-timebased.htmlDamit ergibt sich aus der GUID von Seite 4 deines PDFs:
UUID 91788346-5a40-11e0-8959-0019d1f83c93 contains a timestamp taken at Tuesday, March 29, 2011 8:10:18 PM GMT
sowie von Seite 9/10
da0p1 = 5ac7243a-5d30-11e0-bc93-0019d1f83c93 = Saturday, April 2, 2011 1:51:48 PM GMT
da0p2 = 8d3ddc85-5d30-11e0-bc93-0019d1f83c93 = Saturday, April 2, 2011 1:53:13 PM GMT
da0p3 = 94306f03-5d30-11e0-bc93-0019d1f83c93 = Saturday, April 2, 2011 1:53:24 PM GMT
da0p4 = 9c494578-5d30-11e0-bc93-0019d1f83c93 = Saturday, April 2, 2011 1:53:38 PM GMT
da0p5 = a5ddab1c-5d30-11e0-bc93-0019d1f83c93 = Saturday, April 2, 2011 1:53:54 PM GMT
da0p6 = ad95fec5-5d30-11e0-bc93-0019d1f83c93 = Saturday, April 2, 2011 1:54:07 PM GMT
da0p7 = b4332e14-5d30-11e0-bc93-0019d1f83c93 = Saturday, April 2, 2011 1:54:18 PM GMT
da0p8 = bc324a30-5d30-11e0-bc93-0019d1f83c93 = Saturday, April 2, 2011 1:54:31 PM GMT
Nett oder, was man da so als Infos "herausfinden" kann
pit234a hat geschrieben:
Was ich damit überhaupt anfangen will, weiß ich auch noch nicht.
Das ist mir auch nicht wirklich klar ....