Ueber Minix - Von Martin Ebnöther
Geschichte
Minix wurde 1989 von Andrew S. Tanenbaum geschrieben. Tanenbaum ist
Professor für Mathematik und Computerwissenschaften an der Vrije
Universiteit in Amsterdam, wo er unter Anderem Networking und
Betriebssystemdesign unterrichtet. Es ist entweder über Internet
downloadbar oder zusammen mit dem Buch "Operating Systems: Design and
Implementation" von Andrew S. Tanenbaum und Albert S. Woodhull, erschienen
bei Prentice-Hall erhältlich. Seit einigen Monaten ist Minix unter die
BSD-Lizenz gestellt worden und damit freie Software.
Minix war gedacht, als praktisches Beispiel zu dienen, wie ein
Betriebssystem programmiert wird. Es ist ein Unix-Clone und wurde von
Tanenbaum von Grund auf selbst geschrieben, benutzt also keinerlei Code von
AT&T. Es ist Multitasking und Multiuserfähig, wie es sich für ein
Unix-System gehört. Ausserdem richtet es sich nach dem POSIX-Standard.
Tanenbaum wurde zwar von hunderten Leuten mit Patches und Erweiterungen zu
Minix bombardiert, aber da er kein grosses Betriebssystem sondern ein
kleines, überschaubares System zum Lernen wollte, wurden eigentlich so gut
wie alle zurückgewiesen. So erstaunt es nicht, dass Linus Torvalds mit Linux
die ganzen willigen Leute auf seine Seite zog, was Tanenbaum wohl dazu
veranlasste, die Mail zu schreiben, welche den grossen Flamewar zwischen Torvalds und
Tanenbaum auslöste. Inzwischen sind die alten Streitereien längst beigelegt.
Tanenbaum zu Linux in seiner persönlichen FAQ:
What do you think of Linux?
I would like to take this opportunity to thank Linus for producing it.
Before there was Linux there was MINIX, which had a 40,000-person newsgroup,
most of whom were sending me email every day. I was going crazy with the
endless stream of new features people were sending me. I kept refusing them
all because I wanted to keep MINIX small enough for my students to
understand in one semester. My consistent refusal to add all these new
features is what inspired Linus to write Linux. Both of us are now happy
with the results. The only person who is perhaps not so happy is Bill Gates.
I think this is a good thing.
Uebersetzung:
Was denken Sie von Linux?
Ich möchte diese Gelegenheit nutzen, um Linus Torvalds dafür zu danken, dass
er es geschrieben hat. Vor Linux war MINIX mit seiner 40'000 Leuten in der
Newsgroup, von denen mir die meisten täglich E-Mails geschrieben haben. Ich
war nahe daran, verrückt zu werden ob dem endlosen Strom neuer Features,
welche die Leute in Minix eingebaut haben wollten. Ich habe sie alle
zurückgewiesen, weil ich Minix klein und überschaubar halten wollte. Meine
stetige ablehnende Haltung gegenüber neuen Features war es, welche Linus
dazu gebracht haben, Linux zu schreiben. Wir beide sind zufrieden mit
unseren Resulatetn. Die einzige Person, welche nicht so zufrieden ist, ist
Bill Gates. Ich denke, das ist gut so.
Hardwareanforderungen und -unterstützung.
Hier muss man unterscheiden zwischen Minix-16, Minix-32 und Minix-VMD.
Minix-16 läuft auf XT (8088, 8086), AT (80286) und der ganzen i386
Architektur. Es kommt mit minimal 640 KByte aus, es gibt sogar Anleitungen,
wie man es mit 512 KByte noch benutzen kann. Sehr angenehm ist es dabei
allerdings nicht mehr.
Minix-32 und Minix-VMD benötigen mindestens 32-Bit Architektur, also
mindestens eine 80386 CPU und mindestens 2 MByte RAM.
Unterstützt werden IDE und SCSI-Harddisks, CDROM-Laufwerke, Sound Blaster 16
Karten und eigentlich alle Grafikkarten, da es nur im Textmodus läuft.
Ausserdem unterstützt es NE2000, 3Com 3c503 und DP8930 ISA Ethernetkaren.
Ich betreibe Minix-16 auf einem 80286 Laptop, ein Chicony LT3600. Diese
spezielle Maschine ist einigen Leuten unter dem Namen "Opa" bekannt. Die CPU
ist mit 20 MHz getaktet. Ausserdem verfügt die Maschine über 5 MByte RAM,
eine 212 MByte IDE-Harddisk und einen ISA-Slot (!) welcher mit einer NE2000
Netzwerkkarte bestückt ist. Für Minix-16 ist dies schon fast eine
Powermaschine.
Welches Minix für was?
Minix-16 ist das Minix für die alten und kleinen Systeme wie XT und AT. Es
kann bis 16 MByte RAM und Partitionen bis zu einer Grösse von 128 MByte
verwalten. Zudem hat es eine Beschränkung auf 14 Zeichen lange Dateinamen.
Minix-32 benötigt eine 32-Bit Architektur, also mindestens einen 80386
Prozessor. Es kann bis 4 GByte RAM und Partitionen bis zu einer Grösse von 1
GByte verwalten.
Die aktuelle Version von Minix-16 und Minix-32 ist 2.0.3, welche am 2.
Oktober 2001 veröffentlicht wurde.
Minix-VMD ist eigentlich eine inoffizielle Version von Minix. Es basiert auf
Minix-32 1.7.0 und wurde von Kees J. Bot ein wenig erweitert. Der grösste
Unterschied zu den beiden Standard-Minixen ist, dass Minix-VMD über
virtuellen Speicher (Swap) verfügt. Damit lässt sich dann sogar eine
ebenfalls übers Internet erhältliche ältere Version von X11 betreiben!
Installation
Die Installation ist nicht ganz so einfach, für den erfahrenen Hacker aber
kein Problem.
Nachdem man sich die Disk-Images für Root- und Bootfloppy (Usr), sowie für USR und
SRC heruntergeladen und auf Disketten geschrieben hat bootet man die
Root-Disk, womit der Minix-Bootmonitor gestartet wird. Nach einer Weile wird
man gefragt, welches Device als /usr gemountet werden soll. Sofern man nicht
über ein zweites Floppylaufwerk verfügt, sollte man hier die Usr-Disk
reinschieben und den Pfad zum Device auf /dev/fd0 vervollständigen. Nach
einem weiteren Moment erscheint der Login-Prompt und man kann sich als root
einloggen.
Nun gibt es zwei Möglichkeiten, Minix zu installieren. Es gibt die
komfortable automatische Version oder die lehrreiche Manuelle. Bei mir hat
die automatische Installation nie so richtig funktioniert, darum beschreibe
ich hier kurz, wie man dies von Hand vornimmt.
Zuerst muss man die Harddisk partitionieren mit "part". Die Aufteilung ist
ähnlich wie bei Linux. Zu beachten ist, dass Minix-16 nur Partitionen bis zu
einer Grösse von 128 MByte und Minix-32 sowie Minix-VMD bis zu 1 GByte
verwalten können.
Nachdem man die Partitionen eingerichtet hat, muss man die beiden Disketten
auf die entsprechenden Partitionen kopieren, was nur durch einiges ummounten
geschehen kann. Zuerst kopiert man die USR-Disk auf die Partition, die
später als /usr gemountet werden wird, dann der Inhalt der Root-Disk nach
der Partition, die als / gemountet wird.
Dann bottet man erneut von der Root-Diskette, gibt nun aber die HD Partition
an, welche als /usr gemountet werden soll. Dann muss man mit installboot den
Bootmonitor in den Masterbootrecord (MBR) schreiben.
Hat man das getan, muss man die Partitionen in /etc/fstab eintragen. Mein
fstab sieht so aus:
# cat fstab
# Poor man's File System Table.
root=/dev/hd1
usr=/dev/hd2
Die dritte Partition wird per mount /dev/hd3 /home in der Startdatei /etc/rc
gemountet.
Danach kann man das System nun ab Harddisk booten.
Konfiguration des Netzwerks
Netzwerk in Minix wird oft als kompliziert angesehen, aber wie so oft mit
Unix ist es ganz einfach, wenn man weiss wie es geht. In Minix-VMD habe ich
es bisher nicht hinbekommen, allerdings hatte ich auch noch nicht gross
Zeit, mich damit auseinanderzusetzen.
In Minix-16 und Minix-32 geschieht die Konfiguration genau gleich. Zuerst
muss man den Kernel darauf vorbereiten. Dazu editiert man die Datei
/usr/include/minix/config.h. Am Besten macht man eine Kopie von dieser
Datei, denn zu grobes Herumfummeln kann einem das System zerschiessen.
Diese Linie beinhaltet den Trick.
#define ENABLE_NETWORKING 1 /* enable TCP/IP code */
0 schaltet es aus, 1 schaltet es ein. Ebenso sollte man diese Zeile anpassen
#define NR_CONS 6 /* # system consoles (1 to 8) */
Hier muss man dann noch mit MAKEDEV die entsprechenden Devices in /dev
generieren, die tty in /etc/ttytab eintragen und schon hat man statt zwei
sechs virtuelle Konsolen.
Hat man den Kernel in config.h so konfiguriert wie es einem gefällt, muss
man nach /usr/src/tools wechseln, wo man dann den Befehl make hdboot
eingibt, was dann den Kernel compiliert und ans rechte Ort, nämlich /minix
kopiert. Dabei wird die Nummer um eins hochgezählt, wie 2.0.0r0, 2.0.0r1
etc. Jedoch werden immer nur zwei Kernels behalten. Wie das genau passiert
sieht man im Shellscript unter /usr/src/tools/mkboot.
Wenn der Kernel fertiggebacken ist (dauert auf Opa rund eine Stunde) muss
man dem Bootmonitor sagen, dass er nun diesen verwenden soll. Dazu hält man
die Maschine an, schreibt den Pfad im Bootmonitor in die Variable image, mit
"image = /minix/2.0.0r1" oder so. Gleichzeitig sollte man die Netzwerkkarte
anmelden mit "DPETH=300:10" wobei 300 für die Adresse, 10 für den IRQ steht.
Hier bitte die Werte der jeweiligen Netzwerkkarte einfügen. Meine ist
jumperbar, drum weiss ich immer, wo sie ist. Dann noch save, damit die Werte
abgespeichert werden und nun kann man neu booten.
Während des Bootvorgangs sollte nun die Netzwerkkarte erkannt werden sowie
einige zusätzliche Dämonen gestartet werden. Nun braucht man nur noch per
ifconfig der Karte eine IP-Adresse zuzuweisen soweie die route festzulegen
und in /etc/resolv die IP des Nameservers einzutragen. Damit ich das nicht
jedesmal von Hand machen muss habe ich mir ein Script unter /etc/rc.net
gebastelt, welches ich von /etc/rc ausführen lasse. Es sieht so aus:
ifconfig -h 192.168.1.105 -n 255.255.255.0
add_route -g 192.168.1.98
Den Hostnamen bezieht Minix vom Nameserver. Falls es keinen gemeldet bekommt
zeigt es beim Loginprompt einfach die IP-Adresse.
Anwendungen, Programme
Es gibt verschiedene Anwendungen für Minix. Mitgeliefert mit der
Grundinstallation wird ein ftpd. Wieviel Traffic er bewältigen kann ist
nicht näher spezifiziert, für einen Low-Traffic-Server sollte es jedoch
reichen. Natürlich spielt hier auch die eingesetzte Hardware eine Rolle.
Weitere Applikationen, die ich gefunden habe sind unter Anderem ein
Webserver mit dem fantasievollen Namen httpd, den Michael Temari
geschrieben hat.
Ausserdem gibt es endlich einen rudimentären, aber brauchbaren IRC-Client.
Sein Name ist minirc und er wurde von Stian Sletner programmiert. Man findet
ihn hier:
ftp://ftp.sletner.com/pub/minix/minirc.tar.Z
Diese Liste ist in keiner Weise vollständig.
Weitere Informationen
Es gibt eine Newsgroup, wo man sich bei Problemen, die nicht in irgendeiner
Anleitung beschrieben worden sind, hin wenden kann. Diese ist comp.os.minix.
Hier lesen unter anderem Andrew S. Tanenbaum, Al Woodhull, Kees J. Bot und
diverse andere aktive Minix-Entwickler mit. Auch Linus Torvalds liest mit
und schreibt ab und zu etwas, vorallem wenn mal wieder jemand nach der
Minix-Version von gcc fragt.
Hier gibts eine
kleine
Uebersicht.
Viele Tips und Tricks gibts auf Al Woodhull's
Seite.
Die
offizielle Minix-Webseite wird von Andrew S. Tanenbaum betrieben.
Hier kann man Minix-16 und Minix-32 downloaden und hier bekommt man Minix-VMD.
Zu der Behauptung, Minix sei tot, noch ein kurzes Statement von Tanenbaum:
Is MINIX dead?
Oh no. Far from it. It is simply focused on the target area it was always
focused on: education. The excursion into hackerland was a detour. A
co-author, Al Woodhull, and I have rewritten the MINIX book based on the
new, POSIX-compliant, version of MINIX which Kees Bot produced. It is still
be aimed at having students be able to learn the principles of operating
systems and most of a real system in one semester.
In deutsch:
Ist Minix tot?
Aber nein. Sogar ziemlich weit davon entfernt. Es ist einfach sehr
zielgerichtet, und sein Ziel ist klar: Bildung. Der Ausflug ins Hackerland
war eine Umleitung. Ein Co-Autor, Al Woodhull und ich haben das MINIX Buch
neu geschrieben, basierend auf der neuen, POSIX-unterstützenden Version von
Kees Bot. Es richtet sich immer noch an Stunden, welche das Prinzip von
Betriebssystemen und das Meiste eines echten Systems in einem Semester
lernen wollen.