Basisanforderungen:
- gut programmieren können
- gute Englishkenntnisse
- viel Zeit
- konzeptionelle Fähigkeiten
Zu Beginn müssen gleich die wichtigsten Entscheidungen getroffen werden:
- Programmiersprache (wenn Target = PC, dann sollte es eine sein, die schnellen Assembler Code generiert, also C oder C++, Java wäre dann ungeeignet)
- Design des Kernels (Microkernel oder monolithischer Kernel)
Danach mußt Du Dir Gedanken machen, wie Du Deine Fortschritte testest, schliesslich mußt Du dazu den Rechner neu booten und das kann ziemlich lästig sein. Also VMWare, einen Zweitrechner mit bootbarem USB Stick oder CDROM wären da hilfreich.
Anfangs wird es nicht viel mehr sein, als ein Hello World, welches nach dem BIOS ausgegeben wird. Später wirst Du eine einfache Shell basteln, mit der Du Befehle ausführen kannst.
Und dann wird es auch schon Zeit sich Gedanken um einen Compiler zu machen. Entweder mußt Du dazu einen eigenen schreiben, oder eben z.B. den gcc dazu bringen Code für Dein OS zu erzeugen. Dann kannst Du ihn als Crosscompiler verwenden und so z.B. von einem Linux Rechner Binaries für Dein OS erzeugen lassen, die Du dann dort einspielen kannst.
Wenn Du dann erstmal einen Compiler hast, dann kannst Du nach und nach die ganze GNU Suite auf Dein System bringen und bekommst so immer mehr Funktionalität.
Und Du kannst Dich z.B. auf die Treiberprogrammierung stürzen (Grafikkartentreiber für die grafische Oberfläche, Soundkarte, USB, Filesysteme, usw...)
Alles in allem ein Riesenprojekt... wenn man aber z.B. auf x86 Architektur bleibt und sein Binärformat kompatibel hält, dann kann man möglicherweise auf Binaries anderer OSe zurückgreifen.... zumindest theoretisch
Viel Spaß auf jeden Fall!