VirtualBox

Z Fedora Wiki

Spis treści


Instalujemy źródła kernela i pakiety potrzebne do kompilacji sterownika

yum install make automake autoconf gcc kernel-devel dkms

teraz wybieramy pomiędzy wersją VirtualBox (komercyjną) lub VirtualBox-OSE (Open Source Edition)

VirtualBox

UWAGA! Instrukcja dotyczy wersji pakowanej przez Oracle
Nie jest to ta sama wersja, którą możemy ściągnąć ze standardowych repozytoriów dostarczanych z dystrybucją Fedora.
VirtualBox z repozytoriów Fedory nie ma wsparcia dla USB w maszynach wirtualnych oraz nie obsługuje protokołu RDP.


Pobieramy plik z konfiguracją repozytorium:

wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo  -O /etc/yum.repos.d/vbox.repo

Repozytorium jest domyślnie wyłączone. Żeby je właczyć należy wykonać polecenie:

su -c "sed -i -e 's/enabled=0/enabled=1/' /etc/yum.repos.d/vbox.repo"

Następnie instalujemy VirtualBox:

su -c "yum install VirtualBox-4.1"



W celu włączenia obsługi wirtualnych systemów 64-bitowych należy po utworzeniu nowej maszyny wirtualnej wejść w jej "Ustawienia" (Ctrl-S) i na zakładce "Ogólne"→"Zaawansowane" zaznaczamy opcje "Extended features": "Włącz ACPI", "Włącz IO APIC", "Enable VT-x/AMD-V", "Włącz PAE/NX".

Dodaj siebie do grupy vboxusers

su -c "usermod -G vboxusers -a `whoami`"

Uwagi:

su -c "/etc/init.d/vboxdrv setup"
su -
MYGID=`getent group vboxusers | cut -d":" -f3`
# lub tak:
# MYGID=`awk -F ":" '/^vboxusers/ {print $3}' /etc/group`
echo "none /sys/bus/usb/drivers usbfs devgid=$MYGID,devmode=664 0 0" >> /etc/fstab
mount -a

Polecenia należy wykonać tylko raz. Przy kolejnych uruchomieniach systemu nie powinno być już problemów.
Rozwiązanie zaczerpnięte z bloga Penguin Enclave

Instalacja pakietu rozszerzeń
Od wersji 4.0 firma Oracle wydzieliła z paczki binarnej VirtualBox pakiety rozszerzeń. Z tego powodu z paczki binarnej została usunięta m.in. obsługa USB. Aby w pełni korzystać z obsługi USB w maszynie wirtualnej należy zainstalować pakiet rozszerzeń. Pakiet pobieramy ze strony http://www.virtualbox.org/wiki/Downloads (druga "kropka" opisana jako VirtualBox [tu numer wersji] Oracle VM VirtualBox Extension Pack). Instalację rozszerzenia przeprowadzamy jako root

cd <ścieżka z zachowanym pakietem *.vbox-extpack>
VBoxManage extpack install Oracle[wciśnij TAB][wciśnij ENTER]

lub jeśli dokonaliśmy aktualizacji wcześniej zainstalowanej wersji:

cd <ścieżka z zachowanym pakietem *.vbox-extpack>
VBoxManage extpack install --replace Oracle[wciśnij TAB][wciśnij ENTER]

Po restarcie urządzenia USB zamontowane na systemie-gospodarzu powinny byc dostępne do zainstalowania w systemie goszczonym.

VirtualBox-OSE (Open Source Edition)

su -c "yum install VirtualBox-OSE VirtualBox-OSE-guest kmod-VirtualBox-OSE"

restart systemu lub (?) ładowanie modułów

su -c "/etc/sysconfig/modules/VirtualBox-OSE.modules"

reszta jak w zwykłej wersji VirtualBox.

Kontrola virtualnego systemu z linii komend

Ciekawą i mniej znaną cechą VB jest możliwość kontrolowania wirtualnego systemu z pominięciem graficznego interfejsu VirtualBox. Aby uruchomić obraz, wystarczy wywołać polecenie:

VBoxManage startvm <nazwa obrazu>

Przykładowo u mnie obraz nazywa się WinXP i w łatwy sposób można utworzyć wykonywalny skrypt:

su -c "echo -e '#!/bin/bash \nVBoxManage startvm WinXP' >> /usr/local/bin/WinXP"
su -c "chmod +x /usr/local/bin/WinXP"

Teraz można uruchomić maszynę [Alt]+[F2] i wpisać WinXP lub utworzyć aktywator do polecenia /usr/local/bin/WinXP. Jeśli chcemy mieć więcej możliwości kontroli, możemy rozbudować skrypt o kilka opcji:

#!/bin/bash
# xp - kontrola wirtualnego xp
 
# nazwa wirtualnego systemu
vm=WinXP
 
if [ $# -eq 0 ]; then
	# przy braku parametrów: wyświetl pomoc
	echo "${0##*/} { on | off | save }"
	exit 0
else
	case "$1" in
		on)
			/usr/bin/VBoxManage startvm $vm
			;;
		off)
			/usr/bin/VBoxManage controlvm $vm poweroff
			;;
		save)
			/usr/bin/VBoxManage controlvm $vm savestate
			;;
		*)
			echo "Nie ma takiego parametru:     $@"
			# uruchomienie bez parametrów wyświetli pomoc
			$0
			;;
	esac
fi

Możliwości kontroli są znacznie większe, a pełna dokumentacja dostępna jest tu:

rpm -qd VirtualBox-4.1

Uruchomienie systemu z dysku jako maszyny wirtualnej

Jeśli na innym dysku/partycji mamy zainstalowany drugi system, to możemy uruchomić go w okienku jak inne maszyny wirtualne. Należy w tym celu utworzyć specjalny obraz VMDK, który definiuje, gdzie są składowane dane, a później można go używać jak zwykłego obrazu wirtualnego dysku.

Ostrożnie! Tylko dla zaawansowanych
Niewłaściwe użycie lub użycie nieaktualnego obrazu VMDK może prowadzić do całkowitej utraty danych na dysku. Pamiętaj, że chodzi o dostęp do sprzętu z dwóch systemów, które z pewnością będą chciały nim zarządzać. Nigdy nie uruchamiaj hosta jako wirtualnego systemu (ten sam system działający równolegle). Trudno też przewidzieć co będzie jeśli spróbujemy uzyskać bezpośredni dostęp do partycji z dwóch różnych systemów jednocześnie. Przykładowo na partycji NTFS mogą się nie zapisywać pliki pod Fedorą jeśli będzie ona pod jednoczesną kontrolą wirtualnego Windowsa. Nawet po zamknięciu wirtualnego Windowsa, partycje mogą wymagać ponownego zamontowania.

Dodaj siebie do grupy disk

su -c "usermod -G disk -a `whoami`"

Rejestrujemy bootowalny dysk (nie partycję!). Jeśli jest to drugi dysk, wówczas mówimy o /dev/sdb a wynikiem będzie plik winxp.vmdk.

VBoxManage internalcommands createrawvmdk -filename /path/to/winxp.vmdk -rawdisk /dev/sdb -register

To samo pod Windows dla dysku /dev/sda, gdzie znajduje się Fedora:

VBoxManage internalcommands createrawvmdk -filename C:\fedora.vmdk -rawdisk \\.\PhysicalDrive0 -register

To prawie wszystko, dyski są widoczne w Plik > Menadżer nośników wirtualnych. Wystarczy dodać nową maszynę i wybrać wygenerowany dysk.

Uwaga! W przypadku Windows, należy utworzyć nowy profil sprzętowy inaczej będzie ciągle instalował nowe urządzenia raz wirtualne, raz rzeczywiste. Opcja dostępna jest w: Control Panel --> System --> Hardware --> Hardware Profiles

Wszelkie dodatkowe informacje dostępne są w UserManual.pdf, rozdział "Advanced topics">"Using a raw host hard disk from a guest"