build/docs/layers.md

3.4 KiB

Build System Layers

The layer configuration is currently organized into 4 different kinds of layers:

  • BSP layers that configure the toolchain and kernel build for a specific board. All other layers are stacked on top.
  • Mid-level program layers that simply add generic programs of some kind. For instance pygos-cli configures packages for a simple, command line based system on top of a BSP layer.
  • Product base layers that add hardware independent configuration for a specific kind of product. For instance router-base adds programs and configurations for the router group of products, but that don't depend on the specific board.
  • Product and board specific layers that add the missing configuration for a product running on a specific board. For instance router-rpi3 adds the final configurations to the router-base product for the Raspberry Pi 3.

As an example, the product router-rpi currently uses the following layer configuration:

bsp-rpi3
pygos-cli
pygos-cli-net
router-base
router-rpi3

Layer Index

This section contains an overview of the currently available configuration layers.

BSP Layers

  • bsp-alix configures the cross toolchain for the AMD Geode LX based PC Engines brand ALIX 2d3 or 2d13 board (3 Ethernet ports, real time clock). A main line LTS kernel is used. The kernel configuration is tuned for usage as some kind of network appliance. The release package is called release-alix and contains a shell script for installing on a CF card or generating a disk image that can be dumped onto a CF card.

  • bsp-rpi3 configures the cross toolchain for the Raspberry Pi 3. The output is 32 bit ARM code. The kernel is a recent vendor kernel supplied by the Raspberry Pi foundation. The kernel config is mostly based on the upstream default config with additional networking options enabled and many options not used by the Pygos system disabled (filesystem drivers, etc.). The release package is called release-rpi3 and contains a shell script for installing on a micro SD card or generating an image for a micro SD card.

  • bsp-qemu64 configures the cross toolchain for a generic 64 bit x86 target. The main line LTS kernel with a stripped down default and kvm config. The release package is called release-qemu and contains a shell script for running the system using direct kernel boot in a KVM accelerated Qemu with a virtio GPU, virtio network card with user mode networking and overlay partition on a 9PFS mounted host directory.

Mid-level Program Layers

  • pygos-cli is the base layer for command line interface based images. It adds the bash shell, the init system and basic command line programs like coreutils.

  • pygos-cli-net adds command line programs for networked systems such as ldns, nftables or iproute2.

Product Specific Layers

  • router-base contains basic configuration for the router class of products. It adds unbound, dnsmasq, openssh, nginx and tcpdump. The kernel parameters are configured to enable IP forwarding, resolv.conf is set to resolve names through the local DNS resolver.

  • router-alix extends router-base with interface configuration for the ALIX board and appropriate nftable rules.

  • router-rpi3 adds hostapd and extends router-rpi3 with interface and wireless configuration for the Raspberry Pi 3 and appropriate nftable rules.