![]() |
ELKS FAQ: Deutsch | ![]() |
| 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.
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.
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.
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.
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.
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.
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.
Editieren Sie /usr/include/sys/vm86.h, und aendern Sie '#include <linux/vm86.h>' in '#include <asm/vm86.h>'
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
-0
waehlt 8086 Code Generierung,
-O
aktiviert die Optimierungen,
-ansi
schaltet ansi-style Funktionsprototypen ein,
und
-s
entfernt Debugsymbole aus dem Programm.
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.
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.
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.
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.
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
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.
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.
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
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 }
Wir bitten Sie um Antworten auf die folgenden Fragen!
Kann ich ELKS von DOS aus starten, wie ich Linux mit LOADLIN.EXE starten kann? Noch nicht,aber diese Moeglichkeit wird vielleicht spaeter implementiert.
Mein Palmtop hat ein RAMDrive. Kann ELKS darauf zugreifen? (d.h. wenn/falls ELKS auf ein Msdos Dateisystem wird zugreifen koennen).
Kann man das Boot und das Root Abbild kombinieren?
> From: Bar-David Yedidya > > Today I managed to combine root/boot disks using LILO. > It just worked! > > I created /boot on the floppy, copied Image and boot.b to it, > put in /etc (on the floppy) lilo.conf with this : > > boot=/dev/fd0 > compact > image=/boot/Image > label=lin16 > > did lilo -r /mnt and Hopla! > > I didn't look at the kernel sources yet to compare the boot code > of linux and linux-16, but I guess they act the same, and that's > why lilo worked.
Es gibt Berichte dass dies unter den neuesten ELKS Versionen (>0.0.46?) nicht mehr funktioniert (Bemerkung: wuerde dies auch mit pre 386 Computern noch funktionieren?)
Chad Page arbeitet an einem Einzel-Diskettensystem, welches in der naechsten Version erhaeltlich sein sollte.
This document is released under the terms of the GNU General Public Licence, version 2 only.