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.

Zeitreise

PCs mit Bochs emulieren

Netzwerke

Bochs stellt über einen entsprechenden Eintrag in der Konfigurationsdatei dem Gast eine NE2000-kompatible Netzwerkkarte bereit. Da Bochs dazu direkt auf das rohe Netzwerkdevice zugreift, funktioniert das nur, wenn Bochs mit Root-Rechten läuft. Bei modernen Kerneln, die die Rechte feiner abgestuft vergeben, gibt es eine Alternative (siehe Kasten "User-Zugriff auf Netzwerk-Devices").

Der Wirt kann entweder eine echte Ethernet-Karte durchreichen (ein WLAN-Anschluss reicht nicht) oder per TUN/TAP-Interface mit dem Gast kommunizieren. Die Zeile 10 in Listing 1 (auskommentiert) zeigt die entsprechende Konfiguration. Zusätzlich zum Emulator muss das Wirtsystem ebenfalls die Netzwerkschicht konfigurieren. Das Listing 2 enthält die dafür notwendigen Befehle. In ein Skript verpackt, ruft Bochs diese automatisch nach dem Einrichten des Netzwerk-Interfaces auf (Parameter script=... in Zeile 10 von Listing 1).

Listing 2

#!/bin/bash
/sbin/ifconfig $1 192.168.2.1
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i tun -j ACCEPT

User-Zugriff auf Netzwerk-Devices

Traditionell dürfen unter Linux nur solche Prozesse direkt auf Netzwerk-Devices zugreifen, die mit Root-Rechten laufen. Moderne Linux-Systeme können aber über so genannte Capabilities Rechte feiner abgestuft vergeben. Üblicherweise verwaltet der Kernel seit Version 2.6.24 diese erweiterten Dateirechte, die man in der Boot-Konfiguration oder auf der Kommandozeile mit file_caps=1 aktiviert. Zusätzlich gilt es die fraglichen Dateisysteme beim Start mit dem Flag user_xattr einzuhängen.

Zur Konfiguration der Capabilities dient das Hilfsprogramm setcap, das sich bei OpenSuse im Pakets libcap-prog findet, bei Debian in libcap2-bin. Ein Beispiel für die Rechtevergabe für Bochs zeigt Listing 3. Die ersten vier Befehle stellen sicher, dass nur Mitglieder der Gruppe bochs das Programm ausführen dürfen. Der nächste Befehl (setcap) setzt die entsprechenden Zusatzrechte, der letzte Befehl gibt sie zur Kontrolle nochmals aus.

Listing 3

# groupadd bochs
# usermod -A bochs bablokb
# chgrp bochs /usr/bin/bochs
# chmod 750 /usr/bin/bochs
# setcap cap_net_raw,cap_net_admin=eip /usr/bin/bochs
# getcap -v /usr/bin/bochs

Zugriff von Außen

Da Bochs sowohl auf optische Medien als auch das Netzwerk zugreifen kann, stellen weder die Installation eines Gast noch der Datenaustausch mit einem laufenden System ein prinzipielles Problem dar. Allerdings erweist sich die Performance nicht eben als berauschend, weswegen der Autor dieses Artikels vor gut zehn Jahren die Bochs-Tools [3] entwickelte, die den Zugriff auf die Festplattenabbilder von Bochs auch ohne den Emulator ermöglichen. Zusätzlich enthalten die Tools auch noch einen Skript-Wrapper für Bochs, um dem Emulator über Unix-konforme Kommandozeilenoptionen einen Teil der Hardware-Konfiguration – insbesondere das zu bootende Image – erst beim Start mitzugeben.

Die Bochs-Tools unterstützen nur das alte Festplattenformat von Bochs, dafür gehen die Erstellung, das Partitionieren und das Formatieren schnell von der Hand. In Listing 4 erstellt der Aufruf in der ersten Zeile eine Festplatte mit zwei Partitionen (maximal vier sind möglich). Startet ein normaler Benutzer bxtcreate, scheitert er normalerweise, da das Programm intern sfdisk verwendet, das nicht bei jeder Distribution im Standardsuchpfad liegt. Spätestens bei der Formatierung brauchen Sie dann aber sowieso Rootrechte.

Listing 4

# bxtcreate -1 200m -2 128m hda.img
# bxtmkfs -t ext2 hda.img:1
# bxtmkfs -t swap hda.img:2
# bxtmount hda.img:1 /mnt

Die Formatierung erledigen die Befehle in den Zeilen 2 und 3 von Listing 3 mit dem Befehl bxtmkfs. Die zu formatierende Partition hängen Sie durch einen Doppelpunkt getrennt an den Namen des Images an. Genauso geben Sie beim Einhängen mit bxtmount die entsprechende Partition an. Wie beim normalen Mount-Befehl funktioniert das wiederum nur als Root. Einmal eingehängt, nutzen Sie die Partition wie jede andere Festplatte.

Den Bochs-Tools sieht man ihr Alter an. So war zum Zeitpunkt ihrer Erstellung noch Lilo der Standard-Bootloader für Linux. Das bxtlilo-Kommando installierte von außen auf der virtuellen Festplatte eine funktionsfähige Lilo-Konfiguration und unterstützte dabei auch Dual-Boot-Konfigurationen mit Windows. Prinzipiell wäre hier eine Portierung auf Grub überfällig.

Das neuere Festplattenformat concat macht das Hantieren mit Bochs-Festplatten auch einfacher. Nutzen Sie pro Partition eine physische Containerdatei, hängen Sie diese einfach per Loopback-Device ein. Selbst für das klassische flat-Format ist Bxtmount nicht mehr notwendig, denn das Util-Linux-Paket enthält mittlerweile das Programm kpartx, das via kpartx -a hda.img für jede Partition auf hda.img ein eigenes Loop-Device erstellt, etwa /dev/loop0p1, /dev/loop0p2 und so fort. Nach dem Aushängen entfernt kpartx -d hda.img die Device-Mappings wieder.

Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

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