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