Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Garnek0/GarnOS
OS powered by a modular kernel
https://github.com/Garnek0/GarnOS
Last synced: 3 months ago
JSON representation
OS powered by a modular kernel
- Host: GitHub
- URL: https://github.com/Garnek0/GarnOS
- Owner: Garnek0
- License: bsd-2-clause
- Created: 2023-08-02T10:54:06.000Z (over 1 year ago)
- Default Branch: v0.x
- Last Pushed: 2024-07-28T17:42:27.000Z (3 months ago)
- Last Synced: 2024-07-29T14:04:21.418Z (3 months ago)
- Language: C
- Size: 6 MB
- Stars: 7
- Watchers: 3
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-os - GarnOS - Hobby OS powered by a modular kernel. (Open Source Operating Systems)
README
# GarnOS
![](https://tokei.rs/b1/github/Garnek0/GarnOS)
GarnOS is a simple, open-source, 64-bit hobby operating system.
The main goals of GarnOS are compatibility and modularity.
## Notable Features
- Terminal Emulator
- Module Loader
- Userspace
- Device Manager# Building & Running
## Dependencies
- 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)## Building
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.
## Running
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.
# License
See LICENSE for details.# Milestones
- [x] RTC
- [x] SMP
- [x] APIC, I/O APIC
- [x] Timer
- [x] PCI Driver
- [x] AHCI driver
- [x] IDE driver
- [x] FAT Driver
- [ ] Ext2 Driver
- [x] Userland
- [x] Scheduler
- [x] Processes and Threads
- [x] Syscalls
- [x] libc
- [ ] Driver interface (Custom or UDI)
- [ ] GUI
- [ ] USB Driver
- [ ] Sound
- [ ] Networking## Known Bugs
- 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.## Support
**General**: PCI \
**Input**: PS/2 Keyboards \
**Storage**: IDE, AHCI \
**File Systems**: FAT32 \
**Graphics**: Standard Graphics