Créer sa clé USB d'installation en mode interactif : un exemple

Supposons que nous ayons à obtenir un LiveCD/USB Calculate personnalisé proposant Firefox out-of-box. Toujours à titre d’exemple, nous allons utiliser la stage CLDX 20130124 32bit pour ce faire, mais naturellement vous pouvez partir de n’importe quelle version.

Nous n’aurons pas à installer quoi que ce soit sur le disque dur pour créer l’image système : toutes les modifications se feront sur une clé USB bootable. On pourra ensuite déployer notre système depuis cette même clé !

Nous allons utiliser l’installeur Calculate pour créer le support. La capacité de la clé doit correspondre à deux fois la taille de l’image système voire plus (n’hésitez pas à en prendre une grande). Vu que Portage sera désarchivé au cours de l’opération, la mémoire vide du PC doit être suffisamment grande aussi, au moins 2Go ; c’était 4 Go de RAM dans mon cas.

Vous pouvez procéder de la même façon à partir d’un CD/DVD Calculate Linux, juste qu’il vous faudra sauvegarder l’image système à la fin, soit sur une partition dédiée, soit encore sur une clé USB.

Commencer par choisir le mode builder au boot. Un bureau Calculate standard va vous accueilir.

Avant de nous mettre à l’oeuvre, nous aurons besoin d’une connexion Internet. NetworkManager est là pour nous servir, il suffit de cliquer sur l’icône en haut à droite, dans la zone de notification.

La toute première chose à faire ensuite est d’obtenir les droits root :

su

Toutes les opérations se feront en mode ‘builder’, donc :

cl-builder

Le texte dans la console changera de couleur une fois cette commande exécutée. L’idée derrière le mode builder est d’isoler l’espace utilisateur en utilisant AUFS, le système de fichiers qui permet de gérer plusieurs couches. cl-builder opère dans une couche à part que l’utilisateur peut observer et modifier, afin d’inclure ses modifications dans la nouvelle image système. Pour plus de renseignements, référez-vous [[interactive_system_build|ici]]

Toute édition de Calculate Linux fournit une copie archivée de Portage. Il faut donc désarchiver et syncroniser ledit Portage et l’overlay calculate :

eix-sync

Calculate est une distribution rolling-release, c’est pourquoi il faut toujours mettre à jour avant de toucher à quoi que ce soit, pour actualiser certes, mais aussi pour s’épargner les soucis de blocage et de conflits par la suite:

 # emerge -uDNa world

These are the packages that would be merged, in order:

Calculating dependencies... done!
[binary     U  ] media-libs/freetype-2.4.11 [2.4.9-r1] USE="-infinality" 
[binary   R    ] virtual/udev-197  USE="kmod" 
[binary     U  ] sys-apps/portage-2.2.0_alpha161 [2.2.0_alpha160]
[binary     U  ] sys-fs/udisks-1.0.4-r4 [1.0.4-r2]
[binary     U  ] sys-power/upower-0.9.19 [0.9.18]
[binary     U  ] net-misc/networkmanager-0.9.6.4-r1 [0.9.6.4] USE="consolekit"

Would you like to merge these packages? [Yes/No]

Ne vous inquiétez pas, cela se fera vite : merci les devs qui avez pensé aux profils binaires !

Maintenant, l’heure est venue de supprimer le vilain Chromium :

 # emerge -C chromium -a
 * This action can remove important packages! In order to be safer, use
 * `emerge -pv --depclean <atom>` to check for reverse dependencies before
 * removing packages.

>>> These are the packages that would be unmerged:

 www-client/chromium
    selected: 24.0.1312.56 
   protected: none 
     omitted: none 

All selected packages: www-client/chromium-24.0.1312.56

>>> 'Selected' packages are slated for removal.
>>> 'Protected' and 'omitted' packages will not be removed.

Would you like to unmerge these packages? [Yes/No]

Une fois Chromium viré, on se débarrasse des dépendances devenues orphelines :

emerge -ac

Vous verrez qu’un paquet figurant dans le fichier world (i.e. /var/lib/portage/world), chromium-adblock, s’obstine à réinstaller Chromium. Tant pis pour lui, exit adblock (on aurait pu y penser dès le début, mais bon :p) :

emerge -C chromium-adblock

On peut maintenant nettoyer le système, 9 paquets en tout à supprimer dans mon cas:

 # emerge -ac
...
All selected packages: dev-python/ply-3.4 dev-libs/ppl-0.11.2-r1 dev-libs/cloog-ppl-0.15.10 media-libs/libvpx-1.0.0 dev-lang/v8-3.14.5.3 dev-python/simplejson-2.6.2 dev-lang/nacl-toolchain-newlib-0_p9093 media-libs/opus-1.0.1 media-libs/libwebp-0.2.1

_Ne craignez rien, votre Chromium lancé ne disparaîtra pas comme ça après la désinstall du paquet et de ses dépendances… vous pourrez continuer à me lire :slight_smile: vous pourrez fermer la fenêtre quand Firefox sera installé.
_
J’installe Firefox (en binaire, pour simplifier) :

emerge -a firefox-bin

Une fois le renard de feu là, voyons voir si des fichiers de configuration ont été modifiés :

dispatch-conf

Appuyez sur ‘U’ par la suite, pour confirmer (ou ‘Z’ pour refuser).

Vu que le mode builder est interactif, il est possible de lancer Firefox sur place, pour voir ce que ça donne (et modifier quelque chose encore avec les templates, probablement !). Par contre, un relogin est nécessaire sur XFCE pour que le nouveau raccourci apparaisse sur la barre du bas : jusqu’ici, nous n’avons pas trouvé comment éviter ce contretemps.

Ça y est, on peut quitter le mode builder :

exit

Enfin, on dit à CL de générer une image Squash qui tiendra compte de toutes les modifications de toute à l’heure :

cl-image --lang=fr_FR --keep-tree squash

Si on met ‘iso’ au lieu de ‘squash’ dans la commande ci-dessus, un nouveau fichier ISO sera créé (cela s’impose si vous partez d’un CD/DVD). L’option --keep-tree permet de laisser l’arbre Portage désarchivé, ce qui est surtout utile si vous pensez continuer à bricoler sur la clé USB. Il y en a d’autres, notamment

  • --compress, qui permet de choisir une méthode de compression de données plus simple (gzip, par exemple), pour plus de performances ;
  • --lang et --timezone, qui permettent d’indiquer la langue système et le fuseau horaire, respectivement.

À l’issue de cette opération, une nouvelle image Squash (livecd.squashfs.1) sera créée dans le répertoire /mnt/flash. Notez que l’image livecd.squashfs précédente sera conservée.

Il va de soi que les changements persisteront après l’installation sur le disque dur.

Et je clos ce petit tuto avec le récapitulatif de mes démarches :

su
cl-builder
eix-sync
emerge -uDNa world
emerge -C chromium chromium-adblock
emerge -ac
emerge -a firefox-bin
dispatch-conf
exit
cl-image --lang=fr_FR --keep-tree squash