Go to file
Maxime 05c8516217
Update README.md
2020-01-28 04:59:04 +01:00
bootloader Made getgdt more descriptive 2020-01-10 10:05:19 +01:00
docs Made getgdt more descriptive 2020-01-10 10:05:19 +01:00
filesystem make_bin makes full filesystem 2020-01-05 22:47:40 +01:00
helpers Add a bit of logging 2020-01-05 22:54:14 +01:00
kernel Made exception handler describe flags 2020-01-10 14:44:09 +01:00
.gdbinit so close yet so far 2020-01-08 22:36:49 +01:00
.gitignore Add demo kernel 2019-12-28 13:47:10 +01:00
Makefile Interrupt and keyboard support 2020-01-09 12:06:45 +01:00
README.md Update README.md 2020-01-28 04:59:04 +01:00

README.md

TABS

Totaal Arbitrair BesturingsSysteem, Zeus maakt een besturingssysteem!

How to use

To compile, you need:

  • i686-elf-gcc for cross-compiling the kernel
  • A system gcc for compiling the host-helpers
  • nasm for compiling the bootloader
  • qemu-system-i386 for emulating (qemu-system-x86_64 will probably work too, but that is not directly supported)

More information about installing a cross compiler can be found here.

If you run make bin, it will generate target/boot.bin, this is a binary file layed out as described in the docs. To burn it on a USB drive, simply dd if=target/boot.bin of=/dev/sdb and the drive is bootable and contains an SFS filesystem with the files in filesystem/.

In case there are errors in the bootloader you can use make compile_kernel to only compile the kernel.

To run TABS in the qemu simulator run make run.

Bootloader

The bootloader is self-written, based on articles on the OSDev wiki. It's a single stage, ELF-loading bootloader in the most basic way possible.

More info in the docs

Kernel

The kernel is based on the bare bones kernel from the OSDev wiki.

Features

  • Terminal output (with newlines!)
  • Very basic (and probably broken) memory management
  • Interrupt handling
  • Keyboard input
  • Exception handling
  • Minimal shell
  • Filesystem interaction
    • Show files in directory
    • Read files in directory
    • Write files in directory
  • Tests
  • Running executables from filesystem
  • Better memory management
  • Better shell

As a test, I've implemented day 1 of advent of code on the AoC branch.