分123何度か紹介しているように,UbuntuはLinuxディストリビューションのひとつです。カーネルとしてLinuxを採用しています。新しいハードウェアを使うなら新しいカーネルが必要になりますし,特定のデバイスで問題が起きるならカーネルを修正することになります。今回は最新のカーネルに修正を加えてパッケージ化する方法を紹介します。本連載ではこれまでにも,さまざまな方法でカーネルをビルド・インストールする手段を紹介してきました。代表的なものだけでも,次の3つの記事が存在します。第333回「カーネルパッケージをビルドしよう」Ubuntuカーネルのgitリポジトリもしくはカーネルソースパッケージを利用した,Ubuntuのカーネルパッケージのビルド方法。GのdGPUを有効化する」Ubuntuのメインラインビルドを利用したビルド済み最新カーネルのインストール方法。第526回「Ubuntuで最新のカーネルをお手軽にビルドする方法」VanillaカーネルからDebianパッケージをビルドする方法。個々のビルド方法についての詳細は各記事を参照してもらうことにして,まずは今回使用する方法との違いを説明しておきましょう。Ubuntuにおいて「カーネル」と呼ぶとき,そのソースコードの取得元に応じて大まかに次のように分けられます。UbuntuカーネルUbuntuで正式に採用されているカーネルもしくは採用される予定のカーネルです。特定のカーネルバージョンに対して,各種Ubuntuに必要なパッチを適用した上で,パッケージとして提供されています。ソースコードの取得元はkernel.ubuntu.comです。Ubuntu用なので,カーネルはUbuntuのリリースに合わせたバージョンのみが提供されます。4.15になります(HWEなら4.18や5.0です⁠)⁠。既存のカーネルを少しだけ変更して利用したいなら,Ubuntuカーネルをベースにすることになるでしょう。第333回ではUbuntuカーネルに少し修正を加えてビルドする方法を紹介しました。Kernel)Ubuntuでは不具合の原因追求や次期リリースに向けてのバージョン選定のために,メインラインカーネルと呼ばれるオリジナルのLinuxカーネルをほぼそのまま利用した,ビルドインフラストラクチャーを用意しています。Kernelのmasterブランチの最新コミットや特定のタグを毎日ビルドし,そのパッケージを公開しているのです。メインラインビルドは,不具合がどのリリースから発生するようになったのか,新しいリリースでは修正されているのかを追求するのに役に立ちます。リリースごとに再ビルドの必要がなく,パッケージをダウンロードしてインストールするだけでトライアンドエラーを繰り返せます。Kernelの内容そのままですが,リリースごとに「Ubuntu化」用のパッチセットも併せて公開しています。利用者は比較的簡単にUbuntu化されたカーネルを入手可能です。第524回では,最新のカーネルでのみサポートしていたハードウェアを使うために,メインラインビルドのパッケージをインストールしました。Kernel)Ubuntuによる修正がまったく加えられていないアップストリームのカーネルをバニラカーネルと呼んでいます。このバニラカーネルをビルドすれば,Ubuntuで利用可能です。最近はMakefileにDebianパッケージを構築するターゲットが追加されているため,比較的簡単にDebianパッケージ化も可能です。各種パッチが適用されていないこと,コンフィグを自分で構築する必要があることから,Ubuntuの各種コンポーネントが動かなかったり,起動すらできないこともあります。カーネル開発者向けのオプションです。第526回ではカーネルパッケージをビルドするひとつの方法として,バニラカーネルを利用する手法を紹介しました。どのカーネルをベースにするかは,ユースケースに合わせて変更する必要があります。MicroPC向けのカーネルを作ることを考えてみましょう。MicroPC向けのカーネルには次の制約が存在しました。古いBIOSは5.2.0-rc5以降のカーネルを使わないと画面の回転がおかしくなる新しいBIOSは5.2.0にさらにパッチを適用しないと画面の回転がおかしくなる執筆当時はUbuntuの開発版であるeoanでさえも,カーネルは5.0ベースでした(※1⁠)⁠。Kernelには取り込まれていないため,パッチを適用する必要があることには変わりありません。5.2がリリースされ,eoanのカーネルも5.2ベースに変更されました。今回は5.2のUbuntuカーネルはまだないものとして話を続けます。Ubuntuカーネルだとバージョンアップが必要です。メインラインカーネルにしろバニラカーネルにしろ,パッチの適用が必須であるため,メインラインカーネルのビルド済みパッケージは使えません。第526回のようにバニラカーネルをビルドしても良いのですが,より「Ubuntuらしい」カーネルがほしかったので,今回はメインラインカーネルにパッチを適用する方法を採用します。