rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

Arch系Manjaro LinuxへのKVMのインストール

2021 Jun. 12.

出典 Installing KVM/QEMU/virt-manager on Manjaro Linux(Arch Linux) | Boseji’s Lab
参考 Install KVM on Arch Linux

CPUの仮想化可否確認

$ LC_ALL=C lscpu | grep Virtualization
Virtualization:                  AMD-V

カーネル設定の確認

$ zgrep CONFIG_KVM /proc/config.gz
CONFIG_KVM_GUEST=y
# CONFIG_KVM_DEBUG_FS is not set
CONFIG_KVM_MMIO=y
CONFIG_KVM_ASYNC_PF=y
CONFIG_KVM_VFIO=y
CONFIG_KVM_GENERIC_DIRTYLOG_READ_PROTECT=y
CONFIG_KVM_COMPAT=y
CONFIG_KVM=m
CONFIG_KVM_INTEL=m
CONFIG_KVM_AMD=m
CONFIG_KVM_AMD_SEV=y
CONFIG_KVM_MMU_AUDIT=y
[ryuichi@pc17 ~]$ zgrep VIRTIO /proc/config.gz
CONFIG_BLK_MQ_VIRTIO=y
CONFIG_VIRTIO_VSOCKETS=m
CONFIG_VIRTIO_VSOCKETS_COMMON=m
CONFIG_NET_9P_VIRTIO=m
CONFIG_VIRTIO_BLK=m
# CONFIG_VIRTIO_BLK_SCSI is not set
CONFIG_SCSI_VIRTIO=m
CONFIG_VIRTIO_NET=m
CONFIG_CAIF_VIRTIO=m
CONFIG_VIRTIO_CONSOLE=m
CONFIG_HW_RANDOM_VIRTIO=m
CONFIG_DRM_VIRTIO_GPU=m
CONFIG_VIRTIO=y
CONFIG_VIRTIO_MENU=y
CONFIG_VIRTIO_PCI=m
CONFIG_VIRTIO_PCI_LEGACY=y
CONFIG_VIRTIO_PMEM=m
CONFIG_VIRTIO_BALLOON=m
CONFIG_VIRTIO_INPUT=m
CONFIG_VIRTIO_MMIO=m
CONFIG_VIRTIO_MMIO_CMDLINE_DEVICES=y
CONFIG_RPMSG_VIRTIO=m
CONFIG_VIRTIO_FS=m
CONFIG_CRYPTO_DEV_VIRTIO=m

$ lsmod | grep kvm
kvm_amd               110592  0
ccp                   106496  1 kvm_amd
kvm                   790528  1 kvm_amd
irqbypass              16384  1 kvm

$ lsmod | grep virtio

仮想化ドライバー組み込み

$ sudo modprobe virtio-net
$ sudo modprobe virtio-blk
$ sudo modprobe virtio-scsi

$ sudo modprobe virtio-serial
modprobe: FATAL: Module virtio-serial not found in directory /lib/modules/5.4.123-1-MANJARO

$ find /lib/modules/5.4.123-1-MANJARO/ -name 'virtio*' | grep ser
virtio-serialモジュールが無いので組み込まず。

$ sudo modprobe virtio-balloon

qemuパッケージインストール

<<<<<<<<<<<<<<<<<<<<<<<<
下記の記述の結論として次のパッケージインストールとなる。

$ sudo pacman -S qemu qemu-arch-extra ovmf vde2 openbsd-netcat virt-manager virt-viewer

<<<<<<<<<<<<<<<<<<<<<<<<

$ sudo pacman -S qemu qemu-arch-extra ovmf bridge-utils dnsmasq vde2 openbsd-netcat ebtables iptables
警告: bridge-utils-1.7.1-1 は最新です -- 再インストール
警告: dnsmasq-2.85-1 は最新です -- 再インストール
警告: iptables-1:1.8.7-1 は最新です -- 再インストール
依存関係を解決しています...
衝突するパッケージがないか確認しています...
警告: 対象リストから 'iptables' を削除。'iptables-nft' と衝突しています
:: iptables-nft と iptables が衝突しています。iptables を削除しますか? [y/N] N
エラー: 解決できないパッケージの衝突が検出されました
エラー: 処理の準備に失敗しました (衝突する依存関係)
:: iptables-nft と iptables が衝突しています

$ sudo pacman -S qemu qemu-arch-extra ovmf bridge-utils dnsmasq vde2 openbsd-netcat ebtables
警告: bridge-utils-1.7.1-1 は最新です -- 再インストール
警告: dnsmasq-2.85-1 は最新です -- 再インストール
依存関係を解決しています...
衝突するパッケージがないか確認しています...
:: iptables-nft と iptables が衝突しています。iptables を削除しますか? [y/N] N
エラー: 解決できないパッケージの衝突が検出されました
エラー: 処理の準備に失敗しました (衝突する依存関係)
:: iptables-nft と iptables が衝突しています

$ sudo pacman -S qemu qemu-arch-extra ovmf vde2 openbsd-netcat ebtables 
依存関係を解決しています...
衝突するパッケージがないか確認しています...
:: iptables-nft と iptables が衝突しています。iptables を削除しますか? [y/N] N
エラー: 解決できないパッケージの衝突が検出されました
エラー: 処理の準備に失敗しました (衝突する依存関係)
:: iptables-nft と iptables が衝突しています


下記ページによると、ebtablesとiptablesはインストールしなくてもかまわないようなので、インストールから外した。

Install KVM on Arch Linux

You should not worry because ebtables is optional. If you want to suppress this warning, install the package with sudo pacman -S ebtables. However, because it conflicts with iptables-nft in the iptables package, it will ask to remove the iptables package.

$ sudo pacman -S qemu qemu-arch-extra ovmf vde2 openbsd-netcat 
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (15) brltty-6.3-2  dtc-1.6.0-3  libcacard-2.7.0-2  libslirp-4.5.0-1  libspeechd-0.10.2-1  numactl-2.0.14-1
                seabios-1.14.0-1  spice-0.14.3-3  usbredir-0.9.0-1  virglrenderer-0.9.1-1  edk2-ovmf-202102-1
                openbsd-netcat-1.217_2-1  qemu-6.0.0-3  qemu-arch-extra-6.0.0-3  vde2-2.3.2-16

合計ダウンロード容量:   77.97 MiB
合計インストール容量:  820.07 MiB

:: インストールを行いますか? [Y/n] 
:: パッケージを取得します...
 virglrenderer-0.9.1-1-x86_64                      206.8 KiB   383 KiB/s 00:01 [############################################] 100%
 libspeechd-0.10.2-1-x86_64                         19.4 KiB  21.2 KiB/s 00:01 [############################################] 100%
 brltty-6.3-2-x86_64                              1600.8 KiB  73.0 KiB/s 00:22 [############################################] 100%
 seabios-1.14.0-1-any                              185.7 KiB  38.7 KiB/s 00:05 [############################################] 100%
 numactl-2.0.14-1-x86_64                            81.2 KiB  41.5 KiB/s 00:02 [############################################] 100%
 vde2-2.3.2-16-x86_64                              216.0 KiB  36.9 KiB/s 00:06 [############################################] 100%
 spice-0.14.3-3-x86_64                             347.4 KiB  33.2 KiB/s 00:10 [############################################] 100%
 libcacard-2.7.0-2-x86_64                           40.3 KiB  57.0 KiB/s 00:01 [############################################] 100%
 qemu-6.0.0-3-x86_64                                 8.2 MiB   824 KiB/s 00:10 [############################################] 100%
 qemu-arch-extra-6.0.0-3-x86_64                     62.4 MiB  3.11 MiB/s 00:20 [############################################] 100%
 edk2-ovmf-202102-1-any                              4.5 MiB  2.26 MiB/s 00:02 [############################################] 100%
 usbredir-0.9.0-1-x86_64                            47.2 KiB   199 KiB/s 00:00 [############################################] 100%
 libslirp-4.5.0-1-x86_64                            60.2 KiB  19.6 MiB/s 00:00 [############################################] 100%
 dtc-1.6.0-3-x86_64                                136.4 KiB   561 KiB/s 00:00 [############################################] 100%
 openbsd-netcat-1.217_2-1-x86_64                    24.1 KiB  0.00   B/s 00:00 [############################################] 100%
(15/15) キーリングのキーを確認                                                 [############################################] 100%
(15/15) パッケージの整合性をチェック                                           [############################################] 100%
(15/15) パッケージファイルのロード                                             [############################################] 100%
(15/15) ファイルの衝突をチェック                                               [############################################] 100%
(15/15) 空き容量を確認                                                         [############################################] 100%
:: パッケージの変更を処理しています...
( 1/15) インストール virglrenderer                                             [############################################] 100%
( 2/15) インストール libspeechd                                                [############################################] 100%
( 3/15) インストール brltty                                                    [############################################] 100%
brltty-genkey: key generated
Please add your user to the brlapi group.
brltty の提案パッケージ
    at-spi2-core: X11/GNOME Apps accessibility [インストール済み]
    atk: ATK bridge for X11/GNOME accessibility [インストール済み]
    espeak-ng: espeak-ng driver
    java-runtime: Java support [インストール済み]
    libxaw: X11 support
    libxt: X11 support [インストール済み]
    libx11: for xbrlapi [インストール済み]
    libxfixes: for xbrlapi [インストール済み]
    libxtst: for xbrlapi [インストール済み]
    ocaml: OCaml support [インストール済み]
    python: Python support [インストール済み]
    speech-dispatcher: speech-dispatcher driver
( 4/15) インストール seabios                                                   [############################################] 100%
( 5/15) インストール numactl                                                   [############################################] 100%
( 6/15) インストール vde2                                                      [############################################] 100%
vde config files should be placed in /etc/vde, sample files are provided.
iptables and dhcpd sample files have been installed to '/usr/share/vde2'.
Merge those examples, if needed to the according config files.
( 7/15) インストール spice                                                     [############################################] 100%
( 8/15) インストール libcacard                                                 [############################################] 100%
( 9/15) インストール usbredir                                                  [############################################] 100%
(10/15) インストール libslirp                                                  [############################################] 100%
(11/15) インストール dtc                                                       [############################################] 100%
(12/15) インストール qemu                                                      [############################################] 100%
qemu の提案パッケージ
    qemu-arch-extra: extra architectures support [保留]
    samba: SMB/CIFS server support [インストール済み]
    qemu-block-iscsi: iSCSI block support
    qemu-block-rbd: RBD block support
    qemu-block-gluster: glusterfs block support
(13/15) インストール qemu-arch-extra                                           [############################################] 100%
(14/15) インストール edk2-ovmf                                                 [############################################] 100%
(15/15) インストール openbsd-netcat                                            [############################################] 100%
:: トランザクション後のフックを実行...
(1/7) Creating system user accounts...
Creating group brlapi with gid 964.
Creating group brltty with gid 963.
Creating user brltty (Braille Device Daemon) with uid 963 and gid 963.
(2/7) Reloading system manager configuration...
(3/7) Creating temporary files...
(4/7) Reloading device manager configuration...
(5/7) Arming ConditionNeedsUpdate...
(6/7) Updating icon theme caches...
(7/7) Updating the desktop file MIME type cache...

$ sudo pacman -S virt-manager virt-viewer
依存関係を解決しています...
衝突するパッケージがないか確認しています...

パッケージ (13) gtk-vnc-1.2.0-1  libgovirt-0.3.8-1  libosinfo-1.9.0-1  libvirt-1:7.3.0-1  libvirt-glib-4.0.0-1
                libvirt-python-1:7.3.0-1  osinfo-db-20210426-1  phodav-2.5-1  spice-gtk-0.39-3  virt-install-3.2.0-1
                yajl-2.1.0-4  virt-manager-3.2.0-1  virt-viewer-9.0-1

合計ダウンロード容量:  11.08 MiB
合計インストール容量:  66.06 MiB

:: インストールを行いますか? [Y/n] 
:: パッケージを取得します...
 yajl-2.1.0-4-x86_64                                45.8 KiB   170 KiB/s 00:00 [############################################] 100%
 gtk-vnc-1.2.0-1-x86_64                            152.5 KiB   305 KiB/s 00:01 [############################################] 100%
 osinfo-db-20210426-1-any                          176.2 KiB   339 KiB/s 00:01 [############################################] 100%
 libosinfo-1.9.0-1-x86_64                          273.9 KiB   369 KiB/s 00:01 [############################################] 100%
 libvirt-1:7.3.0-1-x86_64                            7.6 MiB  3.62 MiB/s 00:02 [############################################] 100%
 libvirt-python-1:7.3.0-1-x86_64                   184.9 KiB   366 KiB/s 00:01 [############################################] 100%
 virt-install-3.2.0-1-any                          997.1 KiB  2.95 MiB/s 00:00 [############################################] 100%
 libvirt-glib-4.0.0-1-x86_64                       303.9 KiB   393 KiB/s 00:01 [############################################] 100%
 phodav-2.5-1-x86_64                                63.2 KiB  15.4 MiB/s 00:00 [############################################] 100%
 spice-gtk-0.39-3-x86_64                           510.4 KiB   987 KiB/s 00:01 [############################################] 100%
 virt-manager-3.2.0-1-any                          502.5 KiB   638 KiB/s 00:01 [############################################] 100%
 libgovirt-0.3.8-1-x86_64                           80.5 KiB  19.6 MiB/s 00:00 [############################################] 100%
 virt-viewer-9.0-1-x86_64                          268.0 KiB  9.69 MiB/s 00:00 [############################################] 100%
(13/13) キーリングのキーを確認                                                 [############################################] 100%
(13/13) パッケージの整合性をチェック                                           [############################################] 100%
(13/13) パッケージファイルのロード                                             [############################################] 100%
(13/13) ファイルの衝突をチェック                                               [############################################] 100%
(13/13) 空き容量を確認                                                         [############################################] 100%
:: パッケージの変更を処理しています...
( 1/13) インストール osinfo-db                                                 [############################################] 100%
( 2/13) インストール libosinfo                                                 [############################################] 100%
( 3/13) インストール yajl                                                      [############################################] 100%
( 4/13) インストール libvirt                                                   [############################################] 100%
libvirt の提案パッケージ
    libvirt-storage-gluster: Gluster storage backend
    libvirt-storage-iscsi-direct: iSCSI-direct storage backend
    libvirt-storage-rbd: RBD storage backend
    gettext: required for libvirt-guests.service [インストール済み]
    openbsd-netcat: for remote management over ssh [インストール済み]
    dmidecode: DMI system info support [インストール済み]
    dnsmasq: required for default NAT/DHCP for guests [インストール済み]
    radvd: IPv6 RAD support
    ebtables: required for default NAT networking
    qemu: QEMU/KVM support [インストール済み]
    lvm2: Logical Volume Manager support [インストール済み]
    open-iscsi: iSCSI support via iscsiadm
( 5/13) インストール libvirt-python                                            [############################################] 100%
( 6/13) インストール virt-install                                              [############################################] 100%
virt-install の提案パッケージ
    x11-ssh-askpass: provide password for remote machines connected via ssh tunnel
( 7/13) インストール gtk-vnc                                                   [############################################] 100%
( 8/13) インストール libvirt-glib                                              [############################################] 100%
libvirt-glib の提案パッケージ
    python: support for python [インストール済み]
( 9/13) インストール phodav                                                    [############################################] 100%
(10/13) インストール spice-gtk                                                 [############################################] 100%
(11/13) インストール virt-manager                                              [############################################] 100%
virt-manager の提案パッケージ
    x11-ssh-askpass: provide password for remote machines connected via ssh tunnel
(12/13) インストール libgovirt                                                 [############################################] 100%
(13/13) インストール virt-viewer                                               [############################################] 100%
:: トランザクション後のフックを実行...
( 1/10) Creating system user accounts...
Creating group libvirt with gid 962.
( 2/10) Reloading system manager configuration...
( 3/10) Applying kernel sysctl settings...
Not setting net/ipv4/conf/all/rp_filter (explicit setting exists).
Not setting net/ipv4/conf/default/rp_filter (explicit setting exists).
Not setting net/ipv4/conf/all/accept_source_route (explicit setting exists).
Not setting net/ipv4/conf/default/accept_source_route (explicit setting exists).
Not setting net/ipv4/conf/all/promote_secondaries (explicit setting exists).
Not setting net/ipv4/conf/default/promote_secondaries (explicit setting exists).
( 4/10) Creating temporary files...
( 5/10) Reloading device manager configuration...
( 6/10) Arming ConditionNeedsUpdate...
( 7/10) Compiling GSettings XML schema files...
( 8/10) Updating icon theme caches...
( 9/10) Updating the desktop file MIME type cache...
(10/10) Updating the MIME type database...

$ sudo systemctl enable libvirtd.service
Created symlink /etc/systemd/system/multi-user.target.wants/libvirtd.service → /usr/lib/systemd/system/libvirtd.service.
Created symlink /etc/systemd/system/sockets.target.wants/virtlockd.socket → /usr/lib/systemd/system/virtlockd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/virtlogd.socket → /usr/lib/systemd/system/virtlogd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd.socket → /usr/lib/systemd/system/libvirtd.socket.
Created symlink /etc/systemd/system/sockets.target.wants/libvirtd-ro.socket → /usr/lib/systemd/system/libvirtd-ro.socket.

$ sudo systemctl start libvirtd.service
$ sudo systemctl status libvirtd.service
● libvirtd.service - Virtualization daemon
     Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2021-06-12 16:46:30 JST; 21s ago
TriggeredBy: ● libvirtd-ro.socket
             ● libvirtd.socket
             ● libvirtd-admin.socket
       Docs: man:libvirtd(8)
             https://libvirt.org
   Main PID: 5925 (libvirtd)
      Tasks: 19 (limit: 32768)
     Memory: 14.0M
     CGroup: /system.slice/libvirtd.service
             └─5925 /usr/bin/libvirtd --timeout 120

 6月 12 16:46:30 pc17 systemd[1]: Started Virtualization daemon.
 6月 12 16:46:30 pc17 libvirtd[5925]: libvirt version: 7.3.0
 6月 12 16:46:30 pc17 libvirtd[5925]: hostname: pc17
 6月 12 16:46:30 pc17 libvirtd[5925]: ebtables not available, firewall backend will not function: そのようなファイルやディレクト...
 6月 12 16:46:30 pc17 libvirtd[5925]: 内部エラー: Failed to initialize a valid firewall backend
...skipping...
● libvirtd.service - Virtualization daemon
     Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: disabled)
     Active: active (running) since Sat 2021-06-12 16:46:30 JST; 21s ago
TriggeredBy: ● libvirtd-ro.socket
             ● libvirtd.socket
             ● libvirtd-admin.socket
       Docs: man:libvirtd(8)
             https://libvirt.org
   Main PID: 5925 (libvirtd)
      Tasks: 19 (limit: 32768)
     Memory: 14.0M
     CGroup: /system.slice/libvirtd.service
             └─5925 /usr/bin/libvirtd --timeout 120

 6月 12 16:46:30 pc17 systemd[1]: Started Virtualization daemon.
 6月 12 16:46:30 pc17 libvirtd[5925]: libvirt version: 7.3.0
 6月 12 16:46:30 pc17 libvirtd[5925]: hostname: pc17
 6月 12 16:46:30 pc17 libvirtd[5925]: ebtables not available, firewall backend will not function: そのようなファイルやディレクト >
 6月 12 16:46:30 pc17 libvirtd[5925]: 内部エラー: Failed to initialize a valid firewall backend

libvirtd.serviceのステータス出力にエラーがあるが、下記ページによると問題無い模様。

Install KVM on Arch Linux より
If you check for the service status with sudo systemctl status libvirtd.service. There probably will be the following error:

May 08 16:34:18 transang libvirtd[3528]: /usr/bin/ebtables not available, firewall backend will not function: No such file or directory
May 08 16:34:18 transang libvirtd[3528]: internal error: Failed to initialize a valid firewall backend

You should not worry because ebtables is optional. If you want to suppress this warning, install the package with sudo pacman -S ebtables. However, because it conflicts with iptables-nft in the iptables package, it will ask to remove the iptables package.

/etc/libvirt/libvirtd.conf内のコメント行となっている次の2行のコメントを外し有効化する。

unix_sock_group = "libvirt"
unix_sock_rw_perms = "0770"

一般ユーザーのlibvirtグループへの登録

$ sudo usermod -a -G libvirt ${USER}
$ sudo reboot