AquilaOS: yet another hobbyist operating system

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.

Features

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.

Kernel Features:

  • Monolithic kernel
  • Supports x86 archticture (all arch dependent code is seperate from the kernel)
  • Multitasking and Multithreading using POSIX threads
  • Supports ELF format
  • Signals
  • 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)

System Utilities:

  • 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.

25 Comments

  1. 2018-05-14 10:27 pm
  2. 2018-05-15 2:07 am
    • 2018-05-15 3:46 am
      • 2018-05-16 1:57 am
        • 2018-05-16 6:10 pm
          • 2018-05-16 7:11 pm
          • 2018-05-16 7:31 pm
        • 2018-05-16 7:26 pm
        • 2018-05-16 9:20 pm
          • 2018-05-17 4:13 am
    • 2018-05-15 5:03 am
      • 2018-05-15 2:46 pm
        • 2018-05-15 7:17 pm
    • 2018-05-15 12:21 pm
      • 2018-05-15 4:42 pm
        • 2018-05-15 6:18 pm
          • 2018-05-15 8:25 pm
          • 2018-05-15 11:28 pm
        • 2018-05-15 7:24 pm
        • 2018-05-17 8:41 am
          • 2018-05-18 12:25 am
          • 2018-05-18 11:20 am
          • 2018-05-18 9:51 pm
  3. 2018-05-16 2:49 am
    • 2018-05-16 1:18 pm