Skip to content

yfblock/ByteOS

 
 

Repository files navigation

ByteOS

How to use this project.

Install build package.

cargo install --git https://github.com/Byte-OS/cargo-byteos

Run with make file.

# riscv64
make ARCH=riscv64 run
# aarch64
make ARCH=aarch64 run
# x86_64
make ARCH=x86_64 run
# loongarch64
make ARCH=loongarch64 run

Run with build tool.

# riscv64
byteos build byteos.toml riscv64-qemu
# aarch64
byteos build byteos.toml aarch64-qemu
# x86_64
byteos build byteos.toml x86_64-qemu
# loongarch64
byteos build byteos.toml loongarch64-qemu

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

Additionally, you maybe need to careabout the workspace in the Cargo.toml(Improve it in the future).

Kernel struct Design

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

TODO List

  • 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.

Program support

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.

run busybox sh on qemu platform

make run BOARD=qemu LOG=info NET=off

Changing 'LOG=info' to 'LOG=error' if you don't need any info output.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 66.1%
  • Shell 28.7%
  • Lua 2.1%
  • Makefile 1.2%
  • C 1.1%
  • Assembly 0.4%
  • Other 0.4%