[SOS] Secteur de boot

Chris uid0 at free.fr
Sam 8 Jan 21:42:34 CET 2005


On Sat, 2005-01-08 at 21:13, Thomas Petazzoni wrote:

> Tu peux faire un tarball de toutes les sources, avec un Makefile ou un 
> script shell pour éxécuter tout ça ? Je suis flemmard, j'ai pas envie de 
> passer 3h à trouver les bouts de source à droite et à gauche et 
> comprendre comment compiler ;-)
Voilà. Il y a qqs trucs certainement inutiles dans le fichier de compil
mais cela vient du fait que je compte lier plusieurs fichiers (d'où le
ld, objcopy, etc). Juste tapper : sh compil.sh et l'image à charger par
Bochs s'appelle kernel.


> > Par ailleurs, j'ai vu dans le code proposé dans linux mag que SOS se
> > copie d'abord en-dessous des 1M en mode réel puis au-dessous en mode
> > protégé. Est-ce que la deuxième copie est nécessaire ?
> 
> Le noyau est relogé pour fonctionner à l'adresse 0x200000 (voir 
> support/sos.lds). Donc il faut qu'il soit éxécuté à cette adresse.
Mais il ne pourrait pas fonctionner à l'endroit de sa première copie
(avec sos.lds défini pour cela) sans 2ème copie pour passer >1M ? Pour
quelle raison ?

> Grub charge le noyau à l'adresse donnée dans le multiboot header (voir 
> bootstrap/multiboot.S) :
> 
>    /* load_addr=    */ .long __b_load
> 
> Ce __b_load est défini dans support/sos.lds :
> 
>      /* our kernel is loaded at 0x200000 */
>      . = 0x200000;
>      __b_load   = .;
> 
> Vu que le noyau est relogé à cette adresse, il faut qu'il soit éxécuté à 
> cette adresse.
> 
> D'ailleurs, c'est peut être la source de ton problème. Si le noyau est 
> relogé pour fonctionner à 0x200000 et que tu l'éxécutes ailleurs, il est 
> possible que même un simple "int main(void) { for(;;); }" échoue.
> 
En effet, c'est probablement pourquoi mon secteur de boot ne peut
charger SOS, mais le problème est qu'il ne peut pas non plus charger mon
pseudo-début-de-mini-kernel :P ( à savoir simplement le void main(void)
{ for(;;);} ) donc il doit y avoir un autre problème.

Merci.

Christian Vincenot
-------------- section suivante --------------
Une pièce jointe non texte a été nettoyée...
Nom: test.tar.gz
Type: application/x-compressed-tar
Taille: 5788 octets
Desc: non disponible
Url: http://the-doors.enix.org/pipermail/sos/attachments/20050108/cf56b228/test.tar.bin


Plus d'informations sur la liste de diffusion Sos