Home / LinuxUser / 2012 / 04 / PCs mit Bochs emulieren

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Eingedost
(161 Punkte bei 4 Stimmen)
Aufteiler
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.

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

Abbildung 1: Windows98 bootet im Bochs-Emulator.

Abbildung 2

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
Tip a friend    Druckansicht Bookmark and Share
Kommentare

3065 Hits
Wertung: 59 Punkte (7 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 05/2014

Aktuelle Ausgabe kaufen:

Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,95 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 60,60) können Sie im Medialinx-Shop bestellen.

Tipp der Woche

Bilder vergleichen mit diffimg
Bilder vergleichen mit diffimg
Tim Schürmann, 01.04.2014 12:40, 1 Kommentare

Das kleine Werkzeug diffimg kann zwei (scheinbar) identische Bilder miteinander vergleichen und die Unterschiede optisch hervorheben. Damit lassen sich nicht nur Rätsel a la „Orignial und Fäls...

Aktuelle Fragen

programm suche
Hans-Joachim Köpke, 13.04.2014 10:43, 8 Antworten
suche noch programme die zu windows gibt, die auch unter linux laufen bzw sich ähneln sozusagen a...
Funknetz (Web-Stick)
Hans-Joachim Köpke, 04.04.2014 07:31, 2 Antworten
Bei Windows7 brauche ich den Stick nur ins USB-Fach schieben dann erkennt Windows7 Automatisch, a...
Ubuntu 13.10 überschreibt immer Windows 8 Bootmanager
Thomas Weiss, 15.03.2014 19:20, 8 Antworten
Hallo Leute, ich hoffe das ich richtig bin. Ich habe einen Dell Insipron 660 Ich möchte gerne Ub...
USB-PTP-Class Kamera wird nicht erkannt (Windows-only)
Wimpy *, 14.03.2014 13:04, 15 Antworten
ich habe meiner Frau eine Digitalkamera, AGFA Optima 103, gekauft und wir sind sehr zufrieden dam...
Treiber
Michael Kristahn, 12.03.2014 08:28, 5 Antworten
Habe mir ein Scanner gebraucht gekauft von Canon CanoScan LiDE 70 kein Treiber wie bekomme ich de...