Live manual Debian Live

# Debian Live Manual

# Les bases

155

# 4. Les bases

156

Ce chapitre contient un bref aperçu du processus de construction et des instructions pour utiliser les trois types d'images les plus couramment utilisées. Le type d'image le plus polyvalent, `iso-hybrid`, peut être utilisé sur une machine virtuelle, un support optique ou un périphérique USB de stockage portable. Dans certains cas particuliers, comme expliqué plus loin, le type `hdd` peut être plus approprié. Le chapitre contient des instructions détaillées pour la construction et l'utilisation d'une image `netboot`, qui est un peu plus compliquée en raison de la configuration requise sur le serveur. C'est un sujet un peu avancé pour tous ceux qui ne connaissent pas déjà le démarrage sur le réseau, mais est inclus ici car une fois la configuration terminée, c'est un moyen très pratique pour tester et déployer des images pour le démarrage sur le réseau local sans le tracas des supports d'images.

157

La section se termine par une brève introduction à webbooting qui est, peut-être, la meilleure façon d'utiliser des images différentes à des fins différentes, changeant de l'un à l'autre en fonction des besoins en utilisant l'Internet comme un moyen.

158

Tout au long du chapitre, nous ferons souvent référence à la valeur par défaut des noms des fichiers produits par live-build. Si vous téléchargez une image précompilée, les noms des fichiers peuvent varier.

159

4.1 Qu'est-ce qu'un système live?

160

Un système live signifie généralement un système d'exploitation démarré sur un ordinateur à partir d'un support amovible, tel qu'un CD-ROM, une clé USB ou sur un réseau, prêt à l'emploi sans aucune installation sur le disque habituel, avec auto-configuration fait lors de l'exécution (voir Termes).

161

Avec les systèmes live, c'est un système d'exploitation, construit pour une des architectures prises en charge (actuellement amd64 et i386). Il est fait à partir des éléments suivants:

162

- Image du noyau Linux, d'habitude appelé `vmlinuz*`

163

- Image du RAM-disque initiale (initrd): Un disque virtuel RAM configuré pour le démarrage de Linux, contenant possiblement des modules nécessaires pour monter l'image du système et certains scripts pour le faire.

164

- Image du système: L'image du système de fichiers du système d'exploitation. Habituellement, un système de fichiers SquashFS comprimé est utilisé pour réduire au minimum la taille de l'image live. Notez qu'il est en lecture seulement. Ainsi, lors du démarrage le système live va utiliser un disque RAM et un mécanisme "union" pour permettre l'écriture de fichiers dans le système en marche. Cependant, toutes les modifications seront perdues lors de l'arrêt à moins que l'option «persistance» soit utilisée (voir Persistance).

165

- Chargeur d'amorçage: Un petit morceau de code conçu pour démarrer à partir du support choisi, il peut présenter un menu rapide ou permettre la sélection des options/configurations. Il charge le noyau Linux et son initrd pour fonctionner avec un système de fichiers associé. Différentes solutions peuvent être utilisées, selon le support de destination et le format du système de fichiers contenant les composants mentionnés précédemment: isolinux pour démarrer à partir d'un CD ou DVD au format ISO9660, syslinux pour démarrer un disque dur ou une clé USB à partir d'une partition VFAT, extlinux pour partitions ext2/3/4 et btrfs, pxelinux pour netboot PXE, GRUB pour partitions ext2/3/4, etc.

166

Vous pouvez utiliser live-build pour construire l'image du système à partir de vos spécifications, configurer un noyau Linux, son initrd, et un chargeur d'amorçage pour les exécuter, tout dans un format en fonction du support (image ISO9660, image disque, etc.).

167

4.2 Premières étapes: la construction d'une image ISO hybride

168

Quel que soit le type d'image, vous devrez effectuer les mêmes étapes de base pour créer une image à chaque fois. Comme premier exemple, créez un répertoire de travail, passez dans ce répertoire et exécutez la séquence suivante de commandes live-build pour créer une image ISO hybride de base contenant tout le système Debian par défaut sans X.org. Elle est appropriée pour être gravée sur CD ou DVD, et peut également être copiée sur une clé USB.

169

Le nom du répertoire de travail dépend totalement de vous, mais si vous jetez un œil aux exemples utilisés dans live-manual, c'est une bonne idée d'utiliser un nom qui vous aide à identifier l'image avec laquelle vous travaillez dans chaque répertoire, surtout si vous travaillez ou expérimentez avec différents types d'images. Dans ce cas, vous allez construire un système par défaut, nous allons donc l'appeler, par exemple, live-default.

170

$ mkdir live-default && cd live-default

171

Ensuite, exécutez la commande `lb config`. Cela va créer une hiérarchie "config/" dans le répertoire courant pour être utilisée par d'autres commandes:

172

$ lb config

173

Aucun paramètre n'est passé à ces commandes, donc les défauts seront utilisés pour l'ensemble de ses diverses options. Consultez La commande lb config pour plus de détails.

174

Maintenant que la hiérarchie "config/" existe, créez l'image avec la commande `lb build` :

175

# lb build

176

Ce processus peut prendre un certain temps, en fonction de la vitesse de votre ordinateur et de votre connexion réseau. Une fois le processus terminé, il devrait y avoir un fichier image `live-image-i386.hybrid.iso` prêt à l'emploi, dans le répertoire courant.

177

Remarque: Si vous construisez sur un système amd64 le nom de l'image résultante sera `live-image-amd64.hybrid.iso`. Gardez à l'esprit cette convention de nommage tout au long du manuel.

178

4.3 Utilisation d'une image ISO hybride live

179

Après la construction ou le téléchargement d'une image ISO hybride, qui peut être obtenue sur ‹https://www.debian.org/CD/live/›, l'étape suivante est d'habitude de préparer votre support pour le démarrage, soit sur CD-R(W) ou DVD-R(W), des supports optiques ou une clé USB.

180

4.3.1 Graver une image ISO sur un support physique

181

Graver une image ISO est facile. Il suffit d'installer /{xorriso} et de l'utiliser à partir de la ligne de commande pour graver l'image. Par exemple:

182

# apt-get install xorriso
$ xorriso -as cdrecord -v dev=/dev/sr0 blank=as_needed live-image-i386.hybrid.iso

183

4.3.2 Copie d'une image ISO hybride sur une clé USB

184

Les images ISO préparées avec `xorriso` peuvent être simplement copiées sur une clé USB avec `cp` ou un logiciel équivalent. Branchez une clé USB avec une capacité suffisamment grande pour votre fichier image et déterminez quel périphérique elle est, que nous appelons ci-dessous `${USBSTICK}`. C'est le fichier de périphérique de votre clé, tel que `/dev/sdb`, pas une partition, telle que `/dev/sdb1`! Vous pouvez trouver le nom du périphérique en regardant la sortie de `dmesg` après avoir branché le périphérique, ou mieux encore, `ls -l /dev/disk/by-id`.

185

Une fois que vous êtes sûr d'avoir le nom correct de l'appareil, utilisez la commande `cp` pour copier l'image sur la clé. Ceci écrasera tout fichier déjà existant sur votre clé!

186

$ cp live-image-i386.hybrid.iso ${USBSTICK}
$ sync

187

Remarque: La commande sync est utilisée pour s'assurer que toutes les données qui sont stockées dans la mémoire par le noyau lors de la copie de l'image, sont écrites sur la clé USB.

188

4.3.3 Utilisation de l'espace disponible sur une clé USB

189

Après avoir copié `live-image-i386.hybrid.iso` sur une clé USB, la première partition sera utilisée par le système live. Pour utiliser l'espace libre restant, utilisez un outil de partitionnement tel que gparted ou parted afin de créer une nouvelle partition sur la clé.

190

# gparted ${USBSTICK}

191

Quand la partition est créée, vous devez y créer un système de fichiers où `${PARTITION}` est le nom de la partition, comme `/dev/sdb2`. Un choix possible serait ext4.

192

# mkfs.ext4 ${PARTITION}

193

Remarque: Si vous voulez utiliser l'espace supplémentaire avec Windows, ce système d'exploitation ne peut accéder normalement à aucune partition à part la première. Certaines solutions à ce problème ont été discutées sur notre liste de diffusion, mais il semble qu'il n'y a pas de réponse facile.

194

Rappelez-vous: Chaque fois que vous installez une nouvelle live-image-i386.hybrid.iso sur la clé, toutes les données sur la clé seront perdues parce que la table de partition est écrasée par le contenu de l'image, vous devez sauvegarder votre partition supplémentaire d'abord pour la restaurer à nouveau après la mise à jour de l'image live.

195

4.3.4 Démarrer le support live

196

La première fois que vous démarrez votre support live, qu'il s'agisse de CD, DVD, clé USB, ou du démarrage par PXE, une certaine configuration dans le BIOS de votre ordinateur peut être d'abord nécessaire. Puisque les BIOS varient grandement en fonctionnalités et raccourcis clavier, on ne peut pas aborder le sujet en profondeur ici. Certains BIOS fournissent une touche pour ouvrir un menu d'amorçage au démarrage, qui est le moyen le plus facile si elle est disponible sur votre système. Sinon, vous avez besoin d'entrer dans le menu de configuration du BIOS et modifier l'ordre de démarrage pour placer le dispositif de démarrage pour le système live devant votre périphérique de démarrage normal.

197

Une fois que vous avez démarré le support, un menu de démarrage vous est présenté. Si vous appuyez simplement sur entrée ici, le système va démarrer en utilisant l'entrée par défaut, `Live`. Pour plus d'informations sur les options de démarrage, consultez l'entrée «Help» dans le menu et aussi les pages de manuel de live-boot et live-config dans le système live.

198

Assuming you've selected `Live` and booted a default desktop live image, after the boot messages scroll by, you should be automatically logged into the `user` account and see a desktop, ready to use. If you have booted a console-only image, you should be automatically logged in on the console to the `user` account and see a shell prompt, ready to use.

199

4.4 Utiliser une machine virtuelle pour les tests

200

Exécuter les images live dans une machine virtuelle (VM) peut faire gagner beaucoup de temps. Cela ne vient pas sans avertissements:

201

- L'exécution d'une VM demande assez de RAM pour le système d'exploitation client et l'hôte et un CPU avec support matériel pour la virtualisation est recommandé.

202

- Il y a quelques limitations inhérentes à l'exécution sur une VM, par exemple des performances vidéo médiocres, ou un choix limité de matériel émulé.

203

- Lors du développement d'un matériel spécifique, il n'existe aucun substitut pour l'exécution que le matériel lui-même.

204

- Certains ne deviennent visibles que pendant l'exécution dans une VM. En cas de doute, testez votre image directement sur le matériel.

205

À condition de pouvoir travailler avec ces contraintes, examinez les logiciels VM disponibles et choisissez celui qui convient à vos besoins.

206

4.4.1 Test d'une image ISO avec QEMU

207

La VM la plus polyvalente de Debian est QEMU. Si votre processeur dispose d'une gestion matérielle de la virtualisation, vous pouvez utiliser le paquet qemu-kvm; La description du paquet qemu-kvm énumère brièvement les exigences.

208

Tout d'abord, installez qemu-kvm si votre processeur le gère. Sinon, installez qemu. Dans ce cas, le nom du programme est `qemu` au lieu de `kvm` dans les exemples suivants. Le paquet qemu-utils est également valable pour créer des images de disques virtuels avec `qemu-img`.

209

# apt-get install qemu-kvm qemu-utils

210

Démarrer une image ISO est simple:

211

$ kvm -cdrom live-image-i386.hybrid.iso

212

Voir les pages de manuel pour plus de détails.

213

4.4.2 Test d'une image ISO avec VirtualBox

214

Afin de tester l'ISO avec virtualbox:

215

# apt-get install virtualbox virtualbox-qt virtualbox-dkms
$ virtualbox

216

Créez une nouvelle machine virtuelle, modifiez les paramètres de stockage pour utiliser `live-image-i386.hybrid.iso` comme le périphérique CD/DVD et démarrez la machine.

217

Remarque: Pour les systèmes live contenant X.org que vous voulez essayer avec virtualbox, vous pouvez inclure le paquet des pilotes VirtualBox X.org, virtualbox-guest-dkms et virtualbox-guest-x11, dans votre configuration de live-build. Sinon, la résolution est limitée à 800x600.

218

$ echo "virtualbox-guest-dkms virtualbox-guest-x11" >> config/package-lists/my.list.chroot

219

Pour faire fonctionner le paquet dmks, il faut également installer le paquet linux-headers pour le noyau utilisé dans l'image. Au lieu de lister manuellement le paquet linux-headers correct dans la liste de paquets crée ci-dessus, live-build peut faire cela automatiquement.

220

$ lb config --linux-packages "linux-image linux-headers"

221

4.5 Construire et utiliser une image HDD

222

La construction d'une image HDD est similaire à une ISO hybride à tous les regards, sauf que vous spécifiez `-b hdd` et le nom du fichier résultant est `live-image-i386.img` qui ne peut être gravé sur des supports optiques. Il convient pour le démarrage à partir de clés USB, disques durs USB, et divers autres dispositifs de stockage portables. Normalement, une image ISO hybride peut être utilisée à cette fin, mais si vous avez un BIOS qui ne gère pas correctement les images hybrides, vous devez utiliser une image HDD.

223

Remarque: si vous avez créé une image ISO hybride avec l'exemple précédent, vous devrez nettoyer votre répertoire de travail avec la commande `lb clean` (voir La commande lb clean):

224

# lb clean --binary

225

Exécutez la commande `lb config` comme avant, sauf que cette fois en spécifiant le type d'image HDD:

226

$ lb config -b hdd

227

Construisez maintenant l'image avec la commande `lb build`

228

# lb build

229

Quand la création de l'image est finie, un fichier `live-image-i386.img` doit être présent dans le répertoire courant.

230

L'image binaire générée contient une partition VFAT et le chargeur d'amorçage syslinux, prêts à être écrits directement sur une clé USB. Encore une fois, comme l'utilisation d'une image HDD est juste comme l'utilisation d'une image ISO hybride sur USB, suivez les instructions Utiliser une image live ISO hybride, en utilisant le nom de fichier `live-image-i386.img` au lieu de `live-image-i386.hybrid.iso`.

231

De même, pour tester une image HDD avec Qemu, installez qemu comme décrit ci-dessus dans Test d'une image ISO avec QEMU. Ensuite, exécutez `kvm` ou `qemu`, selon la version dont votre système hôte a besoin en précisant `live-image-i386.img` comme le premier disque dur.

232

$ kvm -hda live-image-i386.img

233

4.6 Construction d'une image netboot

234

La séquence de commandes suivante va créer une image NetBoot de base contenant le système Debian par défaut sans X.org. Elle peut être démarrée sur le réseau.

235

Remarque: Si vous avez réalisé quelques-uns des exemples précédents, vous aurez besoin de nettoyer votre répertoire de travail avec la commande `lb clean`:

236

# lb clean

237

Dans ce cas spécifique, un `lb clean --binary` ne serait pas suffisant pour nettoyer les étapes nécessaires. La raison est que dans les configurations de netboot, une configuration initramfs différente doit être utilisée, laquelle live-build exécute automatiquement lors de la construction des images netboot. Puisque la création d'initramfs appartient à l'étape chroot, si on change à netboot dans un répertoire existant, il faut reconstruire le chroot. Par conséquent, il faut faire un `lb clean`, (qui permettra d'éliminer l'étape chroot, aussi).

238

Exécutez la commande suivante pour configurer votre image pour démarrer sur le réseau:

239

$ lb config -b netboot --net-root-path "/srv/debian-live" --net-root-server "192.168.0.2"

240

Contrairement aux images ISO et HDD, le démarrage sur le réseau ne sert pas l'image du système de fichiers pour le client. Pour cette raison, les fichiers doivent être servis via NFS. Différents systèmes de fichiers réseau peuvent être choisis avec lb config. Les options `--net-root-path` et `--net-root-server` indiquent l'emplacement et le serveur, respectivement, du serveur NFS sur lequel l'image du système de fichiers sera située au moment du démarrage. Assurez-vous que ceux-ci sont fixées à des valeurs appropriées pour votre réseau et serveur.

241

Construisez maintenant l'image avec la commande `lb build`

242

# lb build

243

Dans un démarrage réseau, le client exécute un petit morceau de logiciel qui réside habituellement sur l'EPROM de la carte Ethernet. Ce programme envoie une requête DHCP pour obtenir une adresse IP et les informations sur ce qu'il faut faire ensuite. Typiquement, la prochaine étape est d'obtenir un chargeur d'amorçage de niveau supérieur via le protocole TFTP. Cela pourrait être pxelinux, GRUB, ou démarrer directement à un système d'exploitation comme Linux.

244

Par exemple, si vous décompressez l'archive généré `live-image-i386.netboot.tar` dans le répertoire `/srv/debian-live`, vous trouverez l'image du système de fichiers dans `live/filesystem.squashfs` et le noyau, initrd et le chargeur d'amorçage pxelinux dans `tftpboot/`.

245

Nous devons maintenant configurer trois services sur le serveur pour activer le démarrage sur le réseau: le serveur DHCP, le serveur TFTP et le serveur NFS.

246

4.6.1 Serveur DHCP

247

Nous devons configurer le serveur DHCP de notre réseau pour être sûr de donner une adresse IP au client du système du démarrage sur le réseau, et pour annoncer l'emplacement du chargeur d'amorçage PXE.

248

Voici un exemple source d'inspiration, écrit pour le serveur ISC DHCP `isc-dhcp-server` dans le fichier de configuration `/etc/dhcp/dhcpd.conf`:

249

# /etc/dhcp/dhcpd.conf - configuration file for isc-dhcp-server
ddns-update-style none;
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.1 192.168.0.254;
filename "pxelinux.0";
next-server 192.168.0.2;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.1;
}

250

4.6.2 Serveur TFTP

251

Cela sert le noyau et le ramdisk initial pour le système pendant l'exécution.

252

Vous devriez installer le paquet tftpd-hpa. Il peut servir tous les fichiers contenus dans un répertoire racine, d'habitude `/srv/tftp`. Pour le laisser servir des fichiers dans `/srv/debian-live/tftpboot`, exécutez comme utilisateur root la commande suivante:

253

# dpkg-reconfigure -plow tftpd-hpa

254

et remplissez le nouveau répertoire du serveur tftp

255

4.6.3 Serveur NFS

256

Quand l'ordinateur hôte a téléchargé et démarré un noyau Linux et chargé son initrd, il va essayer de monter l'image du système de fichiers live via un serveur NFS.

257

Vous devez installer le paquet nfs-kernel-server.

258

Ensuite, rendez l'image du système de fichiers disponible via NFS en ajoutant une ligne comme la suivante `/etc/exports`:

259

/srv/debian-live *(ro,async,no_root_squash,no_subtree_check)

260

et indiquez cette exportation au serveur NFS avec la commande suivante:

261

# exportfs -rv

262

Setting up these three services can be a little tricky. You might need some patience to get all of them working together. For more information, see the syslinux wiki at ‹https://wiki.syslinux.org/wiki/index.php?title=PXELINUX› or the Debian Installer Manual's TFTP Net Booting section at ‹https://www.debian.org/releases/stable/i386/ch04s05.en.html›. They might help, as their processes are very similar.

263

4.6.4 Guide pratique pour expérimenter avec une image Netboot

264

La création d'images netboot est facile avec live-build, mais les tests des images sur des machines physiques peuvent prendre vraiment beaucoup de temps.

265

Afin de rendre notre vie plus facile, nous pouvons utiliser la virtualisation.

266

4.6.5 Qemu

267

- Installer qemu, bridge-utils, sudo.

268

Éditer `/etc/qemu-ifup`:

269

#!/bin/sh
sudo -p "Password for $0:" /sbin/ifconfig $1 172.20.0.1
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
sleep 2

270

Obtenir, ou construire un `grub-floppy-netboot`.

271

Lancer `qemu` avec "`-net nic,vlan=0 -net tap,vlan=0,ifname=tun0`"

272

4.7 Webbooting

273

Webbooting est une manière très pratique de télécharger et d'amorcer les systèmes live en utilisant l'Internet comme un moyen. Il ya très peu d'exigences pour webbooting. D'une part, vous avez besoin d'un support avec un chargeur d'amorçage, un disque ram initial et un noyau. D'autre part, un serveur web pour stocker les fichiers squashfs qui contiennent le système de fichiers.

274

4.7.1 Obtenir les fichiers webboot

275

As usual, you can build the images yourself or use the prebuilt files, which are available on the project's download page at ‹https://www.debian.org/CD/live/›. Using prebuilt images would be handy for doing initial testing until one can fine tune their own needs. If you have built a live image you will find the files needed for webbooting in the build directory under `binary/live/`. The files are called `vmlinuz`, `initrd.img` and `filesystem.squashfs`.

276

Il est également possible d'extraire les fichiers d'une image iso déjà existant. Pour ce faire, on doit monter l'image comme suit:

277

# mount -o loop image.iso /mnt

278

Les fichiers se trouvent sous le répertoire `live/`. Dans ce cas précis, il serait `/mnt/live/`. Cette méthode présente l'inconvénient que vous avez besoin d'être root pour pouvoir monter l'image. Cependant, il présente l'avantage qu'elle est facilement scriptable et ainsi, facilement automatisée.

279

Mais sans aucun doute, la meilleure façon d'extraire les fichiers d'une image iso et les télécharger sur le serveur web au même temps, est d'utiliser le midnight commander ou mc. Si vous avez le paquet genisoimage installé, le gestionnaire de fichiers à deux panneaux vous permet de voir le contenu d'un fichier iso dans un panneau et de télécharger les fichiers via FTP dans l'autre panneau. Même si cette méthode nécessite un travail manuel, elle ne nécessite pas les privilèges root.

280

4.7.2 Démarrer images webboot

281

Tandis que certains utilisateurs vont utiliser la virtualisation pour tester le webbooting, nous utilisons du matériel réel ici pour correspondre au possible cas d'utilisation suivant qui seulement devrait être considéré comme un exemple.

282

Afin de démarrer une image webboot il suffit d'avoir les éléments mentionnés ci-dessus, c'est-à-dire, `vmlinuz` et `initrd.img` sur une clé usb dans un répertoire nommé `live/` et installer syslinux comme chargeur de démarrage. Ensuite, démarrer à partir de la clé usb et taper `fetch=URL/CHEMIN/DU/FICHIER` aux options de démarrage. live-boot va télécharger le fichier squashfs et le stocker dans la ram. De cette façon, il est possible d'utiliser le système de fichiers compressé téléchargé comme un système live normal. Par exemple:

283

append boot=live components fetch=http://192.168.2.50/images/webboot/filesystem.squashfs

284

Cas d'utilisation: Vous avez un serveur web dans lequel vous avez stocké deux fichiers squashfs, un qui contient un bureau complet, comme par exemple gnome, et un d'un système standard. Si vous avez besoin d'un environnement graphique pour une machine, vous pouvez brancher votre clé usb et télécharger l'image qui contient gnome. Si vous avez besoin des outils inclus dans le deuxième type d'image, peut-être pour une autre machine, vous pouvez télécharger celle du système standard.