Giter Club home page Giter Club logo

byteos's Introduction

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: [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.

byteos's People

Contributors

yfblock avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.