mirror of
https://github.com/pygos/build.git
synced 2024-11-16 16:37:10 +01:00
81 lines
3.4 KiB
Markdown
81 lines
3.4 KiB
Markdown
|
# 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` 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.
|