Minix in Qemu

Ich möchte das Betriebssystem Minix in der Version 3 im Laufe dieses Jahres ein wenig genauer unter die Lupe nehmen.
Minix basiert auf einem µKernel (im Gegensatz zu monolithischen Betriebssystemen wie Windows, Linux, BSD), der lediglich 3800 Zeilen Code umfasst. Ein einziger Mensch kann ihn also komplett verstehen. Wenn man bedenkt, dass auf 1000 Zeilen Code durchschnittlich 6 Bugs zu beklagen sind und monolithische Kernel Millionen Zeilen Code umfassen (Linux wahrscheinlich um die 4 Millionen und immer mehr kommt hinzu), dann wird klar, dass die Idee des µKernel ziemlich schlau ist.
Abgesehen von einigen grundlegenden Mechanismen (Interrupt Handling, Scheduler, Prozesse starten/stoppen) ist die gesamte Funktionalität (Driver, Files, Memory, Network, Shell) in User-space Prozesse ausgelagert, die von einem Reincarnation Server überwacht werden. Schmiert ein Prozess ab, wird er vom Reincarnation Server wieder gestartet.

In einem ersten Schritt nun Minix in einer virtuellen Qemu-Maschine laufen lassen (unter Ubuntu):

  1. Minix Image holen

    $ wget --tries=inf http://cd.minix3.org/download/IDE-3.1.1.iso.bz2
    $ bunzip2 IDE-3.1.1.iso.bz2
  2. Qemu installieren

    # aptitude install qemu
  3. Qemu Image bauen

    $ qemu-img create minix.img 1G
  4. Minix installieren

    $ qemu -localtime -net user -net nic -m 128 -cdrom IDE-3.1.1.iso -hda minix.img -boot d
  5. Minix starten

    $ qemu -localtime -net user -net nic -m 128 -cdrom IDE-3.1.1.iso -hda minix.img -boot c

Läuft schon sehr flott.
Hier noch das grundlegende Minix Paper.
Und wers wirklich wissen will, der muss das Buch Operating Systems Design and Implementation (3rd Edition) von Tanenbaum und Woodhull lesen. Liegt bei mir irgendwo rum. Ich werde es lesen. Noch dieses Jahr.