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.

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.

Tip a friend    Druckansicht Bookmark and Share
Kommentare

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