Rust 的計劃 9
R9 是 Rust 中 plan9 核心的重新實作。它不僅受到原始 Plan 9 原始碼的啟發,而且在許多方面源自原始 Plan 9 原始碼。
我們使用cargo
和xtask
模式來建立核心。
要為 x86_64 建置 r9,我們假設您已將 git 儲存庫複製到方便的地方。然後只需切換到頂級目錄並cargo xtask build --arch x86-64
即可。
要針對 aarch64 進行構建,請運行cargo xtask build --arch aarch64
(目前僅支援 Raspberry Pi 3)。
還有其他有用的xtask
子命令;執行cargo xtask help
查看可用的內容。
目前,r9 還不是自架的。
cargo xtask dist
cargo xtask qemu
dist 需要llvm-objcopy
。這預計將存在於 Rust 工具鏈路徑中。您可以透過運行來安裝:
rustup component add llvm-tools
如果您收到No such file or directory (os error 2)
訊息,請與 rust 工具鏈分開安裝llvm
並設定:
OBJCOPY=$(which llvm-objcopy) cargo xtask qemukvm
如果No such file or directory (os error 2)
訊息仍然存在,請檢查以確保安裝了qemu
或qemu-kvm
,並且qemu-system-x86_64
二進位檔案位於您的路徑中(如果是 aarch64,則為qemu-system-aarch64
)。
R9 可以使用 qemu 針對各種支援的架構運作:
拱 | 平台 | 命令列 |
---|---|---|
架構64 | 拉斯皮3b | 貨物 xtask qemu --arch aarch64 --verbose |
架構64 | 拉斯皮4b | 貨物 xtask qemu --arch aarch64 --config raspi4b --verbose |
x86-64 | q35 | 貨物 xtask qemu --arch x86-64 --verbose |
x86-64(附 kvm) | q35 | 貨物 xtask qemu --arch x86-64 --kvm --verbose |
瑞斯克夫 | 虛擬 | 貨物 xtask qemu --arch riscv64 --verbose |
R9 已或多或少在以下硬體上運作:
假設你可以設定一個 TFTP 伺服器(祝你好運,它非常繁瑣,但就其價值而言,dnsmasq 偶爾可以工作),並假設你的 netboot 目錄的位置,你可以使用以下命令建立和複製二進位檔案:
cargo xtask dist --arch aarch64 --verbose && cp target/aarch64-unknown-none-elf/debug/aarch64-qemu.gz ../netboot/kernel8.img
這會複製一個壓縮的二進位文件,透過網路複製應該要快得多。
Raspberry Pi 韌體在核心之前載入config.txt
。在這裡我們可以設定要使用的 UART 等。以下內容將設定為使用 miniuart:
enable_uart=1
core_freq_min=500