VirtualBox – połączenie przez port szeregowy (serial port)

Dziś krótki opis jak zapewnić sobie łączność z maszyna wirtualną przy użyciu portu szeregowego. Opcja bardzo przydatna, w przypadku kiedy hostujemy maszyny wirtualne na serwerze bez środowiska graficznego (VirtualBox w trybie Headless) lub kiedy musimy mieć dostęp do bootloadera.

Konfiguracja VirtualBox’a

W VirtualBoxie musimy włączyć port szeregowy (Serial Ports). Tryb działania portu ustawimy jako Host Pipe, a jako ścieżkę /tmp/vbox-centos. Po uruchomieniu maszyny w naszym systemie pojawi się podany plik:

stat /tmp/vbox-centos
  File: ‘/tmp/vbox-centos’
  Size: 0       Blocks: 0    IO Block: 4096   socket
Device: 12h/18d Inode: 29504682    Links: 1

Konfiguracja portów szeregowych w VirtualBoxie

Konfiguracja systemu

Teraz czas na konfigurację maszyny wirtualnej. W podanym przykładzie używamy systemu CentOS 6.2. Prędkość transmisji ustawimy na 57600bps. W pliku /etc/grub.conf dodajemy:

serial --unit=0 --speed=57600
terminal --timeout=5 serial console

oraz wyłączamy graficzny interfejs (splashimage):

#splashimage=(hd0,0)/grub/splash.xpm.gz

Do linijki kernel dopisujemy console=tty0 console=ttyS0,57600, oraz usuwamy (jeśli jest dodana) opcję rhgb (redhat graphical boot):

title CentOS (2.6.32-220.23.1.el6.x86_64)
        root (hd0,0)
        kernel /vmlinuz-2.6.32-220.23.1.el6.x86_64 ro root=/dev/mapper/vg_test-root crashkernel=auto console=tty0 console=ttyS0,57600
        initrd /initramfs-2.6.32-220.23.1.el6.x86_64.img

Na koniec w katalogu /etc/init tworzymy plik ttyS0.conf:

cat /etc/init/ttyS0.conf
# ttyS0 - getty
#
# This service maintains a getty on ttyS0 from the point the system is
# started until it is shut down again.

start on stopped rc RUNLEVEL=[2345]
stop on runlevel [!2345]

respawn
exec /sbin/getty -L 57600 ttyS0 vt100

Test połączenia

Do połączenia się z maszyna wirtualną przez port szeregowy użyjemy programu socat. Jako pierszy parametr podajemy nazwę pliku (/tmp/vbox-centos), drugi to standartowe wejście oraz ustawiona prędkośc na 57600bps:

socat unix-connect:/tmp/vbox-centos -,b57600

Na poniższych 2 zrzutach uruchomiona maszyna wirtualna oraz wyjście programu socat na konsolę.

Podłączenie do maszyny wirtualnej przez port szeregowy
socat w akcji

Zostaw komentarz


Podpowiedź - możesz użyć tych HTML tagów i atrybutów:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Obraz CAPTCHY

*