Mise à jour : Debian 9.8
La configuration avancée décrite dans ce document fait suite au document Debian live personnalisée - Configuration par défaut.
S'y reporter pour
Références :
Sommaire
par modification (directe ou de préférence en utilisant le script auto/config) des paramètres des fichiers :
config/binary
config/bootstrap
config/common
config/chroot
par ajout direct de fichiers et de scripts dans l'arborescence
l'arborescence et les modifications effectuées dans l'arborescence (ajout de fichiers, de scripts, ...)
le contenu du répertoire cache dans lequel ont été téléchargés les paquets lors des précédentes constructions
les fichiers config (config/binary config/bootstrap config/chroot config/common config/source)
les répertoires de construction chroot, binary et le fichier build.log
$ sudo lb clean
La modification des paramètres de la configuration s'effectue de préférence par l'intermédiaire du script auto/config :
$ cat auto/config
#!/bin/sh
set -e
lb config noauto \
"${@}"
Insérer les paramètres les uns après les autres après lb config noauto et avant "${@}"
soit sur une même ligne, séparés par un espace
soit sur des lignes différentes se terminant par \ (backslash)
Exemple : debian stretch
$ cat auto/config
#!/bin/sh
set -e
lb config noauto \
--mode "debian" \
--system "live" \
--architectures "amd64" \
--distribution "stretch" \
--apt "aptitude" \
--archive-areas "main contrib non-free" \
--apt-source-archives "false" \
--security "true" \
--updates "true" \
--backports "true" \
--firmware-binary "true" \
--firmware-chroot "true" \
--bootloaders "grub-efi" \
--bootappend-live "boot=live components persistence sudo locales=fr_FR.UTF-8 \
keyboard-layouts=fr timezone=Europe/Paris username=live quiet" \
--binary-images "iso-hybrid" \
--debian-installer "true" \
--debian-installer-gui "false" \
--memtest "none" \
--verbose \
"${@}"
Exemple : debian buster
$ cat auto/config
#!/bin/sh
set -e
lb config noauto \
--distribution "buster" \
"${@}"
En cas de doute, voir le manuel de lb config (man lb_config) pour la signification des options. A noter
-- archive-areas "main contrib non-free" spécifie les archives apt du système "live". Si les archives non libres sont inclues comme dans l'exemple ci-dessus, les firmwares et microcodes non libres seront automatiquement installés.
--debian-installer, memtest, .... permettent de spécifier si les options correspondantes seront actives (mais les lignes de menu resteront présentes ?)
Parmi ces paramètres,
persistence et persistence-encryption=luks
indiquent au système d'utiliser une partition de persistence. La clé devra avoir été préparée en conséquences : voir Debian live avec persistance. et cryptsetup devra être installée sur le système live.
$ lb config
[2017-08-23 17:57:20] lb config
P: Executing auto/config script.
[2017-08-23 17:57:20] lb config noauto --mode debian --system live --architectures amd64 --distribution stretch --apt aptitude --archive-areas main contrib non-free --mirror-bootstrap https://deb.debian.org/debian/ --mirror-binary https://deb.debian.org/debian/ --source false --security true --updates true --backports true --bootloader syslinux --bootappend-live boot=live components persistence locales=fr_FR.UTF-8 keyboard-layouts=fr quiet splash --binary-images iso-hybrid --debian-installer false --debian-installer-gui false --memtest none --iso-application Debian_Live_Perso --verbose
P: Creating config tree for a debian/stretch/amd64 system
P: Symlinking hooks...
Note : il est également possible de passer directement les paramètres dans la ligne de commande de lb config.
$ lb config \
--archive-areas "main contrib non-free" \
--bootappend-live "boot=live \
components persistence \
locales=fr_FR.UTF-8 \
keyboard-layouts=fr quiet"
Attention : La commande lb config ne modifie que les paramètres présents dans le script (ou dans la ligne de commande). Elle ne réinitialise pas les paramètres absents à leur valeur par défaut. Utiliser lb clean pour cet usage.
Certains paramètres ne peuvent pas être modifiés par le script auto/config, c'est le cas par exemple du nom du fichier iso qui est défini dans le fichier config/build, paramètres Name et Type. Remplacer Name (par défaut Debian-live), par le nom souhaité, par exemple Debian-live-perso. Le nom complet du fichier sera Debian-live-perso-amd64.iso-hybrid.iso dans le cas d'une architecture amd64-X86.
$ cat config/build
[Image]
Architecture: amd64
Archive-Areas: main contrib non-free
Distribution: stretch
Mirror-Bootstrap: http://ftp.debian.org/debian/
[FIXME]
Configuration-Version: 1:20170213
Name: Debian-live-perso
Type: iso-hybrid
Si l'on souhaite changer une configuration après avoir déjà construit une image, sans repartir de zéro, utiliser la commande lb clean
Elle conserve
l'arborescence et les modifications effectuées dans l'arborescence du répertoire config (ajout de fichiers, de scripts, ...)
le contenu du répertoire cache dans lequel ont été téléchargés les paquets lors des précédentes constructions
les fichiers config (config/binary config/bootstrap config/chroot config/common config/source) du répertoire config
tous les autres fichiers et en particulier les fichiers image et les répertoires chroot, binary et le fichier build.log
$ sudo lb clean
$ sudo lb clean
$ sudo rm -r config cache
$ cat auto/config
#!/bin/sh
set -e
lb config noauto \
--mode "debian" \
--system "live" \
--architectures "amd64" \
--distribution "buster" \
--parent-distribution "buster" \
--parent-debian-installer-distrbution "buster" \
--apt "aptitude" \
--archive-areas "main contrib non-free" \
--apt-source-archives "false" \
--security "true" \
--updates "true" \
--backports "true" \
--firmware-binary "true" \
--firmware-chroot "true" \"
--binary-images "iso-hybrid \
--bootloaders "syslinux,grub-efi" \
--bootappend-live "boot=live locales=fr_FR.UTF-8 keyboard-layouts=fr timezone=Europe/Paris username=live quiet" \
--debian-installer "true" \
--debian-installer-gui "false" \
--memtest "none" \
--uefi-secure-boot "auto"
--verbose \
"${@}"
$ lb config
[2020-08-31 23:50:05] lb config
P: Executing auto/config script.
[2020-08-31 23:50:05] lb config noauto --mode debian --system live --architectures amd64 --distribution buster --parent-distribution buster --parent-debian-installer-distribution buster --apt aptitude --archive-areas main contrib non-free --apt-source-archives true --security true --updates true --backports true --firmware-binary true --firmware-chroot true --binary-images iso-hybrid --bootloaders syslinux,grub-efi --bootappend-live locales=fr_FR.UTF-8 keyboard-layouts=fr timezone=Europe/Paris username=live quiet --debian-installer true --debian-installer-gui false --memtest none --uefi-secure-boot auto --verbose
P: Creating config tree for a debian/buster/amd64 system
P: Symlinking hooks...
$ sudo lb build
$ grep W: build.log
$ cat build.log |grep -i uefi
P: UEFI Secure Boot support enabled.
$ ls -l |grep *.iso
-rw-r--r-- 1 root root 650117120 sept. 1 00:05 live-image-amd64.hybrid.iso
-rw-r--r-- 1 root root 2222306 sept. 1 00:05 live-image-amd64.hybrid.iso.zsync
Pour ajouter des paquets disponibles dans les dépôts, créer dans le Répertoire config/package-lists, un ou plusieurs fichiers contenant les noms des paquets à inclure. Les noms des fichiers sont libres, leur extension doit être .list.chroot.
Pour utiliser une partition persistante chiffrée, ajouter le paquet cryptsetup
Exemple 1 : Liste de paquets console :
$ cat >> config/package-lists/console.list.chroot << EOF # Attention exécuter la commande avec les droits utilisateurs console-setup task-french task-laptop aptitude links2 pciutils hwinfo lshw
command-not-found bash-completion sysfsutils fbset lsscsi
upower rsync rfkill cryptsetup
EOF
Exemple 2 : Liste de paquets bureau
$ cat >> config/package-lists/xfce4.list.chroot << EOF xorg xserver-xorg-video-all xserver-xorg-input-all xdg-utils lightdm
xfce4 xfce4-terminal atril wicd-gtk
firefox-esr geany clonezilla gparted lshw-gtk seahorse keepassx owncloud-client
gvfs-bin gvfs-backends gvfs-fuse
EOF
La liste des dépôts a été établie dans les paramètres de la configuration. Si nécessaire, spécifier le "pinning" dans des fichiers installés dans Répertoire config/archives/ . Les noms des fichiers sont libres, leur extension doit être .pref.chroot.
Exemple : Installation du noyau et de firmwares à partir des dépôts backports. Attention, l'installation ne doit pas provoquer de problèmes de dépendances, tous les paquets à installer depuis les dépôts backports devront être listés.
$ cat >> config/archives/backports.pref.chroot << EOF
Package: firmware-iwlwifi
Pin: release a=stretch-backports
Pin-Priority: 600
Package: firmware-misc-nonfree
Pin: release a=stretch-backports
Pin-Priority: 600
Package: firmware-amd-graphics
Pin: release a=stretch-backports
Pin-Priority: 600
Package: firmware-linux-nonfree
Pin: release a=stretch-backports
Pin-Priority: 600
Package: firmware-linux
Pin: release a=stretch-backports
Pin-Priority: 600
Package: linux-image-amd64
Pin: release a=stretch-backports
Pin-Priority: 600
Package: intel-microcode
Pin: release a=stretch-backports
Pin-Priority: 600
EOF
Pour faire prendre en compte des paquets binaire (.deb), les inclure dans le répertoire config/packages.chroot. Ce peuvent être, des paquets propriétaires si l'on a fait le choix d'installer un système à partir des seuls dépôts libres.
Attention :
les paquets ajoutés ne doivent pas entrer en conflit de version avec des paquets installés précédemment
les dépendances doivent être présentes avant d'installer un nouveau paquet
Exemple : Rajout du paquet cryptomator absent des dépôts :
$ cd config/packages.chroot
$ wget https://bintray.com/cryptomator/cryptomator-deb/download_file?file_path=cryptomator-1.3.1-amd64.deb -O cryptomator-1.3.1_amdi64.deb
Les dépendances du paquet cryptomator ont été ajoutées dans la liste des paquets bureau : gvfs-bin, gvfs-backends, gvfs-fuse
Pour rajouter des fichiers dans l'arborescence du système live, créer l'architecture nécessaire dans le répertoire includes.chroot, puis y copier les fichiers.
Il ne semble pas possible de remplacer un fichier système existant. Par exemple pour ajouter un fichier de configuration d'interface, ne pas chercher à remplacer /etc/network/interfaces, mais l'ajouter dans /etc/network/interfaces.d :
Créer l'arborescence
$ mkdir -p config/includes.chroot/etc/network/interfaces.d
Créer le fichier wifi pour une interface wlp3s0
$ cat >> config/includes.chroot/etc/network/interfaces.d/wifi << EOF
# Connexion wifi pour une interface de nom wlp3s0 au réseau "pengouin"
allow-hotplug wlp3s0
iface wlp3s0 inet dhcp
# wpa-ssid pengouin
#psk="xxxxxxxxxxxxxxxxxxxxxxxxxx"
wpa-psk 11d5619c28057a4ab0e5a0779325e101be73fc4859a20cc7e238105fa2a40772
EOF
Rajouter les scripts à exécuter à l'issue de la construction du système live, avant la compression en squashfs, dans le répertoire config/hooks/normal (ou config/hooks/live). Les fichiers doivent avoir un nom débutant par un numéro d'ordre à 4 chiffres et leur extension est .hook.chroot.
Note 1 : à cette étape, dans le chroot, le système de fichier du système linux live est accessible directement : par exemple le fichier sources.list de apt se situe en /etc/apt/sources.listNote 2 : il est tout à fait possible d'installer de nouveaux paquets à cette étape, bien que cela paraisse impossible d'après la documentation ....
$ cat >> config/hooks/normal/0500-backports.chroot << EOF
#!/bin/sh
set -e
echo "deb http://deb.debian.org/debian stretch-backports main" >/etc/apt/sources.list.d/backports.list
apt update
apt install aptitude -y --force-yes
aptitude install -t stretch-backports linux-image-amd64 -y
rm /etc/apt/sources.list.d/backports.list
EOF
Rendre le script exécutable
$ chmod +x config/hooks/normal/0500-backports.chroot
Ces scripts sont à placer dans le répertoire config/includes.chroot/lib/live/config/ (non testé à ce jour)ls *.iso
[--apt apt|aptitude]
[--apt-ftp-proxy URL]
[--apt-http-proxy URL]
[--apt-indices true|false]
[--apt-options OPTION|"OPTIONS"]
[--aptitude-options OPTION|"OPTIONS"]
[--apt-pipeline PROFONDEUR]
[--apt-recommends true|false]
[--apt-secure true|false]
[--apt-source-archives true|false]
[-a|--architectures ARCHITECTURE]
[-b|--binary-images iso|iso-hybrid|netboot|tar|hdd]
[--binary-filesystem fat16|fat32|ext2|ext3|ext4]
[--bootappend-install PARAMÈTRES|"PARAMÈTRES"]
[--bootappend-live PARAMÈTRES|"PARAMÈTRES"]
[--bootappend-live-failsafe PARAMETER|"PARAMETERS"]
[--bootloaders grub-legacy|grub-pc|syslinux|grub-efi]
[--cache true|false]
[--cache-indices true|false]
[--cache-packages true|false]
[--cache-stages STAGE|"STAGES"]
[--checksums md5|sha1|sha256|none]
[--compression bzip2|gzip|lzip|none]
[--config GIT_URL::GIT_ID]
[--build-with-chroot true|false]
[--chroot-filesystem ext2|ext3|ext4|squashfs|jffs2|none]
[--clean]
[-c|--conffile FICHIER]
[--debconf-frontend dialog|editor|noninteractive|readline]
[--debconf-priority low|medium|high|critical]
[--debian-installer true|cdrom|netinst|netboot|businesscard|live|false]
[--debian-installer-distribution daily|NOM_DE_CODE]
[--debian-installer-preseedfile FICHIER|URL]
[--debian-installer-gui true|false]
[--debootstrap-options OPTIONS]
[--debootstrap-script SCRIPT]
[--debug]
[-d|--distribution NOM_DE_CODE]
[--parent-distribution NOM_DE_CODE]
[--parent-debian-installer-distribution NOM_DE_CODE]
[--dump]
[--fdisk fdisk|fdisk.dist]
[--firmware-binary true|false]
[--firmware-chroot true|false]
[--force]
[--grub-splash FICHIER]
[--gzip-options OPTION|"OPTIONS"]
[--hooks FICHIER]
[--ignore-system-defaults]
[--initramfs auto|none|live-boot|casper]
[--initramfs-compression bzip2|gzip|lzma]
[--initsystem sysvinit|runit|systemd|upstart|none]
[--interactive shell]
[--isohybrid-options OPTION|"OPTIONS"]
[--iso-application NOM]
[--iso-preparer NOM]
[--iso-publisher NOM]
[--iso-volume NOM]
[--jffs2-eraseblock TAILLE]
[--keyring-packages PAQUET|"PAQUETS"]
[-k|--linux-flavours VARIÉTÉ|"VARIÉTÉS"]
[--linux-packages "PAQUETS"]
[--losetup losetup|losetup.orig]
[--memtest memtest86+|memtest86|none]
[-m|--parent-mirror-bootstrap URL]
[--parent-mirror-chroot URL]
[--parent-mirror-chroot-security URL]
[--parent-mirror-chroot-updates URL]
[--parent-mirror-chroot-backports URL]
[--parent-mirror-binary URL]
[--parent-mirror-binary-security URL]
[--parent-mirror-binary-updates URL]
[--parent-mirror-binary-backports URL]
[--parent-mirror-debian-installer URL]
[--mirror-bootstrap URL]
[--mirror-chroot URL]
[--mirror-chroot-security URL]
[--mirror-chroot-updates URL]
[--mirror-chroot-backports URL]
[--mirror-binary URL]
[--mirror-binary-security URL]
[--mirror-binary-updates URL]
[--mirror-binary-backports URL]
[--mirror-debian-installer URL]
[--mode debian|progress-linux|ubuntu]
[--system live|normal]
[--net-root-mountoptions OPTIONS]
[--net-root-path CHEMIN]
[--net-root-server IP|NOM_D_HÔTE]
[--net-cow-filesystem nfs|cfs]
[--net-cow-mountoptions OPTIONS]
[--net-cow-path CHEMIN]
[--net-cow-server IP|NOM_D_HÔTE]
[--net-tarball true|false]
[--onie true|false]
[--onie-kernel-cmdline "OPTION1 OPTION2"]
[--quiet]
[--archive-areas DOMAINE_D'ARCHIVE|"DOMAINES_D'ARCHIVE"]
[--parent-archive-areas DOMAINE_D'ARCHIVE_PARENT|"DOMAINE_D'ARCHIVE_PARENT"]
[--security true|false]
[--source true|false]
[-s|--source-images iso|netboot|tar|hdd]
[--tasksel apt|aptitude|tasksel]
[--templates CHEMIN]
[--uefi-secure-boot auto|enable|disable]
[--hdd-size MB]
[--updates true|false]
[--backports true|false]
[--verbose]
[--win32-loader true|false]