# red-pepper pepperOS: "will never be done" ## Trying the kernel First install the dependencies: `sudo apt install xorriso make qemu-system` 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" - Fix terminal driver (backspace issues, scrolling) OR add Flanterm or equivalent - 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 (syscalls) - Porting musl libc or equivalent ### Scalability/maintenance/expansion features - Global config header file - Documentation - SOME error handling in functions - Unit tests - Good error codes (like Linux kernel: ENOMEM, ENOENT, ...) - Make the panic function work within itself without dependencies + error message (and still get cpu context?) ### 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: - the [Limine](https://codeberg.org/Limine/Limine) portable bootloader - Marco Paland's freestanding [printf implementation](https://github.com/mpaland) - the [ZAP](https://www.zap.org.au/projects/console-fonts-zap/) PSF console fonts ...and without these amazing resources: - the [OSDev](https://osdev.org) wiki & forums