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.
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.
# doscmd -b
mehr Interrupts und X11
# doscmd -bx
# 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
# 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 | +-----------+-----------------+-------------+---------------+------------+
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
Hier ist eine Anleitung zu finden: http://wiki.freebsd.org/qemu.
http://www.unicorn-engine.org/
Unicorn is a lightweight multi-platform, multi-architecture CPU emulator framework.
Highlight features:
# 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".
Es gibt vier Gründe, warum man ein Paket aus den Ports installieren sollte:
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