Skip to content

Latest commit

 

History

History
143 lines (100 loc) · 3.2 KB

README.md

File metadata and controls

143 lines (100 loc) · 3.2 KB

zCore

CI Docs Coverage Status

Reimplement Zircon microkernel in safe Rust as a userspace program!

Dev Status

🚧 Working In Progress

  • 2020.04.16: Zircon console is working on zCore! 🎉

Quick start for RISCV64

make rv64-image
cd zCore
make run arch=riscv64 linux=1

Getting started

Environments:

Developing environment info

  • current rustc -- rustc 1.56.0-nightly (08095fc1f 2021-07-26)
  • current rust-toolchain -- nightly-2021-07-27
  • current qemu -- 5.2.0

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 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=1

To debug, set RUST_LOG environment variable to one of error, warn, info, debug, trace.

Testing

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.

Doc

make doc

riscv64 porting info

Components

Overview

Hardware Abstraction Layer

Bare Metal Linux / macOS
Virtual Memory Management Page Table Mmap
Thread Management executor async-std::task
Exception Handling Interrupt Signal

Some plans