Vorstellung, Installation und Eindrücke von FreeDOS

In meiner Erinnerung war DOS lange Zeit ein Thema, mit dem ich mich gewollt oder ungewollt beschäftigen musste. Noch eine Weile früher hatten mich der C64 und der AMIGA 500 begeistert und an Workbench, die grafische Oberfläche des AmigaOS, kann ich mich noch heute gut erinnern. Was aber ebenfalls hängen geblieben ist, ist die Zeit mit meinem ersten PC, einem Pentium I mit 60 Mhz und 8 MB RAM, den ich später mit einem Overdrive-Prozessor auf sagenhafte 120Mhz aufrüstete. Meinen Vater bringe ich heute noch zum Lachen, wenn ich ihm von unseren gemeinsamen Versuchen config.sys und autoexec.bat zu beherrschen erzähle.
Die Zeit von MS-DOS lief dann langsam aber sicher zu Gunsten von Windows 98 ab, wo MS-DOS kaum noch eine große Rolle spielte. Mit Windows 2000 und XP war dieses Kapitel in Computergeschichte schließlich endgültig abgeschlossen.
Seitdem sich 1994 abzeichnete, dass Microsoft den Support für DOS einstellen würde, gibt es mit FreeDOS ein Projekt, welches eine freie und kompatible Alternative zum proprietären DOS schaffen soll. Im September 2006 erschien die finale Version 1.0 mit zahlreicher Freier Software, die den ursprünglichen Funktionsumfang von DOS um ein Vielfaches erweitern konnte.
Nachdem ich lange Zeit unabsichtlich einen Bogen um andere Freie Betriebssysteme abseits von Linux gemacht habe, dies aber versuche nun Schritt für Schritt zu korrigieren, sind hier ein paar Eindrücke von FreeDOS in der aktuellsten Version 1.0 und warum ich denke, dass dieses OS eine perfekte Alternative für ältere oder mit knappen Ressourcen versehene Hardware sein kann.
Für den Anfang ist es sicherlich am einfachsten FreeDOS in einer virtuellen Maschine zu installieren. Die folgenden Möglichkeiten sollten sich problemlos mit Debian und Ubuntu nachvollziehen lassen.

Installation

Unetbootin

Ich habe zuerst einen USB-Stick mit FAT32 formatiert und anschließend unetbootin benutzt, um FreeDOS automatisch auf den Stick zu installieren. Dabei ließ sich unetbootin auch als normaler Benutzer ausführen und man musste nicht, wie vom Programm gefordert, root werden. Die Installation ist trivial. FreeDOS als Distribution auswählen und die Partition des USB-Sticks beschreiben.

mkfs.vfat /dev/sdb1
unetbootin



Danach wird fdboot.img vom offiziellen FreeDOS Archiv heruntergeladen. Dieses Abbild beinhaltet aber nur die essentiellen Komponenten von FreeDOS und dient laut Angaben der Entwickler hauptsächlich dazu bei Bootproblemen zu helfen. FreeDOS wurde danach mit Hilfe von Plop problemlos auf dem USB-Stick erkannt, den ich danach erfolgreich auf dem Thinkpad 600 testen konnte.

DOSEMU

DOSEMU ist ein DOS-Emulator für Linux, der FreeDOS standardmäßig integriert hat und mit dem sich DOS oder Windows 3.11 Programme in Linux ausführen lassen, wie z.B. dieses vertraut erscheinende Spiel hier, welches sich mit dosemu PACPC2.EXE starten lässt.


Der Freeware-Pacman-Klon, Pac PC II, lässt sich auf dosgamesarchive.com herunterladen, wo es noch ein paar hundert weitere Klassiker zum Spielen gibt.
Ebenfalls interessant ist der Terminalmodus. Einfach mal dosemu -t eingeben, aber nicht erschrecken. 😉 Erfordert volle Konzentration, wenn man sich per SSH in seinen Linuxserver einloggt, danach automatisch dieses Kommando ausführen lässt und man erst einmal wieder alte DOS-Befehle hervorkramen muss. 🙂 Verlassen kann man den Modus wieder mit exitemu.

Virtualbox

FreeDOS lässt sich in Virtualbox testen, indem man sich eine neue virtuelle Maschine erstellt und als Betriebssystem "Other" und Version "DOS" auswählt und eine der beiden ISO-Dateien herunterlädt. Ich habe das fdbasecd.iso als Datenträger eingebunden und dann erfolgreich FreeDOS installiert. Mit dem fdbasews.iso lässt sich FreeDOS auch direkt als Live-CD ausprobieren.
Es gab früher noch eine komplette CD mit der ganzen Freien Software, die mit FreeDOS entstanden ist und heute auch noch einzeln auf der FreeDOS-Homepage heruntergeladen werden kann. Leider hat man sich entschlossen den Downloadlink zu entfernen. Man findet diese FreeDOS-Distribution namens fdfullcd.iso aber noch auf den alternativen Spiegelservern des Projekts. Meiner Meinung nach lohnt sich der Download, wenn man Gefallen an FreeDOS gefunden hat und auch die ganzen Besonderheiten wie ein auf FreeDOS portiertes Vim, diverse Linuxbefehle und Programme wie wget, ls, more und Freie DOS Spiele parat haben möchte. Die Installation der kompletten FreeDOS-Distribution klappt zwar unter Virtualbox, leider scheitert bei mir danach das Booten. Momentan habe ich keine Lösung dafür.

Qemu

Natürlich lässt sich FreeDOS auch in Qemu installieren. Mir ist bei der Suche zu FreeDOS dieser englische Artikel zur Installation zum Thema aufgefallen, den ich empfehlen kann.

qemu-img create freedos.img 400M
qemu -hda freedos.img -cdrom fdfullcd.iso -boot d

Damit lässt sich ein 400 MB großes RAW-Image mit Qemu erstellen und anschließend das fdfullcd.iso als virtuelles CD-ROM-Laufwerk für die Installation auf dem freedos.img benutzen. Die Installation ist natürlich identisch zu der in Virtualbox. Mir ist nur noch nicht klar, warum die Virtualisierung so viel langsamer als unter Virtualbox ist und welche Optionen ich scheinbar beim Start von Qemu vergessen habe zu übergeben. Mit Hilfe von dd lässt sich das Abbild auch auf eine Festplatte oder einen USB-Stick übertragen. Z.B. mit

dd if=freedos.img of=/dev/sda bs=1M

Bilder sagen bekanntlich mehr als 1000 Worte, deshalb hier einige Screenshots von der Installation.

Die Installation ist insgesamt nicht schwierig, einige Abfragen empfand ich aber als überflüssig. Man hätte hier sicherlich einige Punkte zusammenführen können. Offiziell wird Deutsch als Systemsprache angeboten, doch scheinbar vermischt sich Deutsch und Englisch auf Grund eines Bugs während der Installation und auch später bei einigen Programmen. Um das zu beseitigen, sollte man laut FreeDOS-Wiki in der config.sys das Leerzeichen vor den abschließenden Anführungsstrichen bei "SET lang=DE " entfernen.
Man sollte bei einer Festplatteninstallation die FreeDOS-Partition mit FAT32 oder FAT16 formatieren, kann das aber auch mit Hilfe von XFDISK während der Installation nachholen. Die Pakete lassen sich mit der Space-Taste ab- oder auswählen. Mit fdfullcd hat man Zugriff auf zehn verschiedene Anwendungsgruppen.

  1. base. Liefert die essentiellen FreeDOS-Programme mit, die das ursprüngliche Verhalten von MS-DOS originalgetreu nachbilden.
  2. compress. Freie Programme zur Datenkompression (7zip, bzip2, gzip usw.)
  3. driver. Freie Treiber für Netzwerk oder USB
  4. edit. Editoren, darunter sogar VIM!
  5. games. Freie DOS-Spiele, darunter DOOM Legacy. Übrigens ist Doom seit 2011 nicht mehr in Deutschland indiziert. 😉
  6. gui. Open GEM als grafische Oberfläche mit einigen Anwendungen. Viele mehr finden sich als Freeware bzw. Shareware Programme im Internet.
  7. media. MPXPlay (Musik hören!), ogg vorbis, lame, cdrtools
  8. lang. Freie Compiler.
  9. net. Arachne (Webbrowser!), VNC, SSH, wget, Mail Client usw.
  10. util. Zubehör, mit dem sich DOS in eine Linuxshell verwandelt (4DOS, du, cal, uptime, locate, und mehr)

Lob und Kritik

Was mir negativ aufgefallen ist, ist die leider verstreute und schlecht geordnete Dokumentation. Es gibt zum einen die FreeDOS-Projektseite auf sourceforge.net und die Hauptseite auf www.freedos.org. Sucht man nach Dokumentation wird das alte FreeDOS Documentation Project als erster Treffer hervorgehoben, welches gut strukturiert erscheint, dessen Artikel aber zum neuen FreeDOS-Wiki größtenteils verschoben wurden. Das Wiki hingegen ist leider nicht sehr intuitiv und ausschließlich in Englisch.
Alternativen sind z.B. das deutschsprachige FreeDOS-Kompendium, welches zwar auf einem älteren Stand ist, aber noch den ein oder anderen Tipp vermitteln kann. Das gleiche gilt für die deutsche Seite ankreuzen.de.
Sehr beeindruckend ist auf jeden Fall der Funktionsumfang und die Kompatibilität zum alten MS-DOS. FreeDOS eignet sich hervorragend, wenn man aus irgendwelchen Gründen gezwungen ist alte DOS-Programme weiterhin zu benutzen. Ein bekanntes Beispiel sind Werkzeuge zum Flashen des BIOS.
Wo Linux auf Grund seiner Beschränkung auf i386-Hardware scheitert, ist FreeDOS eine Freie Alternative auf sehr alter Hardware und bietet Unterstützung selbst für 8086 Rechner. Der Speicherverbrauch ist in der Tat winzig, womit sich ein alter Laptop zur Jukebox umrüsten lässt oder man klassische DOS-Spiele mit einem Freien Betriebssystem spielen kann. Insbesondere die vielen Linuxfeature wie TAB-Vervollständigung, wget oder einen SSH-Client lassen Herzen höher schlagen.
FreeDOS wird immer noch von einigen Personen weiterentwickelt und es gibt auch unregelmäßig Neuigkeiten auf freedos.org zu lesen. Alles in allem muss die Zukunft zeigen, wie sich FreeDOS auf diesem Laptop hier schlägt. Doch wenn vor 17 Jahren 8 MB kein Problem waren, sollten die üppigen 16 MB des Toshiba Satellite 220CS mehr als ausreichend sein. 😀

Slitaz rootfs in Virtualbox gefunden und erfolgreich transplantiert

"Good news everyone". Nein, ich musste weder eine Lieferung zum Planeten Kannibalia machen noch ist mir ein Rechner um die Ohren geflogen. Die kleine gute Nachricht ist, Virtualbox 4.1 hat nun eine benutzerfreundliche GUI-Option zum Klonen von Virtuellen Maschinen und man ist nicht mehr gezwungen auf der Kommandozeile rumzukrauchen, wenn man das Gleiche erreichen will. Wirklich neu ist diese Meldung nicht, aber mit Debian Testing kann man sich über so etwas ja eben immer zeitversetzt noch einmal freuen. Auch das Schaf als Icon für das Klonen rang mir einen Schmunzler ab. In 100 Jahren wird sicher mal ein Mensch daraus. 😉
Doch nun zu den harten Fakten. Ich habe mir Slitaz Base, das 8 MB kleine Miniimage, geschnappt und eine VM mit einer 1 GB großen virtuellen Festplatte erstellt. Da war ich noch so im alten Trott gefangen, dass ich die Größe mindestens um den Faktor 10 überdimensioniert hatte. Am Ende belegte Slitaz in der Minimalinstalltion nämlich nur 16 MB auf der Platte. Irgendetwas war aber bei der Installation anders als noch vor ein paar Monaten mit Qemu und ich erhielt nach Eingabe von slitaz-installer auf der Konsole die Fehlermeldung

unable to find rootfs.gz

Der Installer wollte mir damit sagen, dass er das als sekundären Master eingehängte slitaz-base.iso nicht als CD-ROM in /media/cdrom finden konnte, von wo aus er alle Daten zur Installation bezog. Der Trick war das schon entpackte Root-Dateisystem in / noch einmal in /media/cdrom als loop device zu mounten.

mount -o loop / /media/cdrom

Danach wurde alles wieder gefunden und die ganze Geschichte ratterte in wenigen Sekunden durch bis schließlich alles auf die zuvor mit fdisk eingerichtete Partition /dev/sda2 installiert worden war und sda1 mir wieder als Swap-Partition dienen sollte. Danach drehte und schraubte ich noch kurz an der ein oder anderen Config-Datei und wandelte schließlich das VDI-Image in ein Raw-Image um, was ich hier schon mal als Gedankenstütze niedergeschrieben habe.
Nun sollte alles wieder auf die Festplatte des Toshiba Satellite 220cs transplantiert werden, wozu ich meinen USB zu IDE Adapter auspackte und die 1,4GB große Festplatte mit dem Hauptrechner verband. Das Operationsbesteck war erneut der wunderbare Disk Destroyer dd.

dd if=slitaz.img of=/dev/sdb

Die Zeile führte nach kopierten 41 MB erst einmal zu einer Input/Output-Fehlermeldung und das bitweise Kopieren brach einfach ab. Erst als ich die Anzahl der Bytes, die auf einmal mit der Option bs gelesen und geschrieben werden vergrößerte, klappte es dann.

dd if=slitaz.img of=/dev/sdb bs=1M

Das war in der Tat seltsam und ich war auch schon kurz davor die Kiste aus dem Fenster zu werfen, konnte mich aber beherrschen und als Belohnung das erfolgreiche Booten in eine superminimale Slitazinstallation beobachten.
Als Fazit bleibt, dass man sowohl ein Image in Qemu als auch in Virtualbox erstellen und nach der ggf. notwendigen Umwandlung in ein Rohformat, dieses auch mit dd auf eine Festplatte schreiben kann. Ein Kinderspiel. 🙂

Im Zweifelsfall besser qemu-kvm

Gestern wurde ich darauf aufmerksam gemacht, dass ich zwar Qemu und Virtualbox schon als Virtualisierungslösungen vorgestellt, dabei aber qemu-kvm unterschlagen habe. Das hat leider seinen Grund. Meinen Rechnern fehlt es an der notwendigen Erweiterung für den Prozessor, welche echte Hardwareunterstützung für Virtualisierung bietet.
Bisher kamen für das normale Qemu sowieso nur der Intel Core Duo e7400 und der Dell Inspiron 4000 in Frage. Der zehn Jahre alte Laptop ist naturgemäß weniger für rechenintensive Virtualisierung geeignet als der mit zwei Prozessorkernen und 4 GB RAM bestückte Core Duo. Bei letzterem ist die Geschwindigkeit nicht berauschend, aber zum Testen und Anschauen neuer Distributionen in einer virtuellen Maschine ist alles noch im grünen Bereich.
Mit dem Paket qemu-kvm erhält man eine Kernel-based Virtual Machine (KVM), die vollständig als Freie Software vorliegt und sowohl ein Kernelmodul als auch ein weiteres prozessorspezifisches Modul zur Verfügung stellt. Im Zusammenspiel mit der Hardwareunterstützung der Intel oder AMD Prozessoren lässt sich so eine virtuelle Maschine erschaffen, die volle Hardwareunterstützung erfährt und somit deutlich an Leistung gewinnt.
Wie erfährt man, ob der eigene Intel oder AMD Rechner über eine eingebaute Virtualisierungstechnologie verfügt? Entweder ihr fragt bei eurem nächsten Rechnerkauf im Fachhandel oder im Supermarkt an der Kasse einfach: "Tschuldigung, unterstützt der Rechner auch Intel-V/AMD-V Befehlssatzerweiterungen für eine Kernel-based Virtual Machine?" oder ihr schafft es ein Linux dort zu installieren und folgende Befehle auszuführen

egrep '^flags.*(vmx|svm)' /proc/cpuinfo

oder einfach

cat /proc/cpuinfo | grep vmx (bzw. svm)

Als Ergebnis sollte eine Zeile mit den Prozessorflags erscheinen, bei der entweder das Wort vmx (Intel-Chip) oder svm (AMD-Chip) hervorgehoben ist. Tja und falls nicht, dann gehört ihr noch zu der Gruppe der Ohne-Hardwareunterstützung-Virtualisierer. Falls alles fehlschlägt: Vielleicht hilft auch diese Übersicht mit kompatiblen Prozessoren weiter.
Also bevor sich die Beschwerden häufen, dass qemu so unglaublich langsam ist, solltet ihr im Zweifelsfall qemu-kvm probieren. Als Freie-Software-Alternativen gibt es unter Linux weiterhin Virtualbox und Xen. Xen unterscheidet sich technisch zwar deutlich von KVM (siehe auch die FAQ bei linux-kvm.org), ist aber eine weit verbreitete Alternative bei Serversystemen.
Auf Grund der einfachen Implementierung als Kernelmodul für Linux und der intuitiven Bedienung eignet sich qemu-kvm vermutlich besser für den Heimgebrauch und Virtualbox bleibt auch weiterhin eine benutzerfreundliche Alternative.

Virtualbox: Vdi- in Raw-Image konvertieren

Als ich das offizielle Handbuch zu Virtualbox durchstöberte, entdeckte ich zuerst nicht, wie man ein Vdi-Image ohne Qemu in ein Raw-Image umwandeln kann, welches ich danach mit dd auf eine Festplatte schreiben konnte.
Virtualbox bietet mit dem Kommandozeilenprogramm vboxmanage und der Option convertfromraw die einfache Möglichkeit ein Rohabbild in das eigene Format .vdi umzuwandeln. Doch wie geht es in die andere Richtung?
Eine Suche im Internet brachte mich dann auf wikibooks.org, wo ich fand, was ich suchte.

vboxmanage internalcommands converttoraw file.vdi file.raw

oder

vboxmanage clonehd -format RAW file.vdi file.raw

Als Alternative bietet sich auch weiterhin das fantastische Qemu an:

qemu-img convert -O raw file.vdi file.raw

Ist das Abbild danach umgewandelt, lässt es sich direkt mit dd auf eine Festplatte (hier: sda) schreiben oder auch mit Qemu betrachten.
dd if=file.raw of=/dev/sda
oder
qemu file.raw
Manchmal führen eben doch mehrere Wege nach Rom. 😉

Qemu spart Zeit und Geld

Qemu ist Freie Software, ein Emulator für verschiedene Prozessorarchitekturen und auch ein Virtualisierer und dabei in der Lage die komplette Hardware eines Computers zu emulieren. Insbesondere nützlich um Live-CDs und Betriebssysteme in dieser virtuellen Maschine auszuführen, die Installationen in eine Imagedatei zu schreiben und danach mit dd auf eine externe Festplatte zu übertragen.
Qemu löst für mich damit eine Menge Probleme. Ich kann verschiedene Software und Betriebssysteme spielend leicht testen, ohne dafür jedes mal ein neues Installationsmedium zu brennen oder gar jede Linux-Neuentdeckung auf einem separaten Computer installieren zu müssen.
Es gibt eine neue RC-Version des Debian-Installers und man möchte ihn sofort testen? Man wollte immer schon die neueste Anwendung für das Mobiltelefon mit ARM-Prozessorarchitektur ausprobieren, hat aber das entsprechende Gerät nicht parat. Mit Qemu auf jedem i386 PC möglich.
Welches Betriebssystem ist nun wirklich leichtgewichtig und ab wann beginnen die Probleme? Mit Qemu und der Option -m lässt sich bequem festlegen wie viel Arbeitsspeicher der virtuellen Maschine zugewiesen werden soll. Womit ich der Antwort auf meine Frage, wie viel RAM der Debian-Installer nun tatsächlich benötigt, etwas näher gekommen bin.
Nur um zu zeigen mit wie wenig Aufwand das geht, hier zwei Zeilen.

qemu-img create test.img 1G
qemu -hda test.img -cdrom debian-testing-i386-netinst.iso -boot d -m 32

Der erste Befehl erschafft ein Image namens test.img im Raw-Format mit der Größe 1 Gigabyte. Der zweite Befehl führt Qemu aus und definiert das Image als virtuelle Festplatte und das mit Rtorrent heruntergeladene Debian-Netinstall-ISO als CD-ROM-Laufwerk, von dem beim Start gebootet wird. Mit nur 32 MB Arbeitsspeicher gibt der Debian-Installer folgende Antwort.

Ich wusste das 64 MB RAM ausreichen um Debian Squeeze auf meinem Toshiba Portégé 3110 CT zu installieren und das 16 MB für den anderen Oldie zu wenig waren. Mit 32 MB RAM kommt man zumindest schon einmal in den "low memory"-Modus, die erste Hardwareerkennung und das Mounten der virtuellen CD-ROM funktioniert, doch dann gibt es eine Kernel Panic bei der Einrichtung der Netzwerkkarte, womit hier vorerst Schluss ist.
Interessanterweise ist die Warnung des Debian-Installers bitte mindestens 43 MB RAM zu installieren wirklich nur als absolutes Minimum zu verstehen. Denn auch mit soviel Arbeitsspeicher wird die virtuelle Netzwerkkarte in Qemu nicht automatisch erkannt und nach einer externen Treiber CD gefragt 🙄
Bei 64 MB RAM funktioniert alles einwandfrei und bei 16 MB RAM....

qemu: fatal: Trying to execute code outside RAM or ROM at 0x01449f40

beendet sich Qemu mit einer Fehlermeldung. Immerhin bestätigt das die Erfahrungen mit den anderen beiden Laptops. Was nun den Bereich zwischen 32 MB und 64 MB mit dem Debian-Installer angeht. Hier scheint zumindest etwas Glück gefragt zu sein, vielleicht sieht das ja bei "echter" Hardware wieder anders aus. 😛 Zumindest behauptet K.Mandla in seinem Blog eine Debian-Installation mit 32 MB RAM erfolgreich geschafft zu haben 😉