ytooyamaのブログ

サーバ構築とか、仕事で発見したこととか、趣味のこととかを書いています。

Ubuntu Server 18.04でVanillaカーネルのビルド

Ubuntu Server 18.04では割と新しいカーネル 4.15が利用できます。 今回は諸事情でディストリビューション標準のカーネルではなく、独自ビルドしたカーネルを使うことにしました。

VanillaカーネルとはLinuxディストリビューションがメンテナンスするカーネルではなく、Linux kernelコミュニティーがリリースしたバージョンのカーネルを指します。

The Linux Kernel Archives

いくつかのバージョンをダウンロードできますが、今回はサポート期間が長い4.14系のバージョン4.14.52をビルドすることにしました。ちなみに同じ方法で別のバージョンのパッケージを作成することも可能です。

まず、(カーネル以外の)システムの更新をおこないます。

% sudo apt update
% sudo apt upgrade

カーネルビルドに必要なパッケージを入れます。

% sudo apt install fakeroot kernel-package git libssl-dev bison flex

ソースをtarballで取得します。

% wget https://cdn.kernel.org/pub/linux/kernel/v4.x/linux-4.14.52.tar.xz
% tar xf /linux-4.14.52.tar.xz
% cd linux-4.14.52

今のkernel configをベースにするための設定を行います。

% cp /boot/config-$(uname -r) .config
% yes "" | make oldconfig

ビルドします。ビルドに要する時間はビルドマシンの性能によります。40Core、64GBメモリー、256GB SSDなサーバーで1時間程度でした。

% fakeroot make-kpkg --initrd --append-to-version=-mybuild kernel-image kernel-headers -j $(getconf _NPROCESSORS_ONLN)

ビルドしたdebパッケージをインストールします。再起動すると新しいカーネルUbuntuを起動できます。

% sudo dpkg -i linux-headers-4.14.52-mybuild_4.14.52-mybuild-10.00.Custom_amd64.deb
% sudo dpkg -i linux-image-4.14.52-mybuild_4.14.52-mybuild-10.00.Custom_amd64.deb
% sudo update-grub && sudo reboot

昔と比べたらマシンの性能も良くなったし、ビルドツールも便利なものが多くなったので割と簡単でした。 これで好きなバージョンのカーネルUbuntu Serverで使えますね。

ちなみにUbuntu Server 18.04でビルドしたカーネルですが、Ubuntu Server 16.04.4でも一応起動するみたいです。ただ、流石にUbuntu Server 14.04.xでは無理でした。

カーネルのバージョンを固定する方法は、以前書きましたので以下を参考にどうぞ。

ytooyama.hatenadiary.jp