LinuxMint 22.3でkernel-6.18.26をbuildする
1.概要
amd 3200GでBlack Out問題が発生したときにkernel buildを実施しました。その時はエラーの対処に集中していたので、もう一度整理をしました。kenel-6.18.21のbuildと少し変わっています。新しいkernelをLinxuMintやUbuntuで利用する場合は役立つと思います。その内容を記述します。
2.詳細
Build作業を~/srcで実行します
$ mkdir ~/src
(a)kernel-6.18.26を入手する
$ cd ~/src
$ VERSION="6.18.26"
$ wget https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/linux-${VERSION}.tar.gz
$ tar xf linux-${VERSION}.tar.gz
$ ln -s linux-${VERSION} linux
(b)configの設定
$ cd ~/src
$ CONFIG="6.17.0-23"
$ cp /boot/config-${CONFIG}-generic ~/src/linux/.config
$ cat ~/src/linux/.config | grep "canonical"
$ cp ~/src/linux/.config build.config
$ sed -i -e 's/debian\/canonical-certs.pem//' build.config
$ sed -i -e 's/debian\/canonical-revoked-certs.pem//' build.config
$ cat build.config | grep "canonical"
$ cp build.config ~/src/linux/.config
$ echo
$ diff build.config ~/src/linux/.config
(c)buildに必要な準備とbuild
(1)標準モジュールの追加
$ sudo apt install build-essential libelf-dev linux-headers-$(uname -r) bison flex
$ cd ~/src/linux
$ make olddefconfig
$ make -j$(nproc)
(2)dwarf.hのerror発生、libdw-devを追加
In file included from scripts/gendwarfksyms/gendwarfksyms.c:12:
scripts/gendwarfksyms/gendwarfksyms.h:6:10: fatal error: dwarf.h: そのようなファイルやディレクトリはありません
6 | #include <dwarf.h>
| ^~~~~~~~~
compilation terminated.
$ sudo apt install libdw-dev
$ cd ~/src/linux
$ make olddefconfig
$ make -j$(nproc)
(3)openssl/opensslv.hのerror発生、libssl-devを追加
scripts/sign-file.c:25:10: fatal error: openssl/opensslv.h: そのようなファイルやディレクトリはありません
25 | #include <openssl/opensslv.h>
| ^~~~~~~~~~~~~~~~~~~~
compilation terminated.
$ sudo apt install libssl-dev
$ cd ~/src/linux
$ make olddefconfig
$ make -j$(nproc)
(4)sub-makeが発生、理由調査のためre-run、gawk問題と判明して、gawkを追加
make: *** [Makefile:248: __sub-make] エラー 2
buildをre-run
/bin/sh: 1: gawk: not found
...
make: *** [Makefile:248: __sub-make] エラー 2
$ sudo apt install gawk
$ cd ~/src/linux
$ make olddefconfig
$ make -j$(nproc)
最終的なBuild処理は以下のようになります
$ sudo apt install build-essential libelf-dev linux-headers-$(uname -r) bison flex
$ sudo apt install libdw-dev
$ sudo apt install libssl-dev
$ sudo apt install gawk
$ cd ~/src/linux
$ make olddefconfig
$ make -j$(nproc)
(d)install
$ cd ~/src/linux
$ sudo make install
$ sudo make modules_install
3.所見
参考資料にあるINSTALL_MOD_STRIP=1を付けて、下記コマンドのようにinstallすると
initrd.img-6.18.26は30MB程度になりましたが、bootできません。
$ sudo make modules_install INSTALL_MOD_STRIP=1
下記コマンドでinitrd.img-6.18.26は80MB程度でした。
$ sudo make install
$ sudo make modules_install
kenel-6.18.21で必要だった下記処理は不要でした、
$ sudo rm /boot/initrd.img-6.18.21
$ sudo find /lib/modules/6.18.21/ -name "*.ko" -type f -exec strip --strip-debug {} +
$ sudo update-initramfs -c -k 6.18.21
参考
[本ブログ内参照]
・【問題解決】AMD 3200Gがkernel-6.17でBlack Outする
[外部サイト参照]
・Ubuntu 22.04LTS kernel rebuild
・Ubuntu 22.04 カーネルビルド手順
コメント
コメントを投稿