Secteur boot, kernel et chargeur boot

Soyez le premier à donner votre avis sur cette source.

Vue 12 265 fois - Téléchargée 2 038 fois

Description

mon code porte sur un bootloader tres simple BOOT.BIN et un KERNEL.BIN. J'ai eu beaucoup de mal au debut à en faire un. J'ai compris la procédure et je le partage.
J'ai aussi inclu un chargeur boot du nom de MKBOOT.COM qui charge votre fichier boot.ini et le kernel.ini sur une disquette, les noms de ces fichiers sont à modifier, si vous le desiré, dans le chargeur MKBOOT.TXT , au niveau de la declaration des données, puis recompilés avec COMPILE.BAT. Bien sur il y a d'autres chargeurs mais il est souvent bien de faire pour soi.

Merci pour vos critiques pour d'éventuelles améliorations
Si vous avez des questions sur mon code, je tenterais de les repondre

Compilateur utilisé: NASM

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_patatalo
Messages postés
1466
Date d'inscription
vendredi 2 janvier 2004
Statut
Modérateur
Dernière intervention
14 février 2014
1 -
salut,

la gestion d'un kernel > 512 octets est à prévoir rapidement ;-)

@++
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
8 -
salut, je ne m'y connais pas beaucoup en assembleur, mais quand je vois que ton code contient des interruptions, j'ai bie peur que ca parte mal !
MrNOP
Messages postés
17
Date d'inscription
dimanche 28 mars 2004
Statut
Membre
Dernière intervention
1 février 2006
-
Salut,

Pour que tu puisse charger plus d'un secteur en mémoire, il faut que tu fasse une boucle autour de ton int 13h func 2.

exemple repris de ton code:

nb_sector equ 9
sector_size equ 512
push es
mov ax,0100h
mov es,ax
xor bx,bx ;mieux que mov bx,0h prend moins de place
mov si,nb_sector ;nombre de secteurs a charger
mov cx,0002h ;premier secteur a charger sur piste 0
xor dx,dx
loading_sectors:
mov ax,0201h
int 13h
jc error_loading
add bx,sector_size
inc cl
dec si
jnz loading_sectors
end_loading:
pop es

error_loading:
TU MET TA GESTION D'ERREUR

l'inconvenient de ton secteur de boot c qu'il ne respecte pas la norme !! Pas de BPB (boot parameter block) et de plus il te faut une routine de conversion LBA->CHS pour pouvoir charger un nombre plus important de secteurs car la solution que j'ai ecrite ne charge que 18 secteurs au maximum.

Cf http://membres.lycos.fr/cos2000/ mon ancien site dans la section tutorial OS
sajaris
Messages postés
63
Date d'inscription
jeudi 7 août 2003
Statut
Membre
Dernière intervention
1 août 2008
-
merci pour vos suggestion je vais revoir le code et l'ameliorer.

Mais je savais pas qu'il fallais une boucle pour qu'il puisse charger plusieurs secteurs. Je pensais qu'il le faisait automatiquement. je vais prendre cela en compte.


LordBob dit:
"salut, je ne m'y connais pas beaucoup en assembleur, mais quand je vois que ton code contient des interruptions, j'ai bie peur que ca parte mal !"

je comprends pas bien pourquoi tu dis cela, les interruptions bios que j'utilise fonctionne bien et ca plante pas du tout.
cs_LordBob
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
8 -
alors il me semble, mais corrige moi si je me trompe, que les interruptions "dépende" d'un OS... or pour un chargeur de boot, il me semble qu'il faudrait qu'il soit plutot "independant" !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.