AA_old-cpu_123rf-8848464_server.jpg

© server, 123rf.com

PCs mit Bochs emulieren

Zeitreise

Mit dem freien, portablen und kompakten x86-Emulator Bochs erwecken Sie alte Betriebssysteme zu neuem Leben.

Im alltäglichen Sprachgebrauch kommen die Begriffe Emulation und Virtualisierung zwar oft gleichrangig zum Einsatz, doch tatsächlich unterscheiden sich die beiden Techniken grundlegend.

Emulatoren bilden per Software einen kompletten Computer nach, dessen Architektur sich dadurch von jener des tatsächlich zugrunde liegenden Systems völlig unterscheiden kann (aber nicht zwingend muss). Auf diesem Weg lassen sich beispielsweise Betriebssysteme und Programme für ARM- oder RISC-CPUs auch auf einem Intel-PC ausführen. Dabei verlangt allerdings das Nachstellen einer kompletten Systemarchitektur der Basismaschine einiges an Leistung ab. Virtualisierer (wie Vmware oder VirtualBox) dagegen verzichten zugunsten der Performance auf diese Plattformunabhängigkeit und reichen die meisten Instruktionen direkt an die vorhandene Hardware durch. Das Ausführen systemfremder Software beherrschen sie daher nicht.

Bei Bochs ([1], gesprochen wie "Box") handelt es sich um einen klassischen Emulator. In C++ geschrieben, läuft er auf vielen realen Hardware-Plattformen ohne Abhängigkeiten zum Befehlssatz. Dort bildet er x86-Systeme vom 286er bis zur modernen 64-Bit-CPU nach, bei Bedarf inklusive der diversen Befehlssätze wie MMX, SSE oder 3DNow (siehe Kasten "Emulierte Hardware"). Der Mehraufwand der Emulation gegenüber der Virtualisierung zeigt sich klassisch in der Ablaufgeschwindigkeit. Während alte Betriebssysteme wie etwa Windows 98 (Abbildung 1) mit halbwegs aktuellen Rechnern als Wirt in annehmbarer Geschwindigkeit laufen, brauchen selbst extrem schlanke Linux-Distributionen wie Puppy-Linux (Abbildung 2) schon zum Booten geraume Weile.

Abbildung 1: Windows98 bootet im Bochs-Emulator.
Abbildung 2: Puppy-Linux.

Emulierte Hardware

Prozessor bis zu 15 CPUs

Befehlssatz i286 bis x86_64

Grafik VGA, SVGA

Sound Soundblaster

Massenspeicher 4 ATA-Kanäle, bis zu acht (IDE-)Geräte

Disketten zwei Laufwerke, 1,44 oder 2,88 MByte

Schnittstellen 2 parallel, 4 seriell

Netzwerk NE2K

Bedienung Maus, Tastatur

Sonstiges PCI (rudimentär), USB (rudimentär)

Wer also gerade nicht ein älteres Betriebssystem booten will, greift also besser zum Virtualisierer. Für eine kleine Zeitreise in Sachen IT dagegen eignet sich Bochs bestens und führt historische Betriebssysteme genau so aus, wie sie sich seinerzeit auf der damaligen Hardware angefühlt haben. Übrigens hat auch Bochs selbst eine fast zwanzigjährige Historie vorzuweisen, einige Informationen dazu finden Sie im Kasten "Bochs: Bewegte Geschichte".

Bochs: Bewegte Geschichte

Kevin Lawton entwickelte Bochs seit 1994, zunächst als kommerzielles Produkt. Mandrakesoft kaufte den Code von Bochs Anfang 2000 und stellte ihn unter die LGPL. Gleichzeitig nahm Kevin Lawton einen Job bei dem Unternehmen an und widmete sich dort dem Projekt Plex86, das einen Virtualisierer mit ähnlichen Merkmalen wie Vmware schaffen sollte.

Mit dem Ende der New-Economy-Blase musste auch Mandrakesoft kürzer treten und entließ eine ganze Reihe von Angestellten, darunter auch Kevin Lawton. Das Plex86-Projekt kam de facto zum Erliegen, als One-Man-Show hätte es vermutlich ohnehin nicht gegen Konkurrenz wie Vmware bestehen können.

Im März 2001 wurde Bochs ein Sourceforge-Projekt, das eine ganze Reihe von Entwicklern weitertrieb. Dadurch konnte Bochs ins Sachen Hardware-Support kontinuierlich zulegen, insbesondere hinsichtlich der unterstützten CPU-Typen und Festplattenformate.

Bochs einrichten

Zu Redaktionsschluss war Bochs 2.5.1 die aktuelle Version, das aber noch nicht allen Distributionen beiliegt. OpenSuse 12.1 stellt beispielsweise Bochs 2.2.1 bereit. Debian bringt Bochs 2.4.6 mit, das es auf mehrere Pakete verteilt. Die selbe Version findet sich auch in Ubuntu 11.10.

Auf den Projektseiten von Bochs gibt es auch ein RPM der aktuellen Version als Download, das aber als Voraussetzung zwei weitere Pakete benötigt: libltdl und glitz. Letzteres bereitet unter dem aktuellen OpenSuse Probleme, da die Distribution es seit Version 11.4 nicht mehr ausliefert. Eine Paketsuche im OpenSuse-Software-Verzeichnis [2] mit der Einstellung All distributions fördert es aber zutage.

Nach dem Einrichten des RPM-Pakets finden Sie die komplette Dokumentation im Verzeichnis /usr/share/doc/bochs im HTML-Format. Zusätzlich enthält das Paket auch ein direkt startbereites Bochs-Image – das Kommando bochs-dlx entpackt es und startet den Emulator.

Können oder möchten Sie das RPM-Paket nicht verwenden, holen Sie sich den Quelltext-Tarball und installieren Bochs nach dessen Entpacken mit dem Dreischritt configure && make && make install. Dazu benötigen Sie freilich die entsprechenden Devel-Pakete der verwendeten Bibliotheken.

Erste Schritte

Obwohl Bochs auf Wunsch sogar Mehrkernprozessoren emuliert, läuft es selbst nur single-threaded, wobei es einen CPU-Kern komplett auslastet. Zu einem vollwertigen System gehören neben der CPU auch weitere Komponenten, wie ein BIOS, ACPI-Tabellen und ein APIC. Diese stellt Bochs durchaus bereit, allerdings funktionieren sie nicht immer so, wie man erwarten würde. Bei aktuellen Linux-Distributionen bewährt es sich deshalb, sie mit der Option "apci=off noapic" zu starten.

Die zu emulierende Hardware definieren Sie in einer textbasierten Konfigurationsdatei. Beim Start sucht Bochs an folgenden Stellen (in dieser Reihenfolge):

  • ./.bochsrc
  • ./bochsrc
  • ./bochsrc.txt
  • ~/.bochsrc
  • /etc/bochsrc

Das RPM von der Bochs-Homepage liefert eine vollständige und gut kommentierte Vorlage im Verzeichnis /usr/share/doc/bochs. Die Datei fällt zwar recht groß aus, tatsächlich benötigen Sie aber letztlich nur wenige Einträge zwingen. Eine kompakte Ausgangsbasis für erste eigene Experimente zeigt das Listing 1.

Listing 1

# Bochs-Konfigurationsdatei
cpu: count=1, ips=64000000
cpuid: apic=legacy, x86_64=0
memory: guest=1024, host=1024
keyboard_mapping: enabled=1, map=$BXSHARE/keymaps/x11-pc-de.map
vga: extension=cirrus
vgaromimage: file=$BXSHARE/VGABIOS-lgpl-latest-cirrus
clock: sync=realtime, time0=local
ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=linux, ethdev=eth0
#ne2k: ioaddr=0x300, irq=9, mac=b0:c4:20:00:00:00, ethmod=tuntap, ethdev=/dev/net/tun, script=/home/bablokb/src/bochs-tools/bin/bxttuncfg
pci: enabled=1, chipset=i440fx, slot1=ne2k
ata0-master: translation=auto, type=disk, mode=flat, path=/data/bochs/hda.img, cylinders=311, heads=16, spt=63
ata1-master: type=cdrom, path=/dev/cdrom, status=inserted

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Alter Simulant!
    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.
  • Systememulation mit QEMU
    Haben Sie sich schon mal gewünscht, Linux im Fenster unter Linux auszuführen? Oder wie wäre es mit DOS unter Linux? QEMU ist eine Open-Source-Anwendung, die einen kompletten PC in Software emuliert.
  • Die Puppe in der Puppe
    Im Möbelhaus gaukeln künstliche Bücherreihen belesene Behaglichkeit vor: Das ist Virtualisierung. Emulatoren bauen dagegen gleich ganze Häuserfassaden nach, um eine lebende Stadt zu suggerieren.
Kommentare

Infos zur Publikation

LU 09/2016: Ciao, Windows!

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Scannen nicht möglich
Werner Hahn, 19.08.2016 22:33, 3 Antworten
Laptop DELL Latitude E6510 mit Ubuntu 16,04, Canon Pixma MG5450. Das Drucken funktioniert, Scann...
Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...
Probleme beim Hochfahren der Terastaion 5400 mit Unix-Distrib
Sheldon Cooper, 10.07.2016 09:32, 0 Antworten
Hallo ihr lieben, habe seit zwei Tagen das Problem, das das NAS (Raid5) nicht mehr sauber hoch...
Mit Firewire Videos improtieren?
Werner Hahn, 09.06.2016 11:06, 5 Antworten
Ich besitze den Camcorder Panasonic NV-GS330, bei dem die Videos in guter Qualität nur über den 4...