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

参考

[本ブログ内参照]
Ubuntu Proに関して調べてみました
LinuxMintを21.3から22.3へ移行はスムーズでした

コメント

過去30日間に良く読まれた記事

miniPCのBMAXでWindows11のsecure boot設定漏れでトラブル発生

Windows95/98のPCゲームをUbuntu/LinuxMintの最新PCで楽しむ方法 ( KVM / Wine / dosbox-x / midi )

LinuxMint/ubuntuにWine 11導入を試しました ( LinuxMint 21.3 / 22.3 ubuntu 22.04 / 26.04 Wine 11.0 / 11.6 / 11.8 / 11.13 )