"Writing an OS in Rust" メモ
https://os.phil-opp.com/
を読んで、Rust製OSの赤ちゃんを作る。
https://github.com/o8vm/octox
有名どころとしてこちらからも勉強させていただきたい。
## A Minimal Rust Kernel
https://os.phil-opp.com/minimal-rust-kernel/
x86はBIOSとUEFIのBoot Optionがあるらしい。
UEFIのほうが新しいけどsetupが大変なので、この教材ではBIOSの方を扱っているらしい。
この章では、bootした瞬間にhello worldをprintするようなものを作る。
Rustのnightlyの機能が必要なので、このcargo projectに関してはそれを利用するようにrustupを用いてsetupをする。
```
$ rustup override set nightly
```
例えば、stdライブラリを、自分たちの使用しているtargetに合わせてon-demandでビルドする機能とかもnightlyのものらしい。ちなみに早速それを使っている模様。
bootloaderから作ろうとするとそれはそれで大変なので出来合いのものを利用する。
qemuを利用する
WSL上でqemu-systemをして実行環境を整える。
```
apt install qemu-system
```
以下を実行
```
$ qemu-system-x86_64 -drive format=raw,file=target/x86_64-papi_os/debug/bootimage-papi_os.bin
```
WSL環境でも普通に動いた!!というのと今までで一番感動するHello, Worldだった。声出た。
volatile crateを使用することで揮発性のメモリ操作を可能にする。らしい。細かいところは後で詰めていく。