ゼロからのOS自作入門は、C++ で書かれていますす。
これを Rust で描き直そうとしている猛者が現れました。
ゼロからのOS自作入門 Rustで5章までやった記録 – 2021-04-18
https://skoji.jp/blog/2021/04/mikan-laranja-os.html
ゼロからのOS自作入門 – 2021/3/22
これを macOS Monterey Apple Silicon 上の QEMU で実行できたのでその手順を示します。
ソースコードは以下から取得できます。
skoji/laranja-os
https://github.com/skoji/laranja-os
以下を参考にして Rust をインストールします。
Rust 1.56 (2021 edition) リリース
https://nomad.office-aship.info/rust-1-56
以下をインストールします。
QEMU
% brew install qemu
llvm
Xcodeに付属の apple製 clang ではなく、純正の clang を使う必要があります。
% brew install llvm
Clangのインストール
https://students-tech.blog/post/install-clang.html
パスを通す1
% echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc
パスを通す2
~/.zprofileに次のコードを追加する。
そうすると、使用するときだけ新しいClangが使えるようになる。
function llvm (){ export PATH="/usr/local/opt/llvm/bin:$PATH" export LDFLAGS="-L/usr/local/opt/llvm/lib" export CPPFLAGS="-I/usr/local/opt/llvm/include" unset -f llvm }
一度ターミナルを閉じて、新しいターミナルウインドウを開く。
通常の clang (Appleバージョン)のバージョン確認
% clang -v Apple clang version 13.0.0 (clang-1300.0.29.3) Target: arm64-apple-darwin21.1.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin
llvm コマンドを実行後は、オリジナルの clang が使用される
$ llvm $ clang -v Homebrew clang version 13.0.0 Target: arm64-apple-darwin21.1.0 Thread model: posix InstalledDir: /opt/homebrew/opt/llvm/bin
rust-src
% rustup component add rust-src --toolchain nightly-aarch64-apple-darwin
dosfstools
dosfstools は Mac で mkfs を使えるようにするためのソフトです。
% brew install dosfstools Installed: /opt/homebrew/Cellar/dosfstools/4.2
laganda-os/make-image.sh の
if [ "`uname`" = "Darwin" ]; then MKFS_FAT=/usr/local/opt/dosfstools/sbin/mkfs.fat SUDO=''
を
if [ "`uname`" = "Darwin" ]; then MKFS_FAT=/opt/homebrew/Cellar/dosfstools/4.2/sbin/mkfs.fat SUDO=''
のように変えます。
実行
% cd laranja-os % make
成功すると以下のような画面が表示されます。
USBドライバ
ついにフルRustで書いたUSBドライバが動いた!!
マウスとキーボードから入力できる!#ゼロからのOS自作入門 pic.twitter.com/KpmBfdwUaL— あるごん (@algon_320) April 9, 2021
その他のOS自作本
30日でできる! OS自作入門 – 2006/3/1
コメント