Créer un OS

a marqué ce sujet comme résolu.

Bonsoir :) En fait créer un OS c'est un peu au dessus de mes attentes :p ce que je voudrait faire plutôt, c'est arriver à faire un truc qui boot et qui affiche du texte (dans une "bête" console^^) :p. Cependant, je ne veux pas utiliser GRUB, ou autre…, je veux "tout" faire moi même. J'ai trouvé ce tutoriel plutôt détaillé : http://a.michelizza.free.fr/pmwiki.php?n=TutoOS.Bootsect, et apparemment "apprécié" sur le web, car il revient beaucoup sur les forums. Ayant Windows, arrivant difficilement à compiler avec Nasm avec, je me suis dit : Si j'installais Debian :) Bon windowsien que je suis xDD, j'ai installé Debian sur un machine virtuelle (x86) (via VirtualBox). Après avoir galéré pour avoir internet dessus, et essayé via 'sudo apt-get install' d'installer Nasm et Bochs, sans succès, j'ai cherché des tutos sur le Net. J'ai réussi à installer Nasm, mais pas Bochs, et donc encore moins à le configurer. Apparaissent donc mes questions : Sauriez vous comment installer Bochs sur Debian (voir le configurer, sinon, faudrat que je google un peu :p) ? Auriez vous d'autres liens/ressources sur le sujet de création d'OS/console bootable, depuis zéro (si possible en français, bien que je comprenne l'anglais :D) ?

Cordialement Aze

+0 -3

Pour bochs, tu as essayé un sudo apt-cache search bochs ? J'ai la flemme d'allumer une debian à cette heure, mais je crois qu'il y a bochsbios.
Sur fedora un yum search bochs me donne

1
2
3
4
5
6
7
8
Modules complémentaires chargés : langpacks
================================================================= N/S matched: bochs ==================================================================
bochs-bios.noarch : Bochs bios
bochs-debugger.x86_64 : Bochs with builtin debugger
bochs-devel.i686 : Bochs header and source files
bochs-devel.x86_64 : Bochs header and source files
bochs-gdb.x86_64 : Bochs with support for debugging with gdb
bochs.x86_64 : Portable x86 PC emulator

Sinon en français je ne connais pas de ressources. Mais je peux te passer ce lien.

Si tu as un raspberry Pi, il y a ce cours qui est pas mal et à deux avantage :

  • tu peux tester sur QEmu (en émulation donc) et facilement sur du matos réel, sans risque.
  • C'est de l'assembleur ARM et c'est ultra plus simple que l'assembleur x86 de nos PC.

A la place de Bochs, il y a QEmu qui est vraiment bien pour ce genre de choses.

+1 -0

Ouais alors je veux pas être condescendant ni rien, mais pour programmer un OS il ne faudrait pas avoir déjà des connaissances en système un poil plus robustes que "apt-cache search ne renvoie rien même pas d'erreur qu'est-ce que ça veut dire" ?

La programmation d'OS est certainement le domaine de l'informatique le plus ingrat et le plus difficile, talonné de près par la compilation. Si j'étais toi je reverrais mes objectifs à la baisse le temps, au moins, de comprendre dans le détail comment fonctionne un système d'exploitation.

Tiens, par exemple, installe une Gentoo ou une LFS (Linux From Scratch) sur une machine quelconque. Pour débuter ça me semble plus facile à atteindre et plus rémunérateur en termes de connaissances.

+10 -2

Re :)

apt-get install bochs-x ne fonctionne pas non plus :/

Je n'ai pas de Rapsberry :/ (enfin, si, mais pas compatible avec le tutoriel :/)

Quand je veux installer QEmu, debian me dit que les paquets sont corrompus :o

comme tout bon windowsiens xDD, je ne suis pas expert linux ;). Je viens de lire la doc de la commande, qui me dit bien ce que je pensait, vu la syntaxe, ça cherche dans les paquet le mot donnée en paramètre. Cependant, ce n'est pas écrit dans la doc, ce qu'il ce passe, quand cela ne trouve rien, d'où mon étonnement^^

Comme dit dans mon premier message, je ne souhaite pas faire un "OS" à proprement parler, loin de là mon idée.

cordialement

+1 -2

Parce que ça ne me botte pas spécialement là, je verrais dans quelques semaines/mois, si ça me botte plus ;)

EDIT : pour passer par leur package, je n'arrive pas à l'installer :p , et j'ai cherché sur le net, des tutoriels, mais quand je fait la commande make, ça me dit que ce n'est pas configuré :o, et j'ai rien trouvé la dessus.

+0 -1

Bon alors facilite toi la vie et reste sous windows. C'est quoi ton problème avec nasm ? Parce que bon, il est là le problème à la base. Avant de vouloir créer un OS, meme un truc simple, il faut que tu maitrise un minimum tes outils. Dans l'ensemble je rejoint l'avis de nohar cependant.

En fait, mon problème sous windows, il est dans le fait que je n'arrive pas (très difficilement (5 min par compilation) à compiler des fichiers), et pour faire les .img, pour émuler avec Bochs. Je me suis donc dit, qu'il valait mieux que je fasse sur le même système, afin de gagner du temps. (surtout que certains arguments de compilations sont différents sous Windows, donc la "traduction" est longue, bien que répétitive)

+0 -1

Et voilà on en retourne au point mort. Alors dans un package sous linux dont tu récupères les sources (ou plutôt sur tous les OS du monde sauf Windows), avant de faire un make tu as systématiquement un script inclus qui sert à configurer l'environnement de compilation.

Classiquement, quand le projet est packagé avec les autotools (la méthode standard) il suffit de lancer ./configure. Si le projet est configuré avec cmake, soit c'est comme boost et le script s'appelle bootstrap.sh, soit il faut utiliser cmake. Et pour ça, quel que soit le soft ou la méthode, tu auras systématiquement un fichier nommé README à la racine du projet pour t'expliquer quoi faire.

+0 -0

En fait Aze, si tu t'arrete dès que tu as une erreur de configuration, ça sert a rien. Quand tu developpe, tu as forcément des erreurs de compilation/configuration. Et plus tu te rapproche du materiel en étant bas niveau, plus c'est fréquent. Donc tu as deux choix :

  • Soit tu mets les mains dans le cambouis et tu essai de résoudre ton problème,
  • Soit tu te trouve un projet plus adapté a ton niveau, et tu pourra revenir là dessus quand tu aura de meilleurs compétences.

Si le bas niveau t'interesse, commence par apprendre à coder en C, sous Windows. Puis une fois que tu maitrise a peut pret, passe à Linux pour le dev et continue ton apprentissage du C directement sous Linux. Quand tu sera confiant dans tes connaissances du C et des chaines de compilations, il sera plus facile de descendre au niveau du dessous.

Ce qu'il te faut comprendre Aze c'est que quand nohar te dis que c'est ingrat comme tache, ça l'est vraiment. Tu va passer des jours voir des semaines uniquement pour être capable de faire clignoter un pixel sur ton écran. L'installation des outils c'est censé être la partie facile. Ça doit pas prendre plus de quelques minutes. Donc imagine la suite qui t'attends.

Si je voulais faire une analogie foireuse, c'est comme si tu nous disais que tu voulais construire une maison. Au début tu voulais la faire sur ton terrain mais tu t'es rendu compte qu'il était legerement en pente donc tu as décider de changer pour un autre. Tu voulais la faire en béton mais tu n'a pas réussi a allumer la bétonneuse. Donc tu as décidé de la faire en bois mais tu nous dis que tu n'arrive pas à démarrer la scie électrique. Nous à ce niveau là, on ne peut plus trop t'aider si tu ne maitrise pas les outils qu'il va falloir que tu utilise !

Ah j'ai vu ce sujet un peu trop tard peut-être.

Je passe le topic en résolu ou pas ?

Attends, c'est un troll là ? C'est qui l'OP ici ? Conclusion ?

Sinon, vu ton screenshot, tu as un windows 8.x qui lance une virtualbox qui lance un XP, pour finalement lancer un exécutable windows. J'ai envie de dire : quel est l'intérêt d'avoir chaîné les windows ?

Si on reprends ce 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
[BITS 16]  ; indique a nasm que l'on travaille en 16 bits
[ORG 0x0]

; initialisation des segments en 0x07C00
    mov ax, 0x07C0
    mov ds, ax
    mov es, ax
    mov ax, 0x8000
    mov ss, ax
    mov sp, 0xf000    ; stack de 0x8F000 -> 0x80000

; affiche un msg
    mov si, msgDebut
    call afficher


end:
    jmp end


;--- Variables ---
    msgDebut db "Hello world !", 13, 10, 0
;-----------------

;---------------------------------------------------------
; Synopsis: Affiche une chaine de caracteres se terminant par 0x0
; Entree:   DS:SI -> pointe sur la chaine a afficher
;---------------------------------------------------------
afficher:
    push ax
    push bx
.debut:
    lodsb         ; ds:si -> al
    cmp al, 0     ; fin chaine ?
    jz .fin
    mov ah, 0x0E  ; appel au service 0x0e, int 0x10 du bios
    mov bx, 0x07  ; bx -> attribut, al -> caractere ascii
    int 0x10
    jmp .debut

.fin:
    pop bx
    pop ax
    ret

;--- NOP jusqu'a 510 ---
    times 510-($-$$) db 144
    dw 0xAA55

qui est le fameux code du lien que tu as donné, en gros, le corps du truc c'est afficher ta chaîne de caractère par une interruption qui correspond à un appel au BIOS.

Ce que tu as fait dans ton screenshot, c'est faire un programme dont le corps du truc est d'afficher ta chaîne par une interruption qui correspond à un appel système (donc à l'OS).

Même technique, socle logiciel différent.

Si ton but c'est de faire de l'asm bas niveau, par exemple sans passer par les librairies C, dans ce cas là tu as bien plus intérêt à faire de l'asm sur OS que sans rien.

Pour être plus direct : si ton but c'est de faire de l'asm bas niveau, commencer par vouloir faire du sans OS est, de mon point de vue, ridicule. Monte déjà en compétence sur ta maîtrise des outils, ensuite sur l'asm, et on en reparlera après.

Quand tu comprendras ce code, et bien dis-toi que tu auras encore bien du chemin à faire avant de pouvoir créer un OS.

Au fait, si tu as utilisé un XP pour pouvoir utiliser de l'asm 16-bits, je te le redis : commence par maîtriser les outils. Tu es censé pouvoir faire de l'asm quelque soit la plateforme sur laquelle tu développe, et non te restreindre à du 16 bits. En clair : tu dois être capable de faire du 32 et du 64.

Bien évidemment, ceci n'est pas vrai en électronique où on peut imaginer que tu ais une plateforme standard en X bits qui ne bougera pas (bien que ça n'est pas tout le temps le cas). Mais comme tu veux visiblement faire de l'asm PC, tu dois savoir être souple de ce côté là. Et le fait que tu ne le sois pas pour l'instant montre le chemin qu'il y a à faire.

Je ne te dis pas ça pour te démotiver, au contraire : prouves-moi que tu peux y arriver. Mais pas y arriver en mixant des bouts de codes trouvés par-ci par là (c'est d'ailleurs assez pénible quand on se rend compte que celui qui demande de l'aide sur un forum n'a en réalité fait aucun effort pour intégrer les concepts utilisés), y arriver en comprenant ce que tu fais, en sachant modifier le strict minimum s'il y a un changement de plateforme (par exemple si tu dois passer du tout asm à du asm/C, ou bien si en asm/C la convention d'appel change, et que tu dois modifier le bout de code qui te permet de chopper les arguments de tes fonctions).

Quelque soit "l'altitude" de programmation (niveau ici porte à confusion), bas-niveau, haut-niveau, entre les 2, la dev' est toujours un voyage inachevable. Ce qui compte, ce n'est ni d'où l'on part, ni où on arrive, mais c'est le chemin parcouru.

+0 -0

Bon, Aze… Pour l'instant, tout le monde a pris relativement des pincettes avec toi, alors je vais prendre sur moi de jouer le Grand Méchant Loup.

En toute sincérité, ça t'arrive d'avoir un projet un tout petit peu à la mesure de tes compétences ? Depuis deux mois que tu es inscrit ici, tu as voulu créer une régie publicitaire sans avoir la moindre idée de ce qu'est un statut légal, réécrire ZdS tout seul1 sans savoir distinguer back et front et maintenant écrire un bootloader complet en ASM en n'étant pas foutu d'installer un logiciel d'assemblage sur ton OS de prédilection.

Et là, je ne parle que de ce dont tu nous a parlé ici, parce que quand je lis ça, je me dis que tu as vraiment pété une durite. « Coucou, je n'ai encore rien fait, mais je me sens de pondre un logiciel pour créer des systèmes d'exploitation sans savoir coder… »

B*rdel de m*rde, avant de vouloir coder un truc tellement compliqué que personne ne l'a jamais fait, commence par apprendre à :

  1. utiliser des majuscules ;
  2. te servir du markdown : il faut sauter des lignes entre les paragraphes, sinon, ça fait un gros pâté tout moche !

Alors je ne vois que trois explications. Soit tu es tellement ignorant que tu ne comprends même pas ce que tu essayes de faire. Soit tu es tellement ignorant que tu surestimes tes compétences de plusieurs ordres de grandeur. Soit les deux.

Selon toi, laquelle est la bonne ?


  1. Je traduis ton message : « Salut, j'ai l'intention de créer un site qui est exactement comme le vôtre point pour point, mais ha ha ! non, ce n'est pas du plagiat, qu'allez-vous penser là ? » En plus d'être totalement fantasques, tes projets sont généralement dénués de toute originalité. 

+15 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte