[SOS] Multiboot

Nicolas Duboc nicolas at duboc.net
Mer 17 Nov 14:27:09 CET 2004


   Salut,

 En lisant le fichier multiboot.S et la spec de Multiboot[1], j'ai
l'impression que Sos ne respecte pas tout à fait cette spec.

 La spec demande que le champs load_addr de la structure
multiboot_header ait une valeur inférieur à celle du champ header_addr.
(Je comprend de ca que la structure doit être dans la section .text.
C'est d'ailleurs le cas dans le code example de la spec).

 SOS ne respecte pas cette contrainte. La section multiboot arrive avant
la section text dans le script ld. Dans SOS, header_addr est l'adresse
du symbole multiboot_header et load_addr est l'adresse de __b_kernel.
Hors mon fichier sos.map me dit :

  00200000 multiboot_header
  00201000 __b_kernel

 Il semble que GRUB ne soit pas géné par cela car le fichier image du
noyau est au format ELF. Du code de grub [2] je comprend qu'il utilise
les infos des headers ELF plutot que celles de la structure multiboot.

 Bref, je pense que SOS n'est pas compatible Multiboot. Un autre
bootloader que GRUB pourrait refuser de lancer SOS.

 J'ai bon ?

[1] http://www.gnu.org/software/grub/manual/multiboot/html_node/Header-address-fields.html#Header%20address%20fields
[2] source de GRUB 0.95, fichier stage2/boot.c, fonction load_image

-- 
Nicolas Duboc <nicolas at duboc.net>


Plus d'informations sur la liste de diffusion Sos