Benutzer-Werkzeuge

Webseiten-Werkzeuge


freebsd:freebsd_-_virtualisierung_emu_s

FreeBSD - Virtualisierung (Emu's)

Mit FreeBSD funktioniert aktuell leider nur die Prozessvirtualisierung (Jail und Linux) zuverlässig und stabil (mit Einschränkungen auch Wine). Die beiden schnellsten Emulatoren, die es zur Zeit in den FreeBSD-Ports gibt, sind QEmu und VirtualBox. Früher funktionierte QEmu+Kqemu prima, dann kam KVM und seit dem bin ich mit QEmu unter FreeBSD sehr unzufrieden.

32-Bit-Maschinen können mit dem alten QEmu (bis Version 0.11) auch stabil den Kqemu einsetzen und damit auch in den Genuss der Nativen Virtualisierung kommen.

Die Portierung des Linux-KVM nach FreeBSD steckt noch in einem frühen Entwicklungsstadium.

Wenn es um einen-Windows-Emulator geht, sollte man sich mal emulators/win4bsd ansehen. Ohne Lizenz kann man es (nur) drei Wochen lang testen.

Wie es zur Zeit aussieht, ist VirtualBox unter FreeBSD die Virtualisierungslösung, die am weitesten entwickelt ist. Leider funktionieren bei mir aber nur 32-Bit-Systeme in VirtualBox, mit 64-Bit-Systemen habe ich große Stabilitätsprobleme gehabt.

Bhyve

DOS-Emu

Das Probramm doscmd von BSDI ist im Basissystem von FreeBSD enthalten und sollte in den meisten Fällen ausreichen. Die DOS-Programme werden im real-mode betrieben. DOSCMD kann auch einen PC emulieren und ein richtiges DOS booten um so eine breite Palette an DOS-Programmen betreiben zu können. Im Moment sind die MS-DOS-Versionen 6.2 und höher für DOSCMD etwas problematisch.

DOSCMD ließt nach dem Start eine Konfigurationsdatei ein, als erstes wird die ".doscmdrc" im aktuellen Verzeichnis gesucht, ist dort keine dann wird im HOME-Verzeichnis gesucht, ist dort auch keine wird die globale Konfigurationsdatei /etc/doscmdrc gelesen.

Boot-Mode

# doscmd -b

mehr Interrupts und X11

# doscmd -bx

Emulations-Mode

# doscmd start.exe

Direktzugriff auf die Tastatur und den Bildschirm:

VGA-Ausgabe ist so möglich

[CTRL]+[ALT]+[DEL] erzeugt ein RESET für DOSCMD

# doscmd -r start.exe

X11

# doscmd -x start.exe

umleiten der Bildschirmausgabe (außer direkte Ausgaben):

# doscmd -c bildschirm.txt start.exe

umleiten der Fehlermeldungen:

# doscmd -d fehler.txt start.exe

die Fehlermeldungen sollen auf die Standardausgabe umgeleitet werden:

# doscmd -O start.exe

Die Konfigurationsdatei ganz kurz

# vi .doscmdrc

boot A:
boot C:
assign lpt0: [direct] path 30
assign A: msdos622.img 80 2 2
assign A: /dev/fd0.1440 1440
assign A: /dev/fd0.720 720
assign C: 127MB_HDD.img 32 [fdisk_tab]
assign D: /usr/dos
assign P: -ro /usr/prb
assign com1: path port irq
portmap port [count]
setver command version
COMSPEC=C:\COMMAND.COM
PATH=C:\
PROMPT=DOS>
DISK TYPES
   +-----------+-----------------+-------------+---------------+------------+
   |  Type     |   Cylinders     |   Heads     |   Sectors     |     Size   |
   +-----------+-----------------+-------------+---------------+------------+
   |    01     |         306     |       4     |        17     |     10MB   |
   |    13     |         306     |       8     |        17     |     20MB   |
   |    07     |         462     |       8     |        17     |     30MB   |
   |    37     |         615     |       8     |        17     |     40MB   |
   |    12     |         855     |       7     |        17     |     49MB   |
   |    04     |         940     |       8     |        17     |     62MB   |
   |    36     |        1024     |       8     |        17     |     68MB   |
   |    31     |        1024     |      11     |        17     |     93MB   |
   |    32     |        1024     |      15     |        17     |    127MB   |
   |    46     |        1224     |      15     |        17     |    152MB   |
   +-----------+-----------------+-------------+---------------+------------+
   |  floppy   |          80     |       2     |         2     |   1440kB   |
   +-----------+-----------------+-------------+---------------+------------+

INSTALLATION VON DOS AUF EINEM PSEUDOLAUFWERK

Um DOS auf einem pseudolaufwerk zu installieren, müssen folgende Schritte durchgeführt werden:

1. vi .doscmdrc
  assign A: /dev/fd0.1440 1440
  assign A: /dev/fd0.720 720
  assign hard boot_drive 80 2 2

2. Legen Sie eine Bootdiskette mit den Kommandos fdisk, format und sys ein.
   Kopieren Sie auch die Kommandos copy und redir.com auf die Diskette.
   Dazu kann man die mtools (mwrite redir.com a:) verwenden.

3. Starte doscmd.

4. Das Kommando "fdisk" am Prompt starten.

5. Wählen Sie "Create DOS partition" oder "Logical Drive" aus.

6. Wählen Sie "Create Primary DOS Partition" aus.

7. Definieren Sie die Wunschgrösse der Partition.

08. Verlassen Sie FDISK durch mehrfaches drücken von .

09. doscmd kann sich unter Umständen ein paar mal beenden, dann muss es
         neu gestartet werden.

10. Geben Sie das Kommando "format c:" am Prompt ein.

11. Geben Sie das Kommando "sys c:" am Prompt ein.

12. Beende doscmd.

13. Entnehmen Sie jetzt die Floppy aus dem Laufwerk oder ergänzen Sie in
         der Konfigurationsdatei ".doscmdrc" die folgende Zeile:
  # boot C:

14. Sie sollten jetzt ein lauffähiges DOS auf Ihrer Pseudodisk haben.
    Jetzt müssen nur noch die beiden Dateien "config.sys" und
    "autoexec.bat" erstellt werden. Das geht unter anderem wie folgt:

> copy con: config.sys
  LASTDRIVE=Z
  ^Z
> copy con: autoexec.bat
  @echo off
  redir.com
  ^Z

15. Quit doscmd.

16. Jetzt haben Sie eine bootfähige Pseudodisk. Um die FreeBSD-Disk mit
    dem redir-Programm automatisch zu erstellen, müssen folgende Zeilen
    in die Konfigurationsdatei ".doscmdrc" eingefühgt werden:
# vi .doscmdrc
  assign D: /usr/dos
  assign P: -ro /usr/prb

QEmu

Hier ist eine Anleitung zu finden: http://wiki.freebsd.org/qemu.

VirtualBox

Unicorn

http://www.unicorn-engine.org/

Unicorn is a lightweight multi-platform, multi-architecture CPU emulator framework.

Highlight features:

  • Multi-architectures: Arm, Arm64 (Armv8), M68K, Mips, Sparc, & X86 (include X86_64).
  • Clean/simple/lightweight/intuitive architecture-neutral API.
  • Implemented in pure C language, with bindings for Crystal, Clojure, Visual Basic, Perl, Rust, Haskell, Ruby, Python, Java, Go, .NET, Delphi/Pascal & MSVC available.
  • Native support for Windows & *nix (with Mac OSX, Linux, *BSD & Solaris confirmed).
  • High performance by using Just-In-Time compiler technique.
  • Support fine-grained instrumentation at various levels.
  • Thread-safe by design.
  • Distributed under free software license GPLv2.

KVM

Linux-Kernel-Emulation

FreeBSD 11.1-RELEASE-p10

Linux-User-Land installieren - Das Binärpaket

# pkg install emulators/linux-c7
...
... [76/76] Installing linux-c7-7.4.1708_1...
Message from linux_base-c7-7.4.1708_5:

Some programs need linprocfs mounted on /compat/linux/proc.  Add the
following line to /etc/fstab:

linprocfs   /compat/linux/proc  linprocfs       rw      0       0

Then run "mount /compat/linux/proc".

Some programs need linsysfs mounted on /compat/linux/sys.  Add the
following line to /etc/fstab:

linsysfs    /compat/linux/sys   linsysfs        rw      0       0

Then run "mount /compat/linux/sys".

Some programs need tmpfs mounted on /compat/linux/dev/shm.  Add the
following line to /etc/fstab:

tmpfs    /compat/linux/dev/shm  tmpfs   rw,mode=1777    0       0

Then run "mount /compat/linux/dev/shm".
Message from linux-c7-dri-17.0.1:

This package needs linsysfs mounted on /compat/linux/sys.  Add the
following line to /etc/fstab:

linsysfs    /compat/linux/sys   linsysfs        rw      0       0

Then run "mount /compat/linux/sys".

Linux-User-Land installieren - aus den Ports

Es gibt vier Gründe, warum man ein Paket aus den Ports installieren sollte:

  1. es gibt keines als Binärpaket
  2. das Binärpaket hat die aktuellen Sicherheits-Patches noch nicht
  3. das Binärpaket hat nicht die gewünschten Abhängigkeiten (manche besitzen unerwünschte X-Abhängigkeiten, andere lassen Funktionen vermissen)
  4. in seltenen Fällen treten bei der Installation von Binärpaketen Probleme auf, dann lassen sich meistens aber die Programme aus den Ports sauber installieren

Wir freuen uns auch über die Tatsache, dass wir dann aktueller sind als das Binärpaket.

Als erstes müssen wir die MAKE-Variablen nach unseren Wünschen ablegen.

# vi /etc/make.conf
...
WITHOUT_X11=yes
NO_X=yes
OPTIONS_UNSET=X11
CPUTYPE=k8
DOC_LANG=de_DE.UTF-8

dann installieren wir den PortMaster:

# pkg install ports-mgmt/portmaster

jetzt installieren wir das Linux-User-Land:

# portmaster emulators/linux-c7
/home/http/wiki/data/pages/freebsd/freebsd_-_virtualisierung_emu_s.txt · Zuletzt geändert: von manfred