Bochs. der Großvater unter den Emulatoren, erfreut sich bester Gesundheit: Dank regelmäßiger Vitaminspritzen nimmt es der rüstige Opa sogar noch spielend mit Windows XP auf.
Bereits 1994 erblickt der PC-Emulator Bochs (ausgesprochen Box) das Licht der Welt. Kevin Lawton heißt sein Erfinder, der es zunächst gebührenpflichtig vertreibt. Sechs Jahre später kauft der französische Linux-Distributor Mandriva – damals noch unter dem Namen MandrakeSoft – den Emulator, befreit ihn von seinen kommerziellen Fesseln und stellt ihn unter die LGPL.
Installation
Mittlerweile bietet Sourceforge.net Bochs eine neue Heimat ([1], Abbildung 1). Dort bekommen Sie ihn kostenlos als RPM-Paket (auch auf Heft-CD), dessen Inhalt auf allen halbwegs modernen Distributionen läuft. Über eine Konsole spielen Sie das Paket auf Ihr System, indem Sie mit Root-Rechten rpm -Uhv bochs-2.3-1.i586.rpm eingeben. Wer eine Debian-basierte Distribution einsetzt, sollte zunächst die bekannten Repositories abklappern. Nutzer von Ubuntu “Edgy Eft” finden Pakete der Version 2.2.6 beispielsweise im Universe-Repository und installieren zusätzlich das Programm Bximage. Für Opensuse brauchen Sie das nicht: Bximage ist dort Bestandteil des Bochs-RPMs. Notfalls hilft ein Griff zu den Quelltexten (siehe Kasten “Bochs kompilieren”). Gleiches gilt, wenn Sie unter Bochs statt des voreingestellten Pentium-Prozessors etwa einen 486er betreiben möchten.

Abbildung 1: Die neue Heimat von Bochs ist Sourceforge.net. Dort finden Sie auch die komplette Dokumentation, die in den fertigen Software-Paketen fehlt.
Das so installierte Programm simuliert auf Abruf einen kompletten PC samt Intel-Prozessor, Grafik-, Sound- und Netzwerkkarte. Dieser virtuelle PC im PC arbeitet so gut, dass unter Bochs’ Führung sogar komplette Betriebssysteme laufen. Darunter fallen beispielsweise alle Windows-Versionen (Abbildung 2) bis auf Vista, natürlich Linux und viele weitere Exoten. Damit eignet sich Bochs nicht nur zur Wiederbelebung alter Software, sondern auch um “mal eben” ein neues Betriebssystem oder kritische Einstellungen auszuprobieren. Im Gegensatz zum ähnlich arbeitenden Qemu existiert für Bochs kein Beschleunigungsmodul. Folglich werkelt der Oldtimer durchweg langsamer als sein Kollege.

Abbildung 2: Windows XP läuft unter Bochs, wenn auch recht zäh. Am besten arbeitet der Emulator mit älteren Betriebssystemen zusammen.
Bochs kompilieren
Wollen oder müssen Sie Bochs aus den Quellen selbst erstellen, installieren Sie zunächst den C++-Compiler und die Entwicklerpakete für das X11-System. Nach dem Entpacken des Quellcodearchivs ([1], auch auf Heft-CD) übersetzen Sie die Software über ./configure; make und installieren Sie mit Root-Rechten via make install. Damit erhalten Sie allerdings nur die Minimalausstattung.
Um etwa die Unterstützung für die Netzwerkkarte im virtuellen PC zu aktivieren, verlangt configure nach dem zusätzlichen Parameter --enable-ne2000. Die extrem umfangreiche Liste im Benutzerhandbuch [2] nennt alle weiteren Optionen. Das RPM-Paket von Bochs unterstützt diese Hardware-Komponenten bereits von Hause aus. Wollen Sie aber einen anderen Prozessor nutzen, müssen Sie den Quellcode übersetzen. Der Schalter --enable-cpu-level=4 schwört Bochs dabei beispielsweise auf einen 486er-Prozessor ein.
Wachsende Platten
Im Gegensatz zu Qemu gestaltet sich die erste Inbetriebnahme von Bochs etwas holpriger und erfordert verschiedene Vorbereitungen. Zunächst benötigen Sie die Installationsmedien des Betriebssystems, das später im virtuellen PC laufen soll. Dies dürfen entweder reale CDs/DVDs sein oder so genannte ISO-Images. Diese Dateien enthalten das exakte Abbild eines realen Mediums. Die meisten Linux-Distributionen gibt es im Internet bereits in diesem Zustand, andernfalls liest ein Brennprogramm wie K3b den entsprechenden Datenträger Bit für Bit aus.
Festplatten simuliert Bochs nach dem gleichen Prinzip: Anstelle einer realen Festplatte verwendet der Emulator lediglich ein Abbild. Während somit in Wahrheit alle Daten in dieser großen Datei landen, glaubt das Gastsystem im virtuellen PC mit einer echten Festplatte zu hantieren. Beim Erstellen einer komplett leeren Festplatte in der gerade benötigten Größe geht das mitgelieferte Hilfsprogramm Bximage zur Hand. Es erzeugt in nur wenigen Schritten eine leere, virtuelle Festplatte. Eine typische Sitzung zeigt Abbildung 3: Nach dem Start von Bximage in einem Terminalfenster möchte das Programm zunächst wissen, ob es eine leere Festplatte oder eine Diskette erzeugen soll. Übernehmen Sie hier die Vorgabe, indem Sie einfach nur [Eingabe] drücken. Als nächstes ist das Dateiformat an der Reihe: Hier sollten Sie von der Vorgabe abweichen und growing eintippen. Damit wächst die Image-Datei später automatisch mit den in ihr enthaltenen Daten. Bei flat würde sie hingegen immer genau so viel Speicherplatz beanspruchen, wie maximal auf die virtuelle Festplatte passt.

Abbildung 3: In diesem Beispiel legen Sie über das Hilfsprogramm Bximage eine 5 GByte große, virtuelle Festplatte an.
Im nächsten Schritt geben Sie die gewünschte Größe der Platte ein. Für Windows XP benötigen Sie mindestens 5 GByte, folglich wäre hier 5000 der passende Wert. Bximage präsentiert nun die Eckdaten der virtuellen Festplatte und möchte bei der Gelegenheit auch noch deren Dateinamen wissen. Im Beispiel aus Abbildung 3 wurde abweichend festplatte.img gewählt. Damit wären schon alle benötigten Angaben beisammen. Bximage erstellt nun ein passendes Image und gibt abschließend eine etwas kryptische Zeile aus. Diese müssen Sie sich gut notieren, da sie bei der Konfiguration von Bochs noch eine wichtige Rolle spielt.
Praktischer Werkzeugkasten
Virtuelle Festplatten sind äußerst praktisch. Um beispielsweise ein System zu klonen, müssen Sie lediglich die Image-Datei kopieren. Im Gegenzug kommen Sie nur recht schwer an ihren Inhalt heran. Das ist insbesondere immer dann ärgerlich, wenn Sie Dateien zwischen realem und virtuellem PC austauschen möchten. Eine enorme Arbeitserleichterung verschaffen die Bochs-Tools [3]. Sie nehmen die virtuellen Festplatten bei Bedarf ordentlich in die Zange: So hängt ein bxtmount hda.img:1 /mnt die erste Partition der virtuellen Festplatte mit dem Dateinamen hda.img in das Verzeichnis /mnt ein. Über dieses Verzeichnis können Sie nun Dateien zwischen den beiden Welten austauschen. Vergessen Sie aber nicht das Image wieder auszuhängen, bevor Sie Bochs aufs neue starten.
Stellwerk
Den Aufbau und die Einstellungen des virtuellen PCs übergeben Sie Bochs in einer Konfigurationsdatei. Einen guten Ausgangspunkt bietet das mitgelieferte Beispiel, das Sie als bochsrc-sample.txt im Verzeichnis /usr/share/doc/bochs finden. Unter Ubuntu gibt es dort mit examples noch einen weiteren Unterordner, in dem sich das Archiv bochsrc.gz befindet. Kopieren Sie es ins Home-Verzeichnis, entpacken Sie es über gunzip bochsrc.gz, ändern Sie über chown den Besitzer der entpackten Datei und machen Sie diese abschließend über mv bochsrc .bochsrc unsichtbar.
Die meisten Grundeinstellungen gibt die Konfigurationsdatei .bochsrc vor, ein paar bessern Sie nach. Öffnen Sie die Datei mit einem beliebigen Texteditor. Alle Zeilen, die mit einer Raute beginnen, stellen Kommentare dar – Bochs ignoriert diese später. Jede Einstellung besteht aus einer Bezeichnung, einem Doppelpunkt und einem oder mehreren Werten.
Zunächst sollten Sie die Zeile megs: 32 suchen. Diese Einstellung bestimmt, wie viele MByte RAM Sie dem virtuellen PC später zugestehen. Für moderne Betriebssysteme genügen 32 MByte Arbeitsspeicher nicht, setzen Sie den Wert also auf mindestens 256 MByte. Diesen Speicher knapst Bochs allerdings von Ihrem realen Hauptspeicher ab. Da auch Ihr eigentliches Linux-System (Wirtssystem) noch läuft, sollten Sie maximal die Hälfte des verfügbaren Arbeitsspeichers spendieren. Spätestens bei 2 GByte ist allerdings Schluss: Mehr verträgt Bochs nicht.
Weiter geht es mit der Zeile, die mit ata0-master: beginnt: Sie stoßen hier auch auf Einträge wie ata1-master, ata0-slave und ata1-slave, die sind jedoch teilweise auskommentiert. Jeder von ihnen entspricht einem Festplattenanschluss. An ata0-master hängt für gewöhnlich die erste Festplatte. Ersetzen Sie deshalb die rechte Seite nach dem Doppelpunkt durch die Werte, die Ihnen Bximage nach dem Erstellen der Festplatte angezeigt hat. Im geschilderten Beispiel sähe die überarbeitete Zeile so aus:
ata0-master: type=disk, path="festplatte.img", mode=growing, cylinders=306, heads=4, spt=17, translation=none
Jetzt fehlt noch das virtuelle CD-ROM-Laufwerk. Da Sie keine weiteren Festplatten brauchen, schließen Sie es einfach an ata1-master an:
ata1-master: type=cdrom, path="/dev/cdrom", status=inserted
Diese Zeile besagt, dass am ersten Anschluss (master) des zweiten Festplatten-Controller (ata1) ein CD-ROM-Laufwerk (type=cdrom) steckt. In ihm liegt wiederum eine CD (status=inserted), die auf dem realen PC im echten Laufwerk (/dev/cdrom) rotiert. Möchten Sie ein ISO-Image verwenden, tauschen Sie einfach /dev/cdrom gegen den Namen und den Pfad zur zugehörigen ISO-Datei aus. Damit enthält der virtuelle PC nun eine Festplatte und ein CD-ROM-Laufwerk. Die anderen Anschlüsse ata0-slave, ata1-slave und so weiter bleiben frei. Sie sollten diese sicherheitshalber mit einer vorangestellten Raute deaktivieren.
Anschließend legen Sie noch fest, von welchem der beiden Geräte der virtuelle PC startet. Dazu suchen Sie die mit boot: beginnende Zeile. Hinter dem Doppelpunkt steht das Gerät, auf dem Bochs nach einem Betriebssystem sucht. Dabei sind auch mehrere, durch Kommata getrennte Angaben erlaubt: Ein boot: cdrom, floppy, disk würde beispielsweise zuerst auf der CD, dann auf einer Diskette und zum Schluss auf der Festplatte nach verwertbarem Material fahnden.
Mehr Hardware!
Weiter geht es in die mit keyboard_mapping: beginnende Zeile. Dort tauschen Sie den aktuellen Eintrag komplett gegen
keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-de.map
aus. Aufgrund dieser Einstellung nutzt Bochs später die deutsche Tastaturbelegung.
Möchten Sie dem virtuellen PC noch eine Soundkarte spendieren, spüren Sie die mit sb16: beginnende Zeile auf und entfernen dort die vorangestellte Raute. Damit simuliert Bochs ein Soundblaster-16-kompatibles Modell, für das die meisten Betriebssysteme bereits von Haus aus passende Treiber mitbringen. Die kryptischen Einstellungen rechts neben dem Doppelpunkt legen fest, wohin die von der virtuellen Karte ausgespuckten Töne wandern. Die Standardeinstellungen stimmen hier in der Regel. Damit steht die Konfiguration schließlich.

Abbildung 4: Nach dem Start präsentiert Bochs zunächst dieses karge Auswahlmenü, ein funktionaler Trip in die Vergangenheit.
Gefangen im Netz
Die Einstellungen der virtuellen Netzwerkkarte regelt in der Konfigurationsdatei die mit ne2k: beginnende Zeile. In der Beispielkonfiguration treffen Sie gleich auf einen ganzen auskommentierten Pulk, in dem Sie ausschließlich die Zeile
ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=linux, ethdev=eth0
von der vorangestellten Raute befreien. Die Werte neben mac und ioaddr weichen unter Umständen von den hier gezeigten ab. Die anderen Zeilen dienen als Beispiele für weitere Wirtssysteme und bleiben folglich deaktiviert. Die freigeschaltete Zeile versorgt den virtuellen PC mit einer NE2000 kompatiblen Netzwerkkarte, die auf dem realen PC die echte Netzwerkkarte eth0 mitbenutzt.
Damit das klappt, müssen Sie Bochs zwingend als root starten, andernfalls erhalten Sie nur eine Fehlermeldung. Immerhin dürfen Experten auch per TUN/TAP ans Netzwerk. Wie dessen Einrichtung funktioniert, erklärt die Bochs-Dokumentation [2].
Feuer frei
Speichern Sie die geänderte Konfiguration ab und starten Sie Bochs in einem Terminalfenster per bochs. Äußerst redselig spuckt der Emulator nun einige Statusmeldungen aus. Sollte er an der Konfiguration etwas zu meckern haben, beendet er sich mit einer entsprechenden Fehlermeldung. Andernfalls landen Sie nach einer kurzen Wartezeit im Textmenü aus Abbildung 4. Unter 3 dürfen Sie noch einmal an der aktuellen Konfiguration schrauben. Die dort gewählten Punkte überschreiben die Vorgaben aus der Konfigurationsdatei. Da diese im Beispiel stimmen, startet der Menüpunkt 6 die eigentliche Emulation. Das ist die Voreinstellung, insofern genügt im Hauptmenü die Eingabetaste.
Bochs öffnet nun ein Fenster, in dem alle Bildschirmausgaben des virtuellen PC landen. Am unteren Fensterrand finden Sie eine Statusleiste, die detailliert Auskunft über die Aktivitäten der einzelnen Medien gibt. Greift beispielsweise ein Programm auf die virtuelle Festplatte zu, leuchtet das entsprechende Symbol kurz grün auf.
Symbolisch
Am oberen Fensterrand thront eine Symbolleiste, die aus zwei Bereichen besteht. Auf der linken Seite werfen Sie das gleichnamige Medium aus, beziehungsweise legen es wieder ein. Sobald Sie auf das Maussymbol klicken, fängt Bochs Ihren Mauszeiger ein. Damit können Sie nun die im virtuellen PC laufende Software bequem über den kleinen Nager bedienen. Um den Zeiger wieder in das richtige Linux-System zurückzuholen, drücken Sie gleichzeitig [Strg-links] sowie die mittlere Maustaste.
Auf der rechten Seite der Symbolleiste finden Sie ein paar nützliche Hilfswerkzeuge. Über das Tastatursymbol definieren Sie eigene Tastaturkürzel, per Copy und Paste tauschen Sie schnell markierten Text zwischen Gast- und Wirtssystem aus. Der erstgenannte Befehl arbeitet allerdings nur, solange sich der virtuelle PC in einem reinen Textmodus befindet (Abbildung 5). Mit dem Start einer grafischen Oberfläche, wie sie beispielsweise Windows schon nach kurzer Zeit aktiviert, erübrigt er sich automatisch. Bei einem Klick auf Paste füttert Bochs den virtuellen PC mit dem Text aus der Zwischenablage. Dies erledigt der Emulator über fingierte Tastendrücke.

Snapshot schiebt den Bildschirminhalt in die Datei snapshot.txt. Dies klappt allerdings nur in einem reinen Textmodus wie diesem.” width=”300″ height=”198″ />
Snapshot schiebt den Bildschirminhalt in die Datei snapshot.txt. Dies klappt allerdings nur in einem reinen Textmodus wie diesem.Stellmichein
Ein Klick auf das Config-Symbol hält den Emulator an (Abbildung 6). Im Terminalfenster erscheint zugleich wieder ein kleines Menü. Dort dürfen Sie nun noch an einigen Schrauben drehen, um etwa das verwendete Image im virtuellen CD-Laufwerk auszutauschen. Weiterreichende Einstellungen funktionieren hier nicht mehr – Sie sollten also nicht einfach die virtuelle Soundkarte aus dem simulierten PC reißen.
Die Bedienung erfolgt analog zum ersten Menü: Tippen Sie einfach die gewünschte Ziffer der zu ändernden Einstellung und drücken Sie anschließend [Eingabe]. Um die Emulation fortzusetzen, wählen Sie den Punkt Continue simulation, der letzte würde Bochs komplett beenden. Den gleichen Effekt erzielen Sie über die Schaltfläche Quit in der Symbolleiste, Reset links daneben startet den virtuellen PC neu.

Config die Installation von Windows XP. Das Terminalfenster präsentiert die nun möglichen Aktionen.” width=”300″ height=”163″ />
Abbildung 6: Hier unterbricht ein Klick aufConfig die Installation von Windows XP. Das Terminalfenster präsentiert die nun möglichen Aktionen.Fazit
Haben Sie einmal die etwas kryptische Konfiguration hinter sich gelassen und die umständliche Bedienung akzeptiert, verwandelt sich Bochs in einen schnellen Helfer, um Windows-Programme unter Linux zu betreiben oder schnell eine neue Distribution auszuprobieren. Da Bochs den Prozessor vollständig emuliert, läuft er auch auf anderen Computern, wie beispielsweise PowerPCs. Auf diese Weise kommen sogar Besitzer eines älteren Apple-Geräts in den Genuss reiner PC-Programme.
Glossar
-
LGPL
-
GNU Lesser General Public License. Schütz ähnlich wie die GPL durch Copyleft die Freiheit der lizenzierten Software. Programme, welche die LGPL-lizenzierte Software nur extern nutzen dürfen aber ihre eigene Lizenz behalten. Damit eignet sich die LGPL besonders als Lizenz für Bibliotheken.
-
TUN/TAP
-
Zwei Softwareschnittstellen im Userspace, die vorgeben, Netzwerk-Hardware zu sein. TUN simuliert eine Point-to-Point-Karte, TAP eine gewöhnliche Ethernetkarte, beide empfangen und verschicken Datenpakete.
[1] PC-Emulator Bochs: http://bochs.sourceforge.net/
[2] Benutzerhandbuch: http://bochs.sourceforge.net/doc/docbook/user/index.html
[3] Bochs-Tools: http://www.bablokb.de/bochs-tools/





