CentOS7 に 最新Kernelをコンパイルしてインストールする

スポンサーリンク

Kernelとは

Kernelとは、「核」という意味で、OSの中心となるプログラム郡のことです。

  • 役割
    • アプリケーションとハードウェアの橋渡し
    • プロセス管理
    • メモリの管理
    • デバイスの管理

また、Kernelは特権モードで動作します。
どういう事かというと、CPUを無制限に利用することができます。

他にも、ローダブルモジュールとかあってKernelは奥が深すぎますが、最新のカーネルをコンパイルして利用するのは
とても簡単です!

サクッとカーネルのコンパイルにチャレンジしましょう!

環境

  • OpenStack上のCentOS7.4

Kernelのコンパイル

Kernelをコンパイルするってなんかカッコいいですよね!
これであなたも、Linux初心者を卒業できます。

Kernelのバージョンを確認する

# uname -r
3.10.0-693.17.1.el7.x86_64

必要パッケージのインストール

yum groupinstall "Development Tools"
yum install kernel-devel ncurses-devel wget elfutils-libelf-devel openssl-devel bc

/usr/src/kernelsに移動する

# cd /usr/src/kernels

ソースのダウンロード

# wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.15.3.tar.xz

こちら から最新のKernelを確認しましょう!

ソースを展開する

# xz -d linux-4.15.3.tar.xz
# tar xvf linux-4.15.3.tar

ダウンロードしたファイルを削除する

# rm linux-4.15.3.tar

<kernelのバージョン>に移動する

# cd linux-4.15.3/

現在のカーネルコンフィグレーションをコピーする

# cat /boot/config-3.10.0-693.el7.x86_64 > ./.config

menuconfigで、変更したいパラメタのみ変更する

# make menuconfig
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/mconf.o
  SHIPPED scripts/kconfig/zconf.tab.c
  SHIPPED scripts/kconfig/zconf.lex.c
  HOSTCC  scripts/kconfig/zconf.tab.o
  HOSTCC  scripts/kconfig/lxdialog/checklist.o
  HOSTCC  scripts/kconfig/lxdialog/util.o
  HOSTCC  scripts/kconfig/lxdialog/inputbox.o
  HOSTCC  scripts/kconfig/lxdialog/textbox.o
  HOSTCC  scripts/kconfig/lxdialog/yesno.o
  HOSTCC  scripts/kconfig/lxdialog/menubox.o
  HOSTLD  scripts/kconfig/mconf
scripts/kconfig/mconf  Kconfig
.config:655:warning: symbol value 'm' invalid for CPU_FREQ_STAT


*** End of the configuration.
*** Execute 'make' to start the build or try 'make help'.

makeする(kernelをコンパイル)

# make

kernel moduleをインストール

# make modules_install

kernelをインストール

# make install

デフォルトでbootされるKernelのバージョンを確認する

# grub2-editenv list
saved_entry=CentOS Linux (3.10.0-693.17.1.el7.x86_64) 7 (Core)

追加したKernelの名称を調べる

# less /etc/grub2.cfg

利用するKernelをデフォルトに設定する

# saved_entry=CentOS Linux (4.15.3) 7 (Core) → 調べた値を入力する

リブートする

# reboot

バージョンを確認する

# uname -r
4.15.3

バージョンが変わっていますね!

最後に

今回は、CentOS7を用いてカーネルのコンパイルを解説しました。最近、CUPの脆弱税(メルトダウン, スペクター)が問題になりました。Linuxの各ディストリビューションの対応も早かったですよね….
ハードウェアの脆弱性は、Kernelレベルでの対応が必要で、Kernelをアップデートすることで対応することも可能なので、
kernelのコンパイルとインストールは覚えておいて損はないと思います。
次回は、簡単なカーネルモジュールでも作成しましょう!

コメント

タイトルとURLをコピーしました