You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Jiajie Chen
315299114e
|
6 years ago | |
---|---|---|
alpine | 6 years ago | |
biscuit | 6 years ago | |
nginx | 6 years ago | |
redis | 6 years ago | |
rust | 6 years ago | |
ucore | 6 years ago | |
.gitignore | 6 years ago | |
.travis.yml | 6 years ago | |
Makefile | 6 years ago | |
README.md | 6 years ago | |
build-gcc-musl.md | 6 years ago |
README.md
rCore-user
User programs for rCore OS.
Now it has 4 parts:
ucore
: C-lang, from the original ucore_os_labbiscuit
: C/C++, from Biscuit, based on amusl
instead of originallitc
.rust
: Simple no_std Rust programs.nginx
,redis
,busybox
,alpine
: Real world applications.
Build
To build biscuit programs, install musl toolchain first:
# 1. to download prebuilt binaries in Linux, visit [musl.cc](https://musl.cc)
# 2. to build musl toolchains from source:
# 2.1 for macOS musl toolchain for x86_64(,aarch64)
$ brew install FileSottile/musl-cross/musl-cross {--with-aarch64}
# 2.2 for ubuntu 16.04, we should build gcc-musl for newest musl-1.1.21, please see build-gcc-musl.md for instructions
# 2.3 for riscv musl toolchain, please install [musl-riscv-toolchain](https://github.com/jiegec/musl-riscv-toolchain)
Then, build userspace programs for rCore:
$ make {ucore,biscuit,rust,nginx,redis,all} arch={x86_64,aarch64,riscv32,riscv64}
$ make alpine arch={x86_64,aarch64} # if you want to use alpine rootfs
$ make sfsimg arch={x86_64,aarch64,riscv32,riscv64}
A rootfs is created at build/$(arch)
and converted to qcow2
.
Support matrix
x86_64 | aarch64 | riscv32 | riscv64 | |
---|---|---|---|---|
ucore | ❌ | ✅ | ✅ | ✅ |
rust | ✅ | ✅ | ✅ | ✅ |
biscuit | ✅ | ✅ | ❌ | ✅ |
nginx (linux only) | ✅ | ✅ | ❌ | ✅ |
redis (linux only) | ✅ | ✅ | ✅ | ❌ |
busybox | ✅ | ✅ | ❌ | ✅ |
alpine rootfs | ✅ | ✅ | ❌ | ❌ |
How to use Redis
If redis is dynamically linked to musl (default if you use commands above), you might need to copy ld-musl-$(arch).so.1
to rootfs /lib
. Alpine rootfs includes one as well.
After building redis, you should be able to run redis-server in rCore. Then, start redis-server
in rCore:
/> redis-server redis.conf
Then you should be able to connect to it using redis-cli
over the network:
$ redis-cli -h 10.0.0.2 set abc def
OK
$ redis-cli -h 10.0.0.2 get abc
"def"
Note: redis-cli
in rCore is not working at the time.