2018-11-07: Zero-Day-Lücke für Virtualbox veröffentlicht ⇒ Ein russischer Hacker hat eine Zero-Day Guest-to-Host-Lücke für Virtualbox veröffentlicht. Er sei frustriert darüber, wie der Hersteller mit Bug Bountys und Security-Forschung umgehe.
Ubuntu 20.04 LTS:
> apt install virtualbox virtualbox-ext-pack virtualbox-guest-additions-iso
Bei Linux Mint 17.1 (bzw. Ubuntu 14.04) muss der Betreiber der VirtualBox in der Gruppe "vboxusers" sein! Anderenfalls wird man dort keine USB-Geräte finden.
Im folgenden Beispiel, baue ich eine zusätzliche Auflösung von 1366x768 (das ist die maximale Auflösung meines LapTop's "DELL Latitude E6320"), mit einer Farbtiefe von 16 Bit, zusätzlich ein.
16 Bit Farbtiefe ist in meinen Tests die maximale Farbtiefe für Android gewesen, Linux und Windows können durchaus auch 24 oder 32 Bit Farbtiefe darstellen.
Die Farbtiefe wird gewöhnlich durch ein "@" getrennt an die Auflösung angehängt, in diesem Fall wird sie aber (in Linux/Android) mit einem "x" an die Auflösung angehängt.
diese Arbeitsschritte sind in VirtualBox (nachdem die zu bearbeitende VM gestoppt ist) immer für die entsprechende VM nötig, egal welches Betriebssystem innerhalb der VM installiert wurde:
> cd ~/VirtualBox\ VMs/ > ls Test-VM_01 > VBoxManage setextradata "Test-VM_01" "CustomVideoMode1" "1366x768x16"
es ist auch möglich weitere Bildschirmauflösungen hinzuzufügen:
> VBoxManage setextradata "Test-VM_01" "CustomVideoMode2" "1346x650x16" > VBoxManage setextradata "Test-VM_01" "CustomVideoMode3" "1300x720x16" > VBoxManage setextradata "Test-VM_01" "CustomVideoMode4" "1280x720x16" > VBoxManage setextradata "Test-VM_01" "CustomVideoMode5" "1024x768x16" > VBoxManage setextradata "Test-VM_01" "CustomVideoMode6" "1920x1080x16"
Es hängt von der Distribution ab, wie man in den Modus kommt, in dem die folgenden Arbeitsschritte möglich sind. Im allgemeinen weiß ein Systemadministrator für die entsprechende Linux-Distribution, wie man dahin gelangt.
Bei "Android x86" muss man im Grub-Boot-Menü den Punkt "Android-x86 ???????? (Debug mode)" auswählen.
diese Arbeitsschritte sind in alten Linux-Distributionen bzw. Android nötig:
> vi /boot/grub/menu.lst
diese Arbeitsschritte sind in neueren Linux-Distributionen nötig:
> vi /boot/grub/grub.cfg
die Zeile, die bearbeitet werden muss, beginnt mit "linux" und enthält an irgendeiner Stelle den Teil "/boot/", man kann die folgende Option einfach am Zeilenende (durch ein Leerzeichen getrennt) anhängen:
UVESA_MODE=1366x768x16
In Windows kann man die neuen Auflösung nach dem Neustart aus der Liste der möglichen Bildschirmauflösungen auswählen.
Hier die einzelnen Schritte (aus dem FreeBSD-Wiki) kommentarlos im Überblick.
# portmaster sysutils/hal devel/pcre devel/dbus
# vi /etc/fstab: proc /proc procfs rw 0 0 # mount /proc
# vi /boot/loader.conf atapicam_load="YES" # kldload atapicam
# vi /etc/rc.conf dbus_enable="YES" # /usr/local/etc/rc.d/dbus start
# vi /etc/rc.conf hald_enable="YES" # /usr/local/etc/rc.d/hald start
Weitere Infos zu HAL: http://www.freebsd.org/gnome/docs/halfaq.html
# vi /etc/devfs.conf perm cd0 0660 perm xpt0 0660 perm pass0 0660 # /etc/rc.d/devfs restart
Weitere Infos zur X-Konfiguration: http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/x-config.html
# portsnap fetch update # cd /usr/ports/emulators/virtualbox-ose # make config ┌────────────────────────────────────────────────────────────────────┐ │ Options for virtualbox-ose 3.2.12 │ │ ┌────────────────────────────────────────────────────────────────┐ │ │ │ [X] QT4 Build with QT4 Frontend │ │ │ │ [ ] DEBUG Build with debugging symbols │ │ │ │ [ ] GUESTADDITIONS Build with Guest Additions │ │ │ │ [X] DBUS Build with D-Bus and HAL support │ │ │ │ [ ] PULSEAUDIO Build with PulseAudio │ │ │ │ [X] X11 Build with X11 support │ │ │ │ [ ] VDE Build with VDE support │ │ │ │ [X] VNC Build with VNC support │ │ │ │ [X] WEBSERVICE Build Webservice │ │ │ │ [X] NLS Native language support │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ ├─└────────────────────────────────────────────────────────────────┘─┤ │ [ OK ] Cancel │ └────────────────────────────────────────────────────────────────────┘
# portmaster emulators/virtualbox-ose x11-servers/xorg-server x11/xterm x11-wm/icewm # echo 'vboxdrv_load="YES"' >> /boot/loader.conf # echo 'vboxnet_enable="YES"' >> /etc/rc.conf # pw groupmod vboxusers -m fritz
entweder einen Reboot durchführen oder diese Schritte abarbeiten:
# kldload vboxdrv # /usr/local/etc/rc.d/vboxnet start
# pw groupmod operator -m fritz # vi /etc/devfs.rules [system=10] add path 'usb/*' mode 0660 group operator # echo 'devfs_system_ruleset="system"' >> /etc/rc.conf # /etc/rc.d/devfs restart
Wenn Sie VirtualBox als nicht-root-Benutzer starten und einen Fehler wie diesen bekommen:
NS_ERROR_FACTORY_NOT_REGISTERED
dann löschen Sie bitte diese Dateien:
# rm -f /tmp/.vbox-*-ipc
Weitere Hinweise finden Sie auf der Webseite von VirtualBox:
Please report any problems to emulation@. Thanks!
Diese Variante ist am einfachsten umzusetzen, hat aber in schmalbandigen Netzen (z.B. 54-er WLAN) das Problem, dass die Netzwerkbandbreite einfach nicht ausreicht um die Bilddaten mit dem X11-Protokoll zu übertragen.
Diese Lösung sollte deshalb mind. in einem 100Mbps-, besser aber in einem 1000Mbps-Netzwerk eingesetzt werden.
als "root" das nötigste installieren:
# portmaster x11-servers/xorg-server x11/xterm net/vnc
als Benutzer (Fritz) eine X-Initialisierungsdatei anlegen:
# echo "/usr/bin/icewm-session" > .xinitrc
Fritz startet es:
# VirtualBox
Wenn die Variable LIBGL_ALWAYS_INDIRECT nicht gesetzt wird, stirbt VirtualBox beim anklicken von fast jeder Einstellung mit dieser Fehlermeldung:
Qt WARNING: QGLContext::makeCurrent(): Cannot make invalid context current. Segmentation fault: 11
VirtualBox starten:
# export LIBGL_ALWAYS_INDIRECT=1 ; VirtualBox
Die Installation und Bedienung wird, kurz, hier dargestellt VNC.
Hilfe:
# VBoxManage -h
Infos zur VM anzeigen:
# VBoxManage showvminfo "VM-Name"
Hat man sich in VirtualBox eine VM eingerichtet, dann kann man sie als Klon-Vorlage für weitere VMs verwenden. Eine weitere VM kann man auf diese Weise in wenigen Arbeitsschritten als Klon erstellen.
Eine VM mit dem Namen vm01 anlegen und installieren.
Das Plattenabbild der installierten Maschine (vm01) als Plattenabbild der Zweitmaschine (vm02) kopieren:
# cd ~/.VirtualBox/HardDisks # copy vm01.vdi vm02.vdi
Jetzt muss das neue Plattenabbild eine eigene UUID bekommen:
# VBoxManage internalcommands sethduuid vm02.vdi
Eine VM für unser Zweitsystem (vm02), mit den gleichen Einstellungen wie "vm01", vorbereiten. Sie muss jedoch nicht installiert werden, deshalb sollte man hier das Boot-CD-Image entweder nicht einbinden oder die Bootreihenfolge ändern.
Eine VM mit dem Namen vm01 anlegen und installieren.
Das Plattenabbild der installierten Maschine (vm01) als Plattenabbild der Zweitmaschine (vm02) kopieren:
# cd ~/VirtualBox\ VMs # mkdir vm02 # copy vm01/vm01.vdi vm02/vm02.vdi
Jetzt muss das neue Plattenabbild eine eigene UUID bekommen:
# VBoxManage internalcommands sethduuid vm02/vm02.vdi
Eine VM für unser Zweitsystem (vm02), mit den gleichen Einstellungen wie "vm01", vorbereiten. Sie muss jedoch nicht installiert werden, deshalb sollte man hier das Boot-CD-Image entweder nicht einbinden oder die Bootreihenfolge ändern.
Eine VM mit dem Namen vm01 anlegen und installieren.
Das Plattenabbild der installierten Maschine (vm01) als Plattenabbild der Zweitmaschine (vm02) kopieren:
# cd C:\Users\Name\VirtualBox VMs # mkdir vm02 # copy vm01\vm01.vdi vm02\vm02.vdi
Jetzt muss das neue Plattenabbild eine eigene UUID bekommen:
# C:\Programme\Oracle\VirtualBox\VBoxManage.exe internalcommands sethduuid vm02\vm02.vdi
Eine VM für unser Zweitsystem (vm02), mit den gleichen Einstellungen wie "vm01", vorbereiten. Sie muss jedoch nicht installiert werden, deshalb sollte man hier das Boot-CD-Image entweder nicht einbinden oder die Bootreihenfolge ändern.
Um Dateien direkt zwischen Host und Gast austauschen zu können, kann man einen "Gemeinsamen Ordner" einrichten.
Unter "Ändern" (bzw. "Settings"), man hätte es besser "Einstellungen" nennen sollen, kann man zu jeder einzelnen VM unter dem Menüpunkt "Gemeinsame Ordner" ein oder mehrer Verzeichnise auf der realen Host-Maschine auswählen.
In diesem Beispiel habe ich das Verzeichnis "/cdrom" als Gemeinsamen Ordner ausgewählt.
Im folgenden wird beispielhaft gezeigt, wie man unter verschiedenen Betriebssystemen diesen Gemeinsamen Ordner einbinden kann.
# net use x:\\vboxsvr\cdrom
Hier kann man alle Gemeinsamen Ordner über das Netzwerk auf dem virtuellen Host \\vboxsvr
als share's erreichen.
In diesem Beispiel also:
\\vboxsvr\cdrom
# mount -t vboxfs cdrom /mnt
Windows XP bringt von Haus aus keinen SATA-Treiber mit, deshalb muss er entweder per Floppy mit [F6] bei der Installation installiert werden oder nachträglich mit der CD.
Mit dem "Intel Matrix-Storage-Manager" von http://downloadcenter.intel.com/ unterstützt "Windows XP" auch das SATA-Gerät in VirtualBox.
Ich habe den "Intel Matrix-Storage-Manager" in der Version 8.9.0.1023 in einem "Windows XP Prof. SP3" vom CD-Image aus nachträglich installiert.
Alle anderen voreingestellten Geräte habe ich bei behalten:
Dann hat sich rausgestellt, dass sowohl die Variante mit dem Inteltreiber als auch die Variante mit dem virtuellem CD-Laufwerk in VirtualBox sehr langsam ist.
Deshalb verwende ich jetzt nur die drei IDE-CDROM-Laufwerke und setze lieber mehrere VirtualBox-VMs ein.
Vielleicht probiere ich es später nocheinmal mit KVM aus.