zCore
ๅบไบ zircon ๅนถๆไพ Linux ๅ ผๅฎนๆง็ๆไฝ็ณป็ปๅ ๆ ธใ
ๅ็README
Reimplement Zircon
microkernel in safe Rust as a userspace program!
- zCore่ฎพ่ฎกๆถๆๆฆ่ฟฐ
- ๆฏๆbare-metalๆจกๅผ็Zircon & Linux
- ๆฏๆlibosๆจกๅผ็Zircon & Linux
- ๆฏๆ็ๅพๅฝขๅบ็จ็จๅบ็ญๆดๅคๆๅฏผ่ฏทๆฅ็ๅ็READMEๆๆกฃใ
ๅฏๅจๅ ๆ ธ
cargo qemu --arch riscv64
่ฟไธชๅฝไปคไผไฝฟ็จ qemu-system-riscv64 ๅฏๅจ zCoreใ
้ป่ฎค็ๆไปถ็ณป็ปไธญๅฐๅ ๅซ busybox ๅบ็จ็จๅบๅ musl-libc ้พๆฅๅจใๅฎไปฌๆฏ็จ่ชๅจไธ่ฝฝ็ musl-libc RISC-V ไบคๅ็ผ่ฏๅทฅๅ ท้พ็ผ่ฏ็ใ
็ฎๅฝ
้กน็ฎๆๅปบ
้กน็ฎๆๅปบ้็จ xtask ๆจกๅผ๏ผๅธธ็จๆไฝ่ขซๅฐ่ฃ ๆ cargo ๅฝไปคใ
ๅฆๅค๏ผ่ฟ้่ฟ Makefile ๆไพ make ่ฐ็จ๏ผไปฅๅ ผๅฎนไธไบๆง่ๆฌใ
็ฎๅๅทฒๆต่ฏ็ๅผๅ็ฏๅขๅ ๆฌ Ubuntu20.04ใUbuntu22.04 ๅ Debian11๏ผUbuntu22.04 ไธ่ฝๆญฃ็กฎ็ผ่ฏ x86_64 ็ libc ๆต่ฏใ่ฅไธ้่ฆ็งๅๅฐ็ฉ็็กฌไปถ๏ผไฝฟ็จ WSL2 ๆๅ ถไป่ๆๆบ็ๆไฝไธ็ๆบๅนถๆ ไธๅไนๅคใ
ๆๅปบๅฝไปค
ๅฝไปค็ๅบๆฌๆ ผๅผไธบ cargo <command> [--args [value]]
๏ผ่ฟๅฎ้
ไธๆฏ cargo run --package xtask --release -- <command> [--args [value]]
็็ฎๅใcommand
่ขซไผ ้็ป xtask ๅบ็จ็จๅบ๏ผ่งฃๆๅนถๆง่กใ
่ฎธๅคๅฝไปค็ๆๆๅๅฐไปๅบ็ฏๅข็ๅฝฑๅ๏ผไนไผๅฝฑๅไปๅบ็็ฏๅขใไธบไบไฝฟ็จๆนไพฟ๏ผๅฆๆไธไธชๅฝไปคไพ่ตไบๅฆไธไธชๅฝไปค็ๆๆ๏ผๅฎไปฌ่ขซ่ฎพ่ฎกไธบ้ๅฝ็ใๅฝไปค็้ๅฝๅ ณ็ณปๅพๅฆไธ๏ผๅฏนไบๅฎไปฌ็่ฏฆ็ป่งฃ้ๅจไธไธ่๏ผ
NOTICE ๅปบ่ฎฎไฝฟ็จ็ญๅฎฝๅญไฝ
โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
| update-all | | check-style | | zircon-init |
โโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ
โโโโโโโ โโโโโโโโ โโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
| asm | | qemu |โโ| bin | | linux-libos | | libos-libc-test |
โโโโโโโ โโโโโโโโ โโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
| โโโโโโโโโโโโ โโโโโโโโโโโโโ
โ โโ โโโ| libc-test |
โโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโ
| image |โโโโโโโโ| rootfs |โโโ โโโโโโโโโโโโโโ
โโโโโโโโโ โโโโโโโโโโ โโ| other-test |
โโโโโโโโโโ โ โโโโโโโโโโโโโโ
| opencv |โโโโโโโโโโโโโโโโโโ
โโโโโโโโโโ โโโ| musl-libc |
โโโโโโโโโโ | โโโโโโโโโโโโโ
| ffmpeg |โโโ
โโโโโโโโโโ
-------------------------------------------------------------------
ๅพไพ๏ผA ้ๅฝๆง่ก B๏ผA ไพ่ต B ็็ปๆ๏ผๆง่ก A ๆถ่ชๅจๅ
ๆง่ก B๏ผ
โโโโโ โโโโโ
| A |โโ| B |
โโโโโ โโโโโ
ๅฝไปคๅ่
ๅฆๆไธ้ข็ๅฝไปคๆ่ฟฐไธ่กไธบไธ็ฌฆ๏ผๆๆ็ๆญคๆๆกฃๆดๆฐไธๅๆถ๏ผไบฆๅฏ็ดๆฅๆฅ็ๅ
่ๆๆกฃใ
ๅฆๆๅ็ฐ error: no such subcommand: ...
๏ผๆฅ็ๅฝไปค็ฎๅไธบๅชไบๅฝไปค่ฎพ็ฝฎไบๅซๅใ
NOTICE ๅ ่ๆๆกฃไนๆฏไธญ่ฑๅ่ฏญ
update-all
ๆดๆฐๅทฅๅ ท้พใไพ่ตๅ git ๅญๆจกๅใ
ๅฆๆๆฒกๆ้ๅฝๅ ้ๅญๆจกๅ๏ผๅฏไปฅไฝฟ็จ่ฟไธชๅฝไปคๅ ้ใ
cargo update-all
check-style
้ๆๆฃๆฅใ่ฎพ็ฝฎๅค็ง็ผ่ฏ้้กน๏ผๆฃๆฅไปฃ็ ่ฝๅฆ็ผ่ฏใ
cargo check-style
zircon-init
ไธ่ฝฝ zircon ๆจกๅผๆ้็ไบ่ฟๅถๆไปถใ
cargo zircon-init
asm
ๅๆฑๅนถไฟๅญ็ผๆๅฎๆถๆ็ๅ
ๆ ธใ้ป่ฎคไฟๅญๅฐ target/zcore.asm
ใ
cargo asm -m virt-riscv64 -o z.asm
bin
็ๆๅ
ๆ ธ raw ้ๅๅฐๆๅฎไฝ็ฝฎใ้ป่ฎค่พๅบๅฐ target/{arch}/release/zcore.bin
ใ
cargo bin -m virt-riscv64 -o z.bin
qemu
ๅจ Qemu ไธญๅฏๅจ zCoreใ่ฟ้่ฆ Qemu ๅทฒ็ปๅฎ่ฃ ๅฅฝไบใ
cargo qemu --arch riscv64 --smp 4
ๆฏๆๅฐ qemu ่ฟๆฅๅฐ gdb๏ผ
cargo qemu --arch riscv64 --smp 4 --gdb 1234
rootfs
้ๅปบ Linux rootfsใ็ดๆฅๆง่ก่ฟไธชๅฝไปคไผๆธ ็ฉบๅทฒๆ็ไธบๆญคๆถๆๆ้ ็ rootfs ็ฎๅฝ๏ผ้ๅปบๆๅฐ็ rootfsใ
cargo rootfs --arch riscv64
musl-libs
ๅฐ musl ๅจๆๅบๆท่ดๅฐ rootfs ็ฎๅฝๅฏนๅบไฝ็ฝฎใ
cargo musl-libs --arch riscv64
ffmpeg
ๅฐ ffmpeg ๅจๆๅบๆท่ดๅฐ rootfs ็ฎๅฝๅฏนๅบไฝ็ฝฎใ
cargo ffmpeg --arch riscv64
opencv
ๅฐ opencv ๅจๆๅบๆท่ดๅฐ rootfs ็ฎๅฝๅฏนๅบไฝ็ฝฎใๅฆๆ ffmpeg ๅทฒ็ปๆพๅฅฝไบ๏ผopencv ๅฐไผ็ผ่ฏๅบๅ ๅซ ffmepg ๆฏๆ็็ๆฌใ
cargo opencv --arch riscv64
libc-test
ๅฐ libc ๆต่ฏ้ๆท่ดๅฐ rootfs ็ฎๅฝๅฏนๅบไฝ็ฝฎใ
cargo libc-test --arch riscv64
other-test
ๅฐๅ ถไปๆต่ฏ้ๆท่ดๅฐ rootfs ็ฎๅฝๅฏนๅบไฝ็ฝฎใ
cargo other-test --arch riscv64
image
ไป rootfs ็ฎๅฝๆๅปบ Linux rootfs ้ๅๆไปถใ
cargo image --arch riscv64
linux-libos
ๅจ linux libos ๆจกๅผไธๅฏๅจ zCore ๅนถๆง่กไฝไบๆๅฎ่ทฏๅพ็ๅบ็จ็จๅบใ
NOTICE libos ๆจกๅผๅช่ฝๆง่กๅไธชๅบ็จ็จๅบ๏ผๅฎๆๅฐฑไผ้ๅบใ
cargo linux-libos --args "/bin/busybox"
ๅฏไปฅ็ดๆฅ็ปๅบ็จ็จๅบไผ ๅๆฐ๏ผ
cargo linux-libos --args "/bin/busybox ls"
ๅนณๅฐๆฏๆ
Qemu/virt
็ดๆฅไฝฟ็จๅฝไปคๅฏๅจ๏ผๅ่งๅฏๅจๅ
ๆ ธๅ qemu
ๅฝไปคใ
ๅ จๅฟ/ๅชๅ
ไฝฟ็จไปฅไธๅฝไปคๆ้ ็ณป็ป้ๅ๏ผ
cargo bin -m nezha -o z.bin
็ถๅไฝฟ็จ rustsbi-d1 ๅฐ้ๅ้จ็ฝฒๅฐ Flash ๆ DRAMใ
ๅฆ: ๅฏไปฅๆฅ็README for D1 ๆๆกฃ่ท็ฅๆดๅคD1ๅผๅๆฟๆๅ ณ็ๆไฝๆๅฏผใ
่ตๆ/ๆๅ
ไฝฟ็จไปฅไธๅฝไปคๆ้ ็ณป็ป้ๅ๏ผ
cargo bin -m visionfive -o z.bin
็ถๅๆ นๆฎๆญคๆๆกฃ็่ฏฆ็ป่ฏดๆ้่ฟ u-boot ็ฝ็ปๅฏๅจ็ณป็ปใ
ๆถ่ง/cr1825
ไฝฟ็จไปฅไธๅฝไปคๆ้ ็ณป็ป้ๅ๏ผ
cargo bin -m cr1825 -o z.bin
็ถๅ้่ฟ u-boot ็ฝ็ปๅฏๅจ็ณป็ปใ