投稿日: 2022-03-08
著者: taamgo0224
Ubuntu 20.04 にKVMでVMを作成できる環境を用意する。
また、VMは外部からアクセスできるようになっていること。
CPUが仮想化をサポートしているか確認する
$ egrep -c '(vmx|svm)' /proc/cpuinfo
1以上の数字が表示されること
kvm-okでも代用可能
$ kvm-ok
INFO: /dev/kvm exists
KVM acceleration can be used
kernelが64bit対応稼働確認する。x86_64が出力されればよい
$ uname -m
x86_64
KVMに必要なパッケージをインストールする
$ sudo apt install qemu-kvm libvirt-daemon-system libvirt-cl$]ients bridge-utils virtinst
ユーザを kvm/libvirt グループに追加する。下記コマンド実行後、再ログインを行うこと
$ sudo adduser `id -un` libvirt
Adding user '<username>' to group 'libvirt' ...
$ sudo adduser `id -un` kvm
Adding user '<username>' to group 'kvm' ...
kvmがインストールできたことを確認する
$ virsh list --all
Id Name State
--------------------
外部からのネットワーク通信を、ホストの物理インターフェースを通してVMにアクセスさせるためにbridgeネットワークを設定していきます。
デフォルトで作成されたvirbr0を削除する
$ sudo virsh net-autostart default --disable
$ sudo virsh net-destroy default
netplanでbr0を作成する
$ cat /etc/netplan/00-installer-config.yaml
# This is the network config written by 'subiquity'
network:
ethernets:
enp8s0:
dhcp4: false
dhcp6: false
version: 2
bridges:
br0:
interfaces: [enp8s0]
addresses: [192.168.11.250/24]
gateway4: 192.168.11.1
nameservers:
addresses: [192.168.11.1, 8.8.8.8]
$ sudo netplan apply
cloud imageのUbuntu20.04を使ってKVMにUbuntu 20.04VMを作成する。
ubuntu 20.04 の cloud image をダウンロードする
wget https://cloud-images.ubuntu.com/focal/20220208/focal-server-cloudimg-amd64.img
cloud initのイメージ作成用のツールをインストールする
ダウンロードしたイメージファイルをqcow2形式に変換する
$ qemu-img convert -f qcow2 -O qcow2 ./focal-server-cloudimg-amd64.img ./root-disk.qcow2
qcow2のディスクサイズを20GBにリサイズする(何GBでもいい)
$ qemu-img resize ./root-disk.qcow2 20G
cloud initを使って、ユーザ定義を設定する
$ cat << EOF > cloud-init.cfg
#cloud-config
system_info:
default_user:
name: $USERNAME
home: /home/$USERNAME
password: $PASSWORD
chpasswd: { expire: False }
hostname: $VM_NAME
# configure sshd to allow users logging in using password
# rather than just keys
ssh_pwauth: True
EOF
$ cat << EOF > network-config.cfg
version: 2
ethernets:
ens3:
dhcp4: false
addresses:
- 192.168.11.249/24
gateway4: 192.168.11.1
nameservers:
addresses: [192.168.11.1, 8.8.8.8]
EOF
cloud-init.cfgをもとに、ブート時に読み込ませるディスクを作成する
$ cloud-localds --network-config=./network-config.cfg ./cloud-init.iso cloud-init.cfg
virt-installコマンドでVMを作成する
$ sudo virt-install \
--name "ubuntu-sample" \
--memory 1024 \
--disk ./root-disk.qcow2,device=disk,bus=virtio \
--disk ./cloud-init.iso,device=cdrom \
--os-type linux \
--os-variant ubuntu20.04 \
--virt-type kvm \
--graphics none \
--network bridge:br0 \
--import
VMが作成されたことを確認する
$ virsh list --all
Id Name State
-------------------------------
1 ubuntu-sample running
VMにログインする。ログイン情報はcloud-init.cfg定義したユーザ情報
$ virsh console ubuntu-sample