🦀

Rust-for-Linuxの開発環境を用意する

2022/09/24に公開

Rust-for-Linuxの開発環境を構築する備忘録的な。基本的にはQuick Startに全て書いてあるが、ステップごとの確認方法などもこの記事では追記している。

なおこの記事ではArch Linux上で環境構築をしているためパッケージマネージャーにpacmanを使っている。他のディストリビューションやOS上で再現するには別のパッケージマネージャーに置き換えてほしい。

ソースコードをとってくる

当然まずRust-for-Linuxのソースコードをクローンする。

$ git clone git@github.com:Rust-for-Linux/linux.git

以降はこのソースコードのルートディレクトリで作業する。

ビルドに必要なもの

rustup

そもそもRustの環境をつくるのにrustupが必要。なければどこかしらからインストールする。

$ sudo pacman -S rustup

なおrustupを使わない方法もQuick Startには記載されている。この記事ではrustupを使っていく。

rustc

特定バージョンのrustcが必要。

$ rustup override set $(scripts/min-tool-version.sh rustc)

次で確認できる。rust-for-linuxのルートディレクトリが表示されたら成功している。

$ rustup override list
/home/foo/path/to/rust-for-linux                            1.62.0-x86_64-unknown-linux-gnu

rust-src

$ rustup component add rust-src

次のコマンドでrust-src componentをインストールできたか確認できる。

$ rustup component list
...
rust-src (installed)
...

libclang

$ sudo pacman -S clang

bindgen

特定バージョンのbindgenが必要。

$ cargo install --locked --version $(scripts/min-tool-version.sh bindgen) bindgen

bindgenコマンドへのPATHが通っているか確認する。

$ bindgen --version
bindgen 0.56.0

もしコマンドが見つからなければPATHを通す。~/.bash_profileかなんかに次の行を追加してログインし直す。

# in ~/.bash_profile
export PATH="$HOME/.cargo/bin:$PATH"

最終確認

ルートディレクトリで次のコマンドを打つとビルド環境が整ったかどうかを確認できる。

$ make LLVM=1 rustavailable
Rust is available!

開発に必要なもの

rustupがインストールされていればほとんどの場合は不要だが一応記述しておく。

rustfmt/clippy/cargo/rustdoc

rustfmt, clippy, cargo, rustdocはrustupからtoolchainをインストールすれば大体インストールされている。次のコマンドで確認できる。

$ rustup component list
...
cargo-x86_64-unknown-linux-gnu (installed)
clippy-x86_64-unknown-linux-gnu (installed)
...
rust-docs-x86_64-unknown-linux-gnu (installed)
...
rustfmt-x86_64-unknown-linux-gnu (installed)

もしインストールされていなければインストールする。

$ rustup component add rustfmt

ビルドする

なぜかbcパッケージがなかった

bcパッケージがなくてビルドが失敗したのでインストールした。

$ sudo pacman -S bc

本当にビルドする

ビルドするには.configファイルが構成設定のために必要。このファイルを生成するにはmake menuconfigというTUIツールを使う方法などがあるが、GitHub Actionsに利用されている.configファイルをコピーしてくるという簡単な方法があるみたい。これについてはRust for Linuxを手元で試すという記事を参考にした。

$ cp .github/workflows/kernel-x86_64-debug.config .config
$ make CC=clang -j $(nproc)

LLVMのフルツールチェインがインストールされているならmake LLVM=1でも良いみたい。私の環境にはclangしかインストールしていなかったため、上記のmake CC=clangという方法をとった。

これでカーネルイメージ (bzImage) がarch/x86/boot/bzImageとかに作られる。

参照

Discussion