The Stupid Operating System
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
boot fix(Makefile): fix issues finding target specs Jan 24, 2018
cpu chore: update dependency versions Jan 24, 2018
elf feat(elf::section): use PAddr debug formatter in section formatter Jun 6, 2017
memory fix(memory): update iter::Step implementation Jan 27, 2018
paging chore: update dependency versions Jan 24, 2018
params feat(params::InitParams): init params now carries ELF sections iterator May 27, 2017
scripts fix(install-env.sh): Check for xargo install before installing Jan 24, 2018
sos_alloc chore: update dependency versions Jan 24, 2018
sos_intrusive fix(sos_intrusive): temp fix for #111 Jan 24, 2018
src fix(alloc): fix broken build resulting from removal of `libcollections` Jun 18, 2017
targets fix(Makefile): fix issues finding target specs Jan 24, 2018
util fix(util::Align): replace num::One with iter::Step May 25, 2017
vga fix(vga): temporary fix for #111 Jan 24, 2018
.editorconfig [ci skip] Add editorconfig May 30, 2016
.gitignore chore: ignore more editor-generated stuff Jan 24, 2018
.gitmodules remove unused submodules Oct 6, 2016
.travis.yml chore: add gitter notifications to travis builds Feb 16, 2018
BUILDING.md [build] remove nasm dependency from docs & install scripts Feb 1, 2017
Brewfile [build] remove nasm dependency from docs & install scripts Feb 1, 2017
CHANGES.md chore(elf): version bump ELF crate Mar 15, 2017
CODE_OF_CONDUCT.md doc: update copyright dates, emails in docs May 24, 2017
CONTRIBUTING.md doc: update copyright dates, emails in docs May 24, 2017
Cargo.toml chore: update dependency versions Jan 24, 2018
LICENSE-APACHE chore: add Apache license Mar 10, 2017
LICENSE-MIT Add MIT License Jan 18, 2016
Makefile fix(Makefile): fix issues finding target specs Jan 24, 2018
Notes.md [docs] add some bad notes Jan 15, 2017
README.md chore: clean up readme badges Sep 4, 2018
Vagrantfile [Vagrantfile] fix Rustup being installed to root user May 31, 2016
Xargo.toml fix(alloc): fix broken build resulting from removal of `libcollections` Jun 18, 2017
build.rs [x86_64][boot] clean up some leftover stuff from asm boot Jan 31, 2017
rustfmt.toml chore: add rustfmt configs Mar 9, 2017
tokamak.toml [build] add tokamak.toml Sep 1, 2016

README.md

Stupid Operating System

Build Status MIT License Latest RustDoc Gitter

SOS is a simple, tiny toy OS implemented in Rust.

I'm writing this mostly for fun, to learn more about OS design and kernel hacking, so don't expect anything new or exciting out of this project.

Inspiration, and a reasonable amount of code, taken from @phil-opp's great series of blog posts on the subject, Charlie Somerville's rustboot, and Samy Pessé's How to Make an Operating System.

design goals

  • POSIX compliance is not a goal (though it would be cool)
  • Hybrid/loosely microkernel (i.e., move code to user space when convenient/practical)
  • Possibly provide the Rust stdlib at the OS level.
  • JVM-style memory allocation?
  • Possibly experiment with a Plan 9-esque networking stack eventually?

building & running

I've included a simple Makefile to automate building and running SOS. This README lists most of the important make targets, but there's also a $ make help command, which will print a list of all available targets.

setting up your build environment

In order to build SOS, you'll need to properly configure your build environment. Since this process is fairly complex, I've provided some automatic installation shell scripts to make it a bit more painless.

  • $ make env will install and configure build dependencies

If you don't trust the scripts, or if you're curious to know what they're doing, you can also follow the manual install instructions in BUILDING.md.

building & running the OS

  • $ make kernel compiles & links the kernel binary
  • $ make iso makes the kernel and builds a bootable ISO image
  • $ make run compiles the kernel, makes the ISO, and boots QEMU from the ISO