これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。
HTML ファイル生成日時: 2024/11/24 14:07:03.493 (台灣標準時)
Debian で KVM を利用するためには、 https://wiki.debian.org/KVM を 読めばよいようでござる。
まず、必要なソフトウェアをインストールする必要があるでござる。 qemu と libvirt をインストールするでござる。
# apt install qemu-system % apt install libvirt-daemon-system
virsh コマンドを root にならずに使うためには、自分が使っているユーザー をグループ libvirt に所属させる必要があるでござる。
# vi /etc/group
自分が用意した仮想機械の一覧は、以下のコマンドで表示できるでござる。
% virsh list --all Id Name State --------------------
システム全体の仮想機械の一覧は、以下のコマンドで表示できるでござる。
% virsh --connect qemu:///system list --all Id Name State -------------------------- 1 netbsd01 running
環境変数 LIBVIRT_DEFAULT_URI を設定しておけば、以下のコマンドでシステ ム上の全ての仮想機械の一覧を得ることができるでござる。
% setenv LIBVIRT_DEFAULT_URI qemu:///system % printenv LIBVIRT_DEFAULT_URI qemu:///system % virsh list --all Id Name State -------------------------- 1 netbsd01 running
実ハードウェア上で動いている OS と仮想機械上で動いている OS とで通信す るために、また、仮想機械上で動いている OS が外界と通信するために、ブリッ ジインターフェースを作成しておくと便利でござる。
libvirt を使うと、簡便にブリッジインターフェースを作成することができる でござる。あらかじめ、 default という設定ファイルがあるのでござるが、 仮想機械に割り当てる IP アドレスが 192.168.122.0/24 になっているので、 それ以外のネットワークを使いたい場合には、設定ファイルを別途作成する必 要があるでござる。 /usr/share/libvirt/networks/default.xml をコピーし て、編集すればよいでござる。
# mkdir -p /vm/libvirt # cd /vm/libvirt # cp -pi /usr/share/libvirt/networks/default.xml vmbridge.xml # ls -lF total 4 -rw-r--r-- 1 root root 228 Jan 15 2021 vmbridge.xml # vi vmbridge.xml # cat vmbridge.xml <network> <name>vmbridge</name> <bridge name='vmbr0'/> <forward/> <ip address='10.20.30.1' netmask='255.255.255.0'> <dhcp> <range start='10.20.30.100' end='10.20.30.199'/> </dhcp> </ip> </network> # diff /usr/share/libvirt/networks/default.xml vmbridge.xml 2,3c2,3 < <name>default</name> < <bridge name='virbr0'/> --- > <name>vmbridge</name> > <bridge name='vmbr0'/> 5c5 < <ip address='192.168.122.1' netmask='255.255.255.0'> --- > <ip address='10.20.30.1' netmask='255.255.255.0'> 7c7 < <range start='192.168.122.2' end='192.168.122.254'/> --- > <range start='10.20.30.100' end='10.20.30.199'/>
設定ファイルができたら、 virsh コマンドを使って、実際にネットワークを 作成するでござる。
# virsh net-define /vm/libvirt/vmbridge.xml Network vmbridge defined from /vm/libvirt/vmbridge.xml # virsh net-list --all Name State Autostart Persistent ----------------------------------------------- vmbridge inactive no yes # virsh net-start vmbridge Network vmbridge started # virsh net-list --all Name State Autostart Persistent --------------------------------------------- vmbridge active no yes
autostart を有効にするためには、以下のようにすればよいでござる。
# virsh net-autostart vmbridge Network vmbridge marked as autostarted # virsh net-list --all Name State Autostart Persistent --------------------------------------------- vmbridge active yes yes
新たな仮想機械を作成するための準備として、 OS インストール用のイメージ をダウンロードしておくでござる。ここでは amd64 用の NetBSD-10.0 beta の ISO イメージをダウンロードするでござる。
# mkdir -p /vm/netbsd02 # cd /vm/netbsd02 # wget http://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-10/202212311640Z/images/NetBSD-10.0_BETA-amd64.iso --2023-01-02 16:42:02-- http://nycdn.netbsd.org/pub/NetBSD-daily/netbsd-10/202212311640Z/images/NetBSD-10.0_BETA-amd64.iso Resolving nycdn.netbsd.org (nycdn.netbsd.org)... 151.101.1.6, 151.101.65.6, 151.101.129.6, ... Connecting to nycdn.netbsd.org (nycdn.netbsd.org)|151.101.1.6|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 589686784 (562M) [application/octet-stream] Saving to: ‘NetBSD-10.0_BETA-amd64.iso’ NetBSD-10.0_BETA-am 100%[===================>] 562.37M 2.53MB/s in 5m 52s 2023-01-02 16:47:55 (1.60 MB/s) - ‘NetBSD-10.0_BETA-amd64.iso’ saved [589686784/589686784] # ls -lF total 575872 -rw-r--r-- 1 root root 589686784 Jan 1 04:41 NetBSD-10.0_BETA-amd64.iso # file NetBSD-10.0_BETA-amd64.iso NetBSD-10.0_BETA-amd64.iso: ISO 9660 CD-ROM filesystem data 'NETBSD_100_BETA' (bootable)
新たな仮想機械を作成するためには、 virt-install というコマンドを使えば よいでござる。インストール用のシェルスクリプトを用意しておくと便利でご ざる。
# cat /vm/netbsd02/kvm_install_netbsd02.sh virt-install --virt-type kvm --name netbsd02 \ --cdrom /vm/netbsd02/NetBSD-10.0_BETA-amd64.iso \ --os-variant netbsd9.0 \ --disk size=64,path=/vm/netbsd02/netbsd02.img \ --memory 4096 \ --vcpus 6 \ --network bridge=vmbr0
上の例だと、 --os-variant には netbsd9.0 を使っているのでござるが、これ は、 netbsd10.0 という選択肢がないためでござる。 --os-variant に使える OS 名の一覧は、以下のコマンドで得ることができるでござる。
% osinfo-query os
作成したシェルスクリプトを実行して、 OS のインストールを行うでござる。 virt-install コマンドを実行すると、以下のようなメッセージが表示される でござる。
# csh /vm/netbsd02/kvm_install_netbsd02.sh WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer. WARNING No console to launch for the guest, defaulting to --wait -1 Starting install... Allocating 'netbsd02.img' | 64 GB 00:01 Domain is still running. Installation may be in progress. Waiting for the installation to complete.
別の端末エミュレーターで、 virt-viewer コマンドを実行すれば、 VNC クラ イアントが起動して、そこで、 OS のインストール作業が行えるようになるで ござる。
% virt-viewer
|
---|
通常通りに、 OS のインストールを行うことができるので、 OS をインストー ルし、インストールが完了したら、 shutdown -p now などとすればよいでご ざる。すると、 virt-install を実行した端末エミュレーターで、以下のメッ セージが表示されるでござる。
# csh kvm_install_netbsd02.sh WARNING Graphics requested but DISPLAY is not set. Not running virt-viewer. WARNING No console to launch for the guest, defaulting to --wait -1 Starting install... Allocating 'netbsd02.img' | 64 GB 00:01 Domain is still running. Installation may be in progress. Waiting for the installation to complete. Domain has shutdown. Continuing. Domain creation completed. Restarting guest.
ここで、仮想機械の一覧を見てみるでござる。
# virsh list --all Id Name State --------------------------- 2 netbsd02 running - netbsd01 shut off
netbsd02 という仮想機械ができているでござる。仮想機械 netbsd02 が再起 動して、動いているので、 virt-viewer を使えば、ログインすることができ るでござる。或いは、 sshd が動いていて、 root 以外のアカウントが作成済 みであれば、 ssh を使ってログインすればよいでござる。ログインして、必 要な設定を行えばよいでござる。
仮想機械 netbsd02 上で、 shutdown -p now などとすれば、仮想機械は終了 するでござる。以下のようにすれば状態を確認することができるでござる。
# virsh list --all Id Name State --------------------------- - netbsd01 shut off - netbsd02 shut off
仮想機械を起動させるためには、以下のコマンドを実行すればよいでござる。
# virsh start netbsd02 Domain 'netbsd02' started # virsh list --all Id Name State --------------------------- 3 netbsd02 running - netbsd01 shut off
実ハードウェア側で動いている OS から、仮想機械を止めるためには、以下の ようにすればよいでござる。
# virsh shutdown netbsd02 Domain 'netbsd02' is being shutdown # virsh list --all Id Name State --------------------------- - netbsd01 shut off - netbsd02 shut off
仮想機械に割り当て可能な最大の CPU 数を変更するには以下のようにすれば よいでござる。これは、仮想機械が動いていない状況で実行する必要があるで ござる。
# virsh vcpucount netbsd02 maximum config 6 current config 6 # virsh setvcpus netbsd02 4 --maximum --config # virsh vcpucount netbsd02 maximum config 4 current config 4 # virsh setvcpus netbsd02 6 --maximum --config # virsh vcpucount netbsd02 maximum config 6 current config 4
動作中の仮想機械に割り当てている CPU の数を変更するには、以下のように すればよいでござる。
# virsh start netbsd02 Domain 'netbsd02' started # virsh list --all Id Name State --------------------------- 4 netbsd02 running - netbsd01 shut off # virsh vcpucount netbsd02 maximum config 6 maximum live 6 current config 4 current live 4 # virsh setvcpus netbsd02 6 # virsh vcpucount netbsd02 maximum config 6 maximum live 6 current config 4 current live 6
次回の起動時に割り当てたい CPU 数を変更するには、以下のようにすればよ いでござる。
# virsh setvcpus netbsd02 6 --config # virsh vcpucount netbsd02 maximum config 6 maximum live 6 current config 6 current live 6
仮想機械に割り当て可能な最大のメモリーを変更するには、以下のようにすれ ばよいでござる。
# virsh dominfo netbsd02 Id: - Name: netbsd02 UUID: b5d6b13b-a5b8-43de-964e-2491d4ae118f OS Type: hvm State: shut off CPU(s): 6 Max memory: 4194304 KiB Used memory: 4194304 KiB Persistent: yes Autostart: disable Managed save: no Security model: apparmor Security DOI: 0 # virsh setmaxmem netbsd02 8G # virsh dominfo netbsd02 Id: - Name: netbsd02 UUID: b5d6b13b-a5b8-43de-964e-2491d4ae118f OS Type: hvm State: shut off CPU(s): 6 Max memory: 8388608 KiB Used memory: 4194304 KiB Persistent: yes Autostart: disable Managed save: no Security model: apparmor Security DOI: 0
次回の起動時のメモリー割り当て量を変更するには、以下のようにすればよい でござる。
# virsh setmem netbsd02 2G --config # virsh dominfo netbsd02 Id: - Name: netbsd02 UUID: b5d6b13b-a5b8-43de-964e-2491d4ae118f OS Type: hvm State: shut off CPU(s): 6 Max memory: 8388608 KiB Used memory: 2097152 KiB Persistent: yes Autostart: disable Managed save: no Security model: apparmor Security DOI: 0