Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > Programmation d'OS
Programmation d'OS Programmation de systèmes d'exploitation
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/04/2010, 18h53   #1
[R3D]Talus
Invité de passage
 
Inscription : septembre 2008
Messages : 8
Détails du profil
Informations forums :
Inscription : septembre 2008
Messages : 8
Points : 0
Points : 0
Par défaut Création d'un boot sector

Bonjour a tous, je suis en train de Dev un petit kernel (pour le fun) mais pour le moment je le charge avec grub

je voudrait donc créer un boot sector/loader pour charger mon kernel en mémoire et lui passer la main

c'est la que mon problème se situe je sait comment marche le boot secteur (dans la theorie) initialisation des différent secteur, son magic number dans son dernier mot, mais le comment faire ca me pose plus de problème.

ensuite vient la création de l'image de disquette, je travaille sous Windows avec Virtual Box, jusqu'à présent j'avait une image de disquette avec grub dessus donc je n'avait qu'a changer mon kernel.bin, mais si j'ai mon propre boot loader il me faudra une image avec celui a la place, je voudrait donc savoir qu'elle software utiliser pour ca


j'ai aussi d'autre petite question, comme la copie du bootloader sur la MBR du HDD et la copie du kernel sur le HDD, pour directement booter depuis le HDD mais je suppose que pour ca il faut un système de fichier ? (je vais sans doute plus vite que la musique ^^)

Merci a vous en tout cas pour vos réponse
[R3D]Talus est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/08/2010, 22h15   #2
Euquigam
Futur Membre du Club
 
Inscription : août 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 13
Points : 15
Points : 15
Voilà pour le secteur de boot (à compiler avec NASM) :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
%define BASE    0x100
%define KSIZE   10       ; nombre de secteurs de 512 octets a charger
 
[BITS 16]
[ORG 0x0]
 
jmp start
 
%include "UTIL.INC"
 
start:
        mov [bootdrv], dl        ; recuperation de l'unite de boot
 
; initialisation des segments en 0x07C0
  mov ax,0x07C0
  mov ds,ax
  mov es,ax
  mov ax,0x8000   ; stack en 0xFFFF
  mov ss,ax
  mov sp, 0xf000
 
; affiche un msg
        mov si, msgboot
        call afficher
 
; charger le noyau
  xor ax,ax
  int 0x13
 
  push es
  mov ax,BASE
  mov es,ax
  mov bx,0
 
  mov ah,2
  mov al,KSIZE
  mov ch,0
  mov cl,2
  mov dh,0
  mov dl,[bootdrv]
  int 0x13
  pop es
 
; saut vers le kernel
        jmp dword BASE:0
 
 
msgboot db 13,10,'A remplacer par le nom de l'OS',0
 
loadmsb db 13,10,'D', 130, 'marrage...',0
 
msgDot db '.',0
 
ChargeOK db 0
 
err db 13, 10, "Erreur ! Le Noyau ne peut ", 136, "tre d", 130, "marr", 130, ".",0
 
bootdrv: db 0
 
times 510-($-$$) db 0x90
 
SignatureMBR dw 0xAA55
Euquigam est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/08/2010, 22h45   #3
Euquigam
Futur Membre du Club
 
Inscription : août 2010
Messages : 13
Détails du profil
Informations forums :
Inscription : août 2010
Messages : 13
Points : 15
Points : 15
Pour l'image de disquette, tu peux télécharger CR-Hexact, qui te servira à mettre le code du noyau sur le deuxième secteur de l'image de disquette :
  • Crée un nouveau fichier texte (Clic droit/Nouveau/Texte) et nomme-le boot.img.
  • Compile ton secteur de boot et ton noyau.
  • Ouvre Cr-Hexact.
  • Clique sur Fichier/Ouvrir et ouvre boot.img.
  • Clique sur Edition/Insérer un octet.
  • Valide l'écriture à la fin du fichier dans la boîte de dialogue.
  • Modifie le nombre d'octets à traiter (en bas) à très exactement : 1474560
  • Ouvre le fichier du bootloader, fais un clic droit sur le dernier octet et sélectionne copier la plage.
  • Retourne sur le fichier boot.img et sélectionne le premier octet, puis clic droit/coller (écraser).
  • Fais de même pour le fichier du noyau, mais colle le sur le deuxième secteur (Le premier octet juste après le second trait horizontal).
  • Appuie sur Fichier/Enregistrer
Voilà ton image disquette, en espérant que cela t'a été utile.
Euquigam est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 14h26.


 
 
 
 
Partenaires

Hébergement Web