49 lines
1.7 KiB
Markdown
49 lines
1.7 KiB
Markdown
# <img width="40" height="40" alt="red-pepper" src="https://i.ibb.co/mrHH6d1m/pixil-frame-0-4.png" /> 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
|
|
|
|
- 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
|