Ein paar Fragen zu Bochs

0815Chaot

FreeBSD/sparc64-Tüftler
Hallo Leute,

nachdem ich Bochs bisher nur "aus Spaß" installiert hatte, möchte ich mich jetzt etwas näher damit beschäftigen.

Das Host-System ist ein FreeBSD 4.8-Release. Zuerst habe ich aus einem aktuellen Portstree mal ein neueres Bochs (Version 2.1_2,2) gebaut:

make --enable-sb16=freebsd --enable-ne2000 --enable-vbe --enable-all-optimizations

Wie man erkennen kann, habe ich u.a. auf die VBE- und die NE2000-Emulation geachtet. Als Gast-System habe ich Windows NT 4.0 laufen. Nun meine Fragen:

1. Zur Grafikemulation

Das VBE-BIOS habe ich mittels

vgaromimage: /usr/local/share/bochs/VGABIOS-lgpl-latest

ausgewählt. Unter NT wird eine "vga-kompatible Grafikkarte" erkannt.

Die Auflösung kann ich auf 800*600 stellen - genau das möchte ich auch haben. Lediglich bei den Farben bin ich nicht zufrieden: 16 ist zu wenig. Ich möchte gerne 8 oder 16 Bit haben.

Ich denke, ich muß dafür "nur" einen passenden Grafiktreiber installieren. Ich habe mal die automatische Erkennung versucht, dabei wird aber auch nur die "vga-kompatible" gefunden. Mit dem Treiber für "S3 kompatible" komme ich auch nicht weiter.

Leider habe ich keinen Hinweis finden können, welche Grafikkarte hier emuliert wird. Ohne diesen Hinweis kann ich natürlich auch nicht den passenden Treiber auswählen. Hat da jemand einen Tipp?

2. Zur NE2000-Emulation

Sehr schön, da weiß man wenigstens gleich, was hier emuliert wird ;) Ich habe die Emulation also wie folgt aktiviert:

ne2k: ioaddr=0x280, irq=10, mac=b0:c4:20:00:00:00, ethmod=fbsd, ethdev=fxp0

IRQ habe ich mit 10 gewählt, da der standardmäßige 9 bei der Treiberinstallation unter NT nicht angeboten wird. fxp0 soll die Intel EtherExpress Pro 100 sein, die im Host-System steckt.

Beim Starten des Emulators erhalte ich jedoch:

Event type: PANIC
Device: [NE2K ]
Message: eth_freebsd: could not open packet filter: Permission denied


Als root möchte ich den Bochs aber nun wirklich nicht starten... Mit ktrace konnte ich jedoch nicht herausfinden, an welcher Stelle ich die Zugriffsrechte lockern muß. Der erste Google-Treffer zeigt beim Anklicken keine Reaktion, der zweite beschäftigt sich mit MacOS und hat keine Antworten erhalten. Hat sich schon einmal jemand an der NE2000-Emu versucht?

Die Bochs-Doku gibt zu diesen beiden Themen leider nicht viel her.

Ich bedanke mich schon einmal für alle Tipps.
 
1. Soviel ich weis ist das einer der Nachteile von Bochs.
Zwar höhere Auflösung aber keine höheren Farben.

2. schonmal versucht mit den berechtigungen im /dev/net rumzuspielen?
was passiert, wenn du spasseshalber mal chmod 666 auf fxp0 setzt?
 
Original geschrieben von marzl
1. Soviel ich weis ist das einer der Nachteile von Bochs.
Zwar höhere Auflösung aber keine höheren Farben.

Nein, in den Features heißt es:

Currently resolutions up to 1024x768x32bpp are supported. You must compile Bochs with vbe enabled and use the LGPL'ed VGABIOS.

Beides habe ich gemacht. Ich muß nur noch den richtigen Treiber im Gast-System auswählen. Vielleicht sollte ich es mal mit W2k versuchen, das ist bei der Erkennung wohl ein Stück besser. Wenn ich dann weiß, als welche Karte das Ding läuft, kann ich unter NT den entsprechenden Treiber wählen.

2. schonmal versucht mit den berechtigungen im /dev/net rumzuspielen?
was passiert, wenn du spasseshalber mal chmod 666 auf fxp0 setzt?

Ich habe kein /dev/net. Und seit wann werden Netzwerkkarten als Devices abgebildet? Habe ich bei mir auch nicht. Ist das etwa ein neuer Trend in -Current, dank devfs jetzt alles und jeden als Gerät bereitzustellen?
 
1. Mhm, is ja interessant.
2. nein, das hat mit current nix zu tun. ich fahre fbsd 5.2.1
bei mir gibt es /dev/net/vr0

und die devices werde meines wissens doch alle abgebildet.
ob nun bei 4.x kann ich nicht genau sagen, nutze ich nicht.
 
Vielen Dank für deine Antwort und die Mühe, die du dir mit dem Suchen gemacht hast. Ich habe das ZIP also entpackt und die vier Dateien auf eine Diskette kopiert (Netzwerkkartenemulation funktioniert ja leider noch nicht).

Unter NT habe ich dann versucht, den Treiber zu installieren. Leider funktioniert das nicht:

"Die angegebene Installationsdiskette enthält einen Treiber, der für eine vorherige Version von Windows NT entwickelt wurde. Diese Version von Windows NT erfordert, daß neue Bildschirmtreiber installiert werden."

Tja, NT 4.0 mit SP 6a ist wohl "zu neu". Auf der Downloadseite des Treibers wurde beispielsweise genannt, daß die VBE-Emulation von Bochs maximal 256 Farben unterstützt - was ja nicht stimmt, da Bochs laut der Featureliste 32 Bit Farbtiefe unterstützt. Der Treiber scheint also auch schon etwas älter zu sein...

Dann habe ich versucht, die vier Dateien von der Diskette nach C:\TEMP zu kopieren, damit ich bei weiteren Versuchen in diese Richtung nicht ständig die Diskette brauche. Kopieren ist aber auch gestrichen - stattdessen teilt mir das entzückende Redmond-Betriebssystem mit:

"bochsvg kann nicht kopiert werden. Fehler beim Einlagern einer Speicherseite."

Na Mahlzeit. Entweder ist der Bochs kaputt oder NT. Wenn der Bochs allerdings ein Problem mit dem Speichermanagement hätte, dann sollte NT eigentlich überhaupt nicht richtig booten können... Ich tippe also mal auf irgendeine Unzulänglichkeit von NT. Vielleicht kommt das mit der von Bochs bereitgestellten Hardware nicht richtig zurecht.

Ich hatte dann auch mal versucht, ein W2k zu installieren. Leider bleibt das Setup auch bei mehrmaligen Installationsversuchen immer wieder an verschiedensten Stellen einfach stehen. Zuletzt bin ich immerhin bis zur Festlegung der Sicherheitsrichtlinien gekommen, dann war aber mal wieder Schluß :confused:

Ich bastele also weiter (mit NT 4.0 allerdings).
 
Habe ja versprochen, daß ich so schnell nicht aufgebe ;)

Nun ja, wie es aussieht, kann NT nicht mit Disketten umgehen. Egal welche Diskette ich einlege, ich kann das Laufwerk A: öffnen und mir angucken, was da so drauf ist. Aber mehr geht nicht, weder öffnen einer Datei noch kopieren oder sonst was.

Mit MS-DOS als Gast-System gibt es da keine Probleme, da funktionieren die gleichen Disketten einwandfrei. Wohlgemerkt benutzen beide identische Bochs-Konfigurationen. Lediglich der Pfad zum Festplatten-Image unterscheidet sich natürlich, da beide jeweils ein eigenes Image spendiert bekamen.

Ist also wohl kein generelles Problem von Bochs, sondern nur mit bestimmten Betriebssystemen. Vielleicht liegt es auch an irgendwas anderem. Könnte bitte jemand das Problem bei sich einmal verifizieren?

So, hier nun aber erstmal ein kurzes HOWTO, wenn mal jemand die VBE-Emulation benutzen möchte:


Host-System: FreeBSD 4.8-Release
Bochs 2.1_2,2
Gast-System: Windows NT 4.0 SP 6a
  • Bochs aus den Ports installieren. Zumindest die Option --enable-vbe muß angegeben werden.
  • In der Bochs-Konfiguration muß das richtige VGA-ROM ausgewählt werden:
    vgaromimage: /usr/local/share/bochs/VGABIOS-lgpl-latest
  • Unter http://dhenriq.en.eresmas.com/ hat marzl den Grafiktreiber für die von Bochs emulierte Grafikkarte gefunden.
  • Die runtergeladene ZIP-Datei wird auf dem Host-System entpackt und die vier darin enthaltenen Dateien auf eine CD gebrannt.
  • Unter NT über Systemsteuerung -> Anzeige -> Einstellungen -> Konfiguration -> Ändern auswählen.
  • Aus dem Dialog die Option "Diskette..." anklicken.
  • Als Pfad den Laufwerksbuchstaben des CD-Laufwerks, in dem sich die CD mit den vier Treiber-Dateien befindet, eingeben und "OK" wählen.
  • Als Treiber dann "Diego Drivers Inc. bxvga" auswählen.
  • Den vorgeschlagenen Reboot ausführen
  • Beim Booten wird man ja vom OSLOADER nach dem zu startenden Betriebssystem gefragt. Hier muß man den "[VGA-Modus]" wählen.
  • Nach der Anmeldung in NT sollten automatisch die Anzeige-Eigenschaften geöffnet werden, mit dem Hinweis, daß der aktuelle Modus ungültig sei. Nun kann man Auflösung und Farben relativ großzügig einstellen. Bei mir wurde max. 1600*1200 bei TrueColor angeboten, obwohl ich mir nicht sicher bin, ob der Bochs mehr als 1024*768 mitmacht.
  • Nicht vergessen, den Modus zu testen und dann anschließend normal neuzustarten. Beim Reboot dann wieder das "normale" NT booten, nicht den "[VGA-Modus]".
Ich bin begeistert. Die Anzeigequalität läßt keine Wünsche offen. Man braucht halt nur leider einen schnellen Rechner, damit man höhere Auflösungen noch einigermaßen flüssig darstellen kann.


Tja, nun bleibt nur noch die Frage, wie ich die Netzwerkkarte ans Laufen bekomme. Vielleicht hat das auch schon mal jemand hier geschafft und kann mir weiterhelfen.
 
Zuletzt bearbeitet:
Wollte jetzt auch mal Bochs antesten. Bekomme aber leider immer folgenden Fehler:
BIOS panic at rombios.c, line 1558
Hat jemand ne Ahnung, was ich da verbockt haben könnte?

Gruß,

Ice
 
Nein, da du uns nicht sagst, was du überhaupt gemacht hast. So ins Blaue reinraten dürfte nicht sonderlich erfolgsversprechend sein.

Also hier mal eine kurze Anleitung für dich (und natürlich alle anderen, die Bochs ausprobieren wollen):
  • Bitte zunächst für einen aktuellen Ports-Tree sorgen!
  • cd /usr/ports/emulators/bochs
  • make --enable-vbe --enable-all-optimizations install
  • Mittels bximage ein Festplatten-Image in der gewünschten Größe erstellen. Das Programm gibt dir zum Schluß eine Zeile aus, die mit "ata0-master" beginnt und du dir am besten mal schnell in ein Editor-Fenster kopierst.
  • Beigefügt habe ich mal eine Bochs-Konfiguration für ein NT-4.0-Gastsystem (ich habe noch .txt an den Dateinamen angehängt, weil das Forum keine .conf-Dateien akzeptiert). Die speicherst du dir unter einem von dir gewünschten Namen ab. Ich gehe aber im folgenden weiterhin vom Namen "NT4.conf" als Konfig-Datei aus.
  • In der Konfig-Datei änderst du zumindest die mit "ata0-master" beginnende Zeile ab, so daß die so aussieht, wie die Zeile, die du weiter oben in einen Editor kopiert hattest.
  • Außerdem mußt du beim "ata0-slave" den "path" abändern, so, daß er auf die Gerätedatei deines CD-ROM-Laufwerks zeigt (in der NT4.conf steht da "/dev/cdrom", was einfach ein Link auf die tatsächliche Gerätedatei ist).
  • Du solltest auch die Zeile "ips:" anpassen. Welcher Wert da vernünftig ist, wird in den Kommentarzeilen erläutert. Der Wert in der NT4.conf ist für einen P4 2,8 GHz mit aktiviertem HT ausgelegt.
  • Du mußt allen Benutzern Lesezugriff auf das CD-ROM-Laufwerk geben (z.B. mittels chmod a+r /dev/acd0c, wenn du ein IDE-CD-ROM hast).
  • Jetzt legst du die Installations-CD deines bevorzugten Betriebssystems in das CD-ROM-Laufwerk ein und läßt den Bochs von dieser CD booten:
    bochs -f NT4.conf boot:cdrom
  • Wenn die Installation beendet ist, kannst du künftig das im Image installierte Betriebssystem starten, indem du vom Festplatten-Image bootest:
    bochs -f NT4.conf boot:disk
So, dann sollte das Gast-System in der Bochs-Emulation laufen. Wenn du NT oder W2k als Gast-System benutzt, kannst du die VBE-Emulation wie oben beschrieben nutzen. Bei anderen Systemen weiß ich nicht, wie man mehr als VGA-Auflösung rausholt :(
 

Anhänge

  • nt4.conf.txt
    27,4 KB · Aufrufe: 456
Naja, unter NT gibts ja RDP oder wie das heißt noch nicht, ausser beim Terminal-Server. Bei Solaris in VMware habe ich das problem des Grafiktreibers mit XDMCP umgangen. Probierts doch ma mit VNC, vielleicht klappts. Is vielleicht etwas umständlich aber die Ausgabe sollte wenigstens mehr als 8 Farben bringen. Mit XDMCP hats jedenfalls geklappt (Nested X von Solaris in VMware). Weiß aber nicht wie das bei RDP oder VNC so genau aussieht. Nen versuch isses auf alle Fälle wert.
 
Das ist eigentlich gar keine so schlechte Idee. Dann hat man zwar noch ein Fenster mehr auf dem Desktop (nämlich den VNC-Client), aber wenn man damit das Problem mit dem Anzeigemodus umgehen kann...

Dafür müßtest du uns aber erstmal weiterhelfen, wie man die Netzwerkkartenemulation von Bochs zur Mitarbeit bewegen kann. Weil ohne die kann man sich schlecht per VNC, RDP, XDMCP oder sonstwas in die Bochs-Box hinein verbinden.

Unter NT und W2k ist das ja aber gar kein Problem, weil man den VBE-Treiber benutzen kann und damit Auflösungen von 1024*768*32 hinbekommt.
 
@0815Chaot

Genauso, wie Du es beschrieben hast, hab ich es gemacht:

Message: BIOS panic at rombios.c, line 1558

Shit. :(
 
Zurück
Oben