macOS は Linux ではないので、そのままでは Linux kernel のビルドはできません。
しかし、docker 上でならできます。
ubuntu の docker コンテナ上で Linux kernel をビルドしてみましょう。
macOS Ventura 13.1 (Apple Silicon) で動作確認済み。
docker コンテナ準備
ubuntu の docker image をダウンロード
% docker image pull ubuntu
test_container の名前で起動で ubuntu の docker imagek からコンテナを起動
% docker container run --name test_container -itd ubuntu
起動したコンテナのシェルに入る
% docker exec -it test_container bash
ubuntu バージョン確認
# cat /etc/os-release PRETTY_NAME="Ubuntu 22.04.1 LTS"
# uname -a Linux e0b1f7482bbe 5.15.49-linuxkit #1 SMP PREEMPT Tue Sep 13 07:51:32 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux
kernel ビルド
/root に移動
# cd
apt レポジトリを最新にする
# apt -y update
wget インストール
# apt install -y wget
カーネルイメージ取得
# wget https://cdn.kernel.org/pub/linux/kernel/v6.x/linux-6.1.1.tar.xz
解凍のための xz インストール
# apt install -y xz-utils
解凍
# xz -dc linux-6.1.1.tar.xz | tar xfv -
# cd linux-6.1.1
make 取得
# apt install -y make
config作成に必要なパッケージ取得
# apt install -y gcc flex bison
arch/$ARCH/defconfigをデフォルトとして、.configを生成します。
# make defconfig
ビルド必要なパッケージを取得
# apt install -y bc libssl-dev
ビルド
# make -j 4
20分くらいのビルドのあと
vmlinux.o ができました。
参考
Linuxカーネルビルド大全 – 2022年2月2日
https://qiita.com/progrunner/items/d2ab0a85b3881a4b7ed8
おすすめの Rust の本
詳解Rustプログラミング
実践Rustプログラミング入門
プログラミング言語Rust入門
実践Rust入門 [言語仕様から開発手法まで]
Rustで始めるネットワークプログラミング
RustではじめるOpenGL (技術の泉シリーズ(NextPublishing))
プログラミング言語Rust 公式ガイド
コメント