Il est possible de déclarer un UART sur la machine virtuelle et ainsi de se connecter sur le système invité de type *nix via un lien série émulé. Dans ce cas, l'invité peut être lancé sans interface graphique et contrôlé via la liaison série.
Virtualbox émule un composant UART 16550A les modes suivants peuvent être paramétrés:
Plusieurs contrôleurs série peuvent être déclarés via l'interface graphique ou vboxmanage. Il est recommandé d'utiliser les adresses de bases et les niveaux d'interruptions classiques listées ci-dessous:
Port 1 | 0x3f8, IRQ 4 |
---|---|
Port 2 | 0x2f8, IRQ 3 |
Port 3 | 0x3e8, IRQ 4 |
Port 4 | 0x2e8, IRQ 3 |
Modification de la VM, on ajoute le controleur série:
$ vboxmanage modifyvm xubuntu --uart1 0x3f8 4 $ vboxmanage modifyvm xubuntu --uartmode1 server /tmp/xubuntu-ttyVM
Sur les systèmes *buntu récents, aucun programme n’écoute sur le port série par défaut. Il faut modifier la configuration d'Upstart. Le plus simple est de copier le fichier de configuration d'une console existante:
$ sudo cp /et/init/tty6.conf /etc/init/ttyS0.conf
Modifier le fichier de configuration:
# ttyS0 - getty
#
# Ce service maintient le daemon getty sur le périphérique virtuel série
# jusqu'a l'extinction du système.
start on runlevel [2345] and not-container
stop on runlevel [!2345]
respawn
exec /sbin/getty 115200 ttyS0
Lancer le nouveau service:
$ sudo initctl start ttyS0
On peut maintenant lancer la VM sans interface graphique (désactivation du service VRDE)
$ vboxheadless --vrde off --startvm xubuntu
Pour se connecter depuis l'hote sur le système invité, on utilisera minicom ou socat (plus généraliste il permet de rediriger de façon bidirectionnelle les flux du fichier /tmp/xubuntu-ttyVM).
$ sudo apt-get install socat $ socat UNIX-CONNECT:/tmp//tmp/xubuntu-ttyVM STDIO,raw,echo=0