forked from xamidev/pepperOS
54 lines
1.8 KiB
Markdown
54 lines
1.8 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 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:
|
|
|
|
- the [Limine](https://codeberg.org/Limine/Limine) portable bootloader
|
|
- Marco Paland's freestanding [printf implementation](https://github.com/mpaland)
|
|
- Mintuski's [Flanterm](https://codeberg.org/Mintsuki/Flanterm) terminal emulator
|
|
|
|
...and without these amazing resources:
|
|
|
|
- the [OSDev](https://osdev.org) wiki & forums
|
|
- Intel 64 and IA-32 Architectures Software Developer's Manual
|
|
- Documentation for the [GNU Compiler Collection](https://gcc.gnu.org/onlinedocs/gcc/) |