LoginSignup
2
1

More than 1 year has passed since last update.

Ubuntuでカーネルのビルド(make bindeb-pkg でのSSL error 解決方法メモ )

Posted at

はじめに

カーネルをビルドする必要があり情報を調べながら行っていましたが SSL errordpkg-buildpackage: error: debian/rules binary subprocess returned exit status 2  が表示されうまくいきませんでした。
なんとかビルドに成功したので解決方法をまとめておきます。

環境

Amazon EC2でインスタンスを作成

  • AMI: Ubuntu Server 22.04LTS (HVM), SSD Volume Type64 ビット (x86)
  • t2.medium
  • ストレージ:32GiB

環境構築

sudo apt -y update
sudo apt -y install build-essential
sudo apt -y install libncurses-dev fakeroot libssl-dev bison flex libncurses5-dev libelf-dev
sudo apt -y install dwarves

libelf-dev がないとビルド時にgelf.h no such file というエラーが出た。
dwarvesがないとBTF: .tmp_vmlinux.btf: pahole (pahole) is not availableというエラー。

そして、/etc/apt/sources.listdeb-srcで始まる行を全て有効にした後

sudo apt update
sudo apt build-dep linux

どれかは導入しなくてもいける気がするけどとりあえず調べて必要そうなものはinstallした。

カーネルソースのDL・コピー・展開・解凍

sudo apt install linux-source
mkdir ~/src
cp ../../usr/src/linux-source-5.15.0.tar.bz2 src/
cd src/
tar xvf linux-source-5.15.0.tar.bz2

.configについて

/bootにあるconfig-5.15.0-1019-aws/linux-source-5.15.0.configとしてコピー

cp ../../../boot/config-5.15.0-1019-aws src/linux-source-5.15.0/.config

make oldconfig.configをコンパイルしたいカーネルバージョンに合わせた。

 make oldconfig   

基本は Debian/Ubuntuでカーネルの設定(.config)を変えて再構築(ビルド)する の通りに設定すればよいが、
CONFIG_MODULE_SIG_KEY="" CONFIG_SYSTEM_TRUSTED_KEYS="" CONFIG_SYSTEM_REVOCATION_KEYS=""にして
CONFIG_MODULE_SIG_ALLCONFIG_MODULE_SIG_FORMATも無効しないとSSL errorになる。
(調べてもこれが出てこなかったから苦しんでいた)

./scripts/config  --disable MODULE_SIG  --disable MODULE_SIG_ALL --disable CONFIG_MODULE_SIG_FORMAT --disable DEBUG_INFO --set-str SYSTEM_TRUSTED_KEYS "" --set-str MODULE_SIG_KEY "" --set-str REVOCATION_KEYS "" --enable PSI --disable CPUSETS --disable PROC_PID_CPUSET

ビルド

time make bindeb-pkg -j4

時間を計りたかったのでtimeもつけた。なくてもいい。
CONCURRENCY_LEVELをコアの数+1にして、-jを2倍にすると良いらしいがよくわからない。

ビルドにかかった時間は約7時間。

real	428m39.156s
user	768m14.345s
sys	        55m23.993s

今思えばmake localmodconfigで現在使われていないモジュールのビルドを無効化すればもっと早かった。

インストール・リブート

sudo apt install *.debとするとなぜかうまくいかなかったのでdpkg -iでインストールした。
そしてリブート。

dpkg -i linux-headers-5.15.60_5.15.60-1_amd64.deb
dpkg -i linux-image-5.15.60_5.15.60-1_amd64.deb
dpkg -i linux-libc-dev_5.15.60-1_amd64.deb
reboot

起動してuname -rで確認すると5.15.60となりビルドできていた。

補足

ストレージは32GiBにしていたが最終的には約12GiB利用していた。やはりmake localmodconfigで現在使われていないモジュールのビルドを無効化すれば。
sudo apt install kernel-packageができずにmake-kpkgできないとか思ってたけど廃止された古いやり方だったんですね。

リンク

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1