GarnOS is a simple, open-source, 64-bit hobby operating system.
The main goals of GarnOS are compatibility and modularity.
- Terminal Emulator
- Module Loader
- Userspace
- Device Manager
- GCC and Binutils
- At least a minimum toolset to build a cross-toolchain
- QEMU
- Xorriso (for ISO images)
- Python3 (with kconfiglib installed)
- GNU Parted
- kconfig-frontends
- Doxygen (for docs)
- Git
- make and cmake (cmake is required by mlibc)
First of all, you need to build the toolchain:
make all-toolchain
Once you've done that, you must configure the kernel:
make menuconfig # curses (less friendly interface)
make xconfig # qt (more friendly interface)
Then, in the root directory, run:
make all # ISO Image
make all-hdd # HDD Image
NOTE: The ISO image will probably not work. Use the HDD image instead!
You may also run the OS directly, as described below, since the run-*
targets also build the OS in case it hasn't been built already.
In the root directory, run:
make run # Run using ISO Image
make run-hdd # Run using HDD Image
You can also run GarnOS in an EFI environment by appending -uefi
to the commands shown above
For debugging, it is recommended to append DEBUG=y"
to whatever make command you're using.
See LICENSE for details.
- RTC
- SMP
- APIC, I/O APIC
- Timer
- PCI Driver
- AHCI driver
- IDE driver
- FAT Driver
- Ext2 Driver
- Userland
- Scheduler
- Processes and Threads
- Syscalls
- libc
- Driver interface (Custom or UDI)
- GUI
- USB Driver
- Sound
- Networking
- Disk access doesnt work properly on "large" drives (> ~512 MiB).
- Disk access is EXTREMELY slow. It's so slow it takes 2-4 seconds to load a simple program such as
ls
. - AHCI driver doesn't work on real hardware.
- mlibc sometimes panics when running user programs.
General: PCI
Input: PS/2 Keyboards
Storage: IDE, AHCI
File Systems: FAT32
Graphics: Standard Graphics