Skip to content

A microkernel-based extensible operating system

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING
Notifications You must be signed in to change notification settings

anillo-os/anillo-os

Repository files navigation

Anillo OS

A microkernel-based extensible operating system

License

Anillo OS is licensed under the LGPLv3. Refer to theCOPYING and COPYING.LESSER files distributed along with it for more information.

Building

Building Anillo OS requires the following programs:

  • Clang - to compile the OS (Clang version >= 12).
  • LLD - to link the OS.
  • CMake - to compile the OS (CMake version >= 3.20).
  • Ninja (optional) - to compile the OS quickly.
  • Python 3 - for various scripts during the build process.
    • Lark package - for the spookygen script

Creating a disk image for Anillo OS requires the following programs:

  • sgdisk - to create the disk image.
  • partfs - to mount the disk image without root access.
  • FUSE - to use partfs.
  • mtools - to operate on the EFI partition.
  • mkfs.fat - to format the disk image.

To build the OS, use CMake:

export ANILLO_ARCH=$(uname -m)
mkdir -p build/${ANILLO_ARCH}

# remove `-G Ninja` if not using Ninja
# change Release to Debug for debug builds
cmake -S . -B build/${ANILLO_ARCH} -G Ninja -DCMAKE_BUILD_TYPE=Release

cmake --build build/${ANILLO_ARCH}

To build for a different architecture than that of your host, change the ANILLO_ARCH environment variable or define ANILLO_ARCH as a CMake variable (e.g. with a command line flag like -DANILLO_ARCH=<whatever>).

To generate compile_commands.json, add -DCMAKE_EXPORT_COMPILE_COMMANDS=1 to the CMake configuration step above.

Testing

Testing Anillo OS requires the following programs:

  • qemu - to run the OS.
  • OVMF/AAVMF - to run UEFI under qemu (depending on the architecture you want to build for).

To test the OS with QEMU, execute the test/run.sh script from the root of the source tree. To test a different architecture than that of your host, use the ARCH environment variable (e.g. ARCH=aarch64 ./test/run.sh).

About

A microkernel-based extensible operating system

Resources

License

LGPL-3.0, GPL-3.0 licenses found

Licenses found

LGPL-3.0
COPYING.LESSER
GPL-3.0
COPYING

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published