Skip to content

Pear0/rustos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ba2a059 · Feb 14, 2021
Feb 13, 2021
Feb 14, 2021
Dec 13, 2020
Dec 17, 2020
Feb 7, 2020
Feb 14, 2021
Feb 14, 2021
May 2, 2020
Jun 7, 2020
Nov 8, 2020
Sep 1, 2020
Feb 14, 2021
Feb 14, 2021
Feb 13, 2021

Repository files navigation

RustOS

This OS started as a class project for CS 3210 at Georgia Tech, but I have continued developing new features.

Class Pieces:

  • Bootloader
  • GPIO
  • UART Shell
  • FAT32
  • Exception Handlers
  • Preemptive Scheduling
  • Virtual Memory Management
  • Loading user-space processes

Pieces I developed:

  • Multi-core support (boot the other 3 cores on the RPi 3)*
  • Suspend/Resume, process affinity, process scheduling statistics
  • Ethernet (using USPi)*
  • Custom network stack including ARP, IPv4, TCP and ICMP echo
  • Telnet Shell
  • Interface to the RPi DMA devices
  • Initializing the frame buffer and mirroring shell to screen
  • Hypervisor using the ARMv8 virtualization exception level
  • Virtualized interrupt controllers timers, and UART for the hypervisor guests
  • Virtualized NIC and fork of USPi that enables pass-through of MAC addresses so that hypervisor guests can act as different network devices
  • Lock registry to enable runtime inspection of locks and statistics tracking
  • Timer-based profiling of kernel/hypervisor and guest
  • Symbolification of kernel/hypervisor when viewing profiling results by processing DWARF symbols using gimli
  • (very early stages) Support for Khadas VIM3, a Pi-like board but much more powerful

* Items with an asterisk were added to the CS 3210 course curriculum after I had added the features

Building

Cap'n Proto is required for lib/tracing. On Ubuntu, this can be installed with apt install capnproto libcapnp-dev.

The build scripts use elftools which can be installed with pip install pyelftools.

kern/set-nightly.sh will configure rustup to use an appropriate nightly for this project.