AlmaLinux kernel rebuild

kernel

AlmaLinux 9.2 のカーネルをソースからビルドする手順

AlmaLinux 9.2 のカーネルをソースからビルドする手順です。主旨は Ubuntu 22.04LTS kernel rebuild | 市野メモ (ichino-memo.com) と同様です。手順中に書いていませんが、全て root ユーザで作業を行います。

ビルド環境の構築

AlmaLinux-9.2-x86_64-minimal.iso を使って最低限の環境をインストールした後の手順です。少し驚いたのが、tarも明示しないとインストールされていないのですね。

$ yum install gcc 
$ yum install gcc-c++ 
$ yum install glibc-devel 
$ yum install make 
$ yum install ncurses-devel
$ yum install flex
$ yum install bison
$ yum install openssl-devel
$ yum install dwarves
$ yum install elfutils-libelf-devel
$ yum install bc
$ yum install perl
$ yum install tar

カーネルソースのダウンロード

以下のコマンドを実行します。

$ yum download --source kernel
$ rpm -ivh kernel-5.14.0-284.30.1.el9_2.src.rpm

ソースはカレントにダウンロードされます。rpm実行後のインストール先フォルダは、 /root/rpmbuild/SOURCES に展開されます。

カーネルビルド前の初期化

$ cd /root/rpmbuild/SOURCES
$ tar Jxvf linux-5.14.0-284.30.1.el9_2.tar.xz
$ cd linux-5.14.0-284.30.1.el9_2

$ make mrproper

カーネル コンフィグの編集

kernel の config を編集します。 config に慣れていない方は先に こちら を参照して頂ければと思います。

$ cp /boot/config-5.14.0-284.11.1.el9_2.x86_64 .
$ mv config-5.14.0-284.11.1.el9_2.x86_64 .config
$ make menuconfig

menuconfig 編集画面の操作です。最終的に .config の編集結果が以下になっていることを確認します。
変更前 CONFIG_SYSTEM_TRUSTED_KEYS=”certs/rhel.pem”
変更後 CONFIG_SYSTEM_TRUSTED_KEYS=””

そのほか、カーネルの区別を簡単にするために CONFIG_LOCALVERSION=”-custom” が追加されるようにします。(画面は省略します)

署名ファイルを配置します。以下の内容で linux-5.14.0-284.30.1.el9_2/certs に x509.genkey という名称で保存します。

[ req ]
default_bits = 4096
distinguished_name = req_distinguished_name
prompt = no
string_mask = utf8only
x509_extensions = myexts

[ req_distinguished_name ]
CN = Modules

[ myexts ]
basicConstraints=critical,CA:FALSE
keyUsage=digitalSignature
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid

ドライバの署名ファイルを作成します。

$ cd /root/rpmbuild/SOURCES/linux-5.14.0-284.30.1.el9_2/certs
$ openssl req -new -nodes -utf8 -sha512 -days 36500 -batch -x509 \
-config x509.genkey -outform PEM -out signing_key.pem -keyout signing_key.priv

kernel ビルドと署名付きモジュールの作成

$ make bzImage modules

これがマシンスペックに依存しますが、長時間かかります。

  • モジュールへの署名付与
    ビルドが終わったら以下のコマンドでモジュールに署名を付与します。
$ cd certs
$ openssl req -new -nodes -utf8 -sha256 -days 36500 -batch -x509 \
-config x509.genkey -outform PEM -out signing_key.x509 -keyout signing_key.pem

module と kernel のインストール

$ make modules_install INSTALL_MOD_STRIP=1

INSTALL_MOD_STRIP=1 が必要な理由は Ubuntu 22.04LTS kernel rebuild | 市野メモ (ichino-memo.com) を参照頂ければと思います。

$ make install

再起動

インストールが終わったらLinuxマシンを再起動します。

$ shutdown -r now

これで起動が終わったらビルドしたカーネルで動作しているはずです。再起動後にカーネル名称を確認します。

$ uname -r
5.14.0-custom