Skip to content
hellisabove edited this page Sep 30, 2021 · 6 revisions

Before Building

To build Aquila you'll need to install a few packages.

  • texinfo for newlib
  • grub-pc-bin for GrUB bootloader in iso image (you do not need that if you don't intend to build an iso image)
  • xorriso for bootable iso image (you do not need that if you don't intend to build an iso image)

You may use the following command to install the required packages

  • Ubuntu:
sudo apt install texinfo grub-pc-bin xorriso
  • Fedora
sudo dnf install texinfo grub-pc-bin xorriso
  • Arch Linux
sudo pacman -S texinfo grub libisoburn
  • Please edit this page to add instructions for other distros.

I'll assume you've cloned the repository and cd-ed into it.

Aquila dependencies

To build the dependencies for Aquila use the following commands:

cd build-tools
bash build.sh
cd ..

NOTE: This will download a few relatively large packages, the process is not recoverable on failure, make sure your connection can withhold this process.

aquila.iso

If you don't know what you need to build, this is probably it. To build a bootable iso image, use the following command (in the top directory):

make aquila.iso

That's it! You should now find aquila.iso in the top directory. Have fun with it!

[Advanced] Building the kernel only

If you want to build the kernel only without producing an iso image, you can run

make CONFIG={config file} kernel

where {config file} is one of the configuration files listed in kernel/configs without .mk extension, for example, for i686-pc the command would be

make CONFIG=i686-pc kernel

CONFIG is a mandatory argument for building the kernel. You can then find the kernel image in kernel/arch/{ARCH}/kernel.elf. You can then load the kernel with any multiboot compliant bootloader.

FAQ

  • Why do we need to build a cross-compiler?

The compiler packaged in your system most likely targets your system (e.g. Linux) and does a few things that depend on your system (e.g. linking with libc). You can use your system GCC but you'd need to pass a few extra flags and modify some other things.

Clone this wiki locally