Inhaltsverzeichnis
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:
- es gibt keines als Binärpaket
- das Binärpaket hat die aktuellen Sicherheits-Patches noch nicht
- das Binärpaket hat nicht die gewünschten Abhängigkeiten (manche besitzen unerwünschte X-Abhängigkeiten, andere lassen Funktionen vermissen)
- 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
