Ubuntu 24.04 LTS のRUSTでのデバイスドライバ開発環境設定(参考サイトがあります、これも玄人のFUKUTAKA編)
なお、この記事は一番下の参考サイトをほんの少し応用したものですのご了承ください
説明:
カーネルバージョンからRustや必要なツール等のバージョンを割り出しそれに合わせることが重要
例:
カーネルバージョン: 6.8.0-31-generic
rustバージョン: 1.75.0
bindgenのバージョン:0.66.1
① ディストリビューションのバージョン情報の確認
$ lsb_release -d
Description: Ubuntu 24.04.3 LTS
② 今のカーネルバージョンの確認
$ uname -r
6.8.0-31-generic
③ 今の開発をするためのRust 対応か確認
$ grep _RUST /boot/config-$(uname -r)
CONFIG_RUST_IS_AVAILABLE=y ← y かどうか?確認
CONFIG_RUST=y ← yならRust開発対応
CONFIG_RUSTC_VERSION_TEXT="rustc 1.75.0 (82e1608df 2023-12-21) (built from a source tarball)" ←カーネルがビルドされた時のインストールされていたrustcコマンドのバージョン
CONFIG_HAVE_RUST=y
CONFIG_RUST_OVERFLOW_CHECKS=y
④ 現在のヘッダーのRust のバージョン確認(サポートしている最低バージョン)
$ /usr/src/linux-headers-$(uname -r)/scripts/min-tool-version.sh rustc
1.75.0
$ /usr/src/linux-headers-$(uname -r)/scripts/min-tool-version.sh bindgen
0.65.1
⑤ 必要なものをインストール
現バージョンのrustcなどのインストール
$ sudo apt install rustc rust-src rustfmt bindgen llvm clang build-essential linux-lib-rust-$(uname -r)
これだけです
注意:
カーネルがバージョンアップすると
違いがでてきますのでインストールしたい旧バージョンをインストールするときは
$ sudo apt install rustc-1.68 rust-1.68-src rustfmt-1.68 bindgen-0.56
みたいな感じでする
ただし、この方法 インストールできるバージョンとできないバージョンがありますので、ご注意をしてください
なお、この投稿はさらなる検証が必要ですので、後日(いつになるかわかりません)一部変更することがあります。たとえば、カーネルのバージョンが上がった場合はどうするかとかです。
テスト用 Rustのプログラミングソースは、下記の参考サイトを参考にしてください
なお、この記事は下記のほんの少し参考サイトを応用したもの(ほぼ、そのままです)ですのでご了承ください
参考サイト
Ubuntu Weekly Recipe - 第793回 自作のカーネルモジュールをRustで作る
[Ubuntu] RustでLinux kernel モジュールを開発する