https://github.com/sohnryang/skeleton-os
OS with bare bones only. (WIP)
https://github.com/sohnryang/skeleton-os
assembly c os
Last synced: 3 months ago
JSON representation
OS with bare bones only. (WIP)
- Host: GitHub
- URL: https://github.com/sohnryang/skeleton-os
- Owner: sohnryang
- License: mit
- Created: 2021-01-15T08:24:08.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-12-09T13:43:36.000Z (over 3 years ago)
- Last Synced: 2025-01-18T09:33:03.941Z (5 months ago)
- Topics: assembly, c, os
- Language: C
- Homepage:
- Size: 54.7 KB
- Stars: 2
- Watchers: 3
- Forks: 0
- Open Issues: 6
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# skeletonOS
OS with bare bones only. (That's why the name is skeletonOS)
## Why?
I cloned [torvalds/linux](https://github.com/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](https://github.com/sohnryang/skeleton-os/projects/2)
- 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`](https://mesonbuild.com/) 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](https://wiki.osdev.org/GCC_Cross-Compiler) 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 |
| ------------------------------------------------------------ | --------------------------------------------------------- |
| [](https://github.com/sohnryang/skeleton-os/actions/workflows/libc-unit-test.yml) | [WIP](https://github.com/sohnryang/skeleton-os/issues/14) |