Skip to content
/ fos Public

FOS - an experimental multitasking x86 operating system

Notifications You must be signed in to change notification settings

jcredland/fos

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

49 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FOS

What?

It's a toy operating system. The goal is to have it capable of loading and playing more than one copy of PONG.

Why?

It's good to have a deep understanding of how things work. And what better way to understand operating systems, memory allocation, debuggers and so on than to write an OS from scratch. I can already do things with linker scripts that I had never imagined ...

Status

In development. Boots and functions on QEMU. Not yet tested on real hardware.

It has:

  • A read only FAT16 file system.
  • Physical and virtual memory management
  • Text mode VGA driver
  • A custom boot loader
  • Interrupts
  • A crude CLI
  • Kernel threads
  • ps command

Next:

  • some better text formatting, and a non 80x25 interface, or at least a crude implementation of 'more'. debugging will be easier then.
  • Synchronisation primitives (std::thread, maybe?)
  • User processes and threads.

Milestones

Big milestones will be:

  • VGA graphics driver (or SVGA).
  • libc
  • SMP and 64-bit
  • IPv6 stack

Documentation

Status and documentation: https://docs.google.com/presentation/d/1JLeGdG1nwIE328pD22edmPHvNbw9Wb6zIGZjvydZbrk/edit#slide=id.g7ac98eeed_030

Compiling and running

You will need a cross-compiler and the other GNU binutils kit. Use the i686-elf configuration. There are instructions here: http://wiki.osdev.org/GCC_Cross-Compiler

Also: - QEMU for testing - NASM for assembly

It runs on QEMU for testing. The execute script in the root folder has a -d option that will allow you to attach a debugger.

The .gdbinit script in the root folder contains a series of commands that will set gdb up properly. My suggestion is:

  • Put set auto-load local-gdbinit in your ~/.gdbinit.
  • Run i686-elf-gdb from the root folder of the FOS source.

Then it'll automatically run the FOS specific commands.

About

FOS - an experimental multitasking x86 operating system

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published