Bootloader Fat32 USB-Stick Real/Protection Mode
-
Wie weit kommst Du inzwischen?
-
Also der BL1 startet und bootet den BL2 dar startet den
Kernel noch nicht weil ich noch keinen Passenden Protection Mode
Kernel habeDen USB Stick kann man auch nornal berschreiben.
Wird unter Windows normal erkannt:
(Keine Ahnung ob auch unter Ubuntu/Linux)Ich werde die nachsten Tage mal Code Posten!
-
Klingt interessant.
-
Welche Dateien BL2 haben
auch was mit den Dateiensystem zutun (Fat12)??BL2:
A20.inc
Fat12.inc
GetMemoryMap.inc
gdt.inc
boot2.asm
-
Fat12.inc. Aufgerufen werden die Routinen von boot2.asm. In den anderen Dateien sollte nichts dergleichen drin sein.
-
Danke
Ich bin schonn so weit aber Fat32 hat eine andere Struktur ab Offset 24
Uberall wo ";WIE WAS" steht ABER wie mach ich das??
In boot.asm mus ich eigentlisch nichts mehr änder?%ifndef FAT32_INC %define FAT32_INC [BITS 16] ;########################################################################## ; Bootloader from Pretty OS changes by Max Kaiser AND ALL WHO HELP ;########################################################################## ; "FAT 32" file system is build up by four areas at USB Systems (USB-Stick, USB-Harddisk): ; - Boot Sector (also called BIOS Parameter Block, BPB) ; - File Allocation Table, FAT ; - Root Directory ; - Subdirectories and Files ; boot sector info block OperatingSystemName db "PrettyOS" ; 8 byte NICHT IN BOOT.ASM BytesPerSec dw 512 ; 512 , 1024 , 2048 , 4096 SecPerClus db 1 ; 1, 2, 4, 8, 16, 32, 64 ggf. auch 128 ReservedSec dw 2 ;neu, orginal 1 in 2 Sector you can write your Infos | In den 2. Sector con man Infos reinschreiben NumFATs db 2 ; 2 fur Fat32 RootEntries dw 0000 ;neu, Orginal 224 bei Fat32 ungenutzt d.h. 0000hex TotSec dw 0 ;NICHT IN BOOT.ASM neu, Orginal 2880 maximal 65535 wenn mehr dan 0 an Offset 20hex Bei FAT32 ungenutzt MediaType db 0xF0;NICHT IN BOOT.ASM ;neu ??????? WAS MUSS DA HINN Eigentlich egal oder ?????? FATSize dw 0000 ;neu, Orginal 9 FAT32 ungenutzt stets 0000hex sieh ????? offset 24hex ????? SecPerTrack dw 18 ;WIE WAS NumHeads dw 2 ;WIE WAS HiddenSec dd 0 ;WIE WAS NICHT IN BOOT.ASM TotSec32 dd 2 ;WIE WAS 0 = FAT12, 1 = FAT16, 2 = FAT32 neu 0 war zuerst NICHT IN BOOT.ASM DriveNum db 0 ;WIE WAS Reserved db 0 ;WIE WAS NICHT IN BOOT.ASM BootSig db 0x29 ;WIE WAS NICHT IN BOOT.ASM VolumeSerialNum dd 0xD00FC0DE ;!!!! WIE WAS Irgend eine ODER !!!!! NICHT IN BOOT.ASM VolumeLabel db "PRETTY OS " ; 11 byte NICHT IN BOOT.ASM FileSys db "FAT32 " ; 8 byte NEU, Orginal "FAT12 " jetzt "FAT32 " NICHT IN BOOT.ASM ;x86- Maschienencode des Bootloader ;BIOS-Bootsignatur 55hex, AAhex ;######################################################## ;DAS MUSS NOCH HINEIN STAD DEM ";WIE WAS" ;######################################################## ;Offset Länge (in Byte) Inhalt ;24 4 Anzahl der Sektoren pro FAT ;28 2 FAT Flags ;2A 2 FAT-32-Version. Bei Microsoft stets 0000hex. (optional 0001hex für FATplus) ;2C 4 Clusternummer, an der das Stammverzeichnis beginnt. Meistens 2. ;30 2 Sektornummer des „FS Information Sector“ (In der Regel: 1) ;32 2 Sektornummer der Bootsektorkopie (in der Regel: 6; Microsoft empfiehlt, keinen anderen Wert zu benutzen) ;34 12 reserviert für spätere Erweiterungen, derzeit stets 0 ;40 1 Physische BIOS-Laufwerksnummer ;41 1 Reserviert ;42 1 Erweiterte Bootsignatur ;43 4 Dateisystem-ID (Seriennummer) ;47 11 Name des Dateisystems (ungenutzt) ;52 8 FAT-Version. Stets "FAT32 " ;5A 420 x86-Maschinencode des Bootloaders ;1FE 2 BIOS-Bootsektorsignatur. Enthält die beiden Werte 55hex AAhex, anhand derer das BIOS beim Booten einen gültigen Bootsektor erkennt. %endif
-
Du brauchst im BL2 keinen kompletten BPB. Der ist in unserem BL2 nur deswegen partiell da, da wir einfach die Parameter nutzen. Es reicht daher, wenn Du dich im BL2 auf die Daten beschränkst, die du brauchst (kannst Du auch als Konstanten im Code nutzen, oder als Makro definieren)
-
Noch eine Frage:
Wen boot1.bin in den Bootsector schreibe dan kan den USB stick normal
beschriben, aber er hat die größe einer Diskette und nicht die 4GB wie davor.Was muss ich hier änder?
BytesPerSec dw 512 SecPerClus db 1 ReservedSec dw 1 NumFATs db 2 RootEntries dw 224 TotSec dw 2880 MediaType db 0xF0 FATSize dw 9 SecPerTrack dw 18 NumHeads dw 2
-
max_c++_c_LOL schrieb:
Noch eine Frage:
Wen boot1.bin in den Bootsector schreibe dan kan den USB stick normal
beschriben, aber er hat die größe einer Diskette und nicht die 4GB wie davor.Was muss ich hier änder?
BytesPerSec dw 512 SecPerClus db 1 ReservedSec dw 1 NumFATs db 2 RootEntries dw 224 TotSec dw 2880 MediaType db 0xF0 FATSize dw 9 SecPerTrack dw 18 NumHeads dw 2
Dort muss ein FAT32-BPB hin
-
Ja aber wen ich den Fat32_BPB in den USB stick
schreibe hat der USB stick nicht mehr 4GB sondern
nur noch ein paar MB so wie eine Diskete.
Aber was mus ich ändern das der USB stick wieder 4 GB groß wird?
-
Naja, die Werte müssen natürlich auch zum Gerät passen. Ein USB-Stick hat z.B. mehr als 2880 Sektoren.