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 letqemuwait for agdbconnection)gdb(rungdbwith 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