0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

virshで接続できなくなったlinux guestのレスキュー

Posted at

vmゲストのDebianをdist upgradeした際にミスをして試行錯誤しながら復旧したので,その手順についてまとめてみました.

virshでアップデート後にVMに接続できない

Debianのホスト上のkvmにゲストとしてDebianをインストールし使っていたが,dist-upgradeした際にうっかりgrubの設定をメンテナのバージョンに更新してしまった.その後,virsh startするとVMは起動しているようだが,virsh consoleからもネットワークからもアクセスできなくなってしまった.
後からわかったが,メンテナの/etc/default/grubにより/boot/grub/grub.cfgの中で

terminal_output gfx

と設定されてしまったため,グラフィックを持たないVMがブート途中で止まっていたようだ.

レスキュー方法

仮想マシンをレスキューする方法を検索すると,virt-rescueというコマンドがあることが分かった.このコマンドを使うことで,rescue-cdからブートしたような感じで,ゲストVMのイメージを確認できるよう.
Debianではguestfs-toolsに含まれているようなのでインストールする.

apt install guestfs-tools

イメージのマウント

Debianでvirshを使ってVMを作成した場合は/var/lib/libvirt/imagesにイメージがある.どこにイメージがあるかはvirsh edit VM名でも確認できる.

cd /var/lib/libvirt/images
virt-rescue -a VM.img -a

でVMのイメージをマウントし,レスキューシェルが起動する.
VM.imgのファイルシステムはレスキューシェルでは/sysrootにマウントされている.

grub.cfgの修正

レスキューシェルにはエディターは含まれていないようなので,/sysroot/bin/tim.tinyを使ってファイルを修正した.
/sysroot/bin/vim.tiny /sysroot/etc/default/grubでGRUB_TERMINALの変更とGRUB_SERIAL_COMMANDを追加

GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"

本来はここでupdate-grubを実行する必用があるが,chrootなどを行う必用があるのとVMのイメージをどこまで書き換えてよいか不安だったので,直接/sysroot/boot/grub/grub.cfgを書き換えた.

/sysroot/bin/vim.tiny /sysroot/boot/grub/grub.cfgにより本来はよくないが,grub.cfgを書き換え.
terminal_output gfxの部分を以下に変更

serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1
terminal_input console serial
terminal_output console serial

レスキューシェルをexitで抜けてvirsh start VMで起動すると無事に起動した.

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?