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
Allow user to download and extract alpinelinux rootfs in Makefile
6 years ago
alpine Allow user to download and extract alpinelinux rootfs in Makefile 6 years ago
biscuit Remove i386 arch, add redis and nginx to travis ci test 6 years ago
nginx Build nginx 6 years ago
redis Redis is working with patches and also copy a redis.conf to build dir 6 years ago
rust Fix SYS_FACCESSAT id for non-x86 6 years ago
ucore Remove i386 arch, add redis and nginx to travis ci test 6 years ago
.gitignore add Rust programs. add Makefile 6 years ago
.travis.yml Fix allow_failures syntax again 6 years ago
Makefile Allow user to download and extract alpinelinux rootfs in Makefile 6 years ago
README.md Allow user to download and extract alpinelinux rootfs in Makefile 6 years ago
build-gcc-musl.md update README 6 years ago

README.md

rCore-user

Build Status

User programs for rCore OS.

Now it has 4 parts:

  • ucore: C-lang, from the original ucore_os_lab
  • biscuit: C/C++, from Biscuit, based on a musl instead of original litc.
  • 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.