AquilaOS is a UNIX-like Operating System that started in 2016. Based on another OS I developed and many trials and failures since 2012, it finally came to light.
The goal behind AquilaOS is to make a UNIX-like OS adhering to a quote by K. Thompson in UNIX Implementation.
The kernel is the only UNIX code that cannot be substituted by a user to his own liking. For this reason, the kernel should make as few real decisions as possible. This does not mean to allow the user a million options to do the same thing. Rather, it means to allow only one way to do one thing, but have that way be the least-common divisor of all the options that might have been provided.
From the start, AquilaOS focused on being as transparent and architecture-agnostic as possible. To even raise the challenge, strict compliance with C standard (C99) is a must which allows compiling with “-O3” (strict optimization in GCC) and “-Wall -Wextra -Werror”. Currently AquilaOS v0.0.1a is released and awaiting testers and contributors.
AquilaOS is mostly written in C with a few assembly parts when absolutely needed. It consists of a monolithic kernel and a set of user utilities.
- Monolithic kernel
- Supports x86 archticture (all arch dependent code is seperate from the kernel)
- Multitasking and Multithreading using POSIX threads
- Supports ELF format
- Blocking and Non-blocking I/O
- Sessions, process groups and job control
- Virtual file system (VFS) with support for initramfs, tmpfs, devfs, devpts, procfs and ext2
- Devices subsystem using devices files with major/minor numbers
- Supported devices include: PS/2 Keyboard, IDE/ATA Harddisk, Framebuffer device (fbdev, Linux API) with VESA 3.0, 8250 UART
- Memory management subsystem (with demand paging and copy-on-write)
- aqbox: several UNIX/POSIX utilities in one binary (similar to BusyBox)
- fbterm: Framebuffer based terminal (with wallpaper) with VT100 emulation using libvterm
- lua: Lightweight, multi-paradigm programming language
- kilo: Simple text editor for ANSI/VT100 terminal
- tcc: Tiny C Compiler by Fabrice Bellard (Who made Qemu and FFmpeg)
- nuklear: Immediate mode graphics library – experimental
The source code is released under GPLv3 licence and hosted on Github, https://github.com/mohamed-anwar/Aquila. Make sure to check it out and follow up with suggestions, or better yet, contributions.
Kudos to the author. Hope it will get a cool feature in the future.
Aspiring OS dev’ers always face this dilemma: to posix, or not to posix. On the one hand, posix gives your new OS creation access to a wide variety of posix compliant software, most of which you’d never realistically get the authors to port to your tiny OS. On the other hand though, posix is a messy legacy standard and operating systems based on it have been done so many times already that I’d kind of like to see new generations focus on building something new and creative instead.
This is meant to be a not a criticism of the author, who is talented, but criticism of an industry that only rewards incumbents over and over again. It’s like in hollywood, several billions go to reboots and big name actors while being unknown & small is a struggle despite putting in just as much effort and creativity. Some might retort “who cares”, but IMHO an industry with diminishing capacity for new ideas looses the sense of awe and wonder that it used to have; things get stale and repetitive.
Anyways, congrats on the OS. I respect the dedication and skill that go along with os-dev’ing. You got further than my OS years ago. There’s no better way to learn low level programming than to program your own OS