はじめに
OSはどのように動いているのか気になり、自作をしてみることにしました。基本の用語から何もわからん…。
Rust
+RISC-V
でいきたい…
docker
docker
をインストールし、ubuntu:2004を利用します。すべての開発はdocker上で行います。
Build qemu
qemu
をビルドします。最初に必要なものをapt install
します。
1sudo apt install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev \
2 gawk build-essential bison flex texinfo gperf libtool patchutils bc \
3 zlib1g-dev libexpat-dev git
1git clone https://github.com/qemu/qemu
2cd qemu
3git checkout v5.2.0
4./configure --target-list=riscv64-softmmu
5make -j $(nproc)
6sudo make install
途中、ninjaがないと怒られたので下のものを追加しました。
1sudo -i
2curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
3python3 get-pip.py
4python3 -m pip install ninja
5exit
Rustのインストール
とりあえず、通常版です。
1$ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
2$ rustup target add riscv64gc-unknown-none-elf
3$ rustc --version
4rustc 1.50.0 (cb75ad5db 2021-02-10)
risc-v向けgccのインストール
1sudo apt install gcc-riscv64-unknown-elf
確認
1$ qemu-system-riscv64 --version
2QEMU emulator version 5.2.0 (v5.2.0)
3Copyright (c) 2003-2020 Fabrice Bellard and the QEMU Project developers
1 riscv64-unknown-elf-gcc -T src/asm/linker.ld src/asm/boot.s target/riscv64gc-unknown-none-elf/debug/librust_v_os.a -o rist-v-os -mabi=lp64 -nostdlib
2hattomo@722b63d75c70:~/rust-v-os$ qemu-system-riscv64 -nographic -machine virt -kernel rist-v-os
Reference
https://risc-v-getting-started-guide.readthedocs.io/en/latest/linux-qemu.html https://github.com/mesonbuild/meson/issues/7258