| Zeile 60: | Zeile 60: | ||
Ich hab gerade, in der aktuellen c't ([http://www.heise.de/ct/inhalt/2010/09/132/ hier]), gesehen das die Hersteller tatsächlich planen das die neuen HDDs sich mit 4 kByte Sektorgröße melden sollen. Aufgrund der umfangreichen und kaum abschätzbaren Folgen hätte ich nie damit gerechnet das die sich das tatsächlich trauen. Zumindest dafür das die wirklich die heilige Kuh der Kompatibilität zum Schlachter führen gibt es meinen Respekt. Vor wenigen Jahren wurde bei der Festlegung des SD-'''HC'''-Standards noch auf 512 Byte Sektorgröße gesetzt, obwohl damals schon kein Flash-Chip mehr verfügbar war der noch 512 Byte als physikalische Sektorgröße unterstützt (zumindest beim lesen, gelöscht und geschrieben wird eh in größeren Einheiten). Aktuell sind bei Flash-Chips 2 kByte und demnächst wohl auch 8 kByte. Und bei den SSDs, wo die Daten über mehrere Flash-Chips verteilt werden (wahrscheinlich mit einer Art RAID 0), dürften die Hersteller sicher gerne noch größere Sektoren wollen.<br />Worauf ich hinaus will ist das von variablen Sektorgrößen eine enorme Menge an Software betroffen ist. Gerade viele kleine Programme für Embedded-Systeme oder andere Hobby-Projekte dürften darunter leiden. Wer will schon einen richtigen UDF-Dateisystem-Treiber in einen Mikrocontroller quetschen nur weil es auf dem PC kein Format-Tool gibt das auf der neuen HDD noch mit FAT formatieren will (ich weiß das FAT theoretisch mit vielen Sektorgrößen umgehen kann aber ob Microsoft da mitspielt ist IMHO fraglich).<br />Von einer geänderten Sektorgröße ist u.a. das BIOS betroffen, im c't-Artikel ist dazu ausgeführt das damit wohl ein weiterer Vorschub für EFI eintritt (was prinzipiell sehr zu begrüßen ist), was wohl wieder Auswirkungen auf Boot-Loader usw. hat. Ich frage mich an welches Offset dann die 0xAA55-Signatur kommt. Auch viele Dateisystem-Treiber dürften davon betroffen sein, ich glaube nicht das man alle Dateisystem-Strukturen (iNodes usw.) einfach so auf größere Sektoren skalieren kann (FAT als primitiv-Dateisystem ist da noch ein äußerst simples Beispiel). Auf Grund dieser massiven Auswirkungen hätte ich bis heute Früh nie geträumt das die HDD-Hersteller wirklich die logische Sektorgröße ändern würden, Gründe dafür gibt es eigentlich schon länger aber bis jetzt hat sich das noch keiner getraut.<br />Mit dieser Info sollten wir mal überlegen was noch alles betroffen ist und in den betreffenden Wiki-Artikeln passende Hinweise geben.<br />Sorry das ich erst in die andere Richtung gewettert habe. --[[Benutzer:Erik.vikinger|Erik.vikinger]] 22:29, 14. Apr. 2010 (CEST) | Ich hab gerade, in der aktuellen c't ([http://www.heise.de/ct/inhalt/2010/09/132/ hier]), gesehen das die Hersteller tatsächlich planen das die neuen HDDs sich mit 4 kByte Sektorgröße melden sollen. Aufgrund der umfangreichen und kaum abschätzbaren Folgen hätte ich nie damit gerechnet das die sich das tatsächlich trauen. Zumindest dafür das die wirklich die heilige Kuh der Kompatibilität zum Schlachter führen gibt es meinen Respekt. Vor wenigen Jahren wurde bei der Festlegung des SD-'''HC'''-Standards noch auf 512 Byte Sektorgröße gesetzt, obwohl damals schon kein Flash-Chip mehr verfügbar war der noch 512 Byte als physikalische Sektorgröße unterstützt (zumindest beim lesen, gelöscht und geschrieben wird eh in größeren Einheiten). Aktuell sind bei Flash-Chips 2 kByte und demnächst wohl auch 8 kByte. Und bei den SSDs, wo die Daten über mehrere Flash-Chips verteilt werden (wahrscheinlich mit einer Art RAID 0), dürften die Hersteller sicher gerne noch größere Sektoren wollen.<br />Worauf ich hinaus will ist das von variablen Sektorgrößen eine enorme Menge an Software betroffen ist. Gerade viele kleine Programme für Embedded-Systeme oder andere Hobby-Projekte dürften darunter leiden. Wer will schon einen richtigen UDF-Dateisystem-Treiber in einen Mikrocontroller quetschen nur weil es auf dem PC kein Format-Tool gibt das auf der neuen HDD noch mit FAT formatieren will (ich weiß das FAT theoretisch mit vielen Sektorgrößen umgehen kann aber ob Microsoft da mitspielt ist IMHO fraglich).<br />Von einer geänderten Sektorgröße ist u.a. das BIOS betroffen, im c't-Artikel ist dazu ausgeführt das damit wohl ein weiterer Vorschub für EFI eintritt (was prinzipiell sehr zu begrüßen ist), was wohl wieder Auswirkungen auf Boot-Loader usw. hat. Ich frage mich an welches Offset dann die 0xAA55-Signatur kommt. Auch viele Dateisystem-Treiber dürften davon betroffen sein, ich glaube nicht das man alle Dateisystem-Strukturen (iNodes usw.) einfach so auf größere Sektoren skalieren kann (FAT als primitiv-Dateisystem ist da noch ein äußerst simples Beispiel). Auf Grund dieser massiven Auswirkungen hätte ich bis heute Früh nie geträumt das die HDD-Hersteller wirklich die logische Sektorgröße ändern würden, Gründe dafür gibt es eigentlich schon länger aber bis jetzt hat sich das noch keiner getraut.<br />Mit dieser Info sollten wir mal überlegen was noch alles betroffen ist und in den betreffenden Wiki-Artikeln passende Hinweise geben.<br />Sorry das ich erst in die andere Richtung gewettert habe. --[[Benutzer:Erik.vikinger|Erik.vikinger]] 22:29, 14. Apr. 2010 (CEST) | ||
:Dann bist du ja weiter mit dem Lesen als ich. Na jedenfalls, die Frage, wo die 0xAA55-Signatur stehen wird, ist doch logisch ... immer die letzten zwei Bytes des physikalischen Sektor. Bsp. Daten-CDs haben 2048 Bytes große Sektoren und da steht eben die Signatur an Offset 0x07FE, also am Ende des Sektors. Bei 4k-Platten wird es also bei 0x0FFE sein. Aber so idiotisch es auch klingt, FAT kann (sollte, vom Treiber abhängig) 4k-Sektoren verwalten. -- [[Benutzer:ScollPi|ScollPi]] 22:48, 14. Apr. 2010 (CEST) | :Dann bist du ja weiter mit dem Lesen als ich. Na jedenfalls, die Frage, wo die 0xAA55-Signatur stehen wird, ist doch logisch ... immer die letzten zwei Bytes des physikalischen Sektor. Bsp. Daten-CDs haben 2048 Bytes große Sektoren und da steht eben die Signatur an Offset 0x07FE, also am Ende des Sektors. Bei 4k-Platten wird es also bei 0x0FFE sein. Aber so idiotisch es auch klingt, FAT kann (sollte, vom Treiber abhängig) 4k-Sektoren verwalten. -- [[Benutzer:ScollPi|ScollPi]] 22:48, 14. Apr. 2010 (CEST) | ||
| + | |||
| + | == DS auf 7C0h ist ganz schlecht ... == | ||
| + | |||
| + | ... weil nähmlich sich im Segment 0 die Interrupt Vektoren und die BIOSdaten befinden, die mit hoher warscheinlichtkeit während der nächsten Schritte benötigt werden, wenn man die Segmente so setzt, dann muss man jedesmal das Segment wechseln, um auf BIOS-Informationen zuzugreifen oder Interruptvektoren zu ändern, Besser ist: Alle Segmente auf 0h, SP auf 7BFEh. | ||
| + | |||
| + | Beispiel : | ||
| + | |||
| + | org 100h ;damit man es Assemblieren kann | ||
| + | org 7C00h | ||
| + | jmp START | ||
| + | (Laufwerksdaten) | ||
| + | START: | ||
| + | xor ax,ax | ||
| + | mov ds,ax | ||
| + | mov es,ax | ||
| + | cli | ||
| + | mov ss,ax | ||
| + | mov sp,7BFEh ; nicht hinter dem Bootsektor, weil man erst wissen muss, wo die Erweiterten BIOS-Daten sind | ||
| + | ... rest vom Bootsektor | ||
| + | org 7DFEh | ||
| + | dw 0AA55h ; (höhere Ziffern stehen hinten) | ||
| + | |||
| + | |||
| + | nun kann man die erste Datei laden, und Interrupt Vektoren darauf setzten, Die erste Datei muss dann widerum nicht erst die Segmente verändern, um die BIOSdaten zu lesen. | ||