Ubuntu 20.04にKVMをインストールする

投稿日: 2022-03-08

著者: taamgo0224

Astroのロゴ

ubuntu

kvm

memo

Ubuntu 20.04にKVMをインストールする

概要

Ubuntu 20.04 にKVMでVMを作成できる環境を用意する。

また、VMは外部からアクセスできるようになっていること。

手順

KVMの設定

  1. CPUが仮想化をサポートしているか確認する

    $ egrep -c '(vmx|svm)' /proc/cpuinfo
    1以上の数字が表示されること
    1. kvm-okでも代用可能

      $ kvm-ok
      INFO: /dev/kvm exists
      KVM acceleration can be used
  2. kernelが64bit対応稼働確認する。x86_64が出力されればよい

    $ uname -m
    x86_64
  3. KVMに必要なパッケージをインストールする

    $ sudo apt install qemu-kvm libvirt-daemon-system libvirt-cl$]ients bridge-utils virtinst
    
  4. ユーザを kvm/libvirt グループに追加する。下記コマンド実行後、再ログインを行うこと

    $ sudo adduser `id -un` libvirt
    Adding user '<username>' to group 'libvirt' ...
    $ sudo adduser `id -un` kvm
    Adding user '<username>' to group 'kvm' ...
  5. kvmがインストールできたことを確認する

    $ virsh list --all
     Id   Name   State
    --------------------
    

KVMのネットワーク設定

外部からのネットワーク通信を、ホストの物理インターフェースを通してVMにアクセスさせるためにbridgeネットワークを設定していきます。

  1. デフォルトで作成されたvirbr0を削除する

    $ sudo virsh net-autostart default --disable
    $ sudo virsh net-destroy default
  2. 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を作成する。

  1. ubuntu 20.04 の cloud image をダウンロードする

    wget https://cloud-images.ubuntu.com/focal/20220208/focal-server-cloudimg-amd64.img
  2. cloud initのイメージ作成用のツールをインストールする

  3. ダウンロードしたイメージファイルをqcow2形式に変換する

    $ qemu-img convert -f qcow2 -O qcow2 ./focal-server-cloudimg-amd64.img ./root-disk.qcow2
  4. qcow2のディスクサイズを20GBにリサイズする(何GBでもいい)

    $ qemu-img resize ./root-disk.qcow2 20G
  5. 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
  6. cloud-init.cfgをもとに、ブート時に読み込ませるディスクを作成する

    $ cloud-localds --network-config=./network-config.cfg ./cloud-init.iso cloud-init.cfg
  7. 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
  8. VMが作成されたことを確認する

    $ virsh list --all
     Id   Name            State
    -------------------------------
     1    ubuntu-sample   running
  9. VMにログインする。ログイン情報はcloud-init.cfg定義したユーザ情報

    $ virsh console ubuntu-sample

参考資料