minix 3.1.1


Unterpunkte dieser Seite

Minix 3 on QEmu
Dateien von minix nach windows kopieren
Arbeiten mit Minix 3
Benutzer
Gruppen
Editor elle - emacs clone
Minix Editor - mined
vi
emacs
Software installieren
bzip2
Controller, Disk, Partition
cc - der C Compiler
Internet einrichten
Die Almquist Shell ash
Eclipse und CDT installieren
Ein Projekt für Minix anlegen
doxygen

Minix 3 on QEmu

  1. download qemu for windows
  2. extract the archive to c:\program files
  3. execute
  4. cd c:\program files\qemu-0.9.1-windows qemu-image create minix.img 2G
  5. download minix-3.1.0-book.iso.bz2 from the minix 3 homepage
  6. http://www.minix3.org/download/
  7. extract the iso archive into the qemu folder
  8. (WinRAR can handle the bz2 compression)
  9. Start the installation process
  10. qemu will read the iso as if it was burned to a cdrom and as if this cdrom was put into the cdrom drive of the emulated pc. Then the previously created two gigabyte minix.img is used as harddrive and is used as destination of the minix setup process. After the minix os has been installed, qemu will boot from the emulated harddrive directly into the minix installation stored on the minix.img file.
    1. qemu -L . -localtime -net user -net nic -m 128 -cdrom minix-3.1.0-book.iso -hda minix.img -boot d
    2. login as root (no password) and run setup by entering setup
    3. Note 1: If the screen blanks, hit CTRL+F3 to select "software scrolling".
      Note 2: If things go wrong then hit CTRL+C to abort and start over.
      Note 3: Default answers, like [y], can simply be chosen by hitting ENTER.
      Note 4: If you see a colon (:) then you should hit ENTER to continue.
    4. choose Realtek 8029 as ethernet card
    5. On the emulation, checking for bad blocks can be discarded via CTRL+C.
    6. type shutdown and then close qemu
  11. restart qemu using the command line
  12. qemu -L . -localtime -net user -net nic -m 256 -cdrom minix-3.1.0-book.iso -hda minix.img -boot c
    -boot c tells qemu to boot from harddrive, which has been specified as -hda minix.img
  13. hit esc when the bootloader displays the boot options
  14. you get a prompt d0p0s0> This is the qemu prompt type qemu_pci=1 save boot This activates the network card and boots linux. You only have to do this once.
  15. you can login as root (no password)
  16. Weitere Starts des installierten minix 3
  17. qemu.exe -L . -localtime -net user -net nic -m 128 -hda minix.img -boot c
  18. minix 3 und QEmu beenden
    1. loggen sie sich aus und als root Benutzer ein.
    2. Nur der root Benutzer kann den halt Befehl ausführen. halt beendet minix. Sie befinden sich danach im QEmu Simulator.
    3. Geben Sie den QEmu Befehl off ein um QEmu zu beenden

Dateien von minix nach windows kopieren

http://oslab.hpclab.ceid.upatras.gr/files/2006/Minix_over_QEMU-Windows_HOWTO.html

Das Programm DiskEditor ist ein eigenständiges Programm, dass nicht bei qemu oder minix dabei ist und separat von http://hp.vector.co.jp/authors/VA013937/editdisk/index_e.html heruntergeladen werden muss.

Da sich windows und minix nicht verstehen, kopieren wird die Datei auf eine virtuelle Diskette und von dort in das Windows Datei System.
  1. Beenden Sie Minix und QEmu
  2. Als root einloggen, shutdown, off
  3. Disk image
  4. Besorgen Sie sich ein 3,5 Zoll Disk image z.B. von http://www.allbootdisks.com/download/dos.html Es muss eine .img Datei sein.
  5. Diskette in virtuelles Diskettenlaufwerk einlegen
    qemu.exe -L . -localtime -net user -net nic -cdrom minix3_1_2a_ide_build2.iso -m 128 -hda minix.img -fda disk.img -boot c
    
  6. doswrite verwenden
  7. Die Diskette muss nicht gemountet werden! Statt dessen verwendet man doswrite. doswrite schreibt ohne mounten auf eine Diskette!
    cat ./test.txt | doswrite /dev/fd0 test.txt
    
    doswrite schreibt alles von stdin auf die Diskette. Der obige Befehl schreibt die Datei text.txt auf die Diskette und dort in eine Datei namens test.txt. Der Befehl besteht aus dem Aufruf von cat welches Dateien auf stdout ausgibt. stdout von cat wird auf doswrite gepiped. Die pipe schreibt Daten auf stdin von doswrite. doswrite hat zwei parameter. Der erste ist das device und der Zweite der name der Datei auf dem device, die geschrieben werden soll.
  8. Diskexplorer starten
  9. Disketten img öffnen, plain auswählen, hier befindet sich jetzt die geschriebene Datei.

Arbeiten mit Minix 3

Programme in /usr/bin
DESCRIBE M MAKEDEV U [ aal acd add_route adduser advent anm apropos ar arc ash asize at atnormalize autopart awk backup badblocks banner basename bc bigmake binsizes bsfilt cal calendar cat cawf cc cd cdiff grep checkhier chfn chgrp chmem chmod chown chroot chsh ci cksum cleantmp clear clone clr cmp co colort comm command compress cp cpdir crc cron crontab ctags cut date dd de decomp16 del_route devsize df dhcpd dhrystone diff dirname dis88 dosdir dosread doswrite du easypack - downloads and installs packages echo ed edparams egrep eject elle ellec elvis elvprsv elvrec env ex expand expr factor false fdisk fgrep file find finger fix floppysetup fmt fold format fortune fsck fsck1 fstat ftp ftpdsh ftpget getopts getty gomoku grep halt head host hostaddr httpget id ifconfig ifdef in.fingered in.ftpd in.rlogind in.rshd in.telnetd indent install installboot intr irdpd isodir isoinfo isoread join kill last leave life ln loadfont loadkeys login look lp lpd ls m2 m4 mail make makewhatis man mdb mesg mined mixer mkdep mkdir mkdist mkfifo mkfs mknod mkproto mkswap modem more mount msh mt mtools mv nice nm nonamed nroff od part partition passed paste patch pc ping playwave postmort pr pr_routes prep printenv printf printroot progressbar proto ps pwd rarpd rcp rdate read readall readclock readfs reboot recwave ref remsync repartition restore rev rget rlogin rm rmdir rotate rput rsh rz screendump sdump sed setup setup.anonftp sh shar shutdown size sleep slip sort spell split srccrc stat strings strip stty su sum svclog swapfs sync synctree sysenv sz tail talk talkd tar tcpd echo $PATH - Umgebungsvariable ausgeben
pwd - aktuelles Verzeichnis ausgeben
ls - Verzeichnisse, Dateien anzeigen
whoami - user ausgeben
cd - change directory
su ast - werde ast user
exit - verlasse Benutzer, werden vorheriger Benutzer, schießlich logout
su root - werde root user
more - Dateien anzeigen
elvis, elle - editoren
Alt+F1 - console Alt+F2 - ttyc 1 virtual terminal
Alt+F3 - ttyc 2 virtual terminal
Alt+F4 - ttyc 3 virtual terminal
Ctrl+d - logout
rm - remove files and directories
halt - terminates the minix 3 os

Benutzer

Die Datei /etc/passwd enthält die Liste aller Benutzer des Systems. Nach der Installation gibts es im Minix System einige Benutzer. root (kein Passwort) ist der admin account. ast ist ein Benutzer der dem Programmierer der Systems Andrew S. Tannenbaum als Honoration dienen soll.

Einen neuen Benutzer kann man mit adduser wb other /home/wb hinzufügen. Dabei wird der login wb erstellt und in die Gruppe other eingetragen. Das Homeverzeichnis ist /home/wb. Das Passwort ist leer und kann mit dem passwd Befehl geändert werden. Die Shell kann mit chsh geändert werden. Der Fullname des Accounts kann mit chfn geändert werden. Der Fullname ist das GECOS field) in der /etc/passwd Datei. Der Fullname wird verwendet bei ???

Gruppen

Die Datei /etc/group enthält alle Gruppen, die eingerichtet sind.

elle - emacs clone editor

The .ellepro.b1 file configures elle. As your account was cloned from /usr/ast when it was created and /usr/ast contains a really ill configured .ellepro.b1, your elle is also ill-configured. To get normal elle behaviour, delete .ellepro.b1 from your home directory. Elle is configured by editing a .ellepro.e text file and then compiling it with the ellec program. You also get a .ellepro.e file from /usr/ast to start from.

elle - elle starten
Ctrl+s - fork off a shell, Ctrl+d to get back to the editor
Ctrl+g - abort command
Ctrl+w - kill wird
Ctrl+d - delete line under cursor
Entf/Del - delete character to the left of cursor and move cursor to the left one character Ctrl+a - move cursor to the begining of line
Ctrl+e - move to end of line
Ctrl+f - move cursor right on character
Esc + f - forward word (Esc muss mit f simultan gedrückt werden!) Ctrl+b - move cursor left on character
Esc + b - backward word (Esc muss mit b simultan gedrückt werden!) Ctrl + p - up one line Ctrl + n - down one line Ctrl+x Ctrl+c - exit elle
Ctrl+x Ctrl+s - save buffer to current file (Save)
Ctrl+x Ctrl+w - write buffer to new file (Save As)
ä - delete right of cursor, shift sentence to the right of cursor left

Minix Editor - mined

Warum kann mined kein word wrap?
Strg + x - quit mined

vi

vi startet im Command mode. a oder i versetzt vi in den insert mode, in dem man Text eingeben kann. Man wechselt vom Insert in den Command mode, indem man ESC drückt.

Kommando Modus:
:w - save
:q - exit vi, a warning is displayed if the buffer has unsaved changes
:q! - exit vi without saving file
:e Dateiname - öffnet Datei
j - eine Zeile runter
k - eine Zeile rauf
l - ein Zeichen rechts
h - ein Zeichen links
w - ein wort rechts
b - ein wort links
Shift + x - Zeichen links vom Cursor löschen
x - Zeichen rechts vom Cursor löschen
Shift + ( - Springe zum Anfang eines Satzes innerhalb einer Zeile. Sätze sind dabei durch Punkte getrennt. Shift + ) - Springe zum Ende einer Zeile.

Insert modus
Esc - wechselt in Kommando Modus

emacs

Software installieren

ACHTUNG:Für diesen Abschnitt benötigen Sie eine funktionierende Internetverbindung!

http://www.minix3.ucsc.edu/wikis/minix3/InstallationNotes

Software wird über eine Onlineverbindung mit dem Programm easypack installiert. easypack ist im Umfang von Minix 3 enthalten und schreibt die Quellcodes der Pakete in /usr/src/commands um sie dann zu übersetzen. Da /usr/src/commands dem bin Benutzer gehört, muss man sich als bin einloggen um easypack zu verwenden. Man muss die Namen der Pakete kennen, die man installieren will. http://www.minix3.org/software listet verfügbare Pakete auf. Man gibt dann einfach den Namen des Paketes als Parameters für easypack an:
easypack emacs-21.4
easypack ist ein script. Sie können sich das Skript unter http://www.minix3.org/download/easypack ansehen. packman installieren als Benutzer bin:
urlget http://www.minix3.org/download/packman > /usr/bin/packman
cd /usr/bin
chmod ugo+x packman
packman ist ein Skript. Sie können sich das Skript unter http://www.minix3.org/download/packman ansehen. Falls ihre Internetverbindung fehlerhaft konfiguriert ist, wird urlget keinen Fehler liefern sondern die Antwort, die es auf seine Anfrage erhalten hat, in die Datei /usr/bin/packman schreiben. Bei mir kam vom Provider eine Fehlermeldung zurück, die urlget dann in die Datei geschrieben hat. Sehen Sie sich den Inhalt von /usr/bin/packman genau an (more /usr/bin/packman). Dieser Inhalt muss identisch mit dem Inhalt von http://www.minix3.org/download/packman sein, wenn Sie die URL über eine funktionierende Internetverbindung mit einem Browser betrachten.

packman installiert oder offline über die Installations CD mittels des Programms packit. packman ist unter minix 3.1.2a enthalten aber nicht auf der minix-3.1.0-book.iso. Die minix-3.1.0-book.iso enthält ebensowenig das Verzeichnis /mnt/install/packages. Daher können Sie packman oder andere Programme auch nicht von dieser CD nachinstallieren. Sie können bei Installierten minix-3.1.0-book.iso aber ein anderes ISO herunterladen und mounten. Wenn Sie bspw. das minix3_1_2a_ide_build2.iso verwenden, können Sie von dort packman installieren. Dazu müssen Sie aber erst packit mit urlget herunterladen, da packit auch nicht im Installationsumfang von minix-3.1.0-book.iso enthalten ist.
urlget http://marcoslot.net/files/minix/3.1.3/packages/i386/ > 
urlget http://marcoslot.net/files/minix/3.1.3/packages/i386/packit.tar.bz2 > /root/packit.tar.bz2


Im Folgenden wird angenommen, dass Sie Minix unter qemu betreiben und nicht die minix-3.1.0-book.iso verwendet haben um Minix zu installieren und diese CD auch nicht mounten.

  1. CD einlegen
  2. Um die CD zu mounten muss sie zunächst in das virtuelle CD-Laufwerk eingelegt werden. Starten Sie qemu dazu mit dem -cdrom minix3_1_2a_ide_build2.iso flag und dem -boot c flag.
  3. Als root einloggen
  4. CD mounten
  5. Die CD wird nicht automatisch, wie unter Windows, zugänglich. Man muss Sie mounten. Beim mounten tauscht man den Inhalt eines Verzeichnisses V1 im Dateisystem durch das Hauptverzeichnis V2 des Dateisystems auf der CD-Rom aus. Wenn man dann in das Verzeichnis V1 wechselt landet man in V2, als ob sich hinter einer Tür plötzlich ein anderer Raum befindet. Der Inhalt des alten Verzeichnisses ist temporär nicht erreichbar, daher verwendet man für V1 meist leere Verzeichnisse. Es gibt ein speziel für das Mounten vorgesehens Verzeichnis namens /mnt.
    Mounten Sie die CD-Rom mit dem Befehl
    mount -r /dev/c0d2p2 /mnt
    
  6. Paket aussuchen
  7. Die verfügbaren Pakete befinden sich im Verzeichnis /mnt/install/packages. mit ls -la können sie alle Dateien auflisten. Da die Liste mehr als einen Bildschirm füllt und Sie nicht scrollen können sollten Sie
    ls -la | more
    
    ausführen. more erlaubt es die Ausgabe seitenweiße zu betrachten. Angenommen Sie finden ein Paket emacs-21.4.tar.bz2, das Sie installieren möchten.
  8. Paket installieren
  9. packit emacs-21.4.tar.bz2
    
  10. cd unmounten
  11. umount /dev/c0d2p2
    

bzip2

Entpacken. file.bzip2 wird file
bunzip2 file.bzip2

Controller, Disk, Partition

boot c0d0p0
Means booting from controller 0, disk 0, partition 0

cc - der C Compiler

Internet einrichten

Die Almquist Shell ash

Die ash ist nach der Installation als Shell für Benutzer eingestellt.

Das Setzen des Prompts ist mir leider noch nicht gelungen. Die Zeile
export PS1=$(whoami)"@"$(pwd)">"
führt zwar die Befehle whoami und pwd aus, schreibt aber den so entstandenen String in die Umgebungsvariable PS1. PS1 wird in der Konsole als erstes in jeder Zeile angezeigt und bildet damit den Prompt. Leider wird unter ash und minix PS1 nicht neu ausgewertet, wenn man ein Verzeichnis wechselt oder den Benutzer ändert. Damit bleibt der String fest in PS1 und zeigt nicht das aktuelle Verzeichnis oder den Benutzer an.

Eclipse und CDT installieren

Laden Sie Eclipse 3.2 herunter und installieren Sie es (Eclipse wird durch bloßes entpacken installiert.). Damit Sie in Eclipse ein C Projekt bearbeiten können brauchen Sie ein C/C++ Plugin. Hier wird CDT verwendet. Wählen Sie im gestarteten Eclipse (Version 3.2) den Menüpunkt Help > Software Update > Find and Install. Wählen Sie den Punkt "Search for new features and install" und klicken Sie auf Next. Klicken Sie auf den Knopf "New remote site". Geben Sie als Name z.B. CDT an und als Adresse http://download.eclipse.org/tools/cdt/releases/callisto. Klicken Sie auf finish und wählen Sie Esslingen aus. Als Installationsordner können Sie einen beliebigen Ordner in ihrem Home-Verzeichnis angeben. Akzeptieren Sie alles auch wenn es keine Signatur gibt und starten Sie Eclipse neu.

Ein Projekt für Minix anlegen

Es wird in CDT zwischen Managed und Standard Projekts unterschieden. Bei Managed Projekts wird eine Makefile von Eclipse passend zu den Dateien im Projekt erstellt. Bei einem StandardProjekt muss man diese Datei selber erzeugen. Da der SourceCode von Minix eine eigene makefile hat, werden wir ein Standard Projekt C (nicht C++) erstellen und diese Makefile verwenden. Die makefile befindet sich in /src/tools und heißt Makefile.

doxygen

Installation und Anwendung
Für doxygen gibt es eine vorcompilierte Variante, die sogenannten Binaries. Nach dem man sie heruntergelanden und entpackt hat kann man sie als root mit dem Befehl
./configure
make install
installieren. Das Programm wird standardmäßig nach /usr/local/bin/doxygen installiert.
Um ein Projekt zu dokumentieren, ruft man zunächst
doxygen -g
z.B. im Hauptverzeichnis des Projekts auf. doxygen produziert nun eine Standardkonfigurationsdatei names Doxyfile, die die Arbeitsweise von Doxygen steuert. Mit dieser Datei kann man doxygen nun erneut aufrufen.
doxygen Doxyfile
Doxygen durchforstet nun das Projektverzeichnis und erzeugt im Ordner ./html die Dokumentation. Falls man nicht möchte das Latex Documentation erstellt wird, so editiert man die Datei Doxyfile und sucht den Schlüssel GENERATE_LATEX und setzt den Wert des Schlüssels auf NO.
Wenn man Doxygen nur mit dem Befehl doxygen Doxyfile aufruft, so sucht doxygen nach zu dokumentierenden Quellen in den Werten des Schlüssels INPUT in der Konfigurationsdatei (Doxyfile). Standardmäßig ist dort kein Wert eingetragen und doxygen untersucht somit nur das Verzeichnis in dem es aufgerufen wurde. Man muss also die Konfigurationsdatei bearbeiten und alle gewünschten Ordner eintragen. Den Ausgabeordner kann man mit dem Schlüssel OUTPUT_DIRECTORY anpassen (z.B. auf doc)
C Programme dokumentieren mit doxygen
doxygen ist in der Standardeinstellung auf C++ optimiert. Um C Programme zu dokummentieren sollte man folgende Anpassungen in der Konfigurationsdatei (Doxyfile) vornehmen:
EXTRACT_ALL YES
OPTIMIZE_OUTPUT_FOR_C YES
JAVADOC_AUTOBRIEF YES
JAVADOC_AUTOBRIEF hat nichts direkt mit C zu tun sondern erlaubt in JavaDoc Kommentaren das erstellen des brief Kommentars indem man eine Zeile mit einem Punkt abschliesst.
Um eine Datei zu dokumentieren ist es nicht nötig irgendwas zu tun, da doxygen das automatisch tut. Möchte man allerdings, das ein brief Kommentar neben dem Dateinamen in der Dokumentation auftaucht, dann muss man folgendes in der Kopfkommentar der Datei schreiben.
/** 
 * \file main.c
 * 
 * \brief This is the brief comment.
 * 
 * This is the detailed
 * comment which is detailed.
 */
Hierbei gibt es zwei Sachen zu beachten.
  1. hinter \file muss der tatsächliche Name der Datei stehen sonst verweigert doxygen seinen Dienst.
  2. Die Zeile \brief muss mit einem Punkt abgeschlossen werden sonst verweigert doxygen seinen Dients.

Um eine Funktion zu kommentieren schreibt man folgendes vor die Funktion:
/**
 * This is the main function.
 * 
 * This is the detailed comment.
 */
Wenn man JAVADOC_AUTOBRIEF auf YES gestellt hat, dann wird mit der ersten Zeile der Kurzkommentar und mit dem Rest der ausführliche Kommentar erzeugt. Man beachte, das die brief Kommentarzeile unbedingt mit einem Punkt abgeschlossen sein muss, da ansonsten doxygen seinen Dients verweigert.


zum Seitenanfang
zur Hauptseite

Letzte Änderung: 14.03.2009