Création d'images système live
Procédure validée sur Debian 13.
Présentation du projet
Nous allons voir ici comment créer des images systèmes live pour des usages divers. Ces images peuvent, ensuite, êtres démarrées depuis un serveur PXE, un ISO de CD-ROM ou une clef USB de maintenance.
La génération d'image système se fera depuis un disque dur virtuel Qemu.
Installation des prérequis
Installer debootstrap, les outils Qemu et les utilitaires usuels :
apt -y install debootstrap qemu-utils parted squashfs-tools
Création de la base système
Créer un disque dur virtuel de 32 Go et le connecter comme /dev/nbd0 :
qemu-img create -f qcow2 virtualDisk.qcow 32G modprobe nbd max_part=8 qemu-nbd --connect=/dev/nbd0 virtualDisk.qcow
Créer une table de partitions MS-DOS et créer une unique partition ext2 :
parted -s /dev/nbd0 mklabel msdos parted -a cylinder /dev/nbd0 mkpart primary 1 34360 mkfs.ext2 /dev/nbd0p1
Monter la partition dans /media/live :
mkdir /media/live mount /dev/nbd0p1 /media/live
Nous allons utiliser debootstrap pour installer un système Debian de base depuis les dépôts sur Internet :
debootstrap --arch amd64 stable /media/live http://deb.debian.org/debian/
Monter les répertoires du nouveau système fraîchement installés :
mount -t sysfs /sys /media/live/sys mount -t proc /proc /media/live/proc mount --bind /dev /media/live/dev mount -t devpts /dev/pts /media/live/dev/pts mount --bind /tmp /media/live/tmp
Entrer dans le système du client :
chroot /media/live
Pour la suite de cette documentation, les commandes à exécuter lors du chroot seront précédées par chroot>.
Configuration d'une image live graphique
Définir le mot de passe du compte root (si nécessaire) :
chroot> passwd root
Modifier le nom de la machine dans le fichier /etc/hostname et ajouter le nom de machine sur la ligne 127.0.0.1 dans le fichier /etc/hosts.
Créer un utilisateur standard :
chroot> adduser antoine
Définir la langue du système en français :
chroot> apt -y install locales chroot> dpkg-reconfigure locales
Cocher fr_FR.UTF-8 et choisir cette langue par défaut.
Définir le fuseau horaire de l'horloge :
chroot> dpkg-reconfigure tzdata
Choisir Europe, puis Paris.
Modifier le fichier /etc/apt/sources.list comme suit :
deb http://deb.debian.org/debian/ stable main contrib non-free non-free-firmware deb http://security.debian.org/debian-security stable-security main contrib non-free non-free-firmware deb http://deb.debian.org/debian/ stable-updates main contrib non-free non-free-firmware # deb http://deb.debian.org/debian/ stable-proposed-updates main contrib non-free non-free-firmware deb http://ftp.debian.org/debian stable-backports main contrib non-free non-free-firmware
Mettre à jour les dépôts et installer les paquets nécessaires (à personnaliser si vous le souhaitez).
chroot> apt update chroot> apt -y install bash-completion nano mc xfce4 lightdm network-manager network-manager-gnome gparted gsmartcontrol xfce4-whiskermenu-plugin numix-gtk-theme papirus-icon-theme dmz-cursor-theme cheese vlc firefox-esr firefox-esr-l10n-fr engrampa mate-calc mousepad partclone dcfldd console-data sudo terminator krusader kate geany geany-plugins simple-scan grsync audacity blueman wpasupplicant grub2 os-prober debootstrap gvfs-backends gvfs-fuse qt5ct qt5ct adwaita-qt qt5-gtk-platformtheme xfce4-power-manager system-config-printer cups gnome-firmware firmware-linux-nonfree displaylink-driver firmware-amd-graphics firmware-ath9k-htc firmware-atheros firmware-bnx2 firmware-bnx2x firmware-brcm80211 firmware-cavium firmware-intel-sound firmware-ipw2x00 firmware-ivtv firmware-iwlwifi firmware-libertas firmware-linux firmware-linux-free firmware-linux-nonfree firmware-misc-nonfree firmware-myricom firmware-netronome firmware-netxen firmware-qcom-media firmware-qcom-soc firmware-qlogic firmware-realtek firmware-samsung firmware-siano firmware-sof-signed firmware-ti-connectivity firmware-zd1211 midisport-firmware sigrok-firmware-fx2lafw ubertooth-firmware ubertooth-firmware-source arm-trusted-firmware-tools atmel-firmware bluez-firmware dahdi-firmware-nonfree dns323-firmware-tools broadcom-sta-common broadcom-sta-dkms broadcom-sta-source bluetooth bluez bluez-cups bluez-firmware bluez-obexd bluez-tools pulseaudio-module-bluetooth pulseaudio-module-gsettings pulseaudio-module-zeroconf mesa-utils mesa-utils-extra mesa-va-drivers mesa-vdpau-drivers mesa-vulkan-drivers vulkan-tools vulkan-validationlayers linux-image-amd64 live-boot chroot> apt -y upgrade
Lors de l'installation du paquet console-data, vous serez amené à choisir la configuration du clavier. Choisir l'option Choisir un codage clavier dans la liste complète, puis pc / azerty / French / Same as X11 (latin9).
Installer les composants standards :
chroot> tasksel install standard print-server
Ajouter l'utilisateur standard dans le groupe sudo (si nécessaire) :
chroot> usermod -a -G sudo antoine
Modifier le fichier /etc/fstab comme suit :
tmpfs /tmp tmpfs defaults 0 0 tmpfs /var/tmp tmpfs defaults 0 0 tmpfs /var/log tmpfs defaults 0 0
Configurer la connexion automatique pour l'utilisateur standard à l'environnement graphique en décommentant et modifiant les lignes suivantes dans /etc/lightdm/lightdm.conf :
autologin-user=antoine autologin-user-timeout=0
Définir le curseur de la souris par défaut :
chroot> update-alternatives --set x-cursor-theme /usr/share/icons/DMZ-White/cursor.theme
Définir le gestionnaire de thème Qt :
echo "QT_QPA_PLATFORMTHEME=qt5ct" >> /etc/environment
Désactiver l'enregistrement de session XFCE :
chroot> mkdir /etc/xdg/xfce4/kiosk chroot> echo "[xfce4-session]" > /etc/xdg/xfce4/kiosk/kioskrc chroot> echo "SaveSession=NONE" >> /etc/xdg/xfce4/kiosk/kioskrc
Configurer l'environnement de bureau à votre guise. Un exemple de configuration à placer dans /home/antoine est disponible ici.
Configuration d'une image live en ligne de commandes
Installer le noyau et les outils permettant de démarrer en live :
chroot> apt install linux-image-amd64 live-boot console-data
Pour une connexion automatique du système en mode ligne de commande, modifier le fichier /etc/systemd/system/getty.target.wants/getty@tty1.service et remplacer la ligne suivante :
ExecStart=-/sbin/agetty --autologin antoine --noclear %I $TERM
Configuration d'un système kiosque
Les systèmes kiosque permettent d'exécuter une application unique sans possibilité d'exécuter autre chose. Cela est utile, par exemple, dans le cas des bornes d'accès Internet en libre-service, des systèmes d'affichages publics, etc.
Dans notre exemple, nous allons configurer un kiosque permettant d'accéder à un seul site Internet avec un navigateur plein écran.
Définir le mot de passe du compte root (si nécessaire) :
chroot> passwd root
Modifier le nom de la machine dans le fichier /etc/hostname et ajouter le nom de machine sur la ligne 127.0.0.1 dans le fichier /etc/hosts.
Définir la langue du système en français :
chroot> apt -y install locales chroot> dpkg-reconfigure locales
Cocher fr_FR.UTF-8 et choisir cette langue par défaut.
Définir le fuseau horaire de l'horloge :
chroot> dpkg-reconfigure tzdata
Créer le compte utilisateur du kiosque :
chroot> adduser kiosk
Installer les paquets nécessaires. Remplacer firefox-esr par l'application de votre choix :
chroot> apt install matchbox-window-manager x11-xserver-utils lightdm dmz-cursor-theme linux-image-amd64 live-boot firefox-esr firefox-esr-l10n-fr console-data
Lors de l'installation du paquet console-data, vous serez amené à choisir la configuration du clavier. Choisir l'option Choisir un codage clavier dans la liste complète, puis pc / azerty / French / Same as X11 (latin9).
Installer unclutter si vous voulez que la souris disparaisse en cas d'inactivité (dans le cas d'affichages publics par exemple) :
chroot> apt install unclutter
Définir le curseur de la souris par défaut :
chroot> update-alternatives --set x-cursor-theme /usr/share/icons/DMZ-White/cursor.theme
Configurer la connexion automatique pour l'utilisateur standard à l'environnement graphique en décommentant et modifiant les lignes suivantes dans /etc/lightdm/lightdm.conf :
autologin-user=kiosk autologin-user-timeout=0
Créer le script gérant la session du compte kiosque en créant le fichier /home/kiosk/.xsession :
xset s off xset -dpms matchbox-window-manager & while true do firefox-esr -kiosk https://antoinepernot.fr done
Empaquetage des images systèmes
Quitter le chroot :
chroot> exit
Démonter les répertoires du système de fichiers chrooté :
umount /media/live/sys umount /media/live/proc umount /media/live/dev/pts umount /media/live/dev umount /media/live/tmp
Nous allons stocker les fichiers de notre système live dans /media/live-image :
mkdir /media/live-image
Copier les fichiers vmlinuz et initrd.img :
cp /media/live/{initrd.img,vmlinuz} /media/live-image/
Créer le système de fichiers squashfs :
mksquashfs /media/live /media/live-image/filesystem.squashfs -e boot
Démonter le disque virtuel :
umount /dev/nbd0* qemu-nbd --disconnect /dev/nbd0