Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
kernel:start [2008/10/06 15:30]
dirtyoerti Formatiert und Mail hinzugefügt
kernel:start [2022/09/22 19:58] (aktuell)
Zeile 1: Zeile 1:
-======Tutorial zur Programmierung eines eigenen Kernels======+====== ​LowLevel- und Kernelprogrammierung ​======
  
-Hier wird nach und nach ein Tutorial ​zur Kernelprogrammierung entstehen.+In diesem Abschnitt des Wikis ist ein Tutorial ​zum Programmieren eines eigenen Kernels zu finden. 
 +Außerdem wird hier mit der Zeit eine Art Informationsdatenbank zu Themen der Kernelprogrammierung entstehen.
  
-Die Informationen und das Wissen dazu habe ich ([[http://​forum.proggen.org/​memberlist.php?​mode=viewprofile&​u=65|Dirty Oerti]] - [[mailto:​daniel@proggen.org|Mail]]) mir beim Programmieren meines eigenen Kernels angeeignet. 
  
-Dieser Kernel befindet sich natürlich noch in Entwicklung,​ wer Interesse daran hat sollte sich den Code aus dem SVN-Repository laden und mich im [[http://​forum.proggen.org/​viewforum.php?​f=56|passenden Brett im Forum]] kontaktieren. +Das [[kernel:tut:start|Tutorial ist hier]] zu finden.
-Bei Fragen stehe ich auch gerne zur Verfügung.+
  
-SVN__svn.proggen.org/​kernel__+Es existiert auch eine [[kernel:knowledge:​start|Knowledgebase]] in der nach und nach Informationen zu allerlei Gebieten gesammelt werden.
  
 +Eine (noch nicht benutzbare!)[[kernel:​index|Indexseite steht dir hier]] zur Verfügung. Es wird noch etwas dauern, bis diese Seite sinnvoll genutzt werden kann.
  
-===Ziele und Motivation zu einem solchen ​Projekt===+Parallel zum Tutorial möchte ich hier auch noch eine kleine Vorstellung meines eigenen Projekts geben. Durch dieses ​Projekt ​bin ich an das Wissen gekommen und das Tutorial wird auch nach dem Prinzip meines Kernels aufbauen.
  
-Dies ist ein sehr wichtiges Kapitel. Bevor man überhaupt die erste Codezeile schreibt, bevor man überhaupt erste Informationen einholt sollte man sich darüber klar sein:\\ 
-//Warum möchte ich einen Kernel schreiben?//​ 
  
-Auf diese Frage kann man natürlich verschiedene Antworten bekommen. 
  
-//Wenn// die Antwort für dich lautet, weil es cool ist und ich ein super Betriebssystem haben will, dann darf ich dich auffordern diese Seite zu verlassen. Denn dann bist du hier falsch.\\ 
-In diesem Tutorial wird nicht erklärt, wie man ein super tolles Betriebssystem schreibt, das dann Windows und Linux und Unix und Mac OS und FreeBSD und wie sie alle heißen ablöst. 
-Ein solches Betriebssystem als einzelne, unerfahrene (ja, unerfahren, sonst würdest du das Tutorial nicht lesen) Person zu schreiben ist schlicht nicht möglich. 
-Dazu würde es eines gewissen Wissens bedürfen, und natürlich einer __sehr__ großen Anzahl an Programmierern,​ die alle genau wissen, was sie tun.\\ 
-Außerdem wird Linux, Windows und Co auch weiterentwickelt... 
  
  
-//Wenn// du ein sehr hübsches Betriebssystem nach deinen Wünschen haben möchtest, muss ich dich auch enttäuschen. Ein Kernel alleine wird nach **nichts** aussehen. +----
-Das Aussehen wird von der GUI (Graphical User Interface) bestimmt und ist für einen Anfänger in Sachen Kernelprogrammierung ein Thema, über das man sich nicht einmal Gedanken machen muss.\\ +
-Bis es soweit kommt, eine eigene GUI zu programmieren,​ dauert es eine **sehr** lange Zeit. +
-Ich selbst bin auch noch Lichtjahre von einer GUI entfernt, und wer weiß, ob ich überhaupt jemals eine (kleine) schreiben werde.+
  
- 
-//Wenn// deine Motivation darin besteht, dass du Erfahrungen sammeln und dir ein größeres Wissen über Computer aneignen willst, dann darf ich dich herzlich einladen weiter zu lesen. 
-Denn genau auf dies zielt dieses Tutorial ab. 
-Es möchte Wissen vermitteln.\\ 
-Wissen über ein großteils doch recht unbekanntes Thema. 
- 
- 
-//Wenn// deine Motivation darin liegt, zu wissen, wie man möglichst gut beim Programmieren des Linuxkernels mithilft, dann muss ich dich zumindest zum Teil enttäuschen.\\ 
-Um am Linuxkernel mithelfen zu können, sollte es nützlich sein, zumindest grundlegende Dinge über Kernelprogrammierung zu wissen. Diese Dinge können dir hier teilweise vermittelt werden. 
-Was du hier aber nicht erfährst sind spezielle Eigenheiten des Linuxkernels. 
- 
- 
-=====Grundlegendes zum Tutorial===== 
-===Was wird erwartet?​=== 
-Wenn du dieses Tutorial liest, erwarte ich von dir, dich mit Programmierung in C auszukennen. 
-Mit bestimmten Bibliotheken musst du dich nicht auskennen.\\ 
-Einfacher Grund: Wir werden **__alles__** selbst schreiben müssen. 
- 
-Grundlegende Assemblerkenntnisse sind auch nicht schlecht. 
- 
-PC-Kenntnisse sollten selbstverständlich sein. ;) 
- 
-===Aufbau=== 
-Die einzelnen Kapitel bauen auf einander auf. Es ist also empfehlenswert,​ das Tutorial von vorne an zu lesen. 
-Ich versuche dennoch, die einzelnen Kapitel möglichst allgemein zu halten, sodass man auch ohne genaue Kenntnis der vorherigen Kapitel etwas versteht. Allerdings wird und kann mir das nicht immer gelingen. 
- 
-Wenn du eine Übersicht möchtest, dann wird dir FIXME(in Kürze) eine Übersichtsseite zur Verfügung stehen, in der du alle Kapitel der Reihe nach aufgelistet vorfinden wirst. 
- 
-===Inhalt=== 
-Inhaltlich möchte ich sowohl stark auf den theoretischen Teil als auch stark auf den praktischen Teil eingehen. Viel Theorie aus dem Grund, da dieses Tutorial das Wissen über Kernelprogrammierung vemitteln möchte und nicht einfach nur ein Workshop dazu sein möchte. 
-Viel Praxis, da man manche Sachen einfach am besten mit Codebeispielen erklärt. Außerdem denke ich, dass viel Praxis hilfreich ist, sich in die Thematik einzugewöhnen. 
- 
- 
-=====Los geht'​s===== 
-Damit könnte es eigentlich auch schon losgehen! 
- 
-Das du eine funktionierende Arbeitsumgebung hast, setze ich vorraus. 
- 
-Ich compiliere meinen Code auf einem Ubuntu-Linux mit dem gcc.\\ 
-Für Assembler verwende ich NASM.\\ 
-Als Linker nehme ich ld.\\ 
-Den Code selber schreibe ich mit Kate, einem Editor.\\ 
-Die Codebeispiele sind auf eine solche Arbeitsumgebung angepasst und ich empfehle auch eine solche oder eine ähnliche Arbeitsumgebung. 
- 
-Fangen wir mit den [[kernel:​necessary_utilities|benötigten Werkzeugen]] an! 
- 
----- 
-**<​Index>​ | [[kernel:​necessary_utilities|<​Weiter>​]]**