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

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

„Klickbunt auf dem Server? Warum nicht, wenn's hilft!"
(195 Punkte bei 6 Stimmen)
Bezahlstandard
(121 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: 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
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

2355 Hits
Wertung: 59 Punkte (7 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

title_2013_06

Aktuelle Ausgabe kaufen:

Heft bestellen 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

Terminator
Viele Terminals im Griff mit Terminator
Tim Schürmann, 07.05.2013 10:57, 1 Kommentare

Wer morgens nach dem Einschalten des Rechners erst einmal mehrere Terminals öffnet und sich diese mühevoll auf dem Bildschirm drapiert, der sollte einen Blick auf Terminator werfen. Das kleine...

Aktuelle Fragen

Kontakt via QR code hinzufügen
Herman Sproesser, 17.05.2013 17:46, 3 Antworten
Hi hab in der aktuellen ausgabe 06.2013 den artikel über QR Codes gelesen. Ich hab nartürlich...
Dateimanager Dolphin, wo legt er die Datei Kommentare ab?
Uwe Heine, 16.05.2013 15:19, 1 Antworten
Suse Linux 12.1 - KDE 4.7.2 / Dolphin 1.7. Ich habe bei vielen Dateien über Dolphin Kommentare...
wie baut man Kernel Module so, dass sie mit jedem Kernel laden?
GoaSkin , 22.04.2013 10:22, 1 Antworten
Hallo, baut man anhand eines Kernel-Sources Module, nutzt Linux im Normalfall eine strikte V...
Problem beim Installieren von SuSe 12.3
Georg Prokert, 14.04.2013 00:04, 16 Antworten
Hallo, auf meinem neuem Laptop (Acer Aspire V3-771, Intel Core i5-3230 M, Intel HD Graphics 4...
lvm wieder loswerden
Peter Dibbern, 11.04.2013 16:28, 4 Antworten
Ich habe sämtliche alten Kisten ausgeschlachtet und aus der Teilen einen Rechner zusammengeschrau...