From Fedora Project Wiki

Revision as of 14:13, 24 May 2008 by fp-wiki>ImportUser (Imported from MoinMoin)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Documentation de Kadischi

Traduit de la page originale Documentation: par LuyaTshimbalanga et ThomasCanniot

A propos de Kadischi

Qu'est-ce que Kadischi?

Kadischi est une application pour créer un Live CD basé sur Fedora. Il utilise le dépôt de Fedora comme entrée et génère une image iso de livecd.

Actuellement, Kadischi est en cours de développement mais contient des fonctions de base pouvant être exécutée.

Comment fonctionne Kadischi?

Kadischi utilise Anaconda pour installer le système dans un répertoire temporaire (spécifié par le fichier de configuration) sur le disque dur de l'utilisateur. Puis il exécute une collection des scripts (les emmagasine dans /usr/local/share/kadischi/post_install_scripts) afin de modifier le système pour fonctionner dans un environnent de CD (lecture seulement). Lorsque les modifications sont faites, Kadischi crée une image initrd, compresse l'arborescence du système (crée une copie compressée et détruit l'original) et crée une image iso du système.

Pour plus de détails sur le processus, consultez la section "Sous le capot".

Rapport des bogues

Utilisez bugzilla pour soumettre des bogues et demander des nouvelles options. Pour plus d'informations sur la procédure à suivre, jetez un oeil à la page ["Kadischi"] .

Crédits

Kadischi s'appuie largement sur le paquetage readonly-root du projet Stateless-linux .

Les décisions relatives au design ont été prises collectivement par les membres de la liste fedora-livecd .

Certaines idées ont été inspirées par le projet linux4all .

Le nom du projet provient d'Elliot Lee.

Le mainteneur précédent du projet était Darko Ilic (darko.ilic@gmail.com).

Puisque le projet avait debuté comme l'un des projet du "Googles Summer of Code ", certains crédits vont a Google  ;)

Installation

Conditions

Les paquetages suivants sont nécessaires a l'exécution de Kadischi:

  • anaconda
  • busybox-anaconda
  • syslinux
  • mkisofs
  • zisofs-tools
  • e2fsprogs

Pour les installer, exécutez

yum install anaconda busybox-anaconda syslinux mkisofs zisofs-tools e2fsprogs

Pour la compilation de Kadischi a partir du code source, le paquetage suivant doit être installé :

  • kudzu-devel

Pour l'installer, exécutez

yum install kudzu-devel

Note sur YUM

Vous rencontrez certainement un message d'avertissement durant l'installation d'anaconda

...
warning: rpmts_HdrFromFdno: Header V3 DSA signature: NOKEY, key ID db42a60e
public key not available for anaconda-help-10.1.0-1.noarch.rpm
Retrieving GPG key from file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

The GPG key at file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora (0x4F2A6FD2)
is already installed but is not the correct key for this package.
Check that this is the correct key for the "Fedora Core 4 - i386 - Base" repository.

Executez rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY pour importer la clé a utiliser pour ce paquetage.

Téléchargement

Pour le moment, le téléchargement de Kadischi se fait via un CVS anonyme.

Depuisun terminal, exécutez la commande suivante (appuyez sur Entrée lorsqu'on vous demande votre mot de passe) :


export CVSROOT=:pserver:anonymous@cvs.fedora.redhat.com:/cvs/devel
cvs -z3 login
cvs -z3 co kadischi

Si vous n'avez pas de client cvs installé sur votre machine, vous pouvez l'installer par cette commande

yum install cvs


Installation

Allez dans le répertoire racine de l'arborescence source (cd kadischi) et exécutez ./autogen.sh. Il configura les paquetages à construire. Vous pouvez passer aussi certaines options sur ./autogen.sh et il le dirigera sur ./configure.

Puis vous devez exécuter la commande make afin de compiler l'application.

Exécutez make install pour installer l'application (le chemin d'installation par défaut est /usr/local/share/kadischi pour les fichiers d'application et /etc/kadischi pour les fichiers de configuration).

Une autre étape pour exécuter l'application est de patcher anaconda. Les fichiers à patcher sont /usr/sbin/anaconda et /usr/lib/anaconda/flags.py. Les patchs sont dans le répertoire /usr/local/share/kadischi/patches dir pour anaconda-10.2.1.5-2 (version par défaut sur FC4).

Pour plus d'informations sur les patchs, consultez la section d'Appendice "Comment appliquer un patch"

Configuration

Vous devrez modifier /etc/kadischi/build.conf

gedit /etc/kadischi/build.conf &

et ajuster la variable BUILDDIR. Par exemple:

BUILDDIR=/tmp

BUILDDIR est un répertoire utilisé pour emmagasiner les fichiers temporaires (l'installation temporaire agit sur ce répertoire). Vous aurez besoin d'environ 1.5x d'espace d'installation pour ce dispositif (3Go sont suffisants).

Désinstallation

Allez dans répertoire racine de l'aborescence source et exécutez make uninstall. Assurez vous qu'il n'existe aucun fichier supplémentaire dans le répertoire de l'application (par exemple /etc/kadischi/build.conf~).

Utiliser Kadischi

Instructions de base

La façon la plus simple pour exécuter Kadischi est d'entrer la commande suivante dans le terminal


kadischi branche-du-dépôt branche-d'image-iso


où la branche du dépôt peut être une branche du système des fichiers locaux mais peut être aussi la branche du ftp, http ou d'autres types de dépôt.

Exemple:


kadischi /tmp/fc4 /tmp/fedora-live.iso


où /tmp/fc4 est un répertoire gardant le dépôt de Fedora (c-a-d les rpms sont dans /tmp/fc4/Fedora/RPMS et comps.xml, hdlist et d'autres fichiers dans /tmp/fc4/Fedora/base). Pour créer un dépôt local, consultez la section appendice "Comment créer un dépôt".

Exemple 2:


kadischi http://download.fedora.redhat.com/pub/fedora/linux/core/4/i386/os /tmp/fedora-live.iso

Exemple 3: (utilisant le site [1] )

kadischi http://mirrors.kernel.org/fedora/core/4/i386/os/ /tmp/fedora-live.iso


pour installer à partir du dépôt http. Pour plus détails sur les méthodes d'installation, consultez "Méthodes d'installation avec Anaconda" dans l'appendice.

Si vous n'utilisez pas de dépôt Fedora, vous devriez modifier /etc/kadischi/buildstamp ou utiliser un fichier personnalisé de buildstamp. Pour plus détails, consultez "Fichier buildstamp" dans l'appendice.

Options des lignes de commande

Entrez kadischi --help pour obtenir la liste des commandes sur Kadischi.

Exécuter automatiquement Kadischi

Puisque Kadischi n'exige pas d'interaction et que la seule interaction requise est avec Anaconda, la seule option est qu'Anaconda s'exécute automatiquement. C'est possible en utilisant les fichiers kickstart. Si vous fournissez à anaconda les fichiers kickstart, il s'exécutera sans vous interrompre (il demandera des informations supplémentaires si le fichier kickstart est incomplet).

Poor exécuter Kadischi avec kickstart, utilisez la ligne de commande optionnel --kickstart:

kadischi /tmp/fc4 /tmp/fedora-live.iso --kickstart=/branche/de/kickstart.cfg


Certains exemples de fichiers kickstart pouvant être utilisés sont inclus dans le paquetage et peuvent être trouvés dans /usr/local/share/kadischi/ks_examples.

Une autre chose importante est de charger l'interface graphique. Même s'il est fourni avec les fichiers kickstart complets, anaconda chargera l'interface (GUI ou TUI), dont nous ne voulons pas. Heureusement, anaconda peut être exécuté en mode ligne de commande où aucune interface n'est initialisée. Pour exécuter anaconda en arrière-plan, vous pouvez lancer une commande comme:

kadischi /tmp/fc4 /tmp/fedora-live.iso --kickstart=/path/to/kickstart.cfg -C

ou -C et sa variante --cmdline et la ligne de commande.

Notez que, dans le mode ligne de commande, aucune interaction avec anaconda n'est possible. Si vous avez un fichier kickstart incomplet, anaconda affichera un message d'erreur sur stdout et s'arrêtera (sans annuler l'exécution).

En utilisant ces deux lignes de commande optionnelles, vous pouvez créer une tâche cron qui générera un ISO du dépôt rawhide quotidiennement.

Personnalisation du système Live CD

Voici quelques idées sur la personnalisation du Live CD. Notez qu'il existe pas d'autres astuces que celles mentionnées dans ce document.

  • En utilisant le fichier kickstar et toutes les options fournies, incluant les scripts d'installation %pre et %post
  • En ajoutant des scripts dans /usr/local/share/kadischi/post_install_scripts/ ou en modifiant l'un d'eux. Ces scripts sont exécutés immédiatement après l'installation du système dans l'environnement chroot mais exécutés à partir du système parent. Kadischi trie tous ces exécutables du répertoire post_install_scripts par nom et les exécute en les passant par la branche du système fraîchement installée comme argument.
  • En créant des rpms avec des modifications et en les ajoutant dans le dépôt.

Astuce: si vous aimez personnaliser le Live CD, consultez la section "Sous le capot". Faites particulièrement attention aux scripts des répertoires post_install_scripts et /usr/local/share/kadischi/movefiles.py. Ces fichiers sont bien documentés et en lire quelques lignes seraient utiles.

Trucs et astuces

  • Procurez-vous un CD-RW (n'oubliez pas que le sytème fonctionnera lentement lors de l'exécution du CD-RW).
  • Si vous utilisez un fichier kickstart, ajoutez la commande --excludedocs au %packages (comme ceci: %packages --excludedocs) afin de sauter l'installation des documents au /usr/local/doc (cela peut vous permettre de minimiser l'espace disque, en fonction du nombre de paquetages)
  • Ajoutez autant de paquetages que vous le souhaitez sans dépasser 10Go et créez une image ISO pour un disque DVD

Sous le capot

Comment fonctionne Kadischi en détails?

Cette section décrira ce qui se passe lors de l'exécution de Kadischi, de la première ligne de commande jusqu'à l'écriture de "Finished" dans le log. Si vous voulez seulement utiliser Kadischi, vous n'avez besoin de lire cette section, mais si vous voulez souhaitez personnaliser de façon optimale votre Live CD ou si vous voulez comprendre le mécanisme de Kadischi, vous pouvez continuer à lire.

Lorsque vous entrez kadischi dans votre ligne de commande, /usr/bin/kadischi est executd. C'est un simple script bash qui indique à la variable PYTHONPATH d'inclure les libraires de Kadischi et exécute /usr/local/share/kadischi/kadischi.py.

kadischi.py est le script de haut-niveau prenant en charge la coordination d'autres éléments. Il

  • exécute les lignes de commande optionnelles et les arguments
  • vérifie si tout est OK (le nombre d'arguments donnés, la présence du fichier cible, l'identité de l'utilisateur (UID), la présence des RPMs requis et le fichier de configuration)
  • ajuste les valeurs aux variables (grâce aux informations qu'il obtient de la ligne de commande et des fichiers de configuration)
  • crée un sous-répertoire appelé 'livecd_build_no${number}' dans le répertoire de compilation spécifié. Tous les fichiers temporaires de cette compilation y seront stockés
  • invoque anaconda. Anaconda est exécuté avec le signal --livecd, l'option--rootpath et toutes les autres options spécifiées sur la ligne de commande telle que --kickstart, --cmdline, etc. C'est la partie la plus importante du processus. Anaconda installe entièrement le système dans un répertoire du disque dur local.
  • invoque les scripts du /usr/local/share/kadischi/post_install_scripts pen en les passant comme arguments à la branche de l'arborescence du système. Ces scripts sont utilisés pour modifier le système afin de faire fonctionner correctement le live CD.
  • invoque /usr/local/share/kadischi/livecd-mkinitrd.sh qui crée une image initrd qui sera utilisée sur le système en Live CD
  • invoque /usr/local/share/kadischi/movefiles.py qui déplace tous les fichiers et les répertoires qui doivent être modifiés une fois que le Live CD est démarré dans un seul répertoire. Ce répertoire est ensuite compressé dans kadischi.tar.gz. Durant le démarrage du live CD, cet archive est décompressée sur le lecteur tmpfs et les fichiers/répertoires extraits sont montés aux dans leur emplacement d'origine (avec mount --bind).
  • crée une copie compressée du système (zisofs est utilisé pour la compression)
  • copie certains fichiers qui ne doivent pas être compressés (kernel, initrd etc.) de l'arborescence non-compressée à celle qui est compressée.
  • supprime l'arborescence non-compressée.
  • invoque /usr/local/share/kadischi/create-iso.sh qui crée une image iso de l'arborescence compressée du système.
  • Nettoie le répertoire de compilation.

Comment fonctionne un Live CD créé

Notes de design

Arborescence des sources de Kadischi

C'est presque inexplicable je pense, mais je n'en mourrai pas d'écrire quelques lignes ici. Je ne parlerai que des répertoires, les fichiers sont déjà documentés (enfin, pour la plupart).

kadischi/ conf/ Contient tous les fichiers de configuration. Sur l'installation, ces fichiers se retrouve dans /etc/kadischi/ doc/ Documentation de Kadischi find_live_cd/ Sources pour l'utilitaire find-live-cd. find-live-cd est invoqué par linuxrc et il est chargé de trouver les lecteurs contenant notre live cd et de le monter ks_examples/ Quelques exemples des fichiers kickstart pouvant être utilisés avec Kadischi lib/ Fonctions et modules utilisss par Kadischi linuxrc/ Script linuxrc utliss dans l'image initrd du live CD livecd_generator/ Ce répertoire retient le script principal en charge du processus complet de création du live CD. Certains scripts peuvent être utilises durant ce processus. patches/ Patches conçus pour anaconda afin de fonctionner avec Kadischi po/ Un répertoire où le fichier pot doit être placé. Vide pour le moment. post_install_scripts/ Une collection des scripts exécutés sur le nouveau système (avant d'être compressés et empaquetés dans une image iso) afin de modifier l'exécution à partir du live CD. Certains scripts peuvent être optimisé lors de la personnalisation du système. rc/ Scripts utilisés durant l'initiation du système Live CD scanswap/ Utilitaire qui recherche les partitions swap sur le disque dur local et l'active s'il en trouve une

Appendice

Comment appliquer un patch

Synopsis pour l'utilitaire de patch:


patch [options]  [originalfile [patchfile]  

Ce dont nous avons besoin est


patch -b /usr/sbin/anaconda /usr/local/share/kadischi/patches/anaconda.patch
patch -b /usr/lib/anaconda/flags.py /usr/local/share/kadischi/patches/flags.py.patch

-b signifie backup, donc patch copiera vos fichiers avant d'appliquer les patchs. Les backups seront nommés /usr/sbin/anaconda.orig et /usr/lib/anaconda/flags.py.orig.

Pour plus de détails sur l'utilité de patch, entrez man patch ou consultez Merging with patch (en anglais)

Comment créer un dépôt

Si vous avez un CD d'installation de Fedora, c'est une bonne idée de les copier sur votre disque dur et faire une installation à partir du dépôt de disque dur pour y gagner en rapidité (et vous obtenez plusieurs livecd déjà construits). Voici la marche à suivre :

  • créez le répertoire racine de votre dépôt (par exemple /tmp/fc4)
  • créez les sous-répertoires /tmp/fc4/Fedora, /tmp/fc4/Fedora/RPMS et /tmp/fc4/Fedora/base
  • copiez le contenu du repertoire cdrom:/Fedora/base du disque 1 dans /tmp/fc4/Fedora/base
  • copiez le contenu du répertoire cdrom:/Fedora/RPMS des quatre disques dans /tmp/fc4/Fedora/RPMS

Vous pouvez utiliser ce dépôt avec Kadischi (la branche du dépôt est /tmp/fc4).

Notez que ceci n'est pas un dépôt régulier et vous ne pouvez pas l'utiliser avec yum. Si vous voulez créer un dépôt régulier, consultez d'autres documents.

Méthodes d'installation d'Anaconda

  • method=nfs:<path> -- Use <path> for an NFS installation.
  • method=http://<path> -- Use <path> for an HTTP installation
  • method=ftp://<path> -- Use <path> for an FTP installation
  • method=hd://<dev>/<path> -- Use <path> on <dev> for a hard drive installation
  • method=cdrom -- Do a CDROM based installation.

(extrait de [2] )

Vous pouvez aussi regarder /usr/share/doc/anaconda-${version}/install-methods.txt pour plus d'information.

Fichier buildstamp

Anaconda utilise un fichier buildstamp pour rassembler certaines informations reliées à la distribution. Voici un exemple du fichier buildstamp de Fedora Core 4:

200506062237.i386
Fedora Core
4
Fedora
http://bugzilla.redhat.com/bugzilla/

Comme vous pouvez remarquez, il y a cinq lignes. La première ligne indique l'identité du "build", la seconde le nom du produit, le troisième la version du produit, le quatrième la branche du produit et la dernière est le lien pour les rapports de bogues.

La plus importante est la branche du produit, parce qu'elle est utilisée pour accéder au dépôt. Si votre dépôt est, par exemple, http://mirrors.kernel.org/fedora/core/4/i386/os/, anaconda cherchera les rpms dans http://mirrors.kernel.org/fedora/core/4/i386/os/${productPath}/RPMS, donc pour le dépôt Fedora, la quatrième ligne du buidstamp devrait être "Fedora".

Si vous obtenez une boucle sans fin comme

Reading package information... Unable to read header list.
This may be due to a missing file or bad media.
Press <return> to try again

de la part d'anaconda, il est possible que la branche du produit ait des problèmes.


Anaconda recherche le fichier buildstamp dans /tmp/product/.buildstamp et /.buildstamp (dans cet ordre), donc Kadischi met son fichier buildstamp file dans /tmp/product/.buildstamp où anaconda peut le trouver. Si le fichier /tmp/product/.buildstamp existe déjà, Kadischi le déplacera dans un dossier temporaire, placera son fichier dans /tmp/product/.buildstamp, exécutera anaconda, et dès qu'anaconda aura fait son oeuvre il restaurera le fichier original.