Skip to content

Repository files navigation

Aether - Experimental Operating System in Rust
======================================================

WHAT IS AETHER?
---------------

  Aether is an experimental 64-bit operating system kernel written in Rust.
  It aims to provide a safe, and modern kernel architecture targeting
  x86_64 systems using the Limine boot protocol.


HARDWARE & ARCHITECTURE SUPPORT
-------------------------------

  Aether currently targets the 64-bit x86 architecture (x86_64-unknown-none).
  It is designed to run on bare-metal x86_64 hardware or hypervisors / emulators
  such as QEMU.


PREREQUISITES
-------------

  To compile and run Aether, the following packages and tools are required:

  - Rust Toolchain:
    rustc and cargo. The toolchain version is pinned via
    `rust-toolchain.toml`.

  - ISO Utilities:
    xorriso (required to create bootable ISO images)

  - Emulator:
    qemu-system-x86_64 with a graphical display backend such as
    `qemu-ui-gtk` or `qemu-ui-sdl`.

  - UEFI Firmware:
    OVMF (Open Virtual Machine Firmware) or another compatible
    x86_64 UEFI implementation.

  - Hardware Virtualization:
    KVM support is required. Aether relies on CPU features that are not
    fully available under QEMU's software emulation (TCG), including
    TSC-Deadline timer functionality.


HOST PLATFORM
-------------

  Linux is currently the only supported build and development platform.

  Windows and macOS have not been tested. While cross-compilation may be
  possible, no support is provided for non-Linux environments.


BUILDING THE KERNEL
-------------------

  Build scripts are provided in the `build/` directory.

  1. Debug Build:
     $ ./build/debug.sh

     This command compiles the kernel in debug mode, places the ELF binary
     into `iso/boot/aether.elf`, and creates the bootable `aether.iso` image.

  2. Release Build:
     $ ./build/release.sh

     This command compiles the kernel with optimizations and generates the
     final `aether.iso` image.


RUNNING WITH QEMU
-----------------

  After building `aether.iso`, you can launch it in QEMU using one of the
  following commands.

  Note:
    Aether is a UEFI-only operating system and requires OVMF firmware.
    The firmware path may vary depending on the host operating system or
    distribution.

  Standard Execution:
    $ qemu-system-x86_64 \
      -bios <path-to-OVMF-firmware> \
      -cdrom aether.iso \
      -cpu host \
      -enable-kvm

  With Serial Output to Terminal:
    $ qemu-system-x86_64 \
      -bios <path-to-OVMF-firmware> \
      -cdrom aether.iso \
      -cpu host \
      -enable-kvm \
      -serial stdio


NOTES
------

  - Legacy BIOS boot is not supported.
  - UEFI firmware is required.
  - QEMU + OVMF + KVM is the primary development and testing environment.
  - Limine is used as the bootloader.


DIRECTORY LAYOUT
----------------

  build/      - Build automation scripts (debug.sh and release.sh).
  iso/        - ISO structure containing Limine bootloader configuration and binaries.
  src/        - Core kernel source code written in Rust (GDT, interrupts, memory, ACPI, logging).
  targets/    - Target specification files for target architecture configuration.
  linker.ld   - Linker script specifying kernel section placement in memory.
  Cargo.toml  - Package manifest and crate dependencies.
  LICENSE     - GNU General Public License v2.0 (GPL-2.0).


LICENSE
-------

  Aether is distributed under the terms of the GNU General Public License v2.0 (GPL-2.0).
  See the LICENSE file for details.

Releases

Packages

Contributors

Languages