Skip to content

sohnryang/skeleton-os

Repository files navigation

skeletonOS

OS with bare bones only. (That's why the name is skeletonOS)

Why?

I cloned torvalds/linux a few weeks ago, and still don't know what I should do. So I decided to learn some OS concepts by building one.

Project Goals

Track progress here

  • Write most of the OS in C language for portability
    • Main target arch will be x86(-64) and ARM though
  • Should run on actual hardware such as Raspberry Pi
  • Feature basic OS elements such as file system and process scheduling.

Building & Running the OS

This project uses meson as a build system. Therefore, meson and ninja is needed.

x86

x86 builds require a compiler which targets i686-elf. OSDev Wiki has an article about how to build such compiler yourself.

$ meson setup build --cross-file=cross-files/cross.ini --cross-file=cross-files/i686.ini
$ cd build
$ ninja

os.bin will be created after a successful build. This file can be run in QEMU using -kernel flag.

$ qemu-system-i386 -kernel os.bin

local (libc test only)

libc is platform-independent, so it can be built locally, for running unit tests.

$ meson setup build-libc --native-file=native-files/libc-local.ini
$ cd build-libc
$ ninja

Unit test can be run using test target.

$ ninja test

Build Status

libc unit tests OS integration test
Run libc unit tests WIP

About

OS with bare bones only. (WIP)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published