Présentation

Virtualbox est un outil permettant de virtualiser un environnement informatique complet. C’est à dire que vous créez une sorte d’ordinateur virtuel sur lequel vous pouvez installer un système d’exploitation de votre choix tel qu’Ubuntu, Debian, Fedora, Gentoo et même Windows ou Mac (pour peu que vous disposiez d’une licence vous l’autorisant).

Utiliser l’outil sur une machine distante

L’idée est de mettre en service un outil VirtualBox sur une machine distante. Puis de se connecter dessus de manière sécurisée à l’aide d’un tunnel SSH et un outil graphique pour les manipulations habituelles.

On a donc besoin :

Installation

deb http://download.virtualbox.org/virtualbox/debian squeeze contrib non-free
wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -
apt-get update
apt-get install virtualbox-4.3
apt-get install dkms

Extension Pack

VBoxManage -v
wget http://download.virtualbox.org/virtualbox/4.3.8/Oracle_VM_VirtualBox_Extension_Pack-4.3.8-92456.vbox-extpack
VBoxManage extpack install *.vbox-extpack

On crée le fichier /etc/default/virtualbox dans lequel on met la ligne suivante (chez moi j’ai mis root comme utilisateur) :

VBOXWEB_USER="virtual"
VBOXWEB_TIMEOUT=0
VBOXWEB_LOGFILE="/var/log/vboxwebservice.log"
VBOXWEB_HOST="myserver.example.com"

Démarrage du service :

service vboxweb-service start

Sur notre machine (interface graphique cliente)

On va utiliser RemoteBox .

Pré-requis

apt-get install libgtk2-perl libsoap-lite-perl freerdp-x11

Installation

wget http://remotebox.knobgoblin.org.uk/downloads/RemoteBox-1.7.tar.bz2
tar xvf RemoteBox-1.7.tar.bz2
cd RemoteBox-1.7
./remotebox

RemoteBox devrait de lancer.

Enlever l’identification

Ceci permet d’enlever l’identification (quand ça pose problème) :

vboxmanage setproperty websrvauthlibrary null

Redirection de port sur la machine virtuelle

Cf. http://www.virtualbox.org/manual/ch06.html#natforward

Il suffit de faire :

VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"

Où :

Récupérer partition windows pour l’utiliser dans VirtualBox

Préparer un massacrage de Windows 8
Vous avez démonté un disque dur avec Windows 8 pré-pourri à l'intérieur. Vous voulez copier à l'identique le contenu dans une image VDI (le supplice étant réalisé sous VirtualBox).

sudo dd if=/dev/sdc of/media/TEMP/disque.dd
VBoxManage convertfromraw disque.dd disque.vdi --format VDI
rm disque.dd

Adaptez selon votre situation. Amusez-vous bien.
(ne pas oublier de bien supprimer la table de partitions du disque dur et en écraser le contenu avant d'en faire usage: Windows 8 est un virus dangereux qui se propage à toute allure)

Ouverture de ports

Imaginons que vous vouliez utiliser le port 2222 pour vous connecter à un service (serveur SSH par exemple) du port 22 de la machine virtuelle, faites:

VBoxManage setextradata "Nom de la machine dans VirtualBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort" 2222
VBoxManage setextradata "Nom de la machine dans VirtualBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort" 22
VBoxManage setextradata "Nom de la machine dans VirtualBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol" TCP

Ensuite on se connecte à utilisateur@localhost:2222

Pour annuler les modifications, ne donnez pas de valeurs, par exemple :

VBoxManage setextradata "Nom de la machine dans VirtualBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/HostPort"
VBoxManage setextradata "Nom de la machine dans VirtualBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/GuestPort"
VBoxManage setextradata "Nom de la machine dans VirtualBox" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/ssh/Protocol"

PXE sous Virtualbox

Il suffit de :

Démarrer la machine virtuelle est profitez ;)

Alias Bash/Zsh pour Virtualbox

Pour gérer rapidement ses machines virtuelles (merci à Quentin Theuret pour le partage) :

alias startvbox='vboxmanage startvm --type headless'                            
alias vbstart='vboxmanage startvm'                                              
alias showvbox='vboxmanage list vms'                                            
alias vbshow='vboxmanage list vms'                                              
                                                                                
function stopvbox {                                                             
    vboxmanage controlvm $1 poweroff;                                           
}                                                                               
alias vbstop='stopvbox'                                                         
                                                                                
function savevbox {                                                             
    vboxmanage controlvm $1 savestate;                                          
}                                                                               
alias vbsave='savevbox'

Autre fonction pour faciliter (merci à Vincent Greiner du partage):

vm()
{
    if [ $2 == 'start' ]
    then
        VBoxManage startvm $1 --type headless
    elif [ $2 == 'stop' ]
    then
        VBoxManage controlvm $1 stop
    elif [ $2 == '!stop' ]
    then
        VBoxManage controlvm $1 acpipowerbutton
    elif [ $2 == 'savestate' ]
    then
        VBoxManage controlvm $1 savestate
    elif [ $2 == 'resume' ]
    then
        VBoxManage controlvm $1 resume
    fi
}

Liens utiles

Utiliser une partition Windows réelle comme support de machine virtuelle

Bonne lecture :

Autre