Le bootloader est séparé en 3 étages.
Le premier étage est dans le premier secteur, avec les informations de la structure exFat. Il a donc une taille maximale de 390 octects (il fait 237 octets).
Cet étage va charger le 2nd étage dans les 8 secteurs suivants prévus par exFat à l'adresse 0x1000, activer la ligne A20 si elle ne l'est pas déjà et enfin passer dans le second étage.
Le second étage est dans les 8 secteur d'extented boot sector prévu par exFat, soit une taille maximale de 4ko (taille réélle difficile à estimer mais inférieure à 2ko), avec des signatures régulières. pour assurer que les signatures ne s'écrivent pas dans le code, le code sépare explicitement les secteurs par des .align.
Le rôle de cet étage est de charger le 3eme depuis le système de fichier.
Les secteurs ont les rôles suivants :
/sys/boot (une pour /sys dans la racine et une pour boot dans /sys/) et fonction de chargement dans la mémoire de /sys/boot une fois trouvé.Le 3eme étage est dans le fichier /sys/boot (26.5 ko).
Dans l'ordre, il va :
nullptr pour être récupérer par le kernel (notament où est la heap et frame_alloc)