====== インストール方法 ======
- 必要なパッケージをインストールする。\\ $ sudo apt install qemu-kvm virt-manager gir1.2-spiceclientgtk-3.0 spice-vdagent libvirt0 libvirt-bin firewalld ebtables
* ''spice-vdagent'' は、ホストとゲストのクリップボードを共有するために必要 ([[https://wiki.archlinux.jp/index.php/QEMU#.E3.82.B0.E3.83.A9.E3.83.95.E3.82.A3.E3.83.83.E3.82.AF | QEMU - ArchWiki]])。
* ''gir1.2-spiceclientgtk-3.0'' は 16.04 とパッケージ名が微妙に違うので注意。
* 18.04 から、''firewalld''、''ebtables'' が必要になったらしい。これらのパッケージがないと、ゲスト OS からネットワークに接続できず virbr0 ができず、virt-manager 上では、''NAT (停止)'' 状態になる。
* [[https://www.systutorials.com/241665/cannot-start-vm-with-error-no-network-with-matching-name-default/ | Cannot start VM with error "no network with matching name 'default'" - SysTutorials]]
* 余談だが、上記とは別に 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
* [[https://qiita.com/T_Shinaji/items/b3ba400feb3c6adebd27 | firewalld初心者のメモ - Qiita]]
- 有効なサービスを確認する。\\ $ firewall-cmd --list-services
* samba が入っていないことを確認
- samba を追加する。\\ $ firewall-cmd --add-service=samba
$ firewall-cmd --permanent --add-service=samba
* [[http://d.hatena.ne.jp/superstring04/20130814/1376512931 | Fedoraの新しいファイアウォールで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
* 参考サイト:
* [[https://superuser.com/questions/1063240/libvirt-failed-to-initialize-a-valid-firewall-backend | networking - libvirt: "Failed to initialize a valid firewall backend" - Super User]]
* [[https://wiki.libvirt.org/page/Networking | Networking - Libvirt Wiki]]
====== その他 ======
* dnsmasq がインストールされていれば、virtbr0 を介してネットワークを利用できるので、firewalld をアンインストールしても問題ない。
* 参考サイト: [[https://gihyo.jp/admin/serial/01/ibm_kvm/0003 | 第3回 KVMのネットワーク構成:KVMで始めるプライベート・クラウドへの第一歩|gihyo.jp … 技術評論社]]