Skip to content
A Basic x86 Operating System/Kernel
C Assembly Objective-C Makefile C++ Shell
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
docs
kernel Merge branch 'buildsystem-overhaul' of github.com:shawnanastasio/Shaw… Mar 6, 2018
libsc
.gitignore
LICENSE Add GNU GPL v3 license Apr 18, 2016
Makefile Rebase buildsystem-overhaul on master Mar 6, 2018
README.md
env.sh Initial Commit Feb 27, 2016
grub.cfg Finish new makefile build system Mar 6, 2018

README.md

ShawnOS

ShawnOS is an Operating System/Kernel meant to help learn the fundamentals of Operating System development, primarily on Intel x86-based architectures.

The project is very much a work-in-progress at this point and many design decisions regarding the OS are yet to be made. Eventually, the project aims to reach a basic level of usability, with a functional console environment and C compiler.

All code is licensed under the GNU GPL v3 unless explicitly stated elsewhere.

Building

In order to build and run ShawnOS, a gcc cross-compiling toolchain must be present for the desired target (currently i686-elf is only supported).

The OSDev Wiki has a tutorial on how to create the required toolchain for Linux, OS X, and Windows here.

In addition to the tools mentioned in the OSDev wiki, you will also need a few more packages.

  • nasm
  • xorriso
  • mtools
  • grub-pc (Debian/Ubuntu only)

These are available in most Linux distributions' package managers.

# Debian/Ubuntu
$ sudo apt-get install nasm xorriso mtools grub-pc-bin

# Fedora
$ sudo dnf install nasm xorriso mtools 

# Arch Linux
$ sudo pacman -S nasm xorriso mtools

Once you have set up the necessary toolchain, you must update the PREFIX and PATH variables in env.sh to reflect its location.

Example:

export PREFIX='$HOME/opt/cross'
export TARGET=i686-elf
export PATH='$PREFIX/bin:$PATH'

Once you have completed this, simply run the following to load the variables:

$ source env.sh

Now you may build an ISO image of the OS:

$ make iso

If you have qemu installed for the proper architecture, you can also run ShawnOS in a virtual machine:

$ make qemu

Goals

The project eventually aims to provide a basic usable user space with console utilities and a C compiler.

Resources

Much of the code from ShawnOS is adapted from or inspired by the following resources:

The OSDev Wiki

Bran's Kernel Development Tutorial

You can’t perform that action at this time.