mirror of
https://github.com/kernelkit/infix.git
synced 2026-07-29 20:23:01 +02:00
doc: Document boot process and image formats
This commit is contained in:
+115
@@ -0,0 +1,115 @@
|
||||
Disk Layout
|
||||
-----------
|
||||
|
||||
Infix runs from a block device (e.g. eMMC or virtio disk) with the
|
||||
following layout. The disk is expected to use the GPT partitioning
|
||||
scheme. Partitions marked with an asterisk are optional.
|
||||
|
||||
.-----------.
|
||||
| GPT Table |
|
||||
:-----------:
|
||||
| boot* |
|
||||
:-----------:
|
||||
| aux |
|
||||
:-----------:
|
||||
| |
|
||||
| primary |
|
||||
| |
|
||||
:-----------:
|
||||
| |
|
||||
| secondary |
|
||||
| |
|
||||
:-----------:
|
||||
| cfg |
|
||||
:-----------:
|
||||
| |
|
||||
| var* |
|
||||
| |
|
||||
'-----------'
|
||||
|
||||
### `boot` - Bootloader
|
||||
|
||||
| Parameter | Value |
|
||||
|-----------|-----------------------------------------|
|
||||
| Required | No |
|
||||
| Size | 4 MiB |
|
||||
| Format | Raw binary, as dictated by the hardware |
|
||||
|
||||
Optional partition containing the system's bootloader. May also reside
|
||||
in a separate storage device, e.g. a serial FLASH.
|
||||
|
||||
|
||||
### `aux` - Auxiliary Data
|
||||
|
||||
| Parameter | Value |
|
||||
|-----------|-----------------|
|
||||
| Required | Yes |
|
||||
| Size | 4 MiB |
|
||||
| Format | EXT4 filesystem |
|
||||
|
||||
Holds information that is shared between Infix and its bootloader,
|
||||
such as image signatures required to validate the chain of trust,
|
||||
bootloader configuration etc.
|
||||
|
||||
Typical layout when using U-Boot bootloader:
|
||||
|
||||
/
|
||||
├ primary.itbh
|
||||
├ secondary.itbh
|
||||
└ uboot.env
|
||||
|
||||
During boot, an ITB header along with the corresponding root
|
||||
filesystem image are concatenated in memory, by U-Boot, to form a
|
||||
valid FIT image that is used to verify its integrity and origin before
|
||||
any files are extracted from it.
|
||||
|
||||
Note that the bootloader's primary environment is bundled in the
|
||||
binary - `uboot.env` is only used to import a few settings that is
|
||||
required to configure the boot order.
|
||||
|
||||
|
||||
### `primary`/`secondary` - Infix Root Filesystem Images
|
||||
|
||||
| Parameter | Value |
|
||||
|-----------|-------------------|
|
||||
| Required | Yes |
|
||||
| Size | >= 256 MiB |
|
||||
| Format | Squash filesystem |
|
||||
|
||||
The main Infix image - the `rootfs.squashfs` image in your `images/`
|
||||
directory. Two copies exist so that an incomplete upgrade does not
|
||||
brick the system, and to allow fast rollbacks when upgrading to a new
|
||||
version.
|
||||
|
||||
|
||||
### `cfg` - Configuration Data
|
||||
|
||||
| Parameter | Value |
|
||||
|-----------|-----------------|
|
||||
| Required | Yes |
|
||||
| Size | >= 16 MiB |
|
||||
| Format | EXT4 filesystem |
|
||||
|
||||
Non-volatile storage of the system configuration and user
|
||||
data. Concretely, user data is everything stored under `/root` and
|
||||
`/home`. Depending on the operating mode, the configuration is either
|
||||
the NETCONF databases from `/cfg`, or the contents of `/etc` when
|
||||
operating in native mode.
|
||||
|
||||
|
||||
### `var` - Variable Data
|
||||
|
||||
| Parameter | Value |
|
||||
|-----------|-----------------|
|
||||
| Required | No |
|
||||
| Size | >= 16 MiB |
|
||||
| Format | EXT4 filesystem |
|
||||
|
||||
Persistent storage for everything under `/var`. This is maintained as
|
||||
a separate filesystem from the data in `cfg`, because while the system
|
||||
can funtion reasonably well without a persistent `/var`, loosing
|
||||
`/cfg` or `/etc` is much more difficult.
|
||||
|
||||
If `var` is not available, Infix will still persist `/var/lib` using
|
||||
`cfg` as the backing storage.
|
||||
|
||||
Reference in New Issue
Block a user