• Aktualisierte Forenregeln

    Eine kleine Änderung hat es im Bereich Forenregeln unter Abschnitt 2 gegeben, wo wir nun explizit darauf verweisen, dass Forenkommentare in unserer Heftrubrik Leserbriefe landen können.

    Forenregeln


    Vielen Dank

Betriebssystem selber Programmieren

Philthepro

Anwärter/in
Registriert
30.12.2006
Beiträge
32
Reaktionspunkte
0
Hi,
ich will mir mal ein Betriebssystem programmieren(ich muss alles ausprobieren). Nachdem ich bei
[www.kernel.org] einen Linux kernel geholt und sehr umständlich geöfnet hatte
kam ich nicht mehr weiter.
Wie muss ich weiter verfahren um ihn zum laufen zu bringen?
 
:rolleyes:

Wenn man (wie ich zumindest vermute) keine Ahnung von Linux hat, kann man beim Kompilieren eines eigenen Kernels eigentlich nur scheitern.


Meine Tipps:

1) Anhand einer Einsteigerdistribution wie Ubuntu erstmal mit den Grundlagen vertraut werden.

2) Dann auf eine komplexere Distribution wie z.B. Gentoo umsteigen.

3) Später, nach langer, langer Zeit, mal mit Hilfe von Linux From Scratch am "eigenen Linux" rumbasteln.


Damit dürftest du einige Zeit beschäftigt sein - viel Spaß!
 
Was hast du vor?

1. Einen eigenen konfigurierten Kernel zu erstellen ohne dabei die Sourcen (*.c Dateien) an sich zu veraendern?

2. Die Source umzuschreiben?


Falls 1: Du brauchst einen C Compiler um die Sourcen kompilieren zu koennen um am Ende ein Image vom Kernel mit all seinen integrierten Modulen zu erhalten, das du dann unter einer (GNU) Umgebung booten kannst. Der leichteste Weg waere es eine x-beliebige GNU/Linux Distribution zu installieren (zB. in einer Virtuellen-Maschine) und dann das Kernel-Image mit deinem zu ersetzen, bzw. einen neuen Eintrag im Bootmanager anzulegen.

Falls 2: Vermutlich kannst du die veraenderten Sourcen einfach mit einem auf Windows laufenden C Compiler kompilieren und oder debuggen.
 
Philthepro am 30.12.2006 18:30 schrieb:
ich will mir mal ein Betriebssystem programmieren

lol
Dann fang mal mit dem Informatikstudium an. Nach dem Vordiplom kannst du dann anfangen. Dazu solltest du dir vorher noch jenes zu Gemüte führen
http://www.amazon.de/Modern-Operating-Systems-2-e/dp/0130926418/sr=1-1/qid=1167615562/ref=sr_1_1/303-3308554-5272204?ie=UTF8&s=books-intl-de
Und ein Packen mit Büchern das in die Interna von IBM-kompatiblen PCs und des
x86er eingeht.

Also ich dir mal viel Spaß beim "mal ein BS programmieren". Wir hören dann in 5 Jahren von dir, nehme ich an?
 
Zork_Nemesis am 01.01.2007 02:43 schrieb:
Philthepro am 30.12.2006 18:30 schrieb:
ich will mir mal ein Betriebssystem programmieren

lol
Dann fang mal mit dem Informatikstudium an. Nach dem Vordiplom kannst du dann anfangen. Dazu solltest du dir vorher noch jenes zu Gemüte führen
http://www.amazon.de/Modern-Operating-Systems-2-e/dp/0130926418/sr=1-1/qid=1167615562/ref=sr_1_1/303-3308554-5272204?ie=UTF8&s=books-intl-de
Und ein Packen mit Büchern das in die Interna von IBM-kompatiblen PCs und des
x86er eingeht.

Also ich dir mal viel Spaß beim "mal ein BS programmieren". Wir hören dann in 5 Jahren von dir, nehme ich an?
Lol. Genau das gleiche hab ich auch grad gedacht. :finger:

@OP: zu nem Betriebssystem gehört sehr viel mehr als nur eine funky GUI. Hier eine *kleine* Liste von Zeugs was man beachten muss:

( 1. ) Filesystem:
FAT, ext2/3, NTFS, oder eine Eigenentwicklung? Wenn letzteres, ist Stabilität und Sicherheit gewährleistet? Ist das FS transaktionsorientiert/journalizing oder nicht? Ist Echtzeitfähigkeit implementiert? Wie schaut es aus mit Schutz gegen Datenverlust wenn beim Schreiben der Strom ausfällt?

( 2. ) Kernelarchitektur:
Monolithisch oder Mikro (Nano, Pico) oder Hybrid? Diese Entscheidung hat grundlegende Auswirkungen auf Treiberarchitektur und Performance bei allen Operationen die Ein-/Ausgabe in irgendeiner Art und Weise beinhalten.

( 3. ) Speicherverwaltung:
Wie wird der Arbeitsspeicher verwaltet? Wie werden Prozesse voneinander isoliert und die Speicherbereiche garantiert geschützt? Welche Art von Algorithmus wird beim Paging/Swapping eingesetzt? Auch das sind Grundlagen die die Geschwindigkeit und Stabilität jedes Speicherzugriffs beeinflussen.

( 4. ) Interprozesskommunikation:
Hier fängt schon an, dass sich die Punkte 2 und 3 treffen. Wie sieht die normale IPK aus? Sockets, Shared Memory, Pipes, oder was anderes? Wie werden fehlerhafte Verbindungen erkannt dass sie nicht das ganze System mitreissen wenn's mit ner Schutzverletzung knallt? (vgl Win95 :S )

( 5. ) Treiber:
Auch hier spielen die Punkte 2 und 3, allerdings jetzt auch noch Punkt 4 eine Rolle. Wie sind Treiber implementiert? Als Manifests? Als reguläre Prozesse? Als Kernelthreads?

Ich hoffe du siehst dass bei einem OS um einiges mehr dahintersteckt als einfach die GUI.

In diesem Sinne: Happy Coding. :P :D
 
Ra-Tiel am 01.01.2007 10:08 schrieb:
( 1. ) Filesystem:

( 2. ) Kernelarchitektur:

( 3. ) Speicherverwaltung:

( 4. ) Interprozesskommunikation:

( 5. ) Treiber:



???

Diese Punkte sind Nebensache...!
Zuerst muss das Coden sitzen.
Dann muss man etwas tun, was z.B. Linux bisher verschlossen geblieben ist:
Man muss alle Schritte genaustens aufzeichnen, um später auch noch überblick über das System zu haben.
Filesysteme sind z.B. genaustens beschrieben.

Größter Aufwand: Man benötigt die Grundlagen zur Programmierung der Hardware und muss diese auch verstanden haben.
Austauschbare Treiber benötigen genormte Schnittstellen etc.

Hinzu kommt, dass alleine das Eintippen des Sourcecode schon "Jahre" dauern kann. Alleine hat man also nicht all zu große Chancen.
Für ein Unix -Kernal Derivat hat es ja schon einmal gereicht. Es ist also nicht unmöglich.
 
IXS am 01.01.2007 10:35 schrieb:
???

Diese Punkte sind Nebensache...!
Du willst also ein OS nach der VHIT Methode programmieren, ohne dir vorher genau zu überlegen was du aus welchen Gründen am Besten wie machst? OMG! :ugly:

IXS am 01.01.2007 10:35 schrieb:
Zuerst muss das Coden sitzen.
Hab ich irgendwo gesagt dass es ohne Programmierkenntnisse geht? Sicherlich nicht.

IXS am 01.01.2007 10:35 schrieb:
[...] Filesysteme sind z.B. genaustens beschrieben.
Und das willst du machen ohne dir das FS vorher überlegt zu haben? ;)

IXS am 01.01.2007 10:35 schrieb:
Größter Aufwand: Man benötigt die Grundlagen zur Programmierung der Hardware und muss diese auch verstanden haben.
Auch sollte klar sein dass da ohne Assembler nix läuft. MS hat's mit Singularity geschafft das auf ein paar hundert Zeilen ASM einzugrenzen, aber ein Windows oder Linux Klon dürfte etliche tausend Assembler LOCs haben.

IXS am 01.01.2007 10:35 schrieb:
Austauschbare Treiber benötigen genormte Schnittstellen etc.
Und wo ist da bitteschön der Konflikt zu meinem Punkt 5? :confused:

IXS am 01.01.2007 10:35 schrieb:
[...] Es ist also nicht unmöglich.
Aber sicherlich unmögliche für "einen" das "mal eben" zu machen, wie es der OP so schön formuliert hat. :P
 
Zurück