1
0
Fork 0
mirror of https://github.com/pygos/build.git synced 2024-11-14 15:37:11 +01:00
build/docs/layers.md

81 lines
3.4 KiB
Markdown
Raw Normal View History

# 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.