Alma Linuxのカーネルビルド
Alma LinuxはCentOSのサポート終了に伴い、CentOSの後継として注目を集めているOS。
LPICの学習もAlma Linuxをベースにするようなので、ちょっと弄ってみた。
sudo の設定
Alma Linuxのインストールについては割愛。
まずは visudoコマンド で sudo の設定内容を確認する。
そのために su コマンドで root ユーザーに切り替える。
$ su -
# visudo
表示された内容は下記のような感じでwheelグループを利用すると良さそう。
## Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
wheel のグループに参加することでsudoが使用できるようになるので、usermodコマンドで追加する。
# usermod -aG wheel developer
無事に追加できたか、idコマンドで確認する。
# id developer
uid=1000(developer) gid=1000(developer) groups=1000(developer),10(wheel)
ビルド環境の構築
さっそく、ビルド環境の構築から。
$ sudo dnf update
$ sudo dnf install bc bison dwarves elfutils-libelf-devel flex \
gcc gcc-c++ ncurses-devel openssl-devel perl rpm-build rsync tar
bc rsync tar はすでにインストール済みだった。
実際は、dnf コマンドで一括でインストールしようと試みたが、実は上手くいかなかったので、下記のコマンド実行は失敗してしまう。
$ sudo dnf builddep -y kernel
ビルド環境構築前の状況はこんな感じ
[developer@localhost ~]$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 880M 0 880M 0% /dev/shm
tmpfs 352M 5.6M 347M 2% /run
efivarfs 256K 35K 217K 14% /sys/firmware/efi/efivars
/dev/mapper/almalinux-root 27G 5.6G 21G 22% /
/dev/sda2 960M 448M 513M 47% /boot
/dev/sda1 599M 7.1M 592M 2% /boot/efi
tmpfs 176M 96K 176M 1% /run/user/1000
ビルド環境を構築するためのパッケージのインストールは、こんなサイズが増えるらしい。
トランザクションの概要
================================================================================
インストール 210 パッケージ
ダウンロードサイズの合計: 79 M
インストール後のサイズ: 215 M
カーネルソースのダウンロード
まずは実行中のカーネルバージョンを確認する。
$ uname -a
Linux localhost.localdomain 5.14.0-503.35.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Apr 4 05:23:43 EDT 2025 x86_64 x86_64 x86_64 GNU/Linux
ダウンロードを行う。
$ sudo dnf download --source kernel
$ sudo rpm -ivh kernel-5.14.0-503.35.1.el9_5.src.rpm
なぜか
警告: user mockbuild does not exist - using root
警告: group mock does not exist - using root
という警告が大量に出るが無視して良さそう。
カーネルビルド前の初期化
まずはダウンロードしたカーネルを自身の作業ディレクトリにコピーして展開。
$ sudo cp /root/rpmbuild/SOURCES/linux-5.14.0-503.35.1.el9_5.tar.xz .
$ tar Jxvf linux-5.14.0-503.35.1.el9_5.tar.xz
$ cd linux-5.14.0-503.35.1.el9_5
カーネルをビルドする前のオマジナイ
$ make mrproper
ソースコードを展開した時点で7.7Gおよそ2Gほど増加していた。
$ df -h
ファイルシス サイズ 使用 残り 使用% マウント位置
devtmpfs 4.0M 0 4.0M 0% /dev
tmpfs 880M 0 880M 0% /dev/shm
tmpfs 352M 5.6M 347M 2% /run
efivarfs 256K 35K 217K 14% /sys/firmware/efi/efivars
/dev/mapper/almalinux-root 27G 7.7G 19G 30% /
/dev/sda2 960M 448M 513M 47% /boot
/dev/sda1 599M 7.1M 592M 2% /boot/efi
tmpfs 176M 96K 176M 1% /run/user/1000
ダメ押しでduコマンドでも確認。
$ du -sh .
1.6G .
カーネルコンフィグの編集
今回は、現在実行中のカーネルコンフィグを利用。
$ cp /boot/config-$(uname -r) .config
$ make olddefconfig
$ make localmodconfig
じつは、このまま利用すると正しくビルドできないので手修正。
問題となるのは、.configの下記の設定。
CONFIG_SYSTEM_TRUSTED_KEYS="certs/rhel.pem"
そこで、下記のスクリプトを実行してクリアしておく。
./scripts/config --set-str CONFIG_SYSTEM_TRUSTED_KEYS ""
./scripts/config --set-str CONFIG_SYSTEM_REVOCATION_KEYS ""
カーネルのビルド
いよいよ、カーネルのビルドを実行。
$ make -j $(nproc)
GEN .version
CHK include/generated/compile.h
LD vmlinux.o
MODPOST vmlinux.symvers
MODINFO modules.builtin.modinfo
GEN modules.builtin
CC .vmlinux.export.o
LD .tmp_vmlinux.btf
BTF .btf.vmlinux.bin.o
なぜか、この表示で止まる。
これは、作業をAlmaLinuxをインストールした仮想マシン上で行なっていたためだが…
メモリを2048MBから8192MBに増量。仮想CPUも1→4つにしたら問題なく通ったw。
こんなところで悩むのは貧乏人だけか…
ちなみに.configをそのままビルドすると
$ du -sh .
17G .
localmodconfig を適用すると
$ du -sh .
5.1G .
その差は歴然である!