Ubuntu20のLinux KernelのBuildを行う。
こちらのBlogを参考にした。しっかりポイントが書かれていて本当に助かった。
また、公式のBuildの説明は、こちらになると思う。こちらも非常に参考になる。
https://wiki.ubuntu.com/Kernel/Dev/KernelGitGuide
https://help.ubuntu.com/community/Kernel/Compile
generic
UbuntuのKernelのコードをチェックアウトする。Ubunt 20は、別名?focalらしい。そのため、最後がfolcal.gitになっている。
git clone git://kernel.ubuntu.com/ubuntu/ubuntu-focal.git
次に、ubuntu 20のタグを調べる。git tagと入力すると、ダァーと、タグの一覧がでる。その中で自分がビルドしたいバージョンを選択する。
cd ubuntu-focal
git tag
そして、ビルドしたいバージョンに変更する
git checkout Ubuntu-hwe-5.8-5.8.0-43.49_20.04.1
make cleanして、ビルドする。最初に、genericをビルドする
fakeroot debian/rules clean
AUTOBUILD=1 fakeroot debian/rules binary-generic
エラーになる場合は、ツール系を確認するのがよいと思う。参照したページを見て、足りないツールをaptでインストールしよう。
ビルドが成功すると、debファイルが生成される
ls ../
linux-tools-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
linux-cloud-tools-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
linux-modules-extra-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
linux-image-unsigned-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
linux-buildinfo-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
linux-modules-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
linux-headers-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
ビルドしたKernelをインストールする
cd ..
dpkg -i ./linux-modules-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
sudo dpkg ./linux-image-unsigned-5.8.0-45-generic_5.8.0-45.51~20.04.1_amd64.deb
sudo apt-get install linux-hwe-5.8-headers-5.8.0-43
sudo dpkg -i linux-headers-5.8.0-43-generic_5.8.0-43.49~20.04.1_amd64.deb
sudo dpkg -i linux-modules-extra-5.8.0-43-generic_5.8.0-43.49~20.04.1_amd64.deb
インストールしたら、起動時に、ESCや、SHIFTを連打して、grubの画面を表示して、インストールしたカーネルを選択すれば、ビルドしたKernelで起動する。
起動しているKernelのバージョンを確認するためには、unameのコマンドを使用する。
uname -r
5.8.0.-generic
Lowlatency
次に、LowlatencyのKernelのビルドをする。
gitでcheckoutしたコードの中に、各flaverに対するコンフィグが書かれているファイルがありそうだ。
vi ubuntu-focal/debian.hwe-5.8/config
この中で各flaverに対するKernelの設定が書かれてそう。例えば、CONFIG_PREEMPTは、genericは、Nだけど、lowlatencyはYみたい。
CONFIG_PREEMPT policy<{'amd64-generic': 'n', 'amd64-lowlatency': 'y',
lowlatencyをビルドしてみる。genericでチェックアウトしたディレクトリで実行すれば良い。
fakeroot debian/rules clean
AUTOBUILD=1 fakeroot debian/rules binary-lowlatency
ビルドすると、ファイルが生成される。
ls ../
linux-headers-5.8.0-43-lowlatency_5.8.0-43.49~20.04.1_amd64.deb
linux-image-unsigned-5.8.0-43-lowlatency_5.8.0-43.49~20.04.1_amd64.deb
linux-modules-5.8.0-43-lowlatency_5.8.0-43.49~20.04.1_amd64.deb
linux-buildinfo-5.8.0-43-lowlatency_5.8.0-43.49~20.04.1_amd64.deb
linux-cloud-tools-5.8.0-43-lowlatency_5.8.0-43.49~20.04.1_amd64.deb
linux-tools-5.8.0-43-lowlatency_5.8.0-43.49~20.04.1_amd64.deb
次にLowlatecyをインストールする。先程、同じバージョンのgenericをインストールしていれば、headerのインストールは不要になる。module-extraもなさそう。
sudo dpkg -i linux-modules-5.8.0-43-lowlatency_5.8.0-43.49~20.04.1_amd64.deb
sudo dpkg -i linux-image-unsigned-5.8.0-43-lowlatency_5.8.0-43.49~20.04.1_amd64.deb
lowlatencyって、何かなぁと思っていたけど、Ubuntuの一つだったぽいね。