ARMOS is an operating system kernel targeting the ARMv8-A architecture. Hereby, the Raspberry Pi 3B+ serves as the main test platform. The overall goal of this project is about providing some insights of operating system development in the context of the ARM architecture.
To build the kernel8.img image file, the following requirements must be met:
- GNU C++ Compiler for ARMv8-A:
aarch64-linux-gnu-gcc
- GNU Binary Utilities:
community/aarch64-linux-gnu-binutils
- Python ELF Parser:
lief
On Arch Linux, those requirements can be satisfied by installing following packages:
pacman -S aarch64-linux-gnu-gcc
pacman -S aarch64-linux-gnu-binutils
pip install lief
Afterwards, the kernel can be compiled, linked and converted to binary format using the following make target:
make all
If it is necessary to debug the build process, addition output can be enabled
using the -verbose
suffix:
make all-verbose
To select the target user-space application, the APP variable can be changed.
make APP=<app> all
ARMOS uses Doxygen to generated documentation from annotations within the
header files. The following make target will produce the HTML documentation
located in the doc/build/index.html
subdirectory:
make doc
IMPORTANT: Every committed interface must be documented via Doxygen!
The primary test platform features the Raspberry Pi 3B+ which can be virtualized using QEMU. To do so, the appropriate package must be installed. For Arch Linux, the package can be installed as following:
pacman -S qemu-arch-extra
To run QEMU, the following make target can be used:
make qemu
If a GDB instance should be launched and connected to QEMU, the make target below can be used:
make qemu-gdb