Boot

BARABS Messages postés 5 Date d'inscription vendredi 31 décembre 2010 Statut Membre Dernière intervention 21 avril 2011 - 20 avril 2011 à 19:05
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 - 21 avril 2011 à 11:12
apres avoir booter la machine avec le code suivant :
[bits 16]
[org 7c00]
....

qu'est ce qu'il faut faire si on veut continuer le programme mais le programme se trouve sur un autres fichier

3 réponses

cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
21 avril 2011 à 00:01
salut,

Le charger en mémoire et lui passer la main.

Toute la difficulté du code mbr est qu'il réside dans 512-(16*4)-2 octets pour un péripherique disk. En gros 400 octets.
Le problème est que ce code ne peut donc pas avoir tout les types de filesystems.

Des chargeur comme Grub charge les secteurs suivants du MBR en mémoire. (Il faut savoir que la première partition ne part jamais au 2eme secteur mais au cylindre suivant.)

De plus, Grub ne met que le code du système de fichier qui lui permet de trouver son extention (stage2), c'est indiqué à l'installation de Grub puisqu'on précide le root-directory.

En général, le code MBR se déplace à 0:600 afin de charger les codes de boot qui se trouvent au début de chaque partition active à l'adresse 0x7C00 pour ensuite leur passer la main. Ces codes étants liés à la partition, ils sont donc spécifiques au type de la partition, ce qui leur permet de trouver facilement leur loader, de le charger en mémoire et de lui passer la main.

@++
0
BARABS Messages postés 5 Date d'inscription vendredi 31 décembre 2010 Statut Membre Dernière intervention 21 avril 2011
21 avril 2011 à 01:06
salut ,
merci de m'avoir repondu rapidement.

le probleme c'est que comment transforme ce beau theorie(Le charger en mémoire et lui passer la main) en code(NASM).Ce petit bonjour est dans un floppy ,j'ai cree un CD avec power-iso et le cd boot sur des virtual machine.Puis j'ai essaye de transferer les donnees sur USB avec flashboot ca ne marche plus sur des vrai machine.

Mon but est de creer un OS capable de gerer les port en particulier les PCI.
0
cs_patatalo Messages postés 1466 Date d'inscription vendredi 2 janvier 2004 Statut Modérateur Dernière intervention 14 février 2014 2
21 avril 2011 à 11:12
re,

Pour transformer la théorie en pratique il n'y a pas 36 solutions, il faut se documenter et pratiquer. ;-)

Pour acceder à n'importe quel support, il faut déjà que tu détermines quel système de fichier tu vas utiliser. Il est normal qu'un boot de CD ne fonctionne pas pour un floppy, un HD ou une clé USB. Le CD à des secteurs d'une taille de 2048 octets, celle des autres péripheriques est de 512 octets. Le code pour le CD prend en charge un système de fichier CDFS. Ce n'est bien sur pas le cas pour un code de disque qui prendra plutot en charge FAT, NTFS, extfs ou autres, ce n'est que les plus courants.

Tu peux également fonctionner en mode RAW, l'important étant que toi tu saches ou aller chercher ce dont tu as besoin sur le support.

Pour acceder aux supports de stockage de masse, il faut connaître l'interface BIOS ATA/ATAPI (int 13h) qui te permet d'acceder directement aux secteurs. Le fait que les secteurs ont telles ou telle structure dépend après du système de fichier.

Si tu regardes mes sources, tu en trouveras une qui se nomme live-cd omf. Elle te montrera comment émuler un support pour qu'il soit assemblable avec NASM.


@++
0
Rejoignez-nous