最近コード書いてなかったので、Rustの勉強を兼ねて自作OS本をやってみる。
https://www.amazon.co.jp/dp/B08Z3MNR9J
環境はIntel macとIntelliJ。
適当にリポジトリを作ってRustのHello Worldが動くように設定を終わらせる。
https://github.com/ytannai/kabos
自作OS本はUEFIアプリをCで書くサンプルから始まるんだけど、Rustで書き直すところで止まった。
ちなみにCargo.tomlでeditionという、バージョン的なものを指定できるらしい。
普通にrustup init
したら2018だったので、試しに2021をしてみたらnaightlyにする必要があるようなので、rustup toolchain install nightly
でrelease channelを変えてみる。
インストールしたらrustup default nightly
で適用する。*envの機能を公式でサポートしてるのが良い。
この時点でCargo.tomlは以下のようになっている。これでHello Worldを再実行できた。
cargo-features = ["edition2021"]
[package]
name = "kabos"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
[[bin]]
name = "kabos"
path = "main.rs"
IntelliJがよく統合されていて、今のところ快適。
で、UEFIに戻る。ライブラリが見つかった。
https://github.com/rust-osdev/uefi-rs
このREADMEにあるブログを参考に、Cargo.tomlのdependenciesセクションへ依存関係を追加する。あと、unstable featureを使う設定もする。
[dependencies]
uefi = "0.11.0"
uefi-services = "0.8.0"
[unstable]
build-std = ["core", "compiler_builtins", "alloc"]
この時点でもう一度Hello Worldを実行してみる。実行はできるが、依存が増えたからかコンパイルに少し時間がかかるようになった。
キャッシュされるのか、初回だけのようだ。
依存にrlibcも追加すると、いよいよベアメタル感が出てくる。
もう眠いので今日はここまで。次回はUEFIアプリの実装。
https://gil0mendes.io/blog/an-efi-app-a-bit-rusty/#the-app-itself
Top comments (0)