Ubuntu 20.04にKVMをインストールする
概要
Ubuntu 20.04 にKVMでVMを作成できる環境を用意する。
また、VMは外部からアクセスできるようになっていること。
手順
KVMの設定
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 --------------------
KVMのネットワーク設定
外部からのネットワーク通信を、ホストの物理インターフェースを通して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
KVMでVMの作成
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