Linux

CentOS7でカーネルコンパイルを実施する

5/8: 追記と編集
書いといてなんですけど、案外見ている人がいてびっくりしました。
もう少し役立つように書きます

カーネルをソースコードからコンパイルする方法

必要なパッケージを揃える

yum install rpm-build rpmdevtools -y
yum groupinstall "Development Tools" -y
yum install asciidoc hmaccalc perl-ExtUtils-Embed pesign xmlto -y
yum install audit-libs-devel binutils-devel elfutils-devel elfutils-libelf-devel -y
yum install ncurses-devel newt-devel numactl-devel pciutils-devel python-devel zlib-devel -y
yum install openssl bc -y 

I Need the Kernel Source

1. カーネルソースを準備する

Linux Kernel にカーネルがいっぱいあるので好きなのを選ぶ
執筆段階での安定板最新が4.16だったのでそれを取得しています

コンパイル時は基本的に/usr/srcディレクトリ以下に展開します

curl -o /usr/src/linux-4.16.tar.gz https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.16.7.tar.xz
tar Jxvf /usr/src/linux-4.16.tar.gz -C /usr/src

2. 古いコンフィグファイルの反映

make oldconfigを実施すると、現在のカーネルバージョンでのconfigファイルを元に新たに作成してくれます
現在の設定は/boot以下にあるのでそれを移動させて実施

cp /boot/config-3.10.0-693.el7.x86_64 /usr/src/linux-4.16.7/.config
cd /usr/src/linux-4.16.7/
make oldconfig
// 対話式でいろいろ聞かれるので都度答える

3. カーネルとカーネルモジュールのコンパイル

pwd
> /usr/src/linux-4.16.7
make

コンパイルの実施時にパッケージが不足しているようであれば、適宜インストールしてください

make -j 5 のようにすると、並列処理をしてくれます。数字はコア数+1が妥当な値です。

かなり時間がかかるので気長に待ちましょう。

セッションが落ちるなどの不安があったら、screenコマンドとかを使えばいいです

カーネルとカーネルモジュールのインストール

make modules_install
make install

存在の確認

ls /boot

以上になります。 rebootをすると、使用できるようになっています。やった