Skip to content

Byte-OS/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 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

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.

Kernel struct Design

ByteOS is a posix-compatible kernel.

If you are interested in this project, please contact me.

email: [email protected] 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