Aller au contenu

[résolu]Comment fait - on un OS ?!


zahnderz

Messages recommandés

Bonjour à tous !

Je viens à peinde franchir la ligne qui me démarque de mon univers habituel pour m'initier et tenter de survivre dans ce nouveu domaine (pour moi du moins! :cartonjaune: ) qu'est la programmation. Le truc c'est que le but que je vise est de pouvoir un jour faire un OS comme UBUNTU, et je me demande bien par où commencer; s'il est vrai qu'à chaque langage, un complilateur ! Comment faut - il s'y prendre ?! Plusieurs exempes sont dispo pour ce qui est des OS en ligne (youos, eyeos, etc), dont je loue l'initiative ; faut - il reprendre la même logique ?! remarque : leurs communautés respectives sont très actives, ce qui en facilite le l'amélioration. Bref ... Une idée ?!

Mille merci déjà !

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 59
  • Créé
  • Dernière réponse

Oulà tu commences fort toi ! :byebye:

Si j'ai bien compris : tu n'as aucune notion de programmation et tu veux commencer par développer un OS ? C'est ça ?

Si c'est le cas mets la barre plus bas ! ...

Tu demanderais quand même pas à un apprenti en bâtiment de commencer par construire seul un immeuble de 100 étages (exemple pourri :cartonjaune::byebye:) ...

Lien vers le commentaire
Partager sur d’autres sites

Tu as un beau rêve (que tout programmeur souhaite au plus profond de soi), mais un rêve qui restera peut-être toujours un rêve. Ce n'est pas que je veuille te décourager, mais faire soit même un OS digne de ce nom demande énormément de boulot. Le plus souvent ça se calcule en années.

Le plus simple serait soit de partir d'une base déja existante et de la modifier à ta guise. Il suffit de regarder le nombre de modifications de Debian que l'on trouve sur le net par exemple (Ubuntu, Knoppix, etc....).

Sinon, une alternative serait de joindre un projet déja existant, afin d'aider, proposer tes idées, etc...

Pour ce qui est des OS en ligne, ce ne sont pas de vrais OS, mais des applications javascript disponibles à partir de ton navigateur.

Je te donne tous ces conseils car si tu veux vraiment te lancer, il te faut avoir un minimum d'expérience.

Voila en tout cas bonne chance, et bienvenue dans le monde de la programmation.

Lien vers le commentaire
Partager sur d’autres sites

Alors au début, il n'y avait rien.

Puis Dieu à dit "Boot!", et l'os "boota":

jmp start; Jump over BIOS parameter block

start:;The label for the start of the actual program

push cs;Put cs onto the stack
pop ds;Take it out and put it into ds


mov si,Print_loading;Print loading message
call printstring	;Call is like jump, but it goes back. Like a function


				;The complicated bit: Loads the next program
mov ah,02h			 ;When ah=, int13 reads a disk sector
mov al,4			 ;Al is how many sectors to read
mov ch,0			 ;The track to read from
mov cl,2			 ;Sector Id
mov dh,0			 ;Head
mov dl,0			 ;Drive (0 is floppy)
mov bx,0x1000		;Es and Bx put together are where to load the program too (see jmp 0x1000:0x00)
mov es,bx
mov bx,0x00
int 13h			;Int 13 is all functions for disks

mov si,putdot		 ;Print a ".".
call printstring

jmp 0x1000:0x00	;Run Bootinit from stack.

printstring:		  ;Print string routine.
mov ah,0eh		;Mov ah into 0, so int 10 prints
stringloop:		;The following code loads each seperate charcter so it can be printed
lodsb					
cmp al,00		;If al =0, then the string has all been loaded
je endstring
int 10h			;When int 10 is called, and ah=, it prints
jmp stringloop
endstring:
ret				;Ret returns



putdot		db '.',0
Print_loading db 13,10,'Loading Easy OS v0.01a...',0
times 425 db 0;wastes 425 bytes on purpose, so the sector is full (The program must be 512 bytes long)

Voila aprés y'a plus qu'a coder.

(la suite sur http://www.groovyweb.uklinux.net/index.php...your%20own%20os )

Lien vers le commentaire
Partager sur d’autres sites

Alors au début, il n'y avait rien.

Puis Dieu à dit "Boot!", et l'os "boota":

jmp start; Jump over BIOS parameter block

start:;The label for the start of the actual program

push cs;Put cs onto the stack
pop ds;Take it out and put it into ds

(...)

Print_loading db 13,10,'Loading Easy OS v0.01a...',0
times 425 db 0;wastes 425 bytes on purpose, so the sector is full (The program must be 512 bytes long)

Voila aprés y'a plus qu'a coder.

(la suite sur http://www.groovyweb.uklinux.net/index.php...your%20own%20os )

Ah, l'assembleur....Qu'est-ce que j'ai pû en chi*r avec ça en BTS (assembleur 68000)...

May the Force be with you...

Lien vers le commentaire
Partager sur d’autres sites

Ah, l'assembleur....Qu'est-ce que j'ai pû en chi*r avec ça en BTS (assembleur 68000)...

May the Force be with you...

Ah c'est sur qu'on en chie... Mais c'est comme apprendre le Lisp: même si c'est un langage bof bof pour coder, c'est different et ça t'apprend donc à penser differement.. Ce qui est très important.

Dans mon école, j'ai appris qu'ils avaient arreté de donner des cours d'assembleur après que je sois parti.. c'est nul! ;)

Lien vers le commentaire
Partager sur d’autres sites

Ah, l'assembleur....Qu'est-ce que j'ai pû en chi*r avec ça en BTS (assembleur 68000)...

May the Force be with you...

Ah c'est sur qu'on en chie... Mais c'est comme apprendre le Lisp: même si c'est un langage bof bof pour coder, c'est different et ça t'apprend donc à penser differement.. Ce qui est très important.

Dans mon école, j'ai appris qu'ils avaient arreté de donner des cours d'assembleur après que je sois parti.. c'est nul! :transpi:

Ils l'ont remplacé par l'apprentissage du BrainF*ck ? Non ? Ah, dommage... :francais:

Lien vers le commentaire
Partager sur d’autres sites

Rien compris à comment ça fonctionne :zarb:

C'est pas trop dur.. tu as N bols, qui sont en fait des listes chainées.

Tes "ingredients" sont des variables,

et les diverses étapes de la recette sont les fonctions: ajouter un élément dans le bol N°x, retirer un element, mélanger les elements, les afficher, en enlever un, les additionner, etc...

C'est cute je trouve ^^

Lien vers le commentaire
Partager sur d’autres sites

Oulà tu commences fort toi ! :mad2:

Si j'ai bien compris : tu n'as aucune notion de programmation et tu veux commencer par développer un OS ? C'est ça ?

Si c'est le cas mets la barre plus bas ! ...

Tu demanderais quand même pas à un apprenti en bâtiment de commencer par construire seul un immeuble de 100 étages (exemple pourri :zarb::mdr: ) ...

L'exemple n'est pas si mauvais que ça et montre bien que ce tu veut faire est impossible pour quelqu'un qui n'as pas ou qui n'as presque pas de bases en programmation...

Donc comme il a été dit, le mieu est de rejoindre un projet ou d'en monter un, mais de ne pas faire ça tout seul.

Lien vers le commentaire
Partager sur d’autres sites

Mille merci "FiP_"; je crois ke ui, mon rêve en est de ceux qui se compte en années, en siècle même; mais je suis pas de nature à laisser tomber. Donne - moi une estimation stp : il faut 10 ans, 50 ans ?! quand on voit que monsieur Gates (c'est pas le bon exemple, je sais) l'a fait à ses début! ! Bref, Pour ce qui est de rejoindre une team, j'aimerai bien causer avec les gens du projet "SKAN", mais j'ai pas encore trouvé le temps. Mais je continue de vouloir; si j'ai déjà une séquence pour booter (encor merci "FiP_"), je peux bien l'enrichir avec autre chose. Et oui je suis nul dans le domaine parce que je viens de commencer, mais je me laisse 1 ans pour apprendre l'ASM (j'ai bien appris le bricolage maison ke les gens qualifient de "maintenance" !)...

Lien vers le commentaire
Partager sur d’autres sites

Et bien en tous cas, je salue ton courage :)

Apprendre à réaliser un OS est tres formateur, mais linux et windows sont des produits assez aboutis, et il n'est pas forcement simple de comprendre "comment ca marche".

Comme disais le pere de linux torvald (papa torvald donc), à l'époque ou son fils était jeune l'informatique était beaucoup plus simple, une seule personne ou presque pouvait comprendre comment tout fonctionnait.

Mais tu risque peut etre de perdre du temps à tenter de commencer un OS complet, tout seul... Lance le projet entre amis, ou inspire toi de travail d'autres personnes qui ont elles aussi tenté l'expérience.

Je me souviens d'un os tenant sur une disquette (c'etait avant les clé usb et les mini distrib linux... oui je sais :phiphi: et je vous merde), je vais essayer de te retrouver le nom.

>>MAJ: bon pas trouvé, j'ai mis des liens à la fin.

Niveau lecture, je te conseille "Systèmes d'exploitation" par Andrew Tanenbaum, très bon ouvrage.. (et la couverture est amusante). L'auteur explique le fonctionnement d'un OS, les difficultées rencontrées (gestion de la mémoire, des peripheriques, de la sécurité...), et compare le mode de fonctionnement d'un linux (je ne sais plus lequel) et d'un windows (2000).

http://www.amazon.fr/gp/product/2744070025...ce&n=301061

A voir aussi:

De petits OS:

http://kos.enix.org/otheros.php?lang=en

Code your own OS

http://www.openbg.net/sto/os/

(c'est bien ca te fera travailler ton anglais aussi... :transpi: Do you speak english? Yes I speak Linux/assembly kernel coding english! :transpi: )

Oh et puis.. google est ton ami: http://www.google.fr/search?q=small+OS&amp...:en-US:official

Lien vers le commentaire
Partager sur d’autres sites

le premier os sur lequel j'ai bossé : GEOS[1] sur une disquette 5"1/4 ça devrait être facile à décortiquer... non ? ah, on me fait signe que non...

sérieusement, lis le Tannenbaum, et je pense que tu comprendras la difficulté du projet. Le noyau de linux contient plusieurs millions de lignes de code, et ce n'est qu'un noyau... Si tu rajoute tout ce qui fait qu'unbuntu est joli et tout et tout, ça fait des milliers de milliards de lignes de code. À tel point que si tu voulais tout taper tout seul, il te faudrait plusieurs siècles, à mon avis... :-D

Bref, aujourd'hui plus personne ne développe son OS from scratch tout seul. Il est bien plus intéressant d'avoir une idée géniale, comme le dit fabien, et essayer de monter une équipe pour la réaliser.

Mais pour avoir une idée géniale en matière d'OS, il faut avoir beaucoup de connaissances, et pour avoir beaucoup de connaissances, il faut apprendre...

lis le Tannenbaum, gave toi de wikipédia (qui est extremement bien foutu pour l'info), tu verras de quoi je parle ;)

[1] http://en.wikipedia.org/wiki/GEOS_%288-bit...ating_system%29

Lien vers le commentaire
Partager sur d’autres sites

sérieusement, lis le Tannenbaum, et je pense que tu comprendras la difficulté du projet. Le noyau de linux contient plusieurs millions de lignes de code, et ce n'est qu'un noyau...

Oui voila. comme ils disent les gens.

----

La Chine est en train de devenir un pays de non-droit, comme la France.

Lien vers le commentaire
Partager sur d’autres sites

Le tanenbaum est un peu la bible de l'OS

Il décortique pas mal. J'ai jamais eu le courage de tout lire, mais je l'ai souvent feuilleté.

Si tu veux vraiment te lancer là dedans, commence par comprendre tous les tenants et aboutissants d'un OS. La programmation et le code, c'est secondaire et ce n'est pas ça qui fait un OS (c'est le calcium :coucou: Baldurien) Décortique les vieux OS et retires-en la moëlle : tu verras que tous les OS ont une philosophie différente.

Bonne chance, et tiens nous au courant. Si tu trouves une idée d'OS révolutionnaire, reviens par ici, je pense qu'il y aura du monde pour pisser du code avec toi ::chinois::

Lien vers le commentaire
Partager sur d’autres sites

Excusez - moi tout le monde; il se trouve que THE IDEA n'est pas facile à trouver ou pas difficile du tout, dépendant de ce qu'on a en tête, fabien29200 et je ne crois pas être assez fou pour me lancer dans l'avanture seul. Le hic est que là où je suis ya personne de suffisament compétent (me demander pas où je suis, c'est un trou perdu sur la carte). Bref; je vais essayer de me procurer le bouquin et plonger dans wikipedia, on verra la suite ... mais au fait, pendant que j'y pense : Si avec de l'ASM on boot, avec quoi est - ce qu'on fait le reste ?! Et à la fin, puisque chaque langage à un éditeur/compilateur, comment fait - on pour que le tout tienne ?!

Mille merci à tout le monde, c'est vraiment génial !

Lien vers le commentaire
Partager sur d’autres sites

Déjà, Gates, c'est un mauvais exemple.

Gates parce qu'il n'a rien fait à la base, il a repris le CP/M (Puis QDOS) et il a bossé dessus.

Par ailleurs, un OS à l'époque, c'était DOS, CP/M, powershell... C'est un peu plus light que les OS qu'on a aujourd'hui.

Si tu veux vraiment faire un OS, tu peux commencer par installer une gentoo et comprendre comment ça fonctionne.

Le mieux étant carrément de se mettre une LFS (linux from scratch).

Ensuite peut être suivre les devs du kernel, suivres quelques projets intéresants proches du système comme udev, hotplug, toussa.

Tu peux aussi regarder comment fonctionne le matos de ton PC (ram, dd, proc, ...) et comment c'est géré par l'OS (pagination/segmentation, first/best/worst fit, interuptions, ...).

Quelques vidéos qui pourraient t'intéresser :

http://free-electrons.com/communaute/videos/conferences

Regarde les premières vidéos, celles de la partie "voyage à l'intérieur d'un système d'exploitation"

Bien sûr il y a le Tanenbaum qui fait toujours figure de référence.

Bon courage.

Tiens, je laggues, j'ai loupé les 10 derniers posts au moins...

Lien vers le commentaire
Partager sur d’autres sites

Mille merci tout le monde; je pense que oui, avc la "biblle" des OS et toutes les indications que j'ai ici, je peux très bien me lancer, et rendez - vous dans 7 ans sûrement (mon chiffre préféré); mais au fait fabien, qu'est - ce que t'entends par OS révolutionaire ?! Remarque, MacOS X est très bien pour sa vue imprenable (dont les gens de chez Redmon piquent souvent les concepts!), Ubuntu je sé po trop, à part sa fiabilité, sa sécurité, le support aujourd'hui étendu dans le temps, crosoft n'en parlons même po (pa personnalisable à souhait) etc... J'en ai déjà des tas d'idées pour ce qui est des petits +, mais cela reste des "petits" +; ensuite on verra... Si je sais déjà m'en faire un, résultant des existants, je pourrai facilement me trouver mon chemin... Mais ma dernière question : Si avec de l'ASM on boot, avec quoi est - ce qu'on fait le reste ?! Et à la fin, puisque chaque langage à un éditeur/compilateur, comment fait - on pour que le tout tienne ?!

Lien vers le commentaire
Partager sur d’autres sites

Archivé

Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.


×
×
  • Créer...