furtest 803ac0879b Auto find source files check for changes
Previously the build process removed everything and did all the build
again on each make invocation.
This fixes this behaviour with two changes.
First dynamically find the list of files to build using find instead of
a manually written list.
Then use implicit rules to only build files that need to be built again
instead of recompiling everything.
2026-03-15 17:56:26 +01:00
2026-03-14 09:31:57 +01:00
2026-03-15 09:53:29 +01:00
2026-03-13 12:51:29 +01:00
2025-12-20 09:18:55 +01:00
2025-12-21 15:59:14 +01:00
2026-03-14 09:31:57 +01:00

red-pepper pepperOS: "will never be done"

Trying the kernel

First install the dependencies: sudo apt install python3 xorriso make qemu-system

Also, you have to get an x86_64 toolchain for compilation. The easiest way to do that on most systems is to install it from Homebrew:

brew install x86_64-elf-gcc

Then, to compile the kernel and make an ISO image file: make build-iso To run it with QEMU, make run

TODO

The basics that I'm targeting are:

Basic utility of what we call a "kernel"

  • Implement tasks, and task switching + context switching and spinlock acquire/release
  • Load an executable
  • Filesystem (TAR for read-only initfs, then maybe read-write using FAT12/16/32 or easier fs) w/ VFS layer
  • Getting to userspace (ring 3 switching, syscall interface)
  • Porting musl libc or equivalent

Scalability/maintenance/expansion features

  • Documentation
  • SOME error handling in functions
  • Unit tests
  • Good error codes (like Linux kernel: ENOMEM, ENOENT, ...)

Optional features

In the future, maybe?

  • SMP support (Limine provides functionality to make this easier)
  • Parsing the ACPI tables and using them for something
  • Replacing the PIT timer with APIC

Thanks

PepperOS wouldn't be possible without the following freely-licensed software:

...and without these amazing resources:

Description
64-bit libre hobby kernel
Readme GPL-3.0 1.1 MiB
Languages
C 97.2%
Assembly 1.7%
Makefile 0.7%
Python 0.3%