DrakLive

Un article de Wiki de la communauté Mandriva.

Jump to: navigation, search


DrakLive est un utilitaire qui permet de construire une distribution live d'après un fichier de configuration, créer l'image principale et optionnellement de l'installer sur un périphérique.


DrakLive
DrakLive un outil de création de distributions Live


Sommaire

[modifier] Pourquoi un nouvel outil pour cet usage?

[modifier] Anciennes technologies

[modifier] Mandriva Move

La technologie Move/Move2 est dépassée maintenant, elle chargeait les fichiers modifiables dans la RAM et utilisait dnotify pour suivre les modifications de fichiers et copier ensuite ceux ci sur la clef USB.

Cela requiérait un processus de démarrage spécifique et un processus de création des images complexe.

Elle est remplacée avantageusement par unionfs (ou similaires), qui permet un mélange transparent des couches du système de fichier et rend possible la suppression de fichiers.

[modifier] mklivecd

mklivecd permet déjà la création de distributions live, mais il est difficile de synchroniser les évolutions matérielles ou logicielles. Il a besoin de son propre et complexe script initrd (linuxrc), de même qu'un nouveau rc.sysinitrc.Tout ceci rend le démarrage compliqué et ces 3 programmes (linuxrc, rc.sysinit, mklivecd) sont difficiles à maintenir ensemble.

[modifier] linux-live / Slax

Les scripts Linux-live sont très similaires, mais ils requièrent des bibliothèques additionnelles dans l'initrd et ils ne fournissent pas une liste étendue de pilotes matériels dans leur initrd.


[modifier] Points forts de DrakLive

la philosophie de draklive est de maintenir la distribution live la plus proche possible d'une distribution "normale". Toutes les modifications spécifiques au mode live sont faites dans un script initrd très réduit. Et puisque celui ci est généré au vol il reste petit et facile à débugguer.

La liste des pilotes inclus dans l'initrd est ajustée pendant la création de la distribution live, selon le type du média. Draklive utilise les bibliothèques DrakX pour avoir une liste de pilotes à jour.

Dès que le script inirtd a fini de booter, le périphérique racine sera ensuite utilisé de façon transparente par la distribution, sans trucs additionnels.

Quant à la détection matérielle, elle est faite par harddrake, ce qui assure une intégration fiable.


[modifier] Fonctionnalités

  • Live CD
  • Distribution live sur clef USB
  • Facile à tester sur NFS.
  • Utilise l'installeur Mandriva pour créer les systèmes live de façon graphique.
  • Des systèmes live en lecture écriture complètes (avec unionfs).
  • Configuration matérielle automatique (avec harddrake)
  • Code struturé génériquement pour implémenter de nouveaux choix techniques rapidement.


[modifier] S'y mettre sans attendre

[modifier] Préalables

Les paquets suivants doivent être installés sur votre système: soit xorg-x11-xnest ou xorg-x11-xephyr , squashfs-tools, syslinux, mkisofs, rsync et mtools.


[modifier] Obtenir les outils et les configurations.

Version cooker uniquement:

Image:Konsole.png
[utilisateur@ordi ~]$ svn co http://svn.mandriva.com/svn/soft/draklive/trunk draklive
Image:Konsole.png
[utilisateur@ordi ~]$ svn co http://svn.mandriva.com/svn/config/One/trunk live-config

Il est important de noter que les outils et config précédentes sont les derniers à jour,c'est à dire qu'ils sont développés, utilisés et utilisables sur une cooker.

En 2008.0, par exemple, utilisez la version de draklive disponible par urpmi dans les dépots officiels et pour la configuration, téléchargez celle ci:

Image:Konsole.png
[utilisateur@ordi ~]$ svn co http://svn.mandriva.com/svn/config/One/branches/2008.0 live-config

Entrez ensuite dans le dossier contenant la configuration:

Image:Konsole.png
[utilisateur@ordi ~]$ cd live-config

Puis éditer l'adresse du dépot local (et autres informations locales) dans /etc/draklive/config/settings.cfg


[modifier] Construire un live CD ou un live USB

Pour créer votre image complète voici la commande à effectuer depuis le dossier de configuration:

Image:Konsole.png
[root@ordi ~]# ../draklive/draklive --clean --all

Lire la sortie de la commande draklive --help pour plus de details.


[modifier] Ecrire un live USB sur le périphérique

Image:Konsole.png
[root@ordi ~]# ../draklive/draklive --record --device /dev/sdb1


[modifier] Configuration

[modifier] Exemple

{
    system => {
        root => '/chroot/live/2007.0',
        repository => '/mnt/BIG/dis/2007.0/i586',
        auto_install => 'config/auto_inst.cfg.pl',
        rpmsrate => 'config/rpmsrate',
        vga_mode => 788,
    },
    media => {
        storage => 'cdrom',
    },
    mount => $predefined{mounts}{volatile_squash_union},
  };


[modifier] Exemple: Creer cdrom bootable pour vieux ordinateurs qui ne peuvent pas booter sur la clef USB

Modifier dans le fichier config/live.cfg le hash du media comme suit:

media => { storage => 'usb', boot => 'cdrom' },

Puis lancez la commande:

draklive --config config/live.cfg --boot-only --boot --master

Ceci va créer le fichier iso: /your_workdir/images/boot.iso (your_workdir est /var/lib/draklive par défaut)


[modifier] Description exhaustive

Le fichier de configuration doit contenir un hash de toutes les options.Certaines options doivent être remplies au niveau supérieur, d'autres doivent être stockées dans dans des sub-hash.

[modifier] system sub-hash

Ce hash décrit la distribution installée.

  • root: chemin vers la disitribution installée
  • repository: chemin vers le dossier de l'installeur
  • auto_install: fichier auto_install.cfg.pl de l'installeur
  • patch_install: patch de l'installeur (en fait un fichier defcfg )
  • postInstall: commandes à effectuer (utilisant bash -c une fois les étapes additional_media/rpm/patches finies)
  • install_env: hash reference des variables qui doivent être passée pour l'installation (elles peuvent être utilisables par file|auto_install.cfg.pl}} )
  • additional_modules: array reference des modules .ko à copier et charger dans initrd
  • rpmsrate: chemin local de rpmsrate (utile pour ajouter/modifier/retirer des notes de paquets)
  • patches: array reference des patches à appliquer directement au systeme root
  • rpms: array reference des rpms à installer après installation
  • vga_mode: mode graphique que la distribution live doit utiliser
  • splash: mettre à no si vous ne voulez pas utiliser un splash (défaut est yes)
  • kernel: version kernel par defaut (optionel)

[modifier] sub-hash media

Ce hash décrit quel media devrait être utilisé.

  • storage: type du medium (cdrom or usb)

Champs optionnels:

  • boot: type de média de boot à utiliser uniquement avec l'option --boot-only si il y a (cdrom ou usb)

Ou des réglages personnels:

  • $custom{media}{nfs}->(module name, live system IP address, NFS source)

[modifier] sub-array extra_media

Cette array devrait contenir tous les medias extra (cf la description du sub-hash media) que le système live devrait supporter. Cela permet de faire des systèmes live utilisant différents types de boot gràce à l'utilitaire de copie.

Par exemple, si le média par défaut est du type cdrom et que l'array extra média contient un média du type usb, le live CD permettra lors de son fonctionnement d'être dupliqué à la fois sur un CD mais aussi sur une clef USB.

[modifier] sub-hash mount

Ce hash décrit comment les composants live doivent être montés ensemble.

Quelques config de base sont prédéfinies:

  • $predefined{mounts}{simple_union} : utilise le contenu du média comme racine sans modifications et la monte avec un tmpfs grace à unionfs pour obtenir un système en lecture-écriture.
  • $predefined{mounts}{volatile_squash_union} : compresse la distribution dans un fichier distrib.sqfs, utilise un tmpfs et les monte ensemble en utilisant unionfs
  • $predefined{mounts}{squash_union} : compresse la distribution dans un fichier distrib.sqfs, un fichier loopback system.loop ext2 en lecture-écriture et les monte ensemble en utilisant unionfs
  • $predefined{mounts}{multi_squash_union} : compresse la distribution dans un fichier "patch" system.sqfs, un tmpfs et les monte ensemble en utilisant unionfs

[modifier] Ou construisez votre propre type de mount.

  • TODO

[modifier] Options de haut niveau

Config Live:

  • post: array de commandes devant être effectuées à la fin de initrd
  • copy_initrd: copie le fichier initrd à la fin de l'étape initrd (c-a-d vers le fichier /var/lib/tftpboot/live.rdz)
  • debug: inclue quelques outils de debug dans initrd (busybox, strace, ping) et lance un shell de debug au début de initrd

Configuration des dossiers (optionelle):

  • workdir: dossier de travail de draklive (défaut: /tmp/draklive)
  • mnt: point de montage temporaire pour draklive


[modifier] Références

[modifier] Outils draklive et fichier de configuration One

[modifier] Autres outils live


[modifier] Systèmes de fichiers superposés ou compressés

[modifier] UnionFS

[modifier] SquashFS

[modifier] Autres

Récupérée de « http://wiki.mandriva.com/fr/DrakLive »
Autres langues