I like fpga

change the world by fpga
2021/03/20

build Ubuntu 20 (focal) linux kernel by generic and lowlatency

SOFTWARE   

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の一つだったぽいね。

« »