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 pull
For users in China, there's a mirror you can try:
git clone https://github.com.cnpmjs.org/rcore-os/zCore --recursive
Prepare Alpine Linux rootfs:
make rootfs
Run 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/x64
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=1
To 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 |