カーネルコンパイル方法(Ubuntu26.04LTS使用)
題材は、arm64版です、他のカーネルなどのX86_64のやり方もできます
Ubuntu 26.04 LTS(7.0.0-15-generic) → Kernel 7.0.3 へ
カーネルの場所
Linux-7.0.3の場所:(https://www.kernel.org/)
ハードウェア構成:
CPU Coreを2使用
メモリ 4G
HDD:64GB(これは、コンパイル時に大量の添付ファイルを作るため、50G以上必要みたいです)
の構成です
この流れでやります
01). 必要なツールやアプリのインストール
02). 設定ファイルの初期化
03). .config(設定ファイル)を作る
04).エラーが出るための処理
05). カーネルコンパイル
06). モジュールのインストール
07). カーネルのインストール
08). grubの設定
09). リブート
10). リブート後の確認
1). 必要なツールやアプリのインストール
使用してる機種のOSのバージョン確認
uname -r
必要なツール等のインストール
$ sudo apt update
$ sudo apt install -y \
build-essential \
bc \
bison \
flex \
libssl-dev \
libelf-dev \
libncurses-dev \
dwarves \
cpio \
rsync \
kmod \
zstd \
python3
- build-essentialdで現在使用されてるOSのヘッダーCライブラリが用意されます
$ sudo apt install llvm lld clang libclang-dev
を追加の場合あり
hexdumpというコマンドを使うため
$ sudo apt install -y util-linux
カーネルファイルの解凍
gzの場合
$ tar -zxvf linux-7.0.3.tar.gz
xzの場合
$ tar Jxfv linux-7.0.3.tar.xz
カーネルソースが入っているディレクトリに移動
$ cd linux-7.0.3
このARCHといオプションは
ダウンロードしてきたLinux-7.0.3.tar.xzの中に
archとうディレクトリがあるとおもいます
その中にあるディレクトリ名がアーキテクチャの名前なのでオプションで使用します
ただし、x86_64は標準なので”ARCH=” 自体を最後コンパイル方法までつけなくていいです
私はarm64なのでARCH=arm64とオプション指定しています
2). 設定ファイルの初期化
$ make mrproper
3). .config(設定ファイル)を作る
$ make ARCH=arm64 defconfig
で.configを作る
※ defconfigは、標準設定のやり方です
4).エラーが出るための処理(ここの処理は、セキュリティ関係でOpenSSLでできたと思います)
$ scripts/config --disable CONFIG_SYSTEM_TRUSTED_KEYS
$ scripts/config --disable CONFIG_SYSTEM_REVOCATION_KEYS
5). カーネルコンパイル
$ make ARCH=arm64 -j$(nproc)
途中で質問が来るので
それに対応
私は、そのままEnter2回しました
完了後
6). モジュールのインストール
$ sudo make modules_install
7). カーネルのインストール
$ sudo make install
インストール後
8). grubの設定
$ sudo update-initramfs -c -k 7.0.3
$ sudo update-grub
9). リブート
$ sudo reboot
10). リブート後の確認
カーネルバージョンの確認
$ uname -r
7.0.3とでればOK