Comment Créer Votre Propre Système d'Exploitation x86 Modernes pour les Ordinateurs PC
J'aimerais créer un nouveau système d'exploitation pour PC x86 ordinateurs. J'aimerais qu'il soit 64 bits mais peut-être exécuter en tant qu'en 32 bits.
J'ai ce genre de questions:
Quelles sortes de choses avez-vous commencer à travailler sur la première? Sachant par où commencer dans la rédaction de votre propre système d'exploitation me semble être un sujet délicat, donc je suis intéressé par votre entrée.
Généralement la façon de faire votre propre 32-bit/64-bit du système d'exploitation, ou bien des ressources que la mention utile d'information sur le sujet de l'écriture de votre propre système d'exploitation pour les ordinateurs x86. Je ne se soucient pas comment les sources anciennes sont aussi longtemps qu'ils sont toujours pertinents et utiles pour ce que je suis en train de faire.
Je sais que je veux qu'il ait des pilotes du noyau que l'accès matériel périphérique directement. Où dois-je regarder pour des conseils et de la documentation pour la programmation et la compréhension de l'interface de matériel périphérique le système d'exploitation de communiquer avec? J'ai besoin de comprendre comment le système d'exploitation va recevoir des commentaires et interagir avec des claviers, des souris, moniteurs d'ordinateur, disques durs, clés USB, etc. etc. C'est certainement le domaine que je connais moins.
J'ai l'Intel jeu d'instructions, manuels et ont été de plus en plus familiarisé avec le montage de la programmation, de sorte que le CPU côté des choses, c'est ce que je connais le plus.
À ce point, je suis en train de penser que j'aimerais mettre en œuvre le système Linux appels au sein de mon système d'exploitation de sorte que les programmes qui fonctionnent sur Linux peut fonctionner sur mon système d'exploitation. Je veux que mon système d'exploitation d'utiliser le format binaire ELF. Je me demande quels sont les obstacles que j'ai à surmonter pour parvenir à cela la compatibilité Linux. Sont les choses principales de la mise en œuvre des appels système Linux, et en utilisant le format ELF? Quoi d'autre?
Je suis également intéressé par les gens, les pensées au sujet de pourquoi il ne pourrait pas être une bonne idée de faire votre propre système d'exploitation, et pourquoi il est une bonne idée de faire votre propre système d'exploitation.
Merci pour toute entrée.
- Similaire à stackoverflow.com/questions/1224617/...
- C'est agréable de voir non "n'essayez même pas, c'est trop dur!", répond.
- si vous êtes à la recherche d'un peu de code pour commencer, voir ce minimal OS.
- BareMetalOS est un système d'exploitation écrit en pure assemblée, peut offrir un aperçu.
Vous devez vous connecter pour publier un commentaire.
Vous aurez probablement veux juste que ça s'exécute à l'intérieur d'une machine virtuelle pour commencer. C'est un pain PITA essayant de développer un OS sur du matériel réel (avec la constante de redémarrage et de débogage-sur-série-câble).
À l'intérieur d'une VM, vous avez généralement une procédure simplifiée (et relativement standardisé) ensemble de matériel de soutien qui peuvent faciliter le développement initial ainsi. En particulier, si vous voulez montrer à quelqu'un d'autre de votre exploitation, il vous suffit de leur donner un .fichier de disque dur virtuel et être raisonnablement confiant que si cela fonctionne pour vous, alors il va travailler pour eux en tant que bien.
Vous pouvez aussi commencer avec quelque chose qui est déjà en place & l'exécution initialement (par exemple, Microsoft Singularité est très soigné). Qui va vous permettre d'obtenir tous les ennuyeux chargeur de démarrage et de base des pilotes de périphérique hors de la voie et que vous pouvez obtenir sur la "viande" de choses plus rapidement.
Il est préférable de prendre un coup d'oeil à Linux 0.01 code source. c'est la première version de l'OS. il est très simple et instructif. C'est un bon endroit pour commencer
Vous serez vouloir ce livre:
le texte d'alt http://ecx.images-amazon.com/images/I/5169V5J687L._SL500_AA300_.jpg
Je recommande d'abord étudier un petit OS comme Minix1 qui a été construit à des fins pédagogiques
ou Minix3 qui est conforme à POSIX.
Vous aurez à mettre en œuvre plusieurs types de tables de descripteurs pour activer le mode 32 bits. L'activation du mode multi-threading n'est pas une tâche facile et sera presque certainement être une condition préalable. Vous seriez probablement souhaite aussi développer le système de fichiers de soutenir les premiers à descendre une image de disquette ou tout ce que vous utilisez actuellement.
Je suis sûr que vous allez venir à travers ce site web dans le passé http://wiki.osdev.org/Main_Page
mais il y a beaucoup de grands articles.
Vous pouvez également trouver ce livre utile pour la phase de développement, vous êtes à:
L'Indispensable Matériel PC Livre il va dans les détails et il y a beaucoup de schémas, ainsi que quelques fragments de code.
Si vous voulez développer votre propre système d'exploitation est la meilleure première étape consiste à traîner dans les osdev forum (http://forum.osdev.org/), et avoir une bonne lecture de leur wiki: http://wiki.osdev.org/Main_Page.
J'ai trouvé les gens à y être, non seulement compétents mais aussi incroyablement utile, ils vont même faire remarquer les fautes dans vos extraits de code!
J'ai commencé avec le x86 tutoriel par James Molloy (google, je ne suis pas autorisé à poster ce lien). Vous pouvez commencer avec son code, puis hack, hack, hack :-).
Commencer avec un chargeur de démarrage, de se renseigner sur une carte mémoire, numérisation du bus PCI, l'initialisation de diverses puces, tels que l'APIC, et comment basculer en mode protégé.
Celui que vous avez le début d'un noyau chargé, essayez d'écrire des routines à ce qui sera le résultat à l'écran, lecture à partir du clavier, obtenir un simple débogueur va, suivi par une mémoire physique manager et un gestionnaire de mémoire virtuelle. Les deux derniers ne peut pas être mis hors tension pour longtemps, parce que chaque programme, y compris le système d'exploitation, a besoin d'un moyen pour allouer et de libérer de la mémoire d'une manière ordonnée.
Juste pour offrir une nouvelle suggestion d'approche... on pourrait l'image du chargeur de démarrage sur une clé USB ou CD RW puis direct de votre ordinateur pour l'utiliser comme appareil principal. J'ai installé Vista et je viens tout simplement de le brancher dans un port USB avec le chargeur de démarrage et le noyau.fichier bin pour tester mon jouet OS. Assurez-vous d'utiliser le même appareil pour enregistrer des fichiers ou des extras afin de ne pas endommager votre disque dur. Si votre système d'exploitation a toutes les bases en place d'acheter un indésirable de l'ordinateur, installez votre système d'exploitation et d'élargir à partir de là.
https://github.com/rajneshrat/ratos
C'est le minimum de os avec support-
mise en réseau,
vm soutien,
prise en charge interruption,
Pci soutien.