Reimplement Zircon microkernel in safe Rust as a userspace program!
🚧 Working In Progress
- 2020.04.16: Zircon console is working on zCore! 🎉
Environments:
Clone repo and pull prebuilt fuchsia images:
git clone https://github.com/rcore-os/zCore --recursive
cd zCore
git lfs install
git lfs pullFor users in China, there's a mirror you can try:
git clone https://github.com.cnpmjs.org/rcore-os/zCore --recursivePrepare Alpine Linux rootfs:
make rootfsRun native Linux program (Busybox):
cargo run --release -p linux-loader -- /bin/busybox [args]Run native Zircon program (shell):
cargo run --release -p zircon-loader -- prebuilt/zircon/x64Run Linux shell on bare-metal (zCore):
make image
cd zCore && make run mode=release linux=1 [graphic=on] [accel=1]Run Zircon on bare-metal (zCore):
cd zCore && make run mode=release [graphic=on] [accel=1]Build and run your own Zircon user programs:
# See template in zircon-user
cd zircon-user && make zbi mode=release
# Run your programs in zCore
cd zCore && make run mode=release user=1To debug, set RUST_LOG environment variable to one of error, warn, info, debug, trace.
Run Zircon official core-tests:
cd zCore && make test mode=release [accel=1] test_filter='Channel.*'Run all (non-panicked) core-tests for CI:
pip3 install pexpect
cd scripts && python3 core-tests.py
# Check `zircon/test-result.txt` for results.Run Linux musl libc-tests for CI:
make rootfs && make libc-test
cd scripts && python3 libc-tests.py
# Check `linux/test-result.txt` for results.| Bare Metal | Linux / macOS | |
|---|---|---|
| Virtual Memory Management | Page Table | Mmap |
| Thread Management | executor |
async-std::task |
| Exception Handling | Interrupt | Signal |