AA_old-cpu_123rf-8848464_server.jpg

© server, 123rf.com

Zeitreise

PCs mit Bochs emulieren

12.03.2012
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
 

Related content

  • 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.
Kommentare

Infos zur Publikation

title_2014_08

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

Mit der Zeitschrift LinuxUser sind Sie als Power-User, Shell-Guru oder Administrator im kleinen Unternehmen monatlich auf dem aktuelle Stand in Sachen Linux und Open Source.

Sie sind sich nicht sicher, ob die Themen Ihnen liegen? Im Probeabo erhalten Sie drei Ausgaben zum reduzierten Preis. Einzelhefte, Abonnements sowie digitale Ausgaben erwerben Sie ganz einfach in unserem Online-Shop.

NEU: DIGITALE AUSGABEN FÜR TABLET & SMARTPHONE

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

Tipp der Woche

Schnell Multi-Boot-Medien mit MultiCD erstellen
Schnell Multi-Boot-Medien mit MultiCD erstellen
Tim Schürmann, 24.06.2014 12:40, 0 Kommentare

Wer mehrere nützliche Live-Systeme auf eine DVD brennen möchte, kommt mit den Startmedienerstellern der Distributionen nicht besonders weit: Diese ...

Aktuelle Fragen

Server antwortet mit falschem Namen
oin notna, 21.07.2014 19:13, 1 Antworten
Hallo liebe Community, Ich habe mit Apache einen Server aufgesetzt. Soweit, so gut. Im Heimnet...
o2 surfstick software für ubuntu?
daniel soltek, 15.07.2014 18:27, 1 Antworten
hallo zusammen, habe mir einen o2 surfstick huawei bestellt und gerade festgestellt, das der nic...
Öhm - wozu Benutzername, wenn man dann hier mit Klarnamen angezeigt wird?
Thomas Kallay, 03.07.2014 20:30, 1 Antworten
Hallo Team von Linux-Community, kleine Zwischenfrage: warum muß man beim Registrieren einen Us...
openSUSE 13.1 - Login-Problem wg. Fehler im Intel-Grafiktreiber?
Thomas Kallay, 03.07.2014 20:26, 8 Antworten
Hallo Linux-Community, habe hier ein sogenanntes Hybrid-Notebook laufen, mit einer Intel-HD460...
Fernwartung für Linux?
Alfred Böllmann, 20.06.2014 15:30, 7 Antworten
Hi liebe Linux-Freunde, bin beim klassischen Probleme googeln auf www.expertiger.de gestoßen, ei...