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:
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:
Dla systemu RedHat:
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)
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ć.
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)
W przypadku starszych wersji polecenia virsh
należy użyć sekwencji poleceń:
# 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.