Install build package.
cargo install --git https://github.com/Byte-OS/cargo-byteos
Run with make file.
# riscv64
make BIN=riscv64-qemu run
# aarch64
make BIN=aarch64-qemu run
# x86_64
make BIN=x86_64-qemu run
# loongarch64
make BIN=loongarch64-qemu run
You can find available modules using the following command.
byteos patch list
# Download and patch in Cargo.toml
byteos patch add arch
# remove patch and delete folder
byteos patch remove arch
byteos.yaml is a configuration file for the ByteOS.
You can change the config in this file. For example, you want to use the ext4 fielsystem.
Set the root_fs to 'ext4' or 'ext4_rs' will change the root_fs from 'fat32' to 'ext4'.
The 'ext4' and 'ext4_rs' are the different implementation of the ext4.
TIPS: Make ensure that the mkefs version of your system lower than 1.70. If not, you have to use another argument to build the ext4 image.
ByteOS is a posix-compatible kernel.
If you are interested in this project, please contact me.
email: 321353225@qq.com qq: 321353225
crates --> arch --> modules --> kernel
- higher half kernel
- Modular skeleton
- global allocator
- RTC device support
- Timestamp --> actual Date/Time timestamp crate
- frame allocator, use bit_field to store page usage
- Interrupt support
- backtrace support
- timer interrupt support
- page mapping support
- get devices info and memory info from device_tree
- VIRTIO blk device support
- Add a banner for os. use tool banner generation tool
- vfs support
- fatfs support
- fs mount support (a temporary solution)
- ramfs support
- devfs support
- async/await support (simple version)
- process support
- VIRTIO net device support
- smp support
- desktop support. eg: dwm, hyprland.
tools/final2023:
- libctest
- libcbench
- busybox
- lua
- lmbench
- iozone
- iperf3
- nerperf
- cyclic
- unixbench
tools/gcc
- gcc
- redis-server
- ssh-simple
- http-server
You can change the TESTCASE
in the makefile to change the target. You can run other program in the sh or change the default program in the kernel/src/tasks/initproc.rs
file.
make run BOARD=qemu LOG=info NET=off
Changing 'LOG=info' to 'LOG=error' if you don't need any info output.