それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

libvirt + qemue の kvm 仮想マシンで画面を持たないコンソールのVMをぱぱっと作成して コンテナみたいに使う

VMがヘビィだ

docker とか LXC 使ってると、VMがヘビィに感じることがある。もっと手軽に仮想マシンを使いたいななどと思う。

UbuntuDebian仮想マシンで新規で作って、コンソールでテキストで扱えれば嬉しいわけです。

SSH経由で、VMを作成

SSHのテキストベースで、仮想マシンを作成し、そのまま コンソールでインストールするコマンド

virt-install というコマンドでぱぱっとVMを作成して、そのままインストールを開始できる。

ubuntu の場合

virt-install \
--name ubuntuLTS \
--ram 30029 \
--disk path=/var/lib/libvirt/images/ubuntu-1910.qcow2 \
--vcpus 4 \
--virt-type kvm \
--os-type linux \
--os-variant ubuntu18.04 \
--graphics none \
--location 'http://archive.ubuntu.com/ubuntu/dists/bionic/main/installer-amd64/' \
--extra-args "console=tty0 console=ttyS0,115200n8"

debian の場合

debian ならこんな感じだろうか。

virt-install \
--name ubuntuLTS \
--ram 30029 \
--disk path=/var/lib/libvirt/images/debian10.qcow2 \
--vcpus 4 \
--virt-type kvm \
--os-type linux \
--os-variant debian10 \
--graphics none \
--location http://ftp.kddilabs.jp/pub/Linux/distributions/Debian/debian/dists/buster/main/installer-amd64/ \
--extra-args "console=tty0 console=ttyS0,115200n8"

インストール画面はSSH経由で

SSHCLIでテキストでインストールで切るので便利。

f:id:takuya_1st:20200401075852p:plain

f:id:takuya_1st:20200401081159p:plain

tasksel で openssh-server を選ぶのを忘れないように

インストール時に、openssh-server を選ばないと、ログインできなくて詰みます。もちろんネットワーク設定が必須です。無いと詰み。

grub を無理やり変更すれば可能だけどめんどくさいので、 openssh-server のインストールを忘れないように。

インストール後に grub を編集します。

シリアル コンソール を使えるように、 grub を設定しておきます。

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
##
GRUB_CMDLINE_LINUX="console=tty1 console=ttyS0,115200"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1"

grub を更新しします。

sudo update-grub

これで、virsh からコンソールアクセスができる

virsh console ubuntu-vm

または

virsh
console ubuntu-vm

でコンソールでログインができるようになる。VGA関連をバッサリ削れるのでだいぶ手軽に使えるようになる。

f:id:takuya_1st:20200401133345p:plain

その他の方法

似たような方法でも、同じような目的を達成する事ができます。

Ubuntuクラウド イメージ vmx Debian のクラウド イメージ qcow LXC /docker など

これらを使えば、コンソールで起動するVMを確保することができる。

軽量なコンテナでも良いんだけどVMが良いというときなど、TPOに合わせて使い分けていきたい。 何でもかんでもDockerが最高というわけでもないので

参考資料

Creating Virtual Machines on KVM with virt-install

https://cloud.debian.org/images/cloud/