OS with bare bones only. (That's why the name is skeletonOS)
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.
- 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.
This project uses meson
as a build system. Therefore, meson
and ninja
is needed.
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
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
libc unit tests | OS integration test |
---|---|
WIP |