RustでLinuxカーネル
2022/9にLinux 6.1でRustでカーネルを書けるようになるというニュースが出ました。
筆者は元カーネルハッカーです。朝から晩までLinuxカーネルソースの海で溺れていたことがあります。
元カーネルハッカーの血が騒ぐぜ、ということでRustでカーネルを書く環境を整えてみましたので説明します。
プログラミング言語Rustとは
プログラミング言語Rustは、メモリ安全性を有しているのに、C言語、C++と同じくらい性能を重視するプログラミング言語です。
2022/11時点で最も注目されているプログラミング言語のひとつです。
>>> プログラミング言語Rustを一週間勉強してみた感想 難易度は高くはないと思う
Linuxカーネル
「Linuxとは?」という問いに対して、最も狭義な答えは「Linux Torvaldsが作ったカーネル」です。
Linuxカーネルは2022年の今も活発に開発されています。
Linuxで開発しているとカーネルは一種の憧れです。システムコールのその先で何が起こるかを調べられるとしたらカッコいいと思いませんか?
Linuxカーネルを記述する言語はC言語と少しのアセンブリでした。以前にC++でも書けるようにしよう、という動きがあったらしいですが実現しませんでした。
そんな中2022/9にRustで書けるようにしようというニュースが報じられました。
C言語に次ぐ2つめのLinuxカーネルの言語がRustになったのです。
今回、とりあえずRustでカーネルモジュールを書くためにすることを記事にしてみました。VirtualBoxのインストールからRustでサンプルモジュールを動かすところまでです。
VirtualBoxインストール
Linuxをインストールしてもよい古いマシンをお持ちの方はそれにLinuxをインストールすればよいと思います。今回はVirtualBoxで始めてみます。
>>> Windows上の仮想環境VirtualBoxのインストール方法
VirtualBoxでOSを入れる前の準備
VirtualBoxでOSをインストールする前準備として、ディスクを割り当てたりして、isoイメージを仮想のCDドライブにマウントします。
>>> Windows上の仮想環境VirtualBoxにLinuxをインストールするときの前準備
Debian testingインストール
カーネルをビルドするならなるべき先進的なディストリビューションを選んでおくとトラブルに巻き込まれずに済みます。Debian testingかFedoraがいいと思いますが、今回はDebian testingです。
>>> Linuxインストール方法 (今回はDebian testing)
はじめてのカーネルのビルド
まずは、Debianが配っているカーネルでビルドしてみます。
ビルド失敗がRustのせいではないところまで到達するのが目標です。
>>> はじめてのLinuxカーネルのビルド方法 手順と気を付けること
Rust用Linuxカーネル作成からサンプルのビルド
いよいよRust用Linuxカーネルをビルドしてから、サンプルのRustカーネルモジュールを作ります。
わくわくしませんか?
>>> Rust用LinuxカーネルのビルドとRustカーネルモジュールのサンプル
まとめ
プログラミング言語RustでLinuxカーネルモジュールのサンプルを作ってみました。
コメント