step 2: Compile & Run native Linux program (Busybox) in libos mode:
cargo run --release --features "linux libos" -- /bin/busybox [args]
You can also add the feature graphic to show the graphical output (with sdl2 installed).
To debug, set the LOG environment variable to one of error, warn, info, debug, trace.
Run native Zircon program (shell) in zircon-libos mode:
step 1: Compile and Run Zircon shell
cargo run --release --features "zircon libos" -- prebuilt/zircon/x64/bringup.zbi
The graphic and LOG options are the same as Linux.
Run zcore in bare-metal mode
Run Linux shell in linux-bare-metal mode:
step 1: Prepare Alpine Linux rootfs:
make rootfs
step 2: Create Linux rootfs image:
Note: Before below step, you can add some special apps in zCore/rootfs
make image
step 3: Build and run zcore in linux-bare-metal mode:
cd zCore && make run MODE=release LINUX=1 [LOG=warn] [GRAPHIC=on] [ACCEL=1]
Run Zircon shell in zircon-bare-metal mode:
step 1: Build and run zcore in zircon-bare-metal mode:
cd zCore && make run MODE=release [LOG=warn] [GRAPHIC=on] [ACCEL=1]
step 2: 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 [LOG=warn] [GRAPHIC=on] [ACCEL=1]
Testing
LibOS Mode Testing
Zircon related
Run Zircon official core-tests:
pip3 install pexpect
cd scripts && python3 unix-core-testone.py 'Channel.*'
Run all (non-panicked) core-tests for CI:
pip3 install pexpect
cd scripts && python3 unix-core-tests.py
# Check `zircon/test-result.txt` for results.
Linux related
Run Linux musl libc-tests for CI:
make rootfs && make libc-test
cd scripts && python3 libos-libc-tests.py
# Check `linux/test-result.txt` for results.
Bare-metal Mode Testing
Zircon related
Run Zircon official core-tests on bare-metal:
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.
x86-64 Linux related
Run Linux musl libc-tests for CI:
## Prepare rootfs with libc-test apps
make baremetal-test-img
## Build zCore kernel
cd zCore && make build MODE=release LINUX=1 ARCH=x86_64
## Testing
cd scripts && python3 baremetal-libc-test.py
##
change zCore/zCore/main.rs L176
vec![“/bin/busybox”.into(), “sh”.into()]
TO
vec![“/bin/snake”.into(), “sh”.into()]
Step3: prepare root fs image, run zcore in linux-bare-metal mode
exec:
cd zCore #zCore ROOT DIR
make rootfs
cp ../rcore-user/app/snake rootfs/bin #copy snake ELF file to rootfs/bin
make image # build rootfs image
cd zCore #zCore kernel dir
make run MODE=release LINUX=1 GRAPHIC=on
zCore
Reimplement Zircon microkernel in safe Rust as a userspace program!
Manual
This is a new simple chinese manual.
Dev Status
🚧 Working In Progress
Quick start for RISCV64
Getting started
Environments:
Developing environment info
Clone repo and pull prebuilt fuchsia images:
For users in China, there’s a mirror you can try:
Run zcore in libos mode
Run zcore in linux-libos mode
step 1: Prepare Alpine Linux rootfs:
step 2: Compile & Run native Linux program (Busybox) in libos mode:
You can also add the feature
graphic
to show the graphical output (with sdl2 installed).To debug, set the
LOG
environment variable to one oferror
,warn
,info
,debug
,trace
.Run native Zircon program (shell) in zircon-libos mode:
step 1: Compile and Run Zircon shell
The
graphic
andLOG
options are the same as Linux.Run zcore in bare-metal mode
Run Linux shell in linux-bare-metal mode:
step 1: Prepare Alpine Linux rootfs:
step 2: Create Linux rootfs image:
Note: Before below step, you can add some special apps in zCore/rootfs
step 3: Build and run zcore in linux-bare-metal mode:
Run Zircon shell in zircon-bare-metal mode:
step 1: Build and run zcore in zircon-bare-metal mode:
step 2: Build and run your own Zircon user programs:
Testing
LibOS Mode Testing
Zircon related
Run Zircon official core-tests:
Run all (non-panicked) core-tests for CI:
Linux related
Run Linux musl libc-tests for CI:
Bare-metal Mode Testing
Zircon related
Run Zircon official core-tests on bare-metal:
Run all (non-panicked) core-tests for CI:
x86-64 Linux related
Run Linux musl libc-tests for CI:
You can use
scripts/baremetal-libc-test-ones.py
&scripts/linux/baremetal-test-ones.txt
to test specified apps.scripts/linux/baremetal-test-fail.txt
includes all failed x86-64 apps (We need YOUR HELP to fix bugs!)riscv-64 Linux related
Run Linux musl libc-tests for CI:
You can usescripts/baremetal-libc-test-ones-riscv64.py &
scripts/linux/baremetal-test-ones-rv64.txt
to test specified apps.scripts/linux/baremetal-test-fail-riscv64.txt
includes all failed riscv-64 apps (We need YOUR HELP to fix bugs!)Graph/Game
snake game: https://github.com/rcore-os/rcore-user/blob/master/app/src/snake.c
Step1: compile usr app
We can use musl-gcc compile it in x86_64 mode
Step2: change zcore for run snake app first.
change zCore/zCore/main.rs L176 vec![“/bin/busybox”.into(), “sh”.into()] TO vec![“/bin/snake”.into(), “sh”.into()]
Step3: prepare root fs image, run zcore in linux-bare-metal mode
exec:
Then you can play the game. Operation
W
/A
/S
/D
: MoveR
: RestartESC
: EndLeft
: Speed upRight
: Slow downMiddle
: Pause/ResumeDoc
RISC-V 64 porting info
Components
Overview
Hardware Abstraction Layer
executor
async-std::task
Small Goal & Little Plans