# 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. ```{code-block} bash --- caption: Eduxos Konfigurationsskript lineno-start: 1 --- #!/usr/bin/env bash ARCH="${1:-amd64}" USERNAME=${2} DEBUG_IMAGE=${3} BUILD_SOURCE="false" if [ "${DEBUG_IMAGE}" = "0" ]; then # Build source image if this is not a debug build BUILD_SOURCE="true" # Hide Boot log and show splash BOOTAPPEND_RELEASE="quiet splash" fi lb config noauto \ --apt-recommends false \ --architectures ${ARCH} \ --archive-areas "main contrib non-free" \ --binary-filesystem ext4 \ --binary-images iso-hybrid \ --bootappend-live \ "persistence boot=live components ${USERNAME:+username=$USERNAME} \ locales=de_DE.UTF-8 keyboard-layouts=de $BOOTAPPEND_RELEASE" \ --bootloaders grub-efi \ --cache true \ --chroot-filesystem ext4 \ --distribution edux-bullseye \ --hdd-label EduxOS \ --iso-application EduxOS \ --iso-volume EduxOS \ --linux-flavours ${ARCH} \ --linux-packages "linux-image linux-headers" \ --mode debian \ --parent-distribution bullseye \ --security true \ --source ${BUILD_SOURCE} \ --source-images iso \ --system live \ --updates false \ --win32-loader false \ ${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](https://gitlab.informatik.hs-augsburg.de/edu-linux/hardware/build-configuration/-/blob/main/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/*): ```text 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`.