Problem: chcemy zalogować się na maszynę wirtualną ale nie możemy użyć aplikacji virt-viewer bądź np. ssh.

Najlepszym rozwiązaniem wtedy powinno być użycie polecenia:

# virsh console maszyna

Tutaj często pojawia się jednak problem, nie jesteśmy w stanie tego zrobić. Rozwiązanie tego problemu wymaga wprowadzenia pewnych modyfikacji po stronie systemu gościa i konfiguracji konsoli podłączonej portu szeregowego.

Krok 1: Dodanie wpisu w pliku /etc/inittab.

Dla systemu Debian:

co:2345:respawn:/sbin/getty -L ttyS0 115200 vt100

Dla systemu RedHat:

co:2345:respawn:/sbin/agetty ttyS0 115200  vt100

Krok 2: Włączenie logowania przy użyciu konsoli szeregowej.

Należy do pliku /etc/securetty dodać nazwę konsoli na którą chcemy się zalogować (jeżeli już nie jest ona tam wymieniona)

ttyS0

Krok 3: Włączenie dostępu do menu startu GRUB 1.

Można jeszcze włączyć możliwość podglądu startu systemu już od momentu uruchomienia Gruba. Aby to zrobić, należy wprowadzić następujące modyfikacje do pliku /boot/grub/menu.lst lub /boot/grub/grub.conf (najczęściej istnieje jeden z plików, a drugi jest linkiem do pierwszego)

1
2
serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal --timeout=10 serial console

Wpis ten powinien znaleźć się powyżej pierwszej dyrektywy title.

Należy także dodać następujący ciąg znaków console=ttyS0,115200 do linii ze ścieżką do jądra systemu. W przypadku RedHata linia taka wyglądałaby podobnie do tej:

1
2
3
4
title Red Hat Enterprise Linux Server (2.6.18-164.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-164.el5 ro root=/dev/sda2 rhgb quiet console=ttyS0,115200
initrd /initrd-2.6.18-164.el5.img

Dla Debiana natomiast warto dodać podane instrukcje w linii zaczynającej się tak:

1
# kopt=root=/dev/mapper/eris-root ro

Po modyfikacji linia ta będzie miała taką postać (zwracam uwagę na znak komentarza, jest i powinien zostać):

1
# kopt=root=/dev/mapper/eris-root ro console=ttyS0,115200

Teraz pozostaje tylko uruchomić polecenie update-grub:

1
2
3
4
5
6
7
# update-grub
Searching for GRUB installation directory ... found: /boot/grub
Searching for default file ... found: /boot/grub/default
Testing for an existing GRUB menu.lst file ... found: /boot/grub/menu.lst
Searching for splash image ... none found, skipping ...
Found kernel: /vmlinuz-2.6.26-2-amd64
Updating /boot/grub/menu.lst ... done

Powoduje ona aktualizacje wpisów w pliku konfiguracyjnym tak, że będą one wyglądały tak jak poniżej. Także po instalacji nowego jadra systemu odpowiednie wpisy zostaną dodane do konfiguracji jądra.

1
2
3
4
title           Debian GNU/Linux, kernel 2.6.26-2-amd64
root            (hd0,0)
kernel          /vmlinuz-2.6.26-2-amd64 root=/dev/mapper/scope-root ro quiet console=ttyS0,115200
initrd          /initrd.img-2.6.26-2-amd64

Krok 4. Restart maszyny wirtualnej.

Teraz pozostaje tylko zatrzymać maszynę wirtualną i ponownie ją uruchomić.

# virsh shutdown maszyna

A teraz pozostaje nam wystartować maszynę za pomocą polecenia (jeżeli dysponujemy odpowiednio nową wersją komendy virsh, opcja --console jest dostępna przynajmniej od wersji 0.7.0)

# virsh start maszyna --console

W przypadku starszych wersji polecenia virsh należy użyć sekwencji poleceń:

# virsh start maszyna

# virsh console maszyna

Po tych krokach powinniśmy połączyć się z maszyną wirtualną i możemy obserwować zarówno menu GRUB jak i proces startu maszyny wirtualnej.

Także jeżeli używamy do zarządzania maszynami wirtualnymi polecenia xm, wszystko powinno działać. Należy jedynie zmienić polecenia służące do startu i zatrzymywania maszyn wirtualnych.

Tags: , , , , ,