Soaplin is a Limine-powered and UNIX-like operating system kernel mainly built for amd64.
Find a file
RaphProductions 0652010b1c kernel: Various changes
+ elf: Prevent dynamically linked programs from running on Soaplin.
+ sched: Support creating a process from a program_t structure.
+ syscall: Fix a bug where using syscall number 1024 would crash the OS.
+ syscall: Added a write syscall. It can only be used for writing to the standard output (FD: 1)
2025-05-17 01:26:38 +02:00
initramfs kernel: various changes. 2025-05-11 23:54:14 +02:00
kernel kernel: Various changes 2025-05-17 01:26:38 +02:00
testing kernel: Various changes 2025-05-17 01:26:38 +02:00
util try to fix page fault 2025-05-09 15:07:22 +02:00
.gitignore kernel - various changes 2025-05-16 08:01:37 +02:00
CONTRIBUTING.MD kernel: various changes. 2025-05-11 23:54:14 +02:00
GNUmakefile kernel - various changes 2025-05-16 08:01:37 +02:00
initramfs.tar kernel: various changes. 2025-05-11 23:54:14 +02:00
LICENSE kernel: some random modifications 2025-05-07 22:12:35 +02:00
limine.conf kernel - v0.7 beta 2025-05-15 18:49:09 +02:00
README.md kernel: try some shit to get the compiler to put a backtrace 2025-05-16 15:58:51 +02:00
strings.txt vfs - kinda good vfs implementation 2025-05-16 20:53:35 +02:00
txt.txt vfs - kinda good vfs implementation 2025-05-16 20:53:35 +02:00

Soaplin

The Soaplin kernel is a new Unix-like operating system kernel.

Features

  • x86_64 support (kinda)
  • Memory management (VMM/PMM/VMA/kmalloc)
  • Simple pre-emptive scheduler
  • Ring 3 (user mode) support
  • ELF loader
  • ACPI
  • Symetric Multiprocessing (It runs code, but the scheduler is running on 1 processor.)

In the works

  • Virtual File System
  • FPU support

To come

  • RTC support
  • EXT2 driver
  • FAT32 driver
  • TAR-based init ram disk
  • Video driver for Bochs graphics adapter, and the VMware display adapter.

Known bugs

  • If a user process calls the syscall handler by using interrupts, the system may crash due to a Page Fault.

Building

To build Soaplin, you must ensure you have these:

  • The Netwide Assembler (nasm)
  • A compiler (both GCC & Clang works!) (In the future, a custom toolchain would be built.)
  • A linker (both GNU LD & LLVM linker works too!)

Clone the repo, and run "make" in it!

Acknowledgements

Thanks to all these people ❤️

  • Limine contributors: The Limine bootloader, used for kicking up Soaplin
  • Kevin Alavik (kevinalavik): VMAs implementation
  • Astrido (asterd-og): IOAPIC/LAPIC (from ZanOS)