Files
os-builder/docs/config.md
2026-04-03 02:26:38 -07:00

134 lines
3.1 KiB
Markdown

# Config
`build.sh` sources the file `config` in the current working directory at startup. It can also be specified explicitly:
```bash
sudo ./build.sh -c build_amd64
```
## Variables
### Core
* `IMG_NAME` (Default: `vesperos-$RELEASE-$ARCH`)
Base name for output files.
* `RELEASE` (Default: `trixie`)
Debian release to build against.
* `ARCH` (Default: `arm64`)
Target architecture. One of: `arm64`, `armhf`, `amd64`.
### Directories
* `WORK_DIR` (Default: `$BASE_DIR/work`)
Where stage rootfs directories are built. Should be on a Linux filesystem — NTFS will not work.
* `DEPLOY_DIR` (Default: `$BASE_DIR/deploy`)
Where finished images and archives are placed.
### Network / SSH
* `ENABLE_SSH` (Default: `0`)
Set to `1` to enable the SSH server in the built image.
* `PUBKEY_SSH_FIRST_USER` (Default: unset)
If set, written to `~/.ssh/authorized_keys` for the first user.
* `PUBKEY_ONLY_SSH` (Default: `0`)
Set to `1` to disable password auth and require public key auth for SSH.
* `APT_PROXY` (Default: unset)
Apt proxy URL (e.g. `http://192.168.1.1:3142`). Not included in the final image.
* `TEMP_REPO` (Default: unset)
Additional temporary apt repo used only during the build. Supports `RELEASE` substitution.
### Locale / Keyboard
* `LOCALE_DEFAULT` (Default: `en_US.UTF-8`)
* `KEYBOARD_KEYMAP` (Default: `en`)
* `KEYBOARD_LAYOUT` (Default: `English (US)`)
* `TIMEZONE_DEFAULT` (Default: `America/Los Angeles`)
### Cloud-init
* `ENABLE_CLOUD_INIT` (Default: `1`)
Set to `1` to install and configure cloud-init. On RPi, seed files go to `/boot/firmware/`. On amd64, they go to `/var/lib/cloud/seed/nocloud/`.
### Other
* `USE_QEMU` (Default: `0`)
Set to `1` to produce a QEMU-compatible image (adds `-qemu` suffix).
* `SETFCAP` (Default: unset)
Set to `1` to preserve Linux capabilities in the rootfs. Only needed for NFS or capability-sensitive deployments.
* `STAGE_LIST` (Default: `stage*`)
Override the list of stages to run. Example: `"stage0 stage1 mystage stage2"`.
* `EXPORTS` (Default: unset)
Space-separated list of `stage:type` pairs declaring what to export and from which stage. Supported types: `squashfs`, `img`, `noobs`. Example:
```bash
EXPORTS="stage3:squashfs"
EXPORTS="stage3:squashfs stage2:img"
```
### Live boot (squashfs only)
* `LIVEBOOT` (Default: `0`)
Set to `1` to produce a second `-live` squashfs alongside the raw one. Installs `live-boot`, configures GDM autologin, and rebuilds the initramfs. Only applies to `amd64`.
* `LIVE_USERNAME` (Default: `vesperos`)
* `LIVE_USER_FULLNAME` (Default: `Live User`)
* `LIVE_USER_PASSWORD` (Default: `vesperos`)
### NOOBS
* `NOOBS_NAME` — Display name shown in the NOOBS menu.
* `NOOBS_DESCRIPTION` — Short description shown in the NOOBS menu.
Both must be set in the config when using `noobs` in `EXPORTS`.
## Example Config Files
### amd64 with live boot
```bash
ARCH='amd64'
EXPORTS="stage3:squashfs"
DEPLOY_COMPRESSION="none"
LIVEBOOT=1
LIVE_USERNAME="vesper"
LIVE_USER_PASSWORD="vesper"
```
### Raspberry Pi (arm64)
```bash
ARCH='arm64'
EXPORTS="stage3:squashfs"
DEPLOY_COMPRESSION="none"
ENABLE_CLOUD_INIT=1
```