Giter VIP home page Giter VIP logo

ors's Introduction

ors

ors is an experimental x86_64 OS implementation with Rust.

Setup

# Rust nightly required at the moment
rustup default nightly

# Build ors-loader.efi and ors-kernel.elf
make

# Run on QEMU
make qemu
# ... is equivalent to
./qemu/make_and_run_image.sh \
    target/x86_64-unknown-uefi/debug/ors-loader.efi \
    target/x86_64-unknown-none-ors/debug/ors-kernel.elf

Comparison

ors is based on MikanOS, blog_os (Second Edition), and xv6.

ors MikanOS blog_os xv6
Target x86_64 x86_64 x86_64 x86 1
Written in Rust C++ Rust C
Boot by UEFI BIOS UEFI BIOS Legacy BIOS 2 Legacy BIOS
Screen Rendering GOP by UEFI GOP by UEFI VGA Text Mode VGA Text Mode
Serial Port 16550 UART - 16650 UART 16650 UART
Hardware Interrupts APIC APIC 8259 PIC APIC
Keyboard Support PS/2 USB (xHCI) PS/2 PS/2
Mouse Support - USB (xHCI) - -
Block Support VirtIO over PCI - 3 - IDE 4
Timers APIC + ACPI PM APIC + ACPI PM 8259 PIC APIC
Multitasking Preemptive Preemptive WIP 5 Preemptive
File System FAT FAT 6 - original 7

Roadmap

  • Complete ゼロからの OS 自作入門
    • Chapter 0-3: Boot loader
    • Chapter 4-5: Screen rendering
    • Chapter 6, 12: User inputs
    • Chapter 7: Interrupts
    • Chapter 8: Physical memory management
    • Chapter 9-10 (skipped)
    • Chapter 11: Timers
    • Chapter 13-14: Multitasking
    • Chapter 15-16: Terminal and comamnds
    • Chapter 17: File system
    • Chapter 18: User applications
    • Chapter 19: Paging
    • Chapter 20: System calls
    • TBD
    • Chapter 27: Application memory management
    • TBD
  • Complete Writing an OS in Rust (second edition)
    • Bare Bones
    • Interrupts
    • Memory Management
    • Multitasking (Incomplete)
  • Compare with xv6
  • Enable multicore
  • Try to implement TCP protocol stack

Resources

Footnotes

  1. Maintaining the x86 version have stopped, and switched to the RISC-V version

  2. UEFI is planned

  3. Supports only very limited reading (by UEFI Block I/O)

  4. RISC-V version of xv6 supports VirtIO over MMIO

  5. blog_os supports Cooperative Multitasking at the moment

  6. Read-only support

  7. Simpler but similar to modern UNIX file systems, including crash recovering

ors's People

Contributors

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