[Windows10] Virtualboxの仮想マシン(CentOS7.6)にGuest AdditionsをインストールしてWindowsフォルダを共有

##環境
- Virtualbox : 6.0.4 r128413
- ホストPC : Windows10
- 仮想マシン : CentOS7.6 (Minimal ISO)

#■Guest Additonsのインストール
##1. 事前にしておくこと
- kernel-devel､ kernel-headers をインストール (kernelとバージョンを合わせる)
- bzip2､ gcc をインストール

次のコマンドで一括でインストールできます｡
`# yum -y install kernel kernel-headers kernel-devel bzip2 gcc`

インストールが完了したら再起動します｡
`# reboot`

##2. Guest Addition CD イメージの挿入とマウント
メニューの｢デバイス｣から｢Guest Addition CD イメージの挿入...｣を選択します｡
![1.png](https://qiita-image-store.s3.amazonaws.com/0/226021/7c1d52a2-67f1-1abb-69dd-d78fdbda9bf6.png)

マウント用ディレクトリを作成してCD-ROMをマウントする

```
# mkdir /mnt/cdrom
# mount /dev/sr0 /mnt/cdrom
```

##3. Guest Additionのインストール

インストーラを実行する

```
# /mnt/cdrom/VBoxLinuxAdditions.run
```

##4. 共有フォルダを設定

![image.png](https://qiita-image-store.s3.amazonaws.com/0/226021/cabc9b0d-fab1-c7f8-d484-8dd77f41ee06.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/226021/a37b0d25-8204-f271-46a3-8ea48a968e80.png)
以上のように設定｡ ｢永続化する｣にチェックすると､次回の起動後も自動的にマウントされます｡

マウントされる場所は､/media の下になるので､認識されているか ls で確認してみます｡

```
# ls -F /media
sf_vboxshare/
```
マウント名は sf_[フォルダ名] となります｡

以上で完了ですが､kernelのバージョンやgcc などに不備があると､
ログにエラーが出たり､vboxのサービスがfailedになってたりして繋がらない事があります｡


##■参考までに､エラーとその対処を載せておきます｡

### bzipが見つからないエラー

```
# /mnt/cdrom/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 6.0.4 Guest Additions for Linux........
bzip2 not found.  Please install: bzip2 tar; and try again.
```
→ bzip2が必要なのでインストール
`# yum -y install bzip2`

### ｢Kernel headers not found｣ のエラー

```
# /mnt/cdrom/VBoxLinuxAdditions.run
Verifying archive integrity... All good.
Uncompressing VirtualBox 6.0.4 Guest Additions for Linux........
VirtualBox Guest Additions installer
Copying additional installer modules ...
Installing additional modules ...
VirtualBox Guest Additions: Building the VirtualBox Guest Additions kernel
modules.  This may take a while.
VirtualBox Guest Additions: To build modules for other installed kernels, run
VirtualBox Guest Additions:   /sbin/rcvboxadd quicksetup <version>
VirtualBox Guest Additions: Kernel headers not found for target kernel
3.10.0-957.el7.x86_64. Please install them and execute
  /sbin/rcvboxadd setup
VirtualBox Guest Additions: Starting.
```
→ kernel関連をバージョンを指定してインストール
rebootしてから､再度 setupする｡

```
# yum -y install kernel-3.10.0-957.10.1.el7
# yum -y install kernel-headers-3.10.0-957.10.1.el7
# yum -y install kernel-devel-3.10.0-957.10.1.el7
# reboot
# /sbin/rcvboxadd setup
```

##■接続できない時の原因の調べ方

- ログを見る
- 必要な Packageを確認
- service が起動しているかの確認

### ログを見る
/var/log の下にエラー時のログが出力されます｡
`cat /var/log/vboxadd-install.log`
`cat /var/log/vboxadd-setup.log`

### 必要な Packageを確認｡

`# yum --showduplicate list kernel kernel-headers kernel-devel gcc bzip2`

```
# yum --showduplicate list kernel kernel-headers kernel-devel gcc bzip2
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp
 * extras: ftp.nara.wide.ad.jp
 * updates: ftp.nara.wide.ad.jp
Installed Packages
bzip2.x86_64                        1.0.6-13.el7                       @base
gcc.x86_64                          4.8.5-36.el7_6.1                   @updates
kernel.x86_64                       3.10.0-957.el7                     @anaconda
kernel.x86_64                       3.10.0-957.10.1.el7                @updates
kernel-devel.x86_64                 3.10.0-957.10.1.el7                @updates
kernel-headers.x86_64               3.10.0-957.10.1.el7                @updates

Available Packages
bzip2.x86_64                        1.0.6-13.el7                       base
gcc.x86_64                          4.8.5-36.el7                       base
gcc.x86_64                          4.8.5-36.el7_6.1                   updates
kernel.x86_64                       3.10.0-957.el7                     base
kernel.x86_64                       3.10.0-957.1.3.el7                 updates
kernel.x86_64                       3.10.0-957.5.1.el7                 updates
kernel.x86_64                       3.10.0-957.10.1.el7                updates
kernel-devel.x86_64                 3.10.0-957.el7                     base
kernel-devel.x86_64                 3.10.0-957.1.3.el7                 updates
kernel-devel.x86_64                 3.10.0-957.5.1.el7                 updates
kernel-devel.x86_64                 3.10.0-957.10.1.el7                updates
kernel-headers.x86_64               3.10.0-957.el7                     base
kernel-headers.x86_64               3.10.0-957.1.3.el7                 updates
kernel-headers.x86_64               3.10.0-957.5.1.el7                 updates
kernel-headers.x86_64               3.10.0-957.10.1.el7                updates
```
● Installed Packages 以下がインストールされているパッケージ
　kernel類のバージョンを確認する｡ (ここでは3.10.0-957.10.1.el7となっています)
● Available Packages 以下が利用可能なパッケージとバージョン

### service が起動しているかの確認
`# systemctl list-unit-files --type=service | grep vbox`

```
# systemctl list-unit-files --type=service | grep vbox
vboxadd-service.service                       enabled
vboxadd.service                               enabled
```
gccやkernelのバージョン違いなどの何かしらの原因で service が failedになっている場合があります｡