An OS kernel written in rust. Non POSIX
Rust Assembly Makefile Python Other
Permalink
Failed to load latest commit information.
Bootloaders Bootloader ARMv8 - Convert Elf64 symbol information to Elf32 Feb 18, 2017
Graphics Usermode - Generate and load RLE 24bpp images, add buffered reader Jul 1, 2016
Hooks Add the pre-commit hook that validates source sanity Aug 9, 2015
Kernel Makefile - Fix up modules with only emitting .rlibs Feb 19, 2017
Notes TODO - Add async Feb 7, 2017
SystemTest SystemTest - Add timeout that's probably still needed? Oct 20, 2016
Usermode ARMv8 - FIx memcmp Feb 17, 2017
acpica ACPICA - Allow insecure download of acpica code Oct 21, 2016
externals/crates.io externals - Add .repo files for the other externals (not used yet) Jun 20, 2015
.gitignore Various file cleanups Apr 15, 2016
.travis.yml Travis CI - Change rustc tarball URL Jan 1, 2017
BuildCrossCompiler BuildCrossCompiler - Use parallel build Oct 17, 2015
COPYING Add licence and readme Sep 7, 2014
CheckSubrepos.sh Add a quick script to check the status of external repositories Jul 20, 2015
LineCount.sh Rough script to do line counts Dec 20, 2015
Makefile Usermode - Work on shell Oct 15, 2015
PushScreenshots Various file cleanups Apr 15, 2016
README.md Updated readme Dec 23, 2015
UnsafeAudit.sh Update UnsafeAudit.sh to correcly handle unsafe blocks with the `{` o… Sep 21, 2015
UpdateSubrepos.sh Fiddling with event waiting support, Add script to run git pull on su… Jul 24, 2015
annotate_backtrace.sh Update annotate_backtrace script so it works with userland dumps Dec 12, 2015
common.mk Kernel - Initial draft of ARMv8 port Feb 7, 2017
keycodes.inc.rs Usermode - Fix compile errors and warnings from upgrade Sep 8, 2016
libcore_nofp.patch Libcore patch - Update for altered libcore/fmt/mod.rs Feb 12, 2017
syscalls.inc.rs Syscalls - Completed stubbing of RPC Jun 27, 2016

README.md

"Tifflin" Experimental Kernel (and eventually Operating System)

This is an experiment in writing an OS Kernel in rust (http://rust-lang.org).

Mostly the architecture is being designed as I go along, but it will be written to be architecture independent (the current verison is x86_64/amd64).

Design Features

  • Runtime module initialisation with dependencies
  • Clear user-kernel separation of duties
    • Userland owns the ELF loader, kernel uses a custom format for init.
  • Object-based syscall API
  • Kernel-provided window manager (yes, I know old windows did this)

Progress

  • Filesystems
    • ISO9660
    • FAT12/16/32
  • Storage
    • (P)ATA
    • SATA (AHCI)
    • ATAPI CDROM
    • VirtIO Block
  • Input
    • PS2 Keyboard/Mouse
  • Graphics
    • Multiboot only
  • GUI Apps
    • Login (Credentials are root/password)
    • "GUI Shell" (with background!)
    • Text Terminal app (with basic set of commands)
    • Filesystem viewer
  • Architectures
    • amd64 (aka x86_64) - Boots to limit of implementation
    • armv7 - Loads userland then crashes

Build Dependencies

  • nasm
  • imagemagick (for graphics)
  • GNU Binutils (cross-compiled)
  • GCC (for ACPICA)