8.1.1. Debian Live Config (MaSt)

Der erste Schritt, der getan werden muss, um Debian Live zu verstehen, ist die Art und Weise, wie das Buildsystem konfiguriert wird.

Das Paket live-config gibt Einsicht über diese Konfiguration und liefert die nötige Integration lb config in das Kommandozeilen Tool lb, welches über das Paket live-build installiert wird. Mit dem Befehl lb config kann dann die Konfiguration des Debian Live Buildsystems erstellt werden.

Quellcode 8.1 Eduxos Konfigurationsskript
 1#!/usr/bin/env bash
 2
 3ARCH="${1:-amd64}"
 4USERNAME=${2}
 5DEBUG_IMAGE=${3}
 6BUILD_SOURCE="false"
 7
 8if [ "${DEBUG_IMAGE}" = "0" ]; then
 9    # Build source image if this is not a debug build
10    BUILD_SOURCE="true"
11    # Hide Boot log and show splash
12    BOOTAPPEND_RELEASE="quiet splash"
13fi
14
15lb config noauto \
16    --apt-recommends false \
17    --architectures ${ARCH} \
18    --archive-areas "main contrib non-free" \
19    --binary-filesystem ext4 \
20    --binary-images iso-hybrid \
21    --bootappend-live \
22        "persistence boot=live components ${USERNAME:+username=$USERNAME} \
23        locales=de_DE.UTF-8 keyboard-layouts=de $BOOTAPPEND_RELEASE" \
24    --bootloaders grub-efi \
25    --cache true \
26    --chroot-filesystem ext4 \
27    --distribution edux-bullseye \
28    --hdd-label EduxOS \
29    --iso-application EduxOS \
30    --iso-volume EduxOS \
31    --linux-flavours ${ARCH} \
32    --linux-packages "linux-image linux-headers" \
33    --mode debian \
34    --parent-distribution bullseye \
35    --security true \
36    --source ${BUILD_SOURCE} \
37    --source-images iso \
38    --system live \
39    --updates false \
40    --win32-loader false \
41    ${DEBUG:+--verbose}

In diesem Skript werden zuerst Variablen erstellt, die im Folgenden für die Konfiguration verwendet werden sollen. Das Skript liegt in der build-configuration unter scripts/config.

ARCH=“${1:-amd64}”: Hier wird die Architektur des Systems definiert. Wenn man dieses Skript aufruft, wird das erste mitgegebene Argument verwendet. Falls kein Argument geliefert wird, greift der default Fall: amd64. Wenn man das System für eine ARM CPU baut, ruft man das skript mit config_cript arm64 oder config_cript aarch64 auf.

USERNAME=${2}: Das zweite Argument ist der Benutzername, welcher später der Kernel Commandline übergeben wird. Dieser Benutzer hat automatisch root Rechte, weshalb dieses Argument am besten nur im Debug Modus verwendet werden sollte.

DEBUG_IMAGE=${3}: Eine Variable, welche den Typen des Targets definiert. Gesetzt wird die Variable über das dritte Argument im Aufruf des Skripts. Ist DEBUG_IMAGE 1, so handelt es sich bei dem Image um einen Debug Fall. Setzt man diese Variable auf 0, so handelt es sich um einen Release Fall, bei dem es extra Konfigurationen zu beachten gibt, wie das bauen eines Source Images.

BUILD_SOURCE: Wie schon beim DEBUG_IMAGE genannt, gibt es eine Möglichkeit, beim Bau auch direkt das source image zu bauen. Ist DEBUG_IMAGE gleich 1, so wird diese Variable auf “true” gesetzt, andernfalls bleibt die Variable auf 0.

BOOTAPPEND_RELEASE=“quiet splash”: Die Kernel Commandline wird in diesem Fall dynamisch konfiguriert. BOOTAPPEND_RELEASE sind extra Argumente, die der Kernel Commandline übergeben werden, wenn ein Release Image gebaut wird. quiet schaltet das Boot Log aus (kann durch dmesg im nachhinein betrachtet werden) und splash aktiviert das Zeigen des Splash screens.

Sind all diese Variablen definiert, kann der lb config Befehl, wie oben aufgezeigt, ausgeführt werden. Der Befehl erstellt folgende Konfigurationsstruktur im aktuellen Verzeichnis (live-build/):

live-build
├── auto
├── cache
├── chroot
├── config
│   ├── apt
│   ├── archives
│   ├── bootloaders
│   ├── debian-installer
│   ├── hooks
│   ├── includes
│   ├── includes.binary
│   ├── includes.bootstrap
│   ├── includes.chroot_after_packages
│   ├── includes.chroot_before_packages
│   ├── includes.installer
│   ├── includes.source
│   ├── package-lists
│   ├── packages
│   ├── packages.binary
│   ├── packages.chroot
│   ├── preseed
│   └── rootfs
└── local

Um mehr Informationen über das live-config Paket zu erhalten, kann der zugehörige man-db Eingtrag nachgeschlagen werden: man live-config.

Die Argumente bezüglich des Boot Prozesses (bootappend-live, …) können im man-db Eintrag des Paketes live-boot nachgeschlagen werden: man live-boot.