Skip to content

Latest commit

 

History

History
59 lines (38 loc) · 1.93 KB

README.md

File metadata and controls

59 lines (38 loc) · 1.93 KB

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