Quantcast
Channel: プログラミング
Viewing all articles
Browse latest Browse all 8395

【2024年11月】Linuxカーネルをビルドしてパッケージ化してみた - Doctor’s Doodles

$
0
0

Linuxカーネルをソースからビルドして,パッケージ化するところまでのメモ. 以下,Ubuntu 22.04 LTSで実験済み.

準備

まず,必要なものをaptでインストールする. build-depを動かすためには,/etc/apt/sources.listのファイルでdeb-srcで始まる行のコメントアウトを取り,有効化する必要がある. 有効化した後は,sudo apt updateしてから,下記のコマンドを実行する.

$ sudo apt install git fakeroot libncurses5-dev
$ sudo apt build-dep linux

Linuxカーネルソースコードをダウンロード

私はカーネルソースコードは,下記のように最新のものをダウンロードした.

$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git

カーネルコンフィグの設定

とりあえず,今使っているUbuntuカーネルと同じ設定でビルドしたいので,次のようにコンフィグファイル.configをビルドディレクトリに配置する.

$ cd linux
$ mkdir ../linux-build
$ cp /boot/config-`uname -r` ../linux-build/.config

.configファイルの修正

このまま.configファイルを使ってビルドすると,.pemファイルに対するエラーでコンパイルが失敗するので,次のようにCONFIG_SYSTEM_TRUSTED_KEYSCONFIG_SYSTEM_REVOCATION_KEYSを空文字列に修正する.

CONFIG_SYSTEM_TRUSTED_KEYS=""
CONFIG_SYSTEM_REVOCATION_KEYS=""

.configファイルをビルド対象カーネルに合わせる

.configファイルを今回ダウンロードした最新のカーネルに合わせて修正する必要があるらしい. ここら辺はまだよくわかっていないので要調査.

$ make O=../linux-build/ olddefconfig 

カーネルのビルド

いよいよカーネルカーネルモジュールをビルドする. -jLOCALVERSIONの引数は,各自のお好みで変更してほしい. LOCALVERSIONは自分でビルドしたと分かる文字列にすると良い. ここでは,参考にしたwebサイトと同じようにしている. カーネルのビルドは,以下のコマンド.

$ make -j17 O=../linux-build/ LOCALVERSION=-stock

カーネルモジュールのビルドは,以下のコマンド.

$ make modules -j17 O=../linux-build/ LOCALVERSION=-stock

カーネルパッケージの作成

以下のコマンドでDebianパッケージを作成することができる. 少し時間がかかるので,気長に待つ.

$ make bindeb-pkg O=../linux-build/ LOCALVERSION=-stock

上記のコマンドが終了すると,次のように.debファイルが作成されている.

$ ls -l ../*.deb
../linux-headers-hogehoge.deb
../linux-image-hogehoge.deb
../linux-libc-dev_hogehoge.deb

カーネルパッケージのインストール

ここまででめでたくカーネルパッケージを作成できたら,あとはdpkgコマンドでインストールするだけである.

$ sudo dpkg -i ../linux-headers-hogehoge.deb
$ sudo dpkg -i ../linux-libc-dev_hogehoge.deb
$ sudo dpkg -i ../linux-image-hogehoge.deb

ここまで正常にインストールできれば,再起動してGRUBで今回ビルドしたカーネルを選択すれば起動できる.

GRUBの設定

私は一応起動ログの確認のために,/etc/default/grubGRUB_CMDLINE_LINUX_DEFAULTからquiet splashを削除しておいた. 上記の編集を行った後は,sudo update-grubで更新した後に再起動する.

参考にしたwebサイト

第526回 Ubuntuで最新のカーネルをお手軽にビルドする方法 | gihyo.jp

Debian/Ubuntuでカーネルの設定(.config)を変えて再構築(ビルド)する #kernel - Qiita


Viewing all articles
Browse latest Browse all 8395

Trending Articles