Hyper-V上のCentOS 8でKVMを使いたい 〜CLIでの環境構築からVM作成まで〜

# はじめに
CentOSでKVMを構築したいけど、Windowsマシンしか持ってないということでHyper-V上のCentOSでKVMを構築したいと思います。
 - この記事は2020/6/26日現在のバージョンを掲載しています。osのイメージファイルなどは各自で置き換えてください

## この記事のメイン（だと思っているところ）
### 仮想マシンのCPU仮想化を許可するコマンド
```powershell
Set-VMProcessor -VMName <VM Name> -ExposeVirtualizationExtensions $true
```
# スペック
## ホスト
 CPU : Xeon E5-2660 8core/16thread
 RAM : DDR3 32GB
 ROM : HDD 500GB + 4TB
 OS  : Windows10 PRO

## ゲスト1
 name : CentOS 8 KVM
 CPU  : 8core
 RAM  : 8192MB
 ROM  : 512GB
 OS   : CentOS 8

## ゲスト2
name : CentOS 8 KVM test
CPU　 : 1core
RAM  : 1024MB
ROM  : 8GB
OS   : CentOS 8

# ホスト側 : イメージファイルの取得
<a href=https://ftp.riken.jp/Linux/centos/8/isos/x86_64/>ここ</a>からCentOS-8.2.2004-x86_64-minimal.isoをダウンロードします。

#ホスト側 : 仮想マシンの作成
今回はこんな感じでゲスト1を作成します。
![Hyper-V_CentOS8_KVM.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647752/814df87a-5c3c-62c0-87d7-ff98e8326534.jpeg)

# ホスト側 : 仮想マシン上のVT-Xの有効化
windowsのpowershellを管理者権限で起動して以下のコマンドを実行します。

```powershell
Set-VMProcessor -VMName "CentOS 8 KVM" -ExposeVirtualizationExtensions $true
```


# ゲスト1側 : CentOS 8のインストール
ゲスト1を起動して「Install CentOS 8」を選択します。少し経つと下の画面が出てきます。今回は英語のままインストールしていくので、このまま「Continue」を押します。
![CentOS8_install_1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647752/3c6ebf1e-c8a5-ebde-9a13-b984af30357b.jpeg)

- Keyboard
 - Japanese
- Time & Date
 - Asia/Tokyo
- Software Selection
  - Minimal Install
- Network & Hostname
  - ネットワークに接続
  - ホスト名 : kvm.centos8
上を設定(下の図のような状態)にできたら、「Begin Installition」を押します。

![CentOS8_install_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647752/1504116b-218c-aefa-e131-9ec08f325220.jpeg)
Root Passwordをrootに設定します。
![CentOS8_install_3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647752/f20eac97-5e58-201d-7373-1d86efd49bd9.jpeg)
しばらく待つとインストールが終わるので、下の画面が出てきたら、「Reboot」を押します。
![CentOS8_install_4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647752/834d2170-cca7-7207-8faf-1433746fbeea.jpeg)
再起動したのを確認出来たら、ゲスト1の電源を落として、以下の図のようにメディアをなしにしてください。
![Hyper-V_CentOS8_KVM_2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/647752/a2af3adf-cb6f-8354-2bde-e150599bc9d8.jpeg)
これで、電源を付けたらCentOS 8を使うことができます。
電源をつけて、
ユーザ名 : root
パスワード : root
でログインします。

# ゲスト1側 : パッケージのアップデートとKVMのインストール
以下のコマンドを入力してインストールされているパッケージをアップデート、KVMの動作に必要なパッケージをインストールします。

```bash
#dnf update -y
#dnf install -y wget 
#dnf module install -y virt
#dnf install -y virt-install
```


# ゲスト1側 : サービスの起動と自動起動
```bash
#systemctl start libvirtd
#systemctl enable libvirtd
```

# ゲスト1側 : イメージファイルの取得
```bash
#mkdir /lib/isos
#wget https://ftp.riken.jp/Linux/centos/8/isos/x86_64/CentOS-8.2.2004-x86_64-minimal.iso
#mv CentOS-8.2.2004-x86_64-minimal.iso /lib/isos/
```

# ゲスト1側 : 仮想マシン(ゲスト2)の作成
```bash
#virt-install \    
--name test \
--hvm \
--arch x86_64 \
--os-type linux \
--os-variant centos8 \
--vcpus 1 \
--ram 1024 \
--disk path=/var/lib/libvirt/images/test.img,format=qcow2,size=8 \
--network bridge=virbr0 \
--graphics none \
--location /lib/isos/CentOS-8.2.2004-x86_64-minimal.iso \
--extra-args="console=tty0 console=ttyS0,115200n8"
```

# ゲスト2側 : CentOS 8のインストール
好みで設定してください。設定し終わったらbを入力し、インストールします。

```
================================================================================
================================================================================
Installation

1) [x] Language settings                 2) [x] Time settings
       (English (United States))                (America/New_York timezone)
3) [x] Installation source               4) [x] Software selection
       (Local media)                            (Minimal Install)
5) [x] Installation Destination          6) [x] Kdump
       (Automatic partitioning                  (Kdump is enabled)
       selected)
7) [ ] Network configuration             8) [x] Root password
       (Not connected)                          (Password is set.)
9) [ ] User creation
       (No user will be created)

Please make a selection from the above ['b' to begin installation, 'q' to quit,
'r' to refresh]:
[anaconda]1:main* 2:shell  3:log  4:storage-log >Switch tab: Alt+Tab | Help: F1        
```


# KVMの基本コマンド

| コマンド | 動作 |
| ------- | --- |
|virt-install | 仮想マシンを作詞する |
| virsh list | 起動済みの仮想マシンを表示する |
| virsh list --all | 仮想マシンの一覧と状態を表示 |
| virsh start <仮想マシン名> | 仮想マシンの起動 |
| virsh console <仮想マシン名> | 仮想マシンにコンソール接続 終了はctrl + } |
| virsh shutdown <仮想マシン名> | 仮想マシンのシャットダウン |
| virsh destroy <仮想マシン名> | 仮想マシンの強制終了 |

# おわりに
とりあえず動作に必要な環境は構築できなした。誤字や動作しないなどがあれば指摘していただけると嬉しいです。