An OS kernel written in rust. Non POSIX
Switch branches/tags
Nothing to show
Clone or download
Latest commit 58d630f Sep 16, 2018
Permalink
Failed to load latest commit information.
Bootloaders ARMv7 - Fix bootloader and kernel Jun 9, 2018
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 Various fiddling Sep 16, 2018
Notes Kernel - Messing about with async v3, looking better. Apr 15, 2018
SystemTest Systest - Add video recording via VNC Mar 16, 2017
Usermode Various fiddling Sep 16, 2018
acpica ACPICA - Allow insecure download of acpica code Oct 21, 2016
externals/crates.io Bootloaders - Move utf16_literal crate to an external Mar 18, 2018
.gitignore gitignore - Minor update Apr 15, 2018
.travis.yml Or don't try to run in travis Mar 11, 2018
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 Makefile - Rework compiler install, switch UEFI bootloader to xargo Jan 13, 2018
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 ARMv7 - Fix bootloader and kernel Jun 9, 2018
keycodes.inc.rs Kernel - Fix dropped keypresses when one key is pressed before the pr… Jun 10, 2018
libcore_nofp.patch Kernel - Nightly compile fixes Nov 11, 2017
syscalls.inc.rs User/Kernel - Stub out the network syscalls (removes dead code warnings) Jun 18, 2018

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)