ELKS Logo ELKS FAQ: Deutsch Baby Linux Logo

| Website History | Download | FAQ | History | Introduction | Mailing Lists | News | Releases | Home |


Dieses ist eine Liste von Antworten zu haeufig gestellten Fragen ueber ELKS, auch bekannt als Linux-8086.

Diese FAQ werden von Alistair Riddoch unterhalten, basierend auf dem Original von Brian Candler; Bitte senden Sie alle Updates an air@ecs.soton.ac.uk. Die neueste Version dieses Dokuments ist unter http://www.elks.ecs.soton.ac.uk/ erhaeltlich. Bemerken Sie dass ELKS in der Fruehphase der Entwicklung steckt und diese Informationen moeglicherweise schnell veralten.

Uebersetzt ins Deutsche wurden die ELKS-FAQ von Gregor B. Heini. Er ist erreichbar unter merkur@freesurf.ch.

Zusaetzliche Informationen koennen auf der ELKS Homepage unter http://www.uk.linux.org/Linux8086.html gefunden werden.

Es gibt auch eine Mailing-Liste. Um sich anzumelden brauchen Sie bloss eine Nachricht an majordomo@vger.rutgers.edu zu schicken, welche den Text subscribe linux-8086 im Body enthaelt. Archive der Mailing-Liste koennen Sie unter http://epocha.pd.mcs.net/Linux8086/ erhalten. Im Moment funktioniert dieser Service jedoch nicht. Eine unoffizielle, alternative Mailing-Liste zu Linux-8086 war unter http://www.cyberpass.net/~dummy/robert/archives/linux-8086/ zu erreichen, die aber momentan ebenfalls ausser Betrieb ist.

Bemerken Sie dass ELKS nicht gleichbedeutend mit Linux ist, und dass die Mailing-Liste nicht der richtige Ort ist um Fragen genereller Natur ueber Linux zu stellen (trotz des Namens). Diese koennen Sie stattdessen in einer der Linux-spezifischen Newsgroups, wie comp.os.linux.answers oder de.comp.os.linux.misc stellen.

Abschnitt 1 - Allgemeines

Abschnitt 2 - Uebersetzen und Installieren

Abschnitt 3 - Benuetzung von ELKS

Abschnitt 4 - Unbeantwortete Fragen


Abschnitt 1 - Allgemeines

F1.1. Was ist ELKS?

ELKS ist das 'Embeddable Linux Kernel Subset', ein Projekt um eine kleine Kernel-Untermenge von Linux (welche im Kernel mehr oder weniger UNIX V7 Funktionalitaet bieten wird) aufzubauen, die auf Computern mit begrenzten Prozessor- und Speicherresourcen laeuft. Die anfaenglich gesetzten Ziele sind der 8086er und eventuell der 16-bit protected Mode des 286er. Ein Kernel der auf solcher Hardware lauffaehig ist, ist nuetzlich fuer Projekte von 'embedded systems', fuer dritte-Welt Entwicklungen wo andere Computer als XTs schwer erhaeltlich sind, und fuer den Gebrauch auf verschiedenen Palmtops.

Zusaetzliche Informationen ueber den Hintergrund, die Ziele und den aktuellen Zustand des Projekts koennen auf der ELKS homepage gefunden werden.

F1.2. Wie laesst sich ELKS mit dem 'normalen Linux' vergleichen?

ELKS soll eine Untermenge des echten Linux sein, und klein genug um von einer einzelnen Person verstanden werden zu koennen, als ein unverzichtbares Lerninstrument. Es befindet sich in der sehr fruehen Phase der Entwicklung wo noch grosse Teile fehlen wie swapping, shared libraries, paralleler und serieller I/O, und Netzwerkfunktionen. Trotzdem ist es bereits in der Lage zu booten, bietet virtuelle Konsolen, kann ein minix root Dateisystem auf Disketten laden, und verschiedene kleine Programme starten.

F1.3. Gibt es einfach zu installierende Distributionen von ELKS?

Noch nicht. Sie muessen einen ueblichen Computer mit Linux benuetzen, die Quelldateien herunterladen und cross-compilieren um den 8086er Code zu erzeugen. Boot und Root Diskettenabbilder sind bei der aktuellen Version von ELKS inbegriffen, sie dienen jedoch nur als Testplattform fuer das System und sonst kann damit nur wenig erreicht werden. Version 0.1 ist nicht mehr fern, und wenn sie veroeffentlicht werden wird, wird auch eine Art Distribution erhaeltlich sein.

F1.4. Laeuft ELKS auf einem Intel 8088 Prozessor?

Der 8088er ist identisch zum 8086er, ausser dass er einen externen Datenbus mit nur 8-bit hat, anstatt 16-bit (und deshalb langsamer ist). Folglich laeuft ELKS mit diesem Prozessor.


Abschnitt 2 - Uebersetzen und Installieren

F2.1. Wo finde ich die Quelldateien?

Der Haupt-FTP-Server ftp://linux.mit.edu/pub/ELKS/ ist momentan nicht erreichbar, und das wird wohl noch eine Weile so bleiben.Andere Adressen wo ELKS und Dev86 heruntergeladen werden kann sind:

Wenn Sie noch weitere solche Adressen kennen oder selber eine einrichten moechten, dann benachrichtigen Sie bitte einen der Verantwortlichen.


F2.2. Wie uebersetze ich einen ELKS Kernel?

Laden Sie dev86/Dev86-0.0.13.tar.gz und kernel/elks-0.0.66/elks-0.0.66.tar.gz (bzw. die neuesten Versionen davon) von ftp://linux.mit.edu oder einer der anderen Adressen herunter. Entpacken Sie Dev86 in /usr/src (oder einem anderen Verzeichnis), und elks in /usr/src/linux-86:

	tar -xvzf Dev86-0.0.12.tar.gz -C /usr/src
	tar -xvzf elks-0.0.64.tar.gz -C /usr/src/linux-86

Die Entwicklungsumgebung wird in /usr/src/linux-86 erstellt, und die Kernelquellen sind in /usr/src/linux-86/elks. Als Naechstes muessen Sie die Entwicklungswerkzeuge uebersetzen, welche den bcc Compiler beinhalten:

	cd /usr/src/linux-86
	make install

Dann koennen Sie Patches, welche auf diese Versions zugeschnitten sind auf das Quellverzeichnis anwenden; Schliesslich uebersetzen Sie den Kernel:

	# Patches anbringen (optional)
	cd /usr/src/linux-86/elks
	patch <patchfile
	# Kernel uebersetzen
	make config
	make dep
	make

'make config' funktioniert wie beim normalen Linux-Kernel. Die Default-Konfiguration wird auf fast allen Systemen laufen. Aendern Sie besser keine der Einstellungen, es sei denn Sie wissen was Sie tun.

(Wenn Sie sich damit auskennen Linux Kernels mit gcc zu uebersetzen, dann werden Sie verbluefft sein wie schnell dies vonstatten geht :-) Das Resultat ist ein Disketten-Abbild namens "Image", welches Sie auf eine formatierte Disketten kopieren und davon booten koennen.

	dd if=Image of=/dev/fd0

or

	make disk

Sie sollten nun in der Lage sein mit dieser Diskette zu booten, aber Sie werden nicht weit kommen ohne eine root Diskette. Sie muessen mit bcc ein 'init' Programm und ein minix Dateisystem uebersetzen. Wie wird weiter unten erklaert.

F2.3. Ich erhalte eine Fehlermeldung, dass /usr/include/linux/vm86.h nicht existiert.

Editieren Sie /usr/include/sys/vm86.h, und aendern Sie '#include <linux/vm86.h>' in '#include <asm/vm86.h>'

F2.4. Wie mache ich ein 'Init' fuer ELKS?

Nachdem der ELKS kernel gebootet hat wird er /bin/init starten. Weil wichtige Dinge wie exit() und signal() noch nicht implementiert sind kann dieses Programm nicht sehr anspruchsvoll sein. Aber Sie koennen ein einfaches 'Hallo Welt' Programm mit printf(...) oder write(STDOUT_FILENO,...) uebersetzen, und es sollte laufen.

Uebersetzen Sie Ihr Programm wie folgt:

	bcc -0 -O -ansi -s sh.c -o sh

Eine echte Version von 'init' wird gerade fuer die Aufnahme in das tiny-utils Packet vorbereitet, welches ebenfalls auf linux.mit.edu erhaeltlich ist. Der Kernel Code wurde vor Kurzem geaendert, so dass er /bin/init laedt anstatt /bin/sh.

Kernel Version 0.0.66 beinhaltet eine Sammlung von nuetzlichen Werkzeugen in kernel/elks-0.0.66/elkscmd.tar.gz, welches ein init und ein login (ohne Passwortabfrage) beinhaltet. Um sie zu installieren muessen Sie beide mit

	bcc -0 -O -s init.c -o init
	bcc -0 -O -s login.c -o login

uebersetzen und in das /bin Verzeichnis Ihrer Root Diskette kopieren. Login benoetigt /etc/passwd und /etc/group aus einer standard Linux Distribution auf der root Diskette, damit ls -l richtig funktioniert, und /usr/lib/liberror.txt damit die Bash Fehlermeldungen richtig funktionieren.

F2.5. Wie erstelle ich eine root Dateisystem-Diskette?

Sie muessen eine minix Disketten erstellen die die notwendigen Dinge enthaelt. Im Moment brauchen Sie bloss zwei Dateien - /dev/tty (4,0) und /bin/sh, welches Ihr 'Hallo Welt' Programm ist (siehe oben). Erwarten Sie nicht mehr von ELKS im Moment... Es gibt noch sehr viel zu tun.

Bemerken Sie: /dev/tty ist verschieden vom normalen Linux welches (5,0) benuetzt.

	mkdir /usr/src/root86
	cd /usr/src/root86
	mkdir dev
	cd dev
	mknod tty c 4 0
	cd ..
	mkdir bin
	cd bin
	cp <Ihr-Programm> sh
	cd ..
	fdformat /dev/fd0H1440          # Wenn die Disketten noch nicht formatiert wurde
	mkfs -t minix /dev/fd0 1440
	mount -t minix /dev/fd0 /a      # Sie brauchen einen Mountpoint /a
	cp -pR /usr/src/root86/* /a
	umount /a

Wenn Sie einen 2.0.x Linux Kernel und mount-2.5k haben koennen Sie als alternative das Loopback Dateisystem benuetzen um ein Diskettenabbild auf Ihrer Harddisk zu erstellen, und es danach auf Diskette kopieren.

	dd if=/dev/zero of=root.image bs=18k count=80
	losetup /dev/loop0 root.image
	mkfs -t minix /dev/loop0 1440
	mount -t minix /dev/loop0 /a
	...
	umount /a
	dd if=root.image of=/dev/fd0

Seit ELKS 0.0.53 funktionieren nun auch andere Disketten als 1.44M formatierte. Folgen Sie einfach den obengenannten Anweisungen und ersetzen Sie die notwendigen Groessenangaben. Aufgrund der Art und Weise wie 360K Disketten von 1.2M Diskettenlaufwerken beschrieben werden, muessen die folgenden Anweisungen befolgt werden wenn Sie von einem Computer mit einem 360K Laufwerk booten wollen.

F2.6. Und was wenn ich einen XT mit einem 360K Diskettenlaufwerk besitze?

Boot und Root Disketten zu erstellen die auf einem anderen Computer laufen sollen benoetigt etwas Gefuehl, besonders wenn das Zielsystem ein 360K Diskettenlaufwerk besitzt. 360K Laufwerke (5.25 Zoll DD) haben 40-Spur Lesekoepfe, und 1.2M (5.25 Zoll HD) haben 80-Spur Lesekoepfe. Ein 1.2M Laufwerk kann 360K Disketten lesen, aber nicht zuverlaessig darauf schreiben, weil es magnetische Spuren schreibt die die halbe Breite haben die ein 360K Laufwerk erwartet.

Eine Loesung ist ein 360K Laufwerk als zweites in Ihren Linux Computer einzubauen - Sie koennen dann 360K Disketten mit fdformat /dev/fd1d360 formatieren und wie ueblich Dateisysteme erstellen.

Andernfalls muessen Sie ein Diskettenabbild erstellen, es auf den PC mit dem 360K Laufwerk uebertragen (z.B. mit einem Nullmodem-Kabel), und dann unter DOS mit rawrite auf die Diskette schreiben.

Boot Disketten.

Das 'Abbild' kann auf jede Art von Diskette geschrieben werden und wird erfolgreich booten, daher muessen Sie bloss die Datei uebertragen und 'rawrite' benuetzen um die Diskette zu erstellen.

Root Disketten werden nun automatisch erkannt so dass Sie sie fuer andere Diskettengroessen als 1.44M nicht mehr neu uebersetzen muessen.

Root Disketten

Sie koennen ein 360K root Abbild auf einem groesseren Laufwerk vorbereiten - wenn Sie den Befehl mkfs ausfuehren, muessen Sie '360' durch die Groesse des Dateisystems ersetzen. Wenn Sie dann die Dateien auf diese Diskette kopiert haben unmounten Sie sie und kreieren ein Diskettenabbild davon:

	dd if=/dev/fd0 of=root.image bs=1k count=360

RAM Einschraenkungen

0.0.44 erwartet dass 640K RAM erhaeltlich ist. Die Probleme mit DEF_INITSEG und DEF_SETUPSEG wurden jedoch behoben, so dass Sie nichts aendern muessen falls Sie nicht ueber 640K RAM verfuegen.

F2.7. Wie aendere ich das root Device eines Boot-Image?

Die Bootdiskette Version 0.0.62 wurde dahingehend uebersetzt, dass das zweite Diskettenlaufwerk als Rootdisk benuetzt wird, weil die Funktion wait_for_keypress() noch nicht funktioniert. Sie koennen darum herumkommen wenn Sie nur ein Diskettenlaufwerk haben indem Sie einen HEX-Editor benuetzen um die Rootlaufwerk Nummer im Boot-Abbild zu aendern.

Wenn Sie eine Fehlermeldunge erhalten dass das Mounten der Root Diskette auf Laufwerk 03c0 fehlschlug, dann laden Sie das Boot Abbild in einen HEX-Editor und suchen Sie nach c003h in der Naehe des Anfangs und aendern Sie es auf 8003h (c003h ist 03c0h in Intel Big-Endian schreibweise). Das sollte mit jeder Version funktionieren, jedoch ist nicht klar ob die zu aendernde Adresse von Version zu Version die selbe bleibt. Jose@cnct.com berichtete dass die zwei zu aendernden Bytes in Version 0.0.62 0adf und 0ade seien.


Abschnitt 3 - Benuetzung von ELKS

F3.1. Sind bcc Binaries unter Linux lauffaehig?

Ja - indem Sie ein Kernel Modul laden koennen Sie ELKS Binaries direkt starten. Dies vereinfacht die Entwicklung von Programmen unter ELKS erheblich, da man Sie auf einem normalen Linux System ausprobieren kann (obwohl Sie moeglichweise trotzdem nicht unter ELKS laufen wenn Ihr Programm eine Kernelfunktion benuetzt die noch nicht implementiert wurde).

	cd /usr/src/linux-86/elksemu
	make module
	insmod binfmt_elks.o

Bemerken Sie auch dass Sie bei jedem Neustart die insmod-Zeile von neuem ausfuehren lassen muessen. Einige kleine bcc-Testprogramme finden Sie unter /usr/src/linux-86/tests (wie z.B. eine Version von wc)

Wenn Sie beim Uebersetzen des Moduls eine Fehlermeldung "modversions.h: no such file or directory" kriegen, dann muessen Sie das Makefile editieren um den Verweis auf diese Datei zu entfernen, also:

	MODCFLAGS=-D__KERNEL__ -Wall -Wstrict-prototypes -O2 \
		-fomit-frame-pointer -fno-strength-reduce -pipe \
		-m486 -DCPU=486 -DMODULE -DMODVERSIONS

F3.2. Kann ich ELKS unter DOSEMU booten?

Ja. ELKS kann unter DOSEMU 0.63.1.36 und Linux 2.0.7 aufstarten, und wahrscheinlich auch mit anderen Kombinationen der beiden. Vergewissern Sie sich, dass Ihr Diskettenlaufwerk in /etc/dosemu.conf konfiguriert ist, und verwenden Sie das -A Flag beim Starten von 'dos' oder 'xdos' wenn noetig, um ein Booten von Diskette zu erreichen.

	floppy { device /dev/fd0 threeinch }  

Abschnitt 4 - Unbeantwortete Fragen

Wir bitten Sie um Antworten auf die folgenden Fragen!