Ubuntu Server 18.04では割と新しいカーネル 4.15が利用できます。 今回は諸事情でディストリビューション標準のカーネルではなく、独自ビルドしたカーネルを使うことにしました。
VanillaカーネルとはLinuxディストリビューションがメンテナンスするカーネルではなく、Linux kernelコミュニティーがリリースしたバージョンのカーネルを指します。
いくつかのバージョンをダウンロードできますが、今回はサポート期間が長い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では無理でした。
カーネルのバージョンを固定する方法は、以前書きましたので以下を参考にどうぞ。