Rencanakan 9 di Rust
R9 adalah implementasi ulang kernel plan9 di Rust. Ini tidak hanya terinspirasi tetapi dalam banyak hal berasal dari kode sumber Plan 9 yang asli.
Kami menggunakan pola cargo
dan xtask
untuk membangun kernel.
Untuk membangun r9 untuk x86_64, kami berasumsi Anda telah mengkloning repositori git di tempat yang nyaman. Kemudian cukup ubah ke direktori tingkat atas dan, cargo xtask build --arch x86-64
.
Untuk membangun aarch64, jalankan cargo xtask build --arch aarch64
(Saat ini hanya Raspberry Pi 3 yang didukung).
Ada subperintah xtask
lain yang berguna; jalankan cargo xtask help
untuk melihat apa yang tersedia.
Saat ini, r9 bukan self-hosting.
cargo xtask dist
, yang menjadi sandaran cargo xtask qemu
, memerlukan llvm-objcopy
. Hal ini diperkirakan akan terjadi di jalur rantai alat yang berkarat. Anda dapat menginstal dengan menjalankan:
rustup component add llvm-tools
Jika Anda mendapatkan pesan No such file or directory (os error 2)
, maka instal llvm
terpisah dari rantai alat karat dan atur:
OBJCOPY=$(which llvm-objcopy) cargo xtask qemukvm
Jika pesan No such file or directory (os error 2)
tetap ada, periksa untuk memastikan qemu
atau qemu-kvm
diinstal dan biner qemu-system-x86_64
ada di jalur Anda (atau qemu-system-aarch64
dalam kasus aarch64).
R9 dapat dijalankan menggunakan qemu untuk berbagai arsitektur yang didukung:
Lengkungan | Platform | Baris perintah |
---|---|---|
aarch64 | raspi3b | kargo xtask qemu --arch aarch64 --verbose |
aarch64 | raspi4b | kargo xtask qemu --arch aarch64 --config raspi4b --verbose |
x86-64 | Q35 | kargo xtask qemu --arch x86-64 --verbose |
x86-64 (dengan kvm) | Q35 | kargo xtask qemu --arch x86-64 --kvm --verbose |
risikocv | kebajikan | kargo xtask qemu --arch riscv64 --verbose |
R9 telah dijalankan pada perangkat keras berikut pada tingkat yang lebih besar atau lebih kecil:
Dengan asumsi Anda dapat mengatur server TFTP (semoga berhasil, ini sangat rumit, tetapi untuk apa nilainya, dnsmasq kadang-kadang dapat berfungsi), dan dengan asumsi lokasi direktori netboot Anda, Anda dapat membuat dan menyalin biner menggunakan perintah berikut:
cargo xtask dist --arch aarch64 --verbose && cp target/aarch64-unknown-none-elf/debug/aarch64-qemu.gz ../netboot/kernel8.img
Ini menyalin biner terkompresi, yang seharusnya lebih cepat untuk disalin melalui jaringan.
Firmware Raspberry Pi memuat config.txt
sebelum kernel. Di sini kita dapat mengatur UART mana yang akan digunakan, antara lain. Konten berikut akan diatur untuk menggunakan miniuart:
enable_uart=1
core_freq_min=500