PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bochs



stefan.becker
08.06.03, 16:47
Hinweis:

Dieses Howto wird nicht mehr gepflegt.

Bochs ist nach wie vor quälend langsam. Mit Qemu steht eine ebenso freie und wesentlich performantere Umgebung zur Verfügung.

Auch die Plex86-Einbindung ist anscheinend eingeschlafen.

Wer es dennoch versuchen will: Viel Spaß, aber ohne weiteren Support.



Inhalt:

Einleitung (dieser Abschnitt)
Alternativen zu Bochs (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=470699#470699)
Installation von Bochs (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=470728#470728)
Konfiguration (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=470740#470740)
Installation eines Gast-Betriebssystems über fertige Diskimages (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=470947#470947)
Installation eines Gastbetriebssystems über Floppy/CD (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=470965#470965)
Technische Daten (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=471028#471028)
Tips & Tricks (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=471140#471140)
Netzwerk einrichten (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=473243#473243)
Bochs & Plex86 (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=477048#477048)
Screenshot Bochs/Win98/Word (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=478839#478839)
Screenshot Bochs/Win98/Internet Explorer (http://www.linuxforen.de/forums/showthread.php?action=showpost&postid=478992#478992)


Hinweis vorab

Hier können keine Fragen gestellt werden, dafür ist der Bereich "virtuelle Maschinen&Emulatoren" vorhanden. Ich lese dort regelmäßig und werde bei Bedarf hier Erweiterungen vornehmen.


Was ist Bochs ?

Bochs ist ein PC-Emulator, der das Ausführen von x86 Gastbetriebssystemen parallel zu / auf einem Linux oder Windows Host ermöglicht. Das Konzept entspricht damit VMWARE.

Bochs wird übrigens gesprochen wie "Box".

Da nicht wie bei WINE die Windows API emuliert wird, sondern das Gastbetriebssystem "Windows" vollständig auf einem virtuellen PC läuft, sollten wie bei VMWARE und Win4Lin fast alle Windows Programme gehen, mit der Ausnahme direkter Hardware-Zugriff wie z. B. bei DirectX.

Ein guter Ansatzpunkt ist das Tool z. B. für Webdesigner, die ihre Webseiten mal unter Windows mit dem IE ansehen wollen.

Wichtig: Da das vollständige Gastbetriebssystem ausgeführt wird, müssen natürlich entsprechende Lizenzen für z. B. Windows wie bei VMWARE vorhanden sein. Die gibt es (falls nicht vorhanden) preisgünstig bei www.ebay.de.


Erwartungen

Man sollte von Bochs nicht zu viel erwarten, es ist quälend langsam. Wer eine gute Emulation braucht, sollte sich stattdessen mal Qemu anschauen (Link siehe unten), das ist wesentlich performanter und einfacher einzurichten.


RTFM: Bevor man Fragen stellt, bitte erstmal in den Foren und Mailinglisten selber suchen. Das dauert zwar, aber damit habe ich bis jetzt noch alle Probleme lösen können. Oder zumindest gibt es Hinweise, das ein bestimmtes Feature (noch) nicht (vollständig) unterstützt wird.


Unterschiede zu VMWARE

Preis / Lizenz

Für viele entscheidend: Bochs ist Open Source (Gnu LGPL). VMWARE ist kostenpflichtig (300 € aufwärts). Lizenzbedingungen: http://www.gnu.org/copyleft/lesser.html

Technische Eigenschaften

VMWARE schaltet den x86-Prozessor des PCs transpararent zum Gastbetriebssystem durch, so dass die Anwendungen mit einer sehr guten Performance laufen. Damit ist der Einsatz allerdings auch auf x86-Hosts begrenzt.

Bochs hingegen emuliert einen Pentium Prozessor. Das kostet Performance, ermöglicht aber auch den Einsatz z. B. auf einem Power PC unter Linux.

Im unteren Bereich des Howtos befindet sich eine Auflistung der technischen Eigenschaften.


Aktueller Stand

10.02.04: Auflösung 1024*768, 256 Farben

17.09.03: Netzwerk geht jetzt mit Firewall

26.06.03: Netzwerk funktioniert noch nicht zusammen mit Firewall.

21.06.03: Starmoney 3.0 im Windows 98 Gast installiert. Langsam, aber geht.

18.06.03: Plex86 geht jetzt

16.06.03: Netzwerk+Sound gehen jetzt. Grafik jetzt bei 800*600, 16 Farben.

14.06.03: Ich bin mit Bochs noch sehr im Versuchsstadium. Aktuelle Baustellen:

- Netzwerk: geht nicht
- Sound: geht nicht
- Grafik: Höhere Auflösung als 640*480/16 Farben sind erwünscht.
- Plex86 Anbindung geht noch nicht.


Links

Homepage:
http://bochs.sourceforge.net/

FAQ: http://bochs.sourceforge.net/cgi-bin/topper.pl?name=Bochs+FAQ&url=http://bochs.sourceforge.net/doc/docbook/user/faq.html

User Manual:
http://bochs.sourceforge.net/cgi-bin/topper.pl?name=New+Bochs+Documentation&url=http://bochs.sourceforge.net/doc/docbook/user/book1.html

Anwender und Hilfe-Foren:
http://bochs.sourceforge.net/cgi-bin/topper.pl?name=Bochs+Discussion+Boards&url=http://sourceforge.net/forum/qmrkgroup_ideq12580

Mailinglisten:
http://bochs.sourceforge.net/mailinglists.html


Änderungen:

08.06.03: Erstellung
09.06.03: Ergänzungen, Überarbeitung
16.06.03: Änderung der ".mtoolsrc" für Datenaustausch, 2. IDE-Kanal, Sound (Tips&Tricks)
16.06.03: Screenshot Bochs / Win98 / Word 2000
16.06.03: Netzwerkeinrichtung aktualisiert, Screenshot IE unter Win98
18.06.03: Plex86 Anbindung überarbeitet
19.06.03: Drucken bei Tips&Tricks hinzugefügt, Performance Tips erweitert
19.06.03: Größeres virtuelles Laufwerk einrichten unter Tips&Tricks ergänzt
26.06.03: Netzwerk: Windows als Host, Linux als Gast hinzugefügt.
26.06.03: Tips&Tricks erweitert
06.09.03: Hinweis auf PPTP bei Netzwerk (s. u.)
17.09.03: Netzwerk&Firewall, Super VGA Treiber für Windows NT Gast
15.10.03: Tips&Tricks/Uhr, Link zu Gast/Windows XP
31.10.03: Inhaltsverzeichnis mit Links
13.10.04: Anpassungen an Bochs 2.1
19.01.04: Plex86 für Bochs 2.1
10.02.04: Höhere Auflösung einstellen
25.02.04: Links kontrolliert und aktualisiert

stefan.becker
08.06.03, 16:49
VMWARE

http://www.linuxforen.de/forums/showthread.php?threadid=47553


Win4Lin

http://www.linuxforen.de/forums/showthread.php?threadid=54836


Qemu

http://www.linuxforen.de/forums/showthread.php?t=141201


WINE

http://www.linuxforen.de/forums/showthread.php?threadid=48347


Plex86

Plex86 bietet 2 Ansatzpunkte. Zum einen kann ein "Linux-Gast-Kernel" gebootet werden. Interessant ist aber der 2. Ansatz: Plex86 zur Beschleunigung von Bochs, siehe auch unten dazu im Howto ein spezielles Kapitel.

Homepage: http://plex86.sourceforge.net/

stefan.becker
08.06.03, 17:14
Installation von Bochs

Download unter:

http://bochs.sourceforge.net/getcurrent.html

Hier gibt es Installer für Windows Hosts sowie für Linux.


RPM Pakete

Das RPM-Paket wie gewohnt über "rpm -Uvh bochs*rpm" installieren. Bei fehlenden Abhängigkeiten kann man hier z. B. hier die fehlenden RPMs ziehen:

http://rpmfind.net/
http://freshrpms.net/


Source Paket

- File "Gzipped Tarball.." downloaden und mit "tar zxvf bochs*" entpacken
- Ins Source-Verzeichnis wechseln
- "./configure", "make" und "make install"

Parameter für "./configure:"

Hier einige interessante Parameter, eine vollständige Auflistung gibts durch "./configure --help" oder hier:

http://bochs.sourceforge.net/doc/docbook/user/compiling.html#CONFIG-OPTS

"--prefix=/usr": Zielverzeichnis für Installation, abhängig von der Distribution

"--enable-cpu-level=x": Einstellung der zu emulierenden CPU

x=3 => 386
x=4 => 486
x=5 => 586 / Pentium (Default)

"--with-x11": mit X-Windows Unterstützung

"--with-sdl": Mit SDL Unterstützung (Multimedia Library) (http://www.libsdl.org/index.php)

"--with-wx": Unterstützung von wxWindows, damit eine GUI für Konfiguration möglich, siehe auch Beschreibung unten. wxWindows bzw. wxGTK gibt es unter: http://www.wxwindows.org/

"--with-all-libs": Sucht nach allen verfügbaren bzw. unterstützten Bibliotheken (laut Beschreibung "still experimental")

"--enable-sb16=linux": Unterstützung der Soundkarte (Soundblaster 16 Emulation)

"--enable-cdrom": Unterstützung von CDROM-Laufwerken (Default)

"--enable-config-interface": Bei erstem Start wird eine Konfigurations-GUI gestartet

"--enable-ne2000": Unterstützung eines NE200 kompatiblen Netzadapters

"--enable-fpu": Unterstützung eines mathematischen Koprozessors

"--enable-mmx": Emulierte CPU unterstützt MMX Befehle

"--enable-sse=LEVEL": Emulierte CPU unterstützt SSE Befehle, Level=1 (SSE1) oder 2 (SSE2)

"--enable-all-optimizations": Alle Optimierungen einschalten für bessere Performance

"--enable-icache": CPU-Befehls Cache für bessere Performance

"--enable-host-specific-asms": Assembler Befehle werden direkt über dei CPU ausgeführt, ebenfalls für bessere Performance

"--enable-ignore-bad-msr": Ignoriert MSR-Meldungen, statt Abbruch mit Panik-Meldung

"--enable-vbe": VGA-Bios mit Vesa Modus wird integriert (höhere Auflösungen, bis 1024*768)

"--enable-idle-hack": Dosbasierte Windosen verwenden gerne zu 100 % die CPU. Durch diese Einstellung wird Bochs nur aktiv, wenn wirklich eine Aktion im Fenster erfolgt.

Ich habe testweise hiermit übersetzt:

./configure --prefix=/usr --enable-cpu-level=5 --with-x11 --with-wx --enable-cdrom --enable-sb16=linux --enable-config-interface --enable-ne2000 --enable-vbe --enable-repeat-speedups --enable-icache --enable-host-specific-asms --enable-all-optimizations --enable-ignore-bad-msr


CVS-Version

Ganz unten auf der Seite befindet sich ein Link zu einem tagesaktuellen Tarball. Entpacken&Übersetzen erfolgt analog zum Source Paket.

In einem anderen Thread wurden von SeeksTheMoon folgende Flags empfohlen:

./configure --prefix=/usr --with-wx --with-x11 --enable-sb16=linux --enable-cdrom --enable-sse --enable-3dnow --enable-mmx --enable-vbe --enable-readline --enable-fast-function-calls --enable-icache --enable-repeat-speedups --enable-pae --enable-4meg-pages --enable-ne2000 --enable-apic --enable-cpu-level=6

stefan.becker
08.06.03, 17:22
Hilfedateien

Erste Hilfe gibt es wie fast immer durch den "man"-Befehl.

Hilfe zum Programm: "man bochs"
Hilfe zur Konfigurationsdatei: "man bochsrc"


Konfigurationsdatei

Alle Einstellungen werden in der zentralen Konfigurationsdatei "~/bochsrc" abgelegt.

Nach Installation findet man unter "/usr/share/doc/bochs" in der Datei "bochsrc-sample.txt" eine gut dokumentierte Beispiel-Konfiguration mit ausführlichen Erklärungen zu allen Einstellungen.


Erster Start / Umstellung auf GUI

Bochs wird durch Eingabe von "bochs" an der Kommandozeile gestartet. Zunächst erscheint eine Konfiguration im Textmodus. Wir wollen jedoch auf GUI umschalten.

Vorgehensweise:

- bochs starten
- "1. Restore factory default configuration" wählen
- "4. Save options to..." wählen, als Dateiname "bochsrc" eingeben
- "6. Quit now" wählen
- Datei "~/bochsrc" editieren, Zeile "config_interface: textconfig" suchen und ändern nach "config_interface=wx", Datei speichern

Beim nächsten Start erscheint die GUI.

Voraussetzungen:

- "./configure" mit Parametern "--enable-config-interface" und "--with-wx" starten
- wxGTK muss installiert sein


Weitere manuelle Einstellungen

Folgende Einstellungen in der Datei "bochsrc" sollten noch vor der ersten richtigen Benutzung erfolgen:

"romimage: file=/usr/share/bochs/BIOS-bochs-latest, address=0xf0000"
"vgaromimage: /usr/share/bochs/VGABIOS-lgpl-latest"
"megs: 128"
"display_library: wx"
"keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-de.map"

"romimage:" gibt ein Bios an, das zum Start des virtuellen PCs verwendet wird.

"vgaromimage:" gibt entsprechend das Bios einer Standard-VGA-Grafikkarte an. Für höhere Auflösungen im VESA-Modus (derzeit max: 1024*768, 16 Farben) ist unbedingt dieses Bios zu verwenden!

Die entsprechenden Imagedateien sind im Standardumfang und werden bei "make install" nach "/usr/share/bochs" kopiert (Pfad abhängig von Angabe "--prefix" beim Configure-Lauf (siehe oben).

"keyboard_mapping" schaltet die deutsche Tastaturbelegung ein.

"megs: 128" gibt den Speicher an, der dem virtuellen PC zur Verfügung steht.

"display_library: wx" gibt an, dass der virtuelle PC in einem wxWindows Fenster abläuft. Sollte es bei Windows Probleme geben, alternativ mal die Einstellung "display_library: x" versuchen.


Installation des VGA-Fonts

Laut Anleitung bei Bochs 2.0 war diese Aktion nötig, bei Bochs 2.1 geht es bei mir auch ohne. Also vorher erst alles weitere versuchen, wenn es dann geht, ist es gut.

Für Bochs unter X-Windows muss?? der sogenannte VGA-Font installiert werden.

Vorgehensweise:

- Datei "font/vga.pcf" (Bochs Source Verzeichnis) nach "/usr/X11R6/lib/X11/fonts/misc" kopieren (Pfad abhängig von Distribution)

- Folgende Kommandos als root eingeben:

- "compress /usr/X11R6/lib/X11/fonts/misc/vga.pcf"
- "mkfontdir /usr/X11R6/lib/X11/fonts/misc"
- "xset fp rehash"
- "/etc/rc.d/init.d/xfs restart"

Kommandos für RedHat, Pfade können abweichen bei anderer Distribution.


Einstellungen in der GUI

Alle weiteren Einstellungen erfolgen in der GUI.

Unter dem Menüpunkt "Edit" sollte nun die Hardware konfiguriert werden, die dem virtuellen PC zur Verfügung steht. Wichtig: Nach erfolgten Änderungen diese speichern über "File" / "Save Configuration", als Dateiname "bochsrc" angeben.

Nach dieser Konfiguration sollte Bochs so weit sein, dass zumindest DOS von einer (Win)Dos Bootdiskette in einem virtuellen PC startet.

Der Start des virtuellen PCs erfolgt über den Menüpunkt "Simulate" / "Start".

stefan.becker
08.06.03, 20:45
Disk Images

Unter http://bochs.sourceforge.net/diskimages.html können vorgefertigte und bootfähige Diskimages freier Betriebssysteme geladen werden.


FreeDos

Am Beispiel "FreeDos" wird die Installation eines Betriebssystems per Diskimage erläutert.

FreeDos ist ein freies und MSDOS kompatibles Betriebssystem.

Vorgehensweise:

- Download von "FreeDos" unter obiger Adresse
- Geladene Datei mit "tar zxvf freedos*" entpacken
- Im Userdir Verzeichnis "~/bochs/freedos" anlegen
- Alle Dateien des Archivs hierhin kopieren

- Folgende Einstellungen in die Datei "bochsrc" einfügen:

---------------------------------------------------------------------
floppya: 1_44=/home/username/bochs/freedos/a.img, status=inserted
floppyb: 1_44=/home/username/bochs/freedos/b.img, status=inserted
diskc: file=/home/username/bochs/freedos/c.img, cyl=306, heads=4, spt=17
boot: c
log: out.bochs
mouse: enabled=0
ips: 15000000
---------------------------------------------------------------------

Für Username ist der Name des angemeldeten Users einzusetzen.

Die Einstellungen können natürlich auch mit der GUI erfolgen. Die nötigen Einstellungen sind im Archiv in einer Datei ".bochsrc" zu entnehmen. Die Einstellungen zu VGA- und Image müssen nicht übernommen werden, hier gehen auch die obigen Einstellungen.

Danach kann FreeDos direkt gestartet werden.


Weitere Disk Images

Folgende weitere Disk Images stehen zur Verfügung (Auszug von der Homepage):



* Linux
4-meg hard disk image which boots into Linux. It should boot ok.
* DLX Linux
A 10-meg disk that boots DLX Linux (1.3.x kernel).
* NetBSD
Bootable floppy image. Fails in Bochs under bugfix2 with hard disk panic.
* OpenBSD
o OpenBSD
Bootable floppy image. Fails in Bochs under bugfix2 with hard disk panic.
* PicoBSD
Floppy image that boots FreeBSD, not a complete installation.
* Pragma Linux
Floppy image that boots Pragma Linux.
* Debian 3.0r0 Image (77MB download), contributed by Robert Millan
* Debian 2.2r5 Image (32MB download, 505MB uncompressed) and associated bochsrc, contributed by Robert Millan


Other Images

* Linux kernel image for x86-64 from Andi Kleen at SuSE, which can be used as a boot floppy. Here is the System.map file for it, which can be useful for debugging.
* BOXCARZF.ZIP
DOS executable from Leyland Needham (suboner@aol.com) that may expose a Bochs FPU bug



Please send comments and questions concerning the site

stefan.becker
08.06.03, 21:17
Installation von Windows 98

Im Handbuch ist sehr ausführlich die Installation von Windows 98 als Gast aufgeführt. Siehe hierzu auch:

http://bochs.sourceforge.net/doc/docbook/user/guest-win98.html

Es gibt dabei 2 Methoden:

- Übernahme eines bereits installierten Windows 98 (DOS Partition per MTools kopieren)
- frische Installation über eine Win98 CD


frische Installation von Windows 98

Im folgenden wird die Installation von Windows 98 von einer Original-CD beschrieben, der virtuelle PC wird zunächst mit einer Bootdiskette gestartet. Alle folgenden Befehle werden als User ausgeführt, nicht als Root!

Windows Installationsverzeichnis anlegen

- "cd /home/username/bochs"
- "mkdir win98"
- "cd win98"

Anlegen einer virtuellen Festplatte

Im folgenden wird eine 512 MB große virtuelle Festplatte angelegt:

- "bximage" eingeben
- "Do you want to create a floppy disk image or a hard disk image?" => "hd"
- "Enter the hard disk size in megabytes, between 1 and 32255" => "512"
- "What should I name the image?" => "c.img"
- Nun wird die virtuelle Platte erzeugt
- Die zuletzt angezeigte Zeile mit der Geometrie der virtuellen Platte unbdeingt merken, sie wird in die folgende Datei eingefügt.

Datei "bochsrc" erweitern

Nach Anlegen der Datei müssen folgende Zeilen in die Datei "bochsrc" eingefügt werden:

-------------------------------------------------------------------------------------------------
# Floppylaufwerk, echtes Device
floppya: 1_44=/dev/fd0, status=inserted
# IDE Kanal 0 einschalten
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
# Virtuelle Festplatte
ata0-master: type=disk, path="c.img", cylinders=1040, heads=16, spt=63
newharddrivesupport: enabled=1
# CDROM, /dev/hdc ist das echte CDROM Device, entsprechend anpassen
ata0-slave: type=cdrom, path="/dev/hdc", status=inserted
# Booten von Floppy
boot: floppy
# Ausgabelog (siehe auch Tips & Tricks
log: bochsout.txt
# Mausunterstützung ja/nein
mouse: enabled=1
# SB16 Emulation
sb16: midimode=1, midi=/dev/midi00, wavemode=1, wave=/dev/dsp, loglevel=2, log=sb16.log, dmatimer=600000
-------------------------------------------------------------------------------------------------

Windows von Bootdiskette starten

Nun muss zuerst mal die Festplatte eingerichtet werden:

- Booten von Startdiskette, erstmal ohne CD-Unterstützung
- Mit dem DOS-"fdisk" die virtuelle Platte als primäre DOS-Partition einrichten
- Neu starten mit Bootdiskette, jetzt aber mit CDROM-Unterstützung
- virtuelle Platte mit "format c:" formatieren
- Falls die Zeit im virtuellen PC zu schnell abläuft und man die CDROM-Option nicht auswählen kann, sollte folgende Zeile in die "bochsrc" eingefügt werden:

-------------------------------------------------------------------------------------------------
ips: 1000000
-------------------------------------------------------------------------------------------------

Wenn man keine Windows 98 Bootdiskette zur Hand hat, hilft vielleicht der folgende Link:

http://de.dir.yahoo.com/computer_und_technik/software/betriebssysteme/Bootdisketten/

Installation starten

- Die Zeile "ips: 1000000" sollte vor der echten Installation wieder gelöscht werden, ansonsten dauert alles zu lange
- im virtuellen PC auf Laufwerk "d:" wechseln
- "setup" starten

Ab hier geht es wie bei jeder normalen Windows-Installation weiter.

Booten von der virtuellen Festplatte

Nach der Installation befindet sich ein bootfähiges Windows auf der virtuellen Platte. Durch Ersetzen der Option "boot: floppy" mit

"boot: disk"

startet der PC beim nächsten Booten direkt von der virtuellen Platte.


Mausbenutzung

Sobald der Mauszeiger im bochs-Fenster ist, wird er "gefangen". Mit "F12" oder der mittleren Maustaste kann er wieder "befreit", also zwischen Host und Gast umgeschaltet werden.


Windows XP als Gast

Hier wird die Installation von Bochs und Windows XP als Gast beschrieben:

http://rcb1974.tripod.com/bochs/bochs_windows_xp_guest_howto.txt


Mehrere Gastbetriebssysteme

Bisher wurden alle Einstellungen in der zentralen Datei "bochsrc" abgelegt. Hierdurch ist jedoch nur die Konfiguration eines Gastes möglich.

Man kann jedoch für jeden Gast eine eigene Datei "bochsrc" anlegen, diese im jeweiligen Unterverzeichnis anlegen (z. B. ~/bochs/win98/bochsrc) und bochs dann so starten:

"bochs -f /home/username/bochs/win98/bochsrc"

Wahlweise kann die Datei auch ".bochsrc" heissen. In diesem Fall verwendet bochs immer die Datei aus dem aktuellen Verzeichnis.


Gastbetriebssysteme "kopieren"

Mit Hilfe der Bochs-Tools ist es möglich, bestehende Installationen von einer echten Partition auf ein Diskimage zu kopieren.

Homepage: http://www.bablokb.de/bochs-tools/

stefan.becker
08.06.03, 22:28
Überblick

http://bochs.sourceforge.net/doc/docbook/user/features.html
http://bochs.sourceforge.net/doc/docbook/user/supported-platforms.html

Host

Bochs läuft auf folgenden Hostbetriebssystemen:

- Linux
- AIX
- Solaris
- MacOS X
- Windows
- Amiga OS


Gastbetriebssysteme

Folgende Gastbetriebssysteme werden von Bochs unterstützt:

- DOS (FreeDos, MS-DOS)
- Windows 95, 98, 98 SE, ME, NT 4.0, 2K, XP
- Linux
- Minix
- VSD (FreeBSD, OpenBSD)
- Gnu-Hurd

Im Anwenderhandbuch finden sich hierzu entsprechende Kapitel mit Tips&Tricks zur Installation:

http://bochs.sourceforge.net/cgi-bin/topper.pl?name=New+Bochs+Documentation&url=http://bochs.sourceforge.net/doc/docbook/user/book1.html


Emulierte Hardware

Folgende Hardware-Komponenten stellt der virtuelle PC zur Verfügung:

- Floppy Laufwerke: Zugriff auf Imagedateien oder echtes Device
- IDE-Festplatten: Zugriff auf Imagedateien oder echtes Device (ATA-Channel)
- CDROM: Zugriff auf Imagedateien oder echtes Device (siehe auch configure-Option "--enable-cdrom") (ATA-Channel)
- RAM-Größe individuell festlegbar
- Soundblaster 16 Emulation (siehe auch configure-Option "--enable-sb16=linux")
- Serielle Schnittstelle
- Parallele Schnittstelle
- USB Schnittstelle 1 (ab der aktuellen CVS Version)
- NE2000 kompatible Netzwerkkarte (siehe auch configure-Option "--enable-ne2000")
- VGA Grafik (siehe auch configure-Option "--enable-X11", VGA-Font (s. o.), VGA-Bios (s. o.)
- CPU 386-586, MMX/SSE-Befehle, mathematischer Koprozessor (siehe auch configure-Optionen "--enable-cpu-level=...", "--enable-fpu", "--enable-mmx", "--enable-sse=LEVEL")

stefan.becker
09.06.03, 03:08
Installation Gast stürzt ab

Falls z. B. Windows als Gast während der Installation / Hardwareerkennung abschmiert, sollte man nach dem Motto "Weniger ist Mehr" vorgehen.

Man sollte einfach mal die für eine Grundinstallation nicht benötigte Hardware wie:

- Netzwerkkarte (NE2K)
- Sound (SB16)
- Schnittstellen (COM1, LPT1, USB1)
- PCI Support (i440fxsupport)

deaktivieren.

Dann erstmal den Gast installieren. Geht das soweit, kann man eine Komponente nach der anderen zuschalten:

1) Hardware wieder aktivieren.
2) Gast starten.
3) Hardwareerkennung starten, Hardware einrichten.
4) Gast neu starten und schauen, ob es geht.

Die Hardware wird durch folgende Einträge in der Konfigurationsdatei deaktiviert:

LPT1: "parport1: enabled=0"
COM1: "COM1: enabled=0"
USB1: "USB1: enabled=0"
I440FXSupportUSB1: "i440fxsupport: enabled=0"
SB16: Zeile entweder löschen oder Kommentarzeichen "#" vorstellen
NE2K: Zeile entweder löschen oder Kommentarzeichen "#" vorstellen

Wenn es nach dieser Massmahme immer noch nicht klappt, sollte man mal die aktuellste CVS-Version versuchen.


Windows 2000 Installation hängt (Tip von spunz)

Windows 2K kann ebenfalls unter Bochs installiert werden. Falls die Installation hängen bleibt, hilft eventuell folgende Vorgehensweise:

-w2k installieren und das Image statt mit NTFS mit FAT formatieren

-mit Winimage oder z. B. einer Dos Booddisk in das Image von w2k einsteigen und die Datei c:\boot.ini editieren (ev muß man vorher ein attrib -s -b -h machen). Die Booteinträge mit dem Parameter "/noguiboot" erweitern und schon gehts weiter.


Zeit

Falls die Zeit in der virtuellen Maschine zu schnell läuft, folgende Zeile einfügen in die bochsrc:

"pit: realtime=1"


Höhere Bildschirmauflösungen

Windows 9x

In der aktuellen Version unterstützt Bochs als maximale Auflösung unter Windows 9x/ME 800x600, 16 Farben. Hierzu muss einfach der Super VGA Treiber im Windows Gast installiert werden.

Höhere Auflösungen (bis zu 1024*768, 256 Farben) lassen sich wie folgt erreichen:

- Datei "pmhelp.vxd" nach "c:\windows\system" kopieren.

Quelle: http://unununium.org/viewcvs/snap/redist/release/pmhelp.vxd

- Scitech Display Doctor ab Version 7 installieren (http://www.scitechsoft.com/).

- Windows neu starten, anschließend als Grafikkarte den Scirech Display Doctor einstellen (Diskette, Inf-Files und Treiberdateien befinden sich unter c:\sdd).

- Ab dem nächsten Neustart lässt sich die höhere Auflösung einstellen.

Windows NT,XP,2K

Für Windows NT/2K gibt es einen Super-VGA-Treiber, der 1024*768 bei 256 Farben unterstützt:

http://dhenriq.en.eresmas.com/ (Tip von Blub).

Linux-Gast

Bei einem Linux Gast ist mit dem SuperVGA-XServer 1024*768, 16 Farben möglich.


Folgende Voraussetzungen allgemein:

- Bochs wurde mit VBE und X11-Unterstützung übersetzt (./configure --enable-x11 --enable-VBE).
- Das VGA-Bios "vgaromimage: /usr/share/bochs/VGABIOS-lgpl-latest" wurde in der bochsrc angegeben.
- Im Gastbetriebssystem muss ein Super-VGA bzw. VESA-Treiber installiert sein.


Performance

Durch folgende Maßnahmen wird eine bessere Performance erreicht:

- Übersetzung mit allen Optimierungen (siehe oben, ./configure ...).

- Ausschalten der Logdatei. Hierzu folgende Optionen in der bochsrc einfügen oder ändern:

--------------------------
debug: action=ignore
info: action=ignore
error: action=ignore
panic: action=ignore

log: -
--------------------------

- Auswahl des Display-Interfaces

Bei Auswahl des Display-Interface wx-Windows ist die GUI-Performance z. B. bei Windows als Gast schlechter als bei Auswahl von "x".

Optimal(er) sind also folgende Einstellungen:

-------------------------------------------------
config_interface: textconfig
display_library: x
-------------------------------------------------

Damit entfällt leider GUI für die Konfiguration. Eine Mischung von "wx" für Konfiguration und "x" für Display ist nicht möglich.


Deutsche Tastatur

Hierzu folgende Optionen in der bochsrc einfügen oder ändern:

--------------------------------------------------------------------------------------------------
keyboard_mapping: enabled=1, map=/usr/share/bochs/keymaps/x11-pc-de.map
keyboard_type: mf
--------------------------------------------------------------------------------------------------


Datenaustausch durch Zugriff auf die virtuelle Festplatte

Linux-Host

Es gibt einen direkten Weg, vom Gast zum Host und zurück Daten mit einem "copy"-Befehl zu kopieren.

Zunächst müssen die MTools installiert sein: http://mtools.linux.lu/

In die Datei "~/.mtoolsrc" werden folgende Zeilen eingetragen:
--------------------------------------------------------------------------------------------------
mtools_skip_check=1
drive c: file="/home/username/win98/c.img" partition=1
--------------------------------------------------------------------------------------------------

Der Pfad ist natürlich entsprechend anzupassen.

Nun kann mit "mcopy datei c:" eine Datei vom Host zum Windows Gast und umgekehrt mit "copy c:... /tmp" eine Datei vom Gast zum Host kopiert werden.

Windows-Host

Mit folgenden Tools kann man auf die virtuelle Festplatte zugreifen:

http://hp.vector.co.jp/authors/VA013937/

http://www.winimage.com


2. IDE Kanal geht nicht

In einer Beispiel-Konfiguration funktionierte der 2. IDE Kanal zwar unter DOS, aber nicht Win98. Ich habe dann von der DOS-Bootdiskette die Treiber "oakcdrom.sys" und "mscdex.exe" nach c:\ kopiert und folgende Zeilen eingetragen:

config.sys: "device=oakcdrom.sys /D:mscd001"

autoexec.bat: "mscdex /D:MSCD001"

Danach ging das CDROM-Laufwerk unter win98.


Sound geht nicht / Windows 98

Ursachen / Fehlerbehebung:

- "./configure" muss mit der Option "--enable-sb16=linux" ausgeführt worden sein.

- In der Datei "bochsrc" muss das Device angegeben sein, z. B. so:

----------------------------------------------------------------------------------
sb16: midimode=1, midi=/dev/midi00, wavemode=1, wave=/dev/dsp, loglevel=5, log=sb16.log, dmatimer=600000
----------------------------------------------------------------------------------

"loglevel=5" schreibt alle Ausgaben in die Logdatei "sb16.log". Falls der Sound läuft, kann man den Loglevel ruhig auf "0" zurückschalten.

- Device belegt durch Soundserver, bei KDE kann dann z. B. über "artsdsp -m bochs" gestartet werden

- Treiber "zu neu": Je älter der Treiber, desto besser. Am besten einen echten "win95" Treiber z. B. über www.driverguide.com laden. Ich hatte die Treiber aus einem Archiv "sb16-full.zip" für Windows 95 unter Windows 98 erfolgreich installiert. Der originale Win98 Treiber geht jedenfalls nicht.

- Wenn der Sound zerhackt klingt, kann unter u. U. ein kleinerer Wert bei "dmatimer=..." helfen.

Der Sound ist ähnlich bescheiden wie unter VMWARE, man kann Bochs also kaum für Audiogenuss oder -bearbeitung verwenden.


Drucken

Ausgabe über Datei

Durch Eintrag der folgenden Zeile in der Konfigurationsdatei erhält der virtuelle PC eine parallele Schnittstelle:

----------------------------------------------------
parport1: enabled=1, file="/tmp/bochs_print.ps"
----------------------------------------------------

Der Ausdruck erfolgt in die Datei "/tmp/bochs_print.ps".

Anschließend wird der virtuelle PC gestartet. Zunächst muss die parallele Schnittstelle erkannt werden. Bei einem Windows Gast hierzu in der Systemsteuerung bei den Anschlüssen nachzuschauen, ob ein Parallelport bekannt ist. Ist dies nicht der Fall, einfach mal die Hardwareerkennung starten.

Wenn Schnittstelle bekannt, kann der Drucker eingerichtet werden. Am besten fügt man einen "Apple Laserwriter" hinzu, weil dessen Output Postscript ist.

Unter Linux kann man die Ausgabedatei dann z. B. ausdrucken mit:

"lpr -P lp /tmp/bochs_print.ps"

Drucker direkt ansteuern

Weiterhin kann man direkt den Parallelport als Ziel angeben, z. B.:

-------------------------------------------------
parport1: enabled=1, file="/dev/lp0"
-------------------------------------------------

Ob auch GDI Drucker gehen, entzieht sich meiner Kenntnis. Hier hilft einfach nur ausprobieren.


Größere virtuelle Festplatte einrichten

Die folgenden Angaben beziehen sich auf Windows 98 als Gast

Falls die virtuelle Platte zu klein wird, kann man auf eine größere "umziehen".

- Mit "bximage" die neue virtuelle Festplatte anlegen, als Dateiname "d.img" angeben.

- Das neue Laufwerk in der "bochsrc" bekanntgeben als Slave am ersten Kanal:

---------------------------------------------------------------------
ata0-slave: type=disk, mode=flat, translation=auto, path="d.img", cylinders=2080, heads=16, spt=63, biosdetect=auto, model="Generic 1234"
---------------------------------------------------------------------

Werte abhängig vom "bximage"-Aufruf!

- Den Gast über eine Windows-Bootdiskette starten (siehe oben, "boot: floppy" in Konfigurationsdatei)

- "fdisk" starten, Wechsel auf 2. Laufwerk und primäre Dos-Partition anlegen.

- Gast nochmal über Foppy starten und neues Laufwerk mit "format d:" formatieren.

- In der Datei "~/.mtoolsrc" das neue Laufwerk als "d:" temporär angeben (Eintrag nachher wieder löschen):

---------------------------------------------------------------------
drive d: file="/home/.../d.img" partition=1
---------------------------------------------------------------------

- Nun kann umkopiert werden von "c:" nach "d:":

"mcopy -s c: d:"

- Nun "d.img" nach "c.img" umbenennen, den Eintrag "ata0-slave" aus der Konfiguration löschen.

- Bochs erneut starten über Diskette, mit "fdisk" aktive Partition setzen.

- Nochmal über Diskette starten, neues Image mit "fdisk /MBR" und "sys c:" bootbar machen.

- Nun den Eintrag "boot: floppy" wieder auf "boot: disk" ändern.

Beim nächsten Start sollte der Gast von der neuen und größeren Platte problemlos starten.


Uhr geht zu schnell

Folgende Zeile in die ".bochsrc" einfügen:


clock: sync=realtime, time0=local

Alternativ hilft auch mal das Ausprobieren verschiedener IPS-Settings.

stefan.becker
10.06.03, 23:18
Die folgenden Fälle sind als Beispiel gedacht. Es sind natürlich auch beliebig andere Spielarten denkbar.


Linux Host, Windows 9x als Gast

Bochs bietet die Möglichkeit, über das sogenannte TUNTAP Interface auf die Netzwerkfähigkeiten des Hosts zuzugreifen.

Hier gibt es dazu nähere Angaben:

http://bochs.sourceforge.net/doc/docbook/user/config-tuntap.html


Übersetzen von Bochs

Damit überhaupt ein virtueller Netzadapter zur Verfügtung steht, muss "./configure" mit der Option "--enable-ne2000" konfiguriert werden.

Konfiguration des Linux-Kernels

Folgende Optionen müssen im Kernel aktiviert sein:

- CONFIG_TUN (Network device support -> Universal TUN/TAP device driver support)
- CONFIG_IP_NF_CONNTRACK (Connection tracking)
- CONFIG_IP_NF_IPTABLES (IP tables support)
- CONFIG_IP_NF_NAT (Full NAT)

Bei einer Distribution wie SuSE oder RedHat sollte das immer der Fall. Ansonsten kann man die Einstellungen in der ".config" Datei im Kernel Source Directory kontrollieren.

Wie man einen Kernel übersetzt, steht hier:

http://www.linuxforen.de/forums/showthread.php?threadid=20583

Laden des TUN-Moduls

Folgende Zeile in die Datei /etc/modules.conf einfügen:

"alias char-major-10-200 tun"

Anschließend als root "/sbin/depmod -a" ausführen.

TUN-Device anlegen

Nur falls die Datei "/dev/net/tun" nicht existiert!

- login als root
- cd /dev
- mkdir net
- cd net
- mknod /dev/net/tun c 10 200
- chmod 777 tun

Anlegen eines Scriptes für Netzwerkkonfiguration

Datei "/home/username/bochs/tunconfig" anlegen (Name frei vergebbar).

Inhalt:

--------------------------------------------------------------------------
#!/bin/bash
/sbin/ifconfig $1 192.168.1.1
/sbin/iptables -D POSTROUTING -t nat -s 192.168.1.0/24 -d ! 192.168.1.0/24 -j MASQUERADE >& /dev/null
/sbin/iptables -t nat -s 192.168.1.0/24 -d ! 192.168.1.0/24 -A POSTROUTING -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
--------------------------------------------------------------------------

Script mit "chmod 755 tunconfig" ausführbar machen.

Datei "/etc/hosts.allow" erweitern

Folgende Zeile hinzufügen: "ALL: 192.168.1.2"

Netzadapter in bochsrc einrichten

Konfigurationsdatei um folgende Zeile erweitern:

"ne2k: ioaddr=0x280, irq=9, mac=fe:fd:00:00:00:01, ethmod=tuntap, ethdev=tun0, script=/home/username/bochs/to/tunconfig"

Bochs starten

Im folgenden muss Bochs als root gestartet werden, da der User das Script "tunconfig" nicht ausführen kann bezüglich der Befehle "iptables".

Alternativ wäre "sudo" möglich. Folgende Zeile wird dann in "/etc/sudoers" eingetragen:

------------------------------------------------------
username ALL=NOPASSWD:/usr/bin/bochs
------------------------------------------------------

In diesem Fall starten mit "sudo bochs".

Im Windows Gast dann eine Netzwerkkarte vom Typ "Novell/Anthem NE 2000" einrichten.

Folgende Adressdaten:

- IP-Adresse: 192.168.1.2
- Netzmaske: 255.255.255.0
- Gateway: 192.168.1.1
- DNS: z. B. den DNS des Internet Providers (Bsp: T-Online: 217.5.115.7, 194.25.2.129)

Bei der Netzwerkkarte müssen noch die Ressourcen (IRQ 9, Basisadresse hex 280) eingestellt werden.

Ping klappt nicht

Eventuell muss noch die Route explizit angegeben werden.

Beim Host:

- "/sbin/route add 192.168.1.2 gw 192.168.1.1"

Beim Gast:

- "route add 192.168.1.1 gw 192.168.1.2"
- "route add default gw 192.168.1.1"

Die Verbindung kommt anscheinend erst zustande, wenn der Gast einen Ping startet, also z. B. "ping 192.168.1.1" in der Dosbox eingeben. Vor der ersten Gastanforderung ergibt ein "ping 192.168.1.2" im Host keine Verbindung.


Netzwerkdienste

Und das wars, nun sollte man zumindest per Internet Explorer auf das Internet zugreifen können.

Der virtuelle "Bochs PC" ist ein eigenständiger PC im Netz, damit sollten, entsprechende Netzdienste und Clients vorausgesetzt, auch Samba etc. möglich sein.

Für Datenaustausch und Drucken ist Netzwerk nicht unbedingt nötig, siehe dazu auch Tips&Tricks (Drucken in Dateidevice, mcopy).


Firewall

Ich richte meine Linux-Firewall mit der GUI "Guarddog" ein. Mit folgenden Einstellungen kann ein Windows Gast unter Bochs auf das Internet zugreifen:

Einrichten einer neuen Netzwerkzone:

- Name/Kommentar: Bochs Netzwerk
- Netzwerkadresse: 192.168.1.0/24
- Verbinden mit Zone: Lokal/Internet auswählen

Protokolle, jeweils zwischen Bochs und Internet/Lokal aktivieren:

- Dateiübertragung: FTP, HTTP, HTTPS
- Netzwerk: DNS, Ping, PPTP

Benutzerdefiniert:

- HBCI, Port 3000/TCP

Guarddog gibt es hier:

http://www.simonzone.com/software/guarddog/

SuSE-Firewall (Tip von Blub):

Hierfür in der /etc/sysconfig/SuSEfirewall2 unter Punkt 5 Routing aktivieren und unter Punkt 6 das virtuelle Netzwerk freigeben:
FW_MASQ_NETS="192.168.1.0/24"


Windows als Host, Linux als Gast (Tip von spunz)

Wer die Windows Version von Bochs dazu verwendet, um z. B. GNU/Linux in einer virtuellen Maschine laufen zu lassen, benötigt das Programm "wincap", damit "niclist" richtig funktioniert. Ansonsten wird es schwer, diese richtig einzubinden.

"wincap" kann unter

http://winpcap.polito.it/install/default.htm

runtergeladen werden. Nach der Installation kann "niclist" einfach aufgerufen werden und erzeugt eine passende Zeile für Bochs, die einen langen Eintrag für das passende ethdev bringt.

Um die Karte unter Linux zu aktivieren, muß das "ne" Modul inkl. den passenden IO- und IRQ-Einstellungen aus dem Configfile geladen werden:

"modprobe ne io=0x300 irq=9"

Danach kann man der virtuellen nic eine ip verpassen, bzw. diese in der /etc/network/interfaces eintragen, damit diese beim Booten der virtuellen Maschine automatisch geladen wird.

Wer unter Windows wincap zwecks niclist Erkennung nicht installieren will, kann die Device Nummer auch in der Windows Registry finden:

Unter dem Wert HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkCards befinden sich alle verwendeten Netzwerkkarten. das schaut dann ca so aus:

"ServiceName"="{C5BF6061-A1E3-457A-94D1-9B33322FE33C}"
"Description"="IBM Etherjet PC Card Adapter"

stefan.becker
14.06.03, 04:23
Stand 25.06.04: Patch steht anscheinend nicht mehr zur Verfügung.

Inzwischen gibt es auch Plex 86 für Bochs 2.1.

Vorgehensweise:

- Bochs 2.1 Quellpaket downloaden und entpacken

- Den plex86 Patch downloaden und entpacken: http://gregorr.homelinux.org/bochs-2.1-plex86-lightweight.diff.gz

Stand 25.02.04: Patch aktuell nicht verfügbar. Wird aktualisiert bei Änderung.

- Patch ins Bochs Verzeichnis kopieren und ausführen:


patch -p1 < ./bochs-2.1-plex86-lightweight.diff

- Bochs konfigurieren



./configure ...... --enable-plex86
make
make install

- Plex86 aus dem CVS laden und übersetzen:



cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/plex86 login
cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/plex86 co plex86
cd plex86
./configure --with-host-linux-source=/usr/src/linux-2.4.22
make


Beim Configure den Pfad zum Source des installierten Kernels setzen.

- Plex-Modul umkopieren: "cp plex86/host-kernel/plex86.o /home/stefan/bochs/win98" (Pfad anpassen)

- Ebenso Scripte zum Laden und Entladen des Moduls dorthin kopieren.

"load_module.sh", "unload_module.sh" liegen unter "plex86/hostkernel/linux"

- Im Ladescript eine Zeile abändern:


kmodule="./plex86.o"

- Im Bochsverzeichnis ein Startscript schreiben:



cd /home/stefan/bochs/win98
./load_module.sh
bochs
./unload_module.sh


- Script mit "chmod 777 startbochs" ausführbar machen und starten.

- Falls plex86 erfolgreich geladen wurde, muss z. B. folgende Ausgabe beim Starten der virtuellen Maschine erscheinen:



Trying /dev/misc/plex86...failed.
Trying /dev/plex86...OK.
plex86: setting to PLEX86_LINUX_VM_MODE.
plex86: RegisterGuestMemory: 32 MB succeeded.

stefan.becker
15.06.03, 21:13
Und hier der Beweis, das auch Karl Klammer unter Win 98 in der Box läuft:

stefan.becker
16.06.03, 01:10
Die Welt im Spiegel: Bochs / Win98 / IE 5 / dieses Howto.

Randbemerkung: Im Unterschied zur Lösung IE unter WINE oder Crossover Office hat diese Lösung den Vorteil, das alle IE-Plugins wie z. B. Macromedia Director etc. gehen, weil das ganze ja auf einem nativ laufenden Windows stattfindet. Und das merkt gar nichts von seinem Glück, auf einem vernünftigen Betriebssystem als Basis laufen zu können.