VagrantのCentOS7のカーネルを更新(yum)

## 概要
Dockerを使いたいので、カーネルのバージョンを3.10から
割と最新のものにアップしたいと試行錯誤した作業をメモしておきます。

## 事前準備
次の準備が完了して作業を開始しましょう。

- [VirtualBox](https://www.virtualbox.org/) のインストール
- [Vagrant](https://www.vagrantup.com/) のインストール

## Kernelを最新版に更新
Dockerを使う予定のため、カーネルを新しいバージョンに上げる。

### 現在のカーネルバージョン確認
下記のコマンドにて、状況を確認する。

```sh:ターミナル(vagrant)
$ uname -r
3.10.0-514.el7.x86_64

$ rpm -qa kernel\* | sort
kernel-3.10.0-514.el7.x86_64
kernel-devel-3.10.0-514.el7.x86_64
kernel-headers-3.10.0-514.26.1.el7.x86_64
kernel-tools-3.10.0-514.el7.x86_64
kernel-tools-libs-3.10.0-514.el7.x86_64
```

### ElRepoリポジトリを追加
ELRepo リポジトリを使って、最新安定板カーネルをインストールするので追加する。

```sh:ターミナル(vagrant)
$ sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
$ sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
```
elrepo-kernelを有効にする。enabled=0になっているのでenabled=1とする

```sh：ターミナル(vagrant)
$ sudo vi /etc/yum.repos.d/elrepo.repo
----
[elrepo-kernel]
name=ELRepo.org Community Enterprise Linux KÂernel Repository - el7
baseurl=http://elrepo.org/linux/kernel/el7/$basearch/
        http://mirrors.coreix.net/elrepo/kernel/el7/$basearch/
        http://jur-linux.org/download/elrepo/kernel/el7/$basearch/
        http://repos.lax-noc.com/elrepo/kernel/el7/$basearch/
        http://mirror.ventraip.net.au/elrepo/kernel/el7/$basearch/
mirrorlist=http://mirrors.elrepo.org/mirrors-elrepo-kernel.el7
enabled=1  ← 0から1に変更
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-elrepo.org
protect=0
```

### kernelと関連ツールを入れ替える
kernel, kernel-devel,kernel-headers,kernel-tools,kernel-tools-libs を入れ替える

```sh:ターミナル(vagrant)
# 現状確認
$ rpm -qa kernel\* | sort
kernel-devel-3.10.0-514.el7.x86_64
kernel-headers-3.10.0-514.26.1.el7.x86_64
kernel-tools-3.10.0-514.el7.x86_64
kernel-tools-libs-3.10.0-514.el7.x86_64

# 既存の削除
$ sudo yum -y remove \
kernel-devel-3.10.0-514.el7.x86_64 \
kernel-headers-3.10.0-514.26.1.el7.x86_64 \
kernel-tools-3.10.0-514.el7.x86_64 \
kernel-tools-libs-3.10.0-514.el7.x86_64

# 入れ直す
$ sudo yum -y update
$ sudo yum -y install kernel-ml.x86_64 \
kernel-ml-devel.x86_64 \
kernel-ml-headers.x86_64 \
kernel-ml-tools.x86_64 \
kernel-ml-tools-libs.x86_64
```

### grub起動設定変更

```sh:ターミナル(vagrant)
$ sudo awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (4.12.0-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux (3.10.0-514.el7.x86_64) 7 (Core)
CentOS Linux (0-rescue-8f08d29fc492488c8709392f7ebed506) 7 (Core)
```
※更新したいKernel 4.12.0が1行目にある

```sh:ターミナル(vagrant)
# 起動Kernel
$ sudo grub2-set-default 0
# 設定反映
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg
# 再起動
$ sudo reboot
```

再起動後にバージョンを確認する

```sh:ターミナル(vagrant)
$ uname -r
4.12.0-1.el7.elrepo.x86_64
```

### 既存の kernel パッケージの削除
不要になった「３.１０.０」を削除する

```sh:ターミナル(vagrant)
$ sudo yum remove kernel
　　　・
　　　・
　　　・
=======================================================================
 Package    アーキテクチャー    バージョン           リポジトリー       容量
=======================================================================
削除中:
 kernel     x86_64           3.10.0-514.el7     @anaconda       148 M
トランザクションの要約
=======================================================================
削除  1 パッケージ
インストール容量: 148 M
上記の処理を行います。よろしいでしょうか？ [y/N] y
```

## 状況確認
```sh:ターミナル(vagrant)
$ rpm -qa kernel\* | sort
kernel-ml-4.12.0-1.el7.elrepo.x86_64
kernel-ml-devel-4.12.0-1.el7.elrepo.x86_64
kernel-ml-headers-4.12.0-1.el7.elrepo.x86_64
kernel-ml-tools-4.12.0-1.el7.elrepo.x86_64
kernel-ml-tools-libs-4.12.0-1.el7.elrepo.x86_64
```

## 結果
カーネルはバージョンアップできたが、GuestAdditionsがエラーで起動しなくなった・・・
Google先生に聞いてみると・・・どうやら4.12.0のカーネルに対応していない見たい・・・

- [FC27 Virtualbox Guest Additions 5.1.22 & kernel 4.12...](http://www.forums.fedoraforum.org/showthread.php?t=314277)

- [Ticket 16725 (guest additions do not build with 4.12 kernel)](https://www.virtualbox.org/ticket/16725)

- [CentOS7をVirtualBoxで](https://motherfuckerblog.wordpress.com/2014/09/06/centos7%E3%82%92virtualbox%E3%81%A7/)

vagrantで使うにはフォルダの同期ができないとちょっと困りものですね・・・
対応するまで待つしかないのかな？

## 参考資料

- カーネルを更新する
    - [CentOS7のKernelを最新版に更新する(yum)](http://soymsk.hatenablog.com/entry/2015/11/20/003401)
    - [CentOS 7 最新安定版カーネルインストール、及び切り替え](http://server.etutsplus.com/centos-7-how-to-update-kernel-to-the-latest-mainline-stable/)
    - [CentOS7でelrepoリポジトリを有効化してkernel-mlを入れる](http://qiita.com/kawaz/items/21637f5f0b443bbf7893)