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 |