Hydra is a microkernel with the main goal of keeping the codebase as small and simple as possible. A smaller codebase can be easily maintained and is less prone to bugs or issues, and modern monolithic kernels tend to be tremendously big (e.g. Linux, FreeBSD). Being a microkernel drivers can be written in any language by exposing the kernel API and then run in userspace, this keeps all the system a lot more modular.
To build Hydra you need clang
and lld
. If you want to generate an ISO bootable image you also need xorriso
and for testing in a virtual machine qemu
is also needed.
After all the requirements are satisfied you can just fire the make
command. The Makefile
supports these targets:
all
(compile and link libc and hydra)sys
(just compile the kernel)libc
(just compile libc)test
(compile all and run the os inqemu
)debug
(same as test, but letqemu
wait for agdb
connection)gdb
(rungdb
with a configuration so that it automatically connects toqemu
)clean
(remove generated files)
- Interrupt handling
- Dynamic memory allocation
- Virtual memory management
- ACPI table parsing
- APIC configuration
- HPET timer
- Userspace
- IPC
- Process management
- Disks management daemons (SATA, NVME)
- Filesystem daemons (fat32, hydra-ufs)
- VFS daemon
- POSIX compatibility daemon