インストール方法
- 必要なパッケージをインストールする。
$ sudo apt install qemu-kvm virt-manager gir1.2-spiceclientgtk-3.0 spice-vdagent libvirt0 libvirt-bin firewalld ebtables
spice-vdagent
は、ホストとゲストのクリップボードを共有するために必要 ( QEMU - ArchWiki)。gir1.2-spiceclientgtk-3.0
は 16.04 とパッケージ名が微妙に違うので注意。18.04 から、* Cannot start VM with error "no network with matching name 'default'" - SysTutorialsfirewalld
、ebtables
が必要になったらしい。これらのパッケージがないと、ゲスト OS からネットワークに接続できず virbr0 ができず、virt-manager 上では、NAT (停止)
状態になる。- 余談だが、上記とは別に virbr0 が何らかの原因で生成されないときに手動で作成する方法は、下の節を参照。
- 自動的に仮想 PC サービスを使えるようにする。
$ sudo systemctl enable libvirtd.service
- サービスを起動する。
$ sudo systemctl start libvirtd.service
- サービスが起動していないと仮想マシンマネージャがうまく起動できない。
- GUI の仮想マシンマネージャを起動する。
$ virt-manager
- GUI の仮想マシンマネージャが起動する。
- `ファイル` → `新しい仮想マシン` をクリックして、設定ウィザードを起動する。
- Step 1
- `既存のディスクイメージをインポート` を選択する。
- Step 2
- 既存のストレージパス:
Windows.img
- OS の種類:
Windows
- バージョン:
Microsoft Windows 10
- Step 3
- メモリー:
2048
- CPU:
2
- Step 4
- 名前:
Windows
- ネットワークの選択:
仮想ネットワーク default: NAT
- ゲスト OS が外部に接続できるようにする。
/etc/sysctl.conf
を編集する。
$ sudoedit /etc/sysctl.conf
# net.ipv4.ip_forward=1
を
net.ipv4.ip_forward=1
に変更する。
- 再起動するか、以下のコマンドを実行する。
$ sudo sysctl -p
- ファイアウォールの設定をして、インターネットへの接続と、ホストとゲストでファイルのやり取りをできるようにする。
- インターネットと接続できるようにする。
$ firewall-cmd --zone=public --add-masquerade --permanent
- 有効なサービスを確認する。
$ firewall-cmd --list-services
- samba が入っていないことを確認
- samba を追加する。
$ firewall-cmd --add-service=samba $ firewall-cmd --permanent --add-service=samba
インストール時にブリッジネットワークが生成されなかった場合の対処
- 症状:
- 以下のコマンドを実行した際に
virbr0
などが見当たらない
$ ip a
- 仮想マシンマネージャ (
virt-manager
) の編集
→接続の詳細
の仮想ネットワーク
タブ内のネットワークの状態が停止
になっている。
- 原因:
firewalld
やebtable
などを同時にインストールしなかった。 - 対策: 仮想マシンマネージャ (
virt-manager
) を一度終了して、以下のコマンドを実行、上記パッケージをインストールした後、有効化する。
$ sudo apt install ebtables dnsmasq firewalld $ sudo systemctl start firewalld $ sudo systemctl enable firewalld $ sudo systemctl restart libvirtd
- 参考サイト:
その他
- dnsmasq がインストールされていれば、virtbr0 を介してネットワークを利用できるので、firewalld をアンインストールしても問題ない。