最初からシリアルコンソールに入れる状態のVMを作る

先日自宅サーバVMを新たに作りたくなったのがだ、スケルトンとして用意しておいたVMにインストールされていたのがdebian squeezeだった。そのため、あらたにdebian wheezyがインスールされたスケルトンを作ろうと思い立った。

VMを作った後には普通OSをインストールするわけだが、従来はVNCでノートPCからサーバに接続して作業を行なっていた。しかし、これがシリアルコンソールでできると楽である。そもそも何か障害が起きた際には、シリアルコンソールがあると便利だ。

そんなわけでウェブ上の情報を漁っていたところ、VMを作成するときに最初からシリアルコンソール接続できるようにする方法があることが分かった。以下がそのVM作成スクリプトである。

#!/bin/sh

# 作成するVMイメージのパス
DISK_IMAGE="/opt/kvm/skeleton/skeleton.qcow2"

# インストールに用いるisoファイルのパス
INSTALL_ISO="/opt/kvm/iso/debian-7.7.0-amd64-netinst.iso"

LC_ALL=C LANG=C \
virt-install \
--name=skeleton \
--ram=512 \
--vcpus=1 \
--os-type=linux \
--os-variant=debianwheezy \
--disk="${DISK_IMAGE}",format=qcow2 \
--network=bridge:br0 \
--hvm \
--virt-type=kvm \
--keymap=ja \
--accelerate \
--location http://ftp.jp.debian.org/debian/dists/stable/main/installer-amd64 \
--extra-args='console=tty0 console=ttyS0,115200n8'

ここで、--locationでdebianミラーサイトを指定し、--extra-argsでシリアルコンソールに関する設定を行なっている。今後はこのスケルトンをcloneすればいつでもVMが作れる。VMをcloneするためのコマンドも載せておく。

virt-clone -o [クローン元VM名] -n [新しいVM名] -f [新しいVMのイメージファイルへのPATH(拡張子はqcow2)]


※2021/10/02追記

Debian11用のVMを作ろうとして、スクリプトがいろいろおかしかったので修正した。

#!/bin/sh

# You have to execute the following commanand to create new disk image (e.g. 20 Gigabytes)
# qumu-img create -f qcow2 /path/to/img/hoge.qcow2 20G
DISK_IMAGE="/opt/kvm/skeleton_deb11/skeleton_deb11.qcow2"

LC_ALL=C LANG=C \
virt-install \
--name=skeleton_deb11 \
--ram=512 \
--vcpus=1 \
--os-type=linux \
--disk="${DISK_IMAGE}",format=qcow2 \
--network=bridge:br0 \
--hvm \
--virt-type=kvm \
--keymap=ja \
--accelerate \
--noautoconsole \
--location http://ftp.jp.debian.org/debian/dists/bullseye/main/installer-amd64 \
--extra-args='console=tty0 console=ttyS0,115200n8'

os-variantオプションを指定しないと警告が出るが、debian11やdebianbullseyeを試すとエラーになってしまうため、やむなく消した。

参考:
http://qiita.com/dumpty-alma@github/items/fec24b20f9271c4db185