Debian live avec persistance

Mise à jour : Debian 9.1

Par défaut, les modifications effectuées "en live" à partir des images Debian live standard ou personnalisées ne sont pas mémorisées. Lorsque le media utilisé est à lecture / écriture, cas des clés USBs, ce document décrit les 3 adaptations à effectuer pour que les modifications soient "persistantes" (permanentes) :

Sommaire

1 - Partition de persistance

La place restante sur la clé USB va être utilisée pour créer une partition pour la persistance.

# fdisk -l /dev/sdb

Disque /dev/sdb : 1,9 GiB, 2004877312 octets, 3915776 secteurs
Unités : secteur de 1 × 512 = 512 octets
Taille de secteur (logique / physique) : 512 octets / 512 octets
taille d'E/S (minimale / optimale) : 512 octets / 512 octets
Type d'étiquette de disque : dos
Identifiant de disque : 0x5c05cfcc

Device Boot Start End Sectors Size Id Type
/dev/sdb1 * 64 2245535 2245472 1,1G 17 Hidden HPFS/NTFS

Dans le cas présent, l'espace restant est de 0,8 GiB (1.9 Gib - 1,1 GiB)

# fdisk /dev/sdb
Bienvenue dans fdisk (util-linux 2.25.2).
Les modifications resteront en mémoire jusqu'à écriture.
Soyez prudent avant d'utiliser la commande d'écriture.


Commande (m pour l'aide) : n
Type de partition
p primaire (1 primaire, 0 étendue, 3 libre)
e étendue (conteneur pour partitions logiques)
Sélectionnez (p par défaut) : p
Numéro de partition (2-4, 2 par défaut) : 2
Premier secteur (2245536-3915775, 2246656 par défaut) :
Dernier secteur, +secteurs ou +taille{K,M,G,T,P} (2246656-3915775, 3915775 par défaut) :

Une nouvelle partition 2 de type « Linux » et de taille 815 MiB a été créée.

Commande (m pour l'aide) : w
La table de partitions a été altérée.
Appel d'ioctl() pour relire la table de partitions.
Synchronisation des disques.

Note : Récapitulatif des saisies :

Commande :             taper n pour nouvelle partition
Type de partition : taper sur la touche Entrée pour choix par défaut (partition primaire)
Numéro de partition : taper sur la touche Entrée pour choix par défaut (numéro 2)
Premier secteur : taper sur la touche Entrée pour choix par défaut (premier secteur disponible après la partition 1)
Dernier secteur : taper sur la touche Entrée pour choix par défaut (dernier secteur de la clé)
Commande : taper w pour écrire les modifications et quitter fdisk
# mkfs.ext4 -L persistence /dev/sdb2
# lsblk -f /dev/sdb
NAME FSTYPE LABEL UUID MOUNTPOINT
sdb iso9660 Debian jessie 20170114-16:35 2017-01-14-16-35-23-00
├─sdb2 ext4 persistence b05e12b7-7155-436f-880e-dcccbda84d94
└─sdb1 iso9660 Debian jessie 20170114-16:35 2017-01-14-16-35-23-00

2 - Fichier persistence.conf

Les répertoires dont on veut assurer la persistance doivent être listés dans un fichier dont le nom est imposé : "persistence.conf", situé à la racine de la partition "persistence".

Pour que toutes les modifications effectuées dans l'espace utilisateur soient mémorisées, de même que la plupart des modifications du système (mot de passe, ajout et mise à jour de paquets, ...), spécifier le répertoire racine (/) suivi de l'indication "union". Dans ces conditions, toutes les modifications (sauf celles affectant le répertoire lib et son contenu) seront mémorisées dans la partition "persistence". Pour ce faire :

# mount /dev/sdb2 /mnt
# echo "/ union" > /mnt/persistence.conf ### Attention au nom du répertoire, persistence.conf et non persistance.conf
# umount /mnt
# systemctl poweroff

3 - Ligne de commande linux

3.1 - Principe

Afin que la persistance soit prise en compte, le paramètre "persistence" (écrit avec l'orthographe anglaise et non française) doit-être présent dans la ligne de commande linux. Cet ajout peut-être effectué

3.2 - Ajout du paramètre à chaque démarrage

Démarrer sur la clé USB, puis dans le menu qui s'affiche, accédez à l'édition de la ligne de commande du noyau par la touche de Tabulation. Ajouter le paramètre "persistence" en plus des paramètres éventuels de choix de langue et de disposition de clavier :

> .linux /live/vmlinuz boot=live components quiet splash initrd=/live/initrd.img locales=fr_FR-UTF8 keyboard-layouts=fr persistence

La persistance sera active pour le démarrage en cours.

3.3 - Ajout du paramètre lors de la personnalisation de l'iso

La modification de la ligne de commande est décrite dans Debian live personnalisée. Une fois la modification effectuée, la pesistance sera systématiquement active.

4 - Persistance sur une partition chiffrée

La persistance est également possible sur une partition chiffrée afin d'assurer la protection des données.

Référence : Manuel Debian Live

4.0 - Préalable

cryptsetup doit-être installé dans la distribution live.

Créer une partition pour la persistance comme pour indiqué plus haut. On suppose que la partition est /dev/sdb2.

4.1 - Chiffrage de la partition

Créer le container chiffré luks dans la partition /dev/sdb2 et définir le mot de passe :

    # cryptsetup luksFormat -s 512 -h sha512 /dev/sdb2

Puis ouvrir le container, en lui donnant un nom arbitraire, par exemple, data

# cryptsetup luksOpen /dev/sdb2 data

Remplir le container de zéros :

# dd if=/dev/zero of=/dev/mapper/data

Formater le container et l'étiquetter en utilisant le mot persistence (orthographe anglaise du mot)

# mkfs.ext4 -L persistence /dev/mapper/data

4.2 - Fichier persistence.conf

Monter la partition chiffrée, par exemple en /mnt

# mount /dev/mapper/data /mnt

et ajouter le fichier persistence.conf comme pour une partition non chiffrée :

# echo "/ union" > /mnt/persistence.conf      ### Attention au nom du répertoire, persistence.conf et non persistance.conf

Puis démonter la partition et redémarrer le système sur la clé usb.

# umount /mnt
# cryptsetup luksClose /dev/mapper/data
# reboot

4.3 - Ligne de commande linux

Ajouter les paramètres persistence et persistence-encryption=luks au lieu de persistence seul dans la ligne de commande linux, comme pour une partition non chiffrée.

4.4 - Utilisation

Pendant le démarrage, le mot de passe de déverrouillage du container sera demandé. L'utilisation sera ensuite transparente.

S'il est proposé d'ouvrir une partition chiffrée qui n'est pas la partition de persistance, sauter l'étape correspondante, jusqu'à ce que la partition attendue soit proposée.