Ouvrir le menu principal

Ubuntu casper

Ubuntu Casper est le nom du répertoire contenant la partie du système de fichiers en lecture seule.

Sommaire

Démarrage du live CD dans ses grandes lignesModifier

Principales phases du démarrageModifier

  • Si demandé par iso-scan/filename=/xxx, recherche d'une image .iso de CD-ROM dont le nom est /xxx
  • Recherche du dossier /casper contenant la partie read-only du système de fichiers.
  • Empilement read-only, par aufs, des différents systèmes de fichiers représentés par les fichiers *.squashfs ou *.ext2 du dossier /casper, ainsi que les répertoires *.dir de ce dossier.
  • Rajout au-dessus de cet empilement d'une couche lecture-écriture appelée cow.
  • En général cette couche est en mémoire volatile, et donc tous les changements seront perdus à l'arrêt du système.
  • Cependant, il est possible de garder tout ou partie des changements grâce au mode persistent

Principales phases du démarrage persistantModifier

Ce type de démarrage est déclenché par le bootparam persistant. Il offre plusieurs possibilités de mémorisation permanente:

  • Recherche sur les disques d'une partition ou d'un fichier image de partition à utiliser pour la partie cow de l'empilement donnant /.
  • Recherche sur les disques d'une partition ou d'un fichier image de partition à utiliser comme partition /home lecture-écriture.
  • Utilisation de snapshots

Utilisation des instantanés (snapshots)Modifier

AVERTISSEMENT: ce dispositif est considéré comme expérimental et effectivement de nombreux bug l'empêchent de fonctionner sans modification.

Les snapshots sont des systèmes de fichiers ou des images de système de fichiers qui sont recopiés au démarrage. On peut prendre un instantané à tout moment par la commande casper-snapshot. À l'arrêt du système les snaphots sont actualisés.

  • Recherche d'un snapshot dont le contenu sera recopié dans la partie cow de l'empilement /
  • Recherche d'un snapshot dont le contenu sera recopié dans le répertoire /home
  • Si ces recopies ont réussi, leur emplacement est mémorisé pour permettre leur réactualisation à l'arrêt du système

Comment se fait le balayage des disques ?Modifier

  • Chaque nouvelle recherche déclenche un balayage des disques. Ce balayage s'arrête au premier succès.
  • Pour chaque balayage, toutes les partitions de tous les disques sont examinées, cela comprend les CD-ROM physiques, le CD-ROM virtuel (si l'on a demandé d'utiliser une image .iso et si celle-ci a été trouvée), les disques durs externes USB, et probablement firewire et eSATA.
  • Pour la recherche dans les systèmes de fichiers, seul le niveau supérieur est examiné.
  • Pour la recherche d'une image .iso de CD-ROM, la recherche a lieu dans tous les systèmes de fichiers ext2,ext3,xfs,jfs,reiserfs,vfat,ntfs, et iso9660.
  • Pour la recherche du dossier /casper, si l'on a demandé d'utiliser une image .iso et si celle-ci a été trouvée, la recherche n'a lieu que dans cette image. Sinon elle se fait dans les systèmes de fichiers vfat,iso9660,ext2,ext3,ext4 et (à vérifier) udf et ntfs.
  • Pour la recherche d'un fichier image d'une partition qui sera utilisé en lecture-écriture, seuls les systèmes de fichiers vfat sont considérés.
  • Pour les recherches de fichiers snapshot seules les partitions contenant un système de fichier vfat ou ext2, ainsi que les CD-ROM sont examinés. On évite ainsi les systèmes journalisés, car dans le cas où la partition serait en cours d'utilisation par un autre OS en phase d'hibernation: le montage du système de fichiers, même en lecture seule, provoquerait sa mise à jour à partir du journal.

Quel sont les moyens d'intervention de l'utilisateur ?Modifier

Interventions possibles au moment du démarrageModifier

Tous les bootloaders permettent de passer des paramètres au noyau Linux qu'ils démarrent. Dans le cas du LiveCD, pour modifier ces paramètres il faut, après avoir choisi la langue, enfoncer les touches <F6> puis <Esc>.

Casper prend en compte tous les paramètres donnés. Par contre, une fois mis en place l'empilement des systèmes de fichiers et quand le démarrage normal commence, casper passe le contrôle à init en lui fournissant uniquement les paramètres situés après les -- .

Les paramètres définissant la langue et le clavier sont remplis automatiquement par le bootloader présent sur le LiveCD, par contre les paramètres suivants devront être rentrés à la main où dans un fichier de configuration dans le cas où l'on démarre autrement que sur le CD officiel (en USB par exemple):

  • showmounts permet de rendre visible l'empilement des systèmes de fichiers.
  • noprompt permet d'éviter la demande d'éjection du CD-ROM à l'arrêt du système.
  • persistent déclenche, selon les partitions ou les fichiers qui auront été trouvées, l'un des modes de fonctionnement persistent.
  • debug permet d'avoir les détails du démarrage enregistrés dans deux fichiers. Le premier est /dev/.initramfs/initramfs.debug, il concerne les phases de démarrage communes à tous les systèmes Ubuntu, et le second /var/log/casper.log concerne les phases propres à casper.
  • break permet de marquer un temps d'arrêt (par défaut durant la phase init-premount) pendant lequel une session shell est ouverte permettant d'examiner en détail la situation.
  • iso-scan/filename=/monFichierImage.iso permet de demander l'utilisation du fichier /monFichierImage.iso comme s'il s'agissait du CD-ROM d'Ubuntu
  • toram lance la recopie en mémoire de l'intégralité du système de fichier. Cette recopie prend un certain temps, mais après, le fonctionnement peut être très rapide et le lecteur de CD-ROM devient disponible pour un autre usage. Pour utiliser ce dispositif, il faut un ordinateur avec suffisamment de RAM, 1 Giga semblant un minimum (à titre d'information, un CD-ROM normal prend à peu près 700 Mégas).

Notez qu'il n'y a pas moyen de demander des recherches personnalisées pour les noms suivants qui sont imposés: casper, casper-rw, home-rw, casper-sn, home-sn, ainsi que pour les suffixes *.squashfs, *.dir, *.ext2, *.cpio.gz. On ne peut pas non plus choisir de borner les recherches à une partition donnée.

  • Dans le cas d'une utilisation avancée, il est possible de modifier presque toutes les phases de démarrage sans avoir à recréer un LiveCD personnalisé grâce au paramètre debian-installer/custom-installation=/monDossierDePersonnalisation

Interventions possibles lors de la préparation du démarrageModifier

((( à suivre)))

Démarrage du live CD détaillé pas à pasModifier

Première phase, commune à tous les modes de démarrage d'UbuntuModifier

  • Le noyau Linux démarre le shell script /init qui se trouve sur l'initrd.gz
  • Des variables sont valorisées par . /conf/initramfs.conf et . conf/conf.d/*
  • Des fonctions d'usage général sont définies par . /scripts/functions
  • La /proc/cmdline est analysée pour utiliser tous les paramètres qui y sont donnés. La valeur de boot=xxx est essentielle: le paramètre xxx sert à définir la variable globale BOOT. Il y a trois valeurs usuelles local, nfs et casper, cette dernière valeur étant celle du LiveCD, le déclenchement du mode LiveCD se fait donc par le paramètre boot=casper donné au noyau Linux par le boot loader.
  • depmod -a
  • export BOOT
  • . /scripts/init-top/* qui décident de faire du swap mémoire s'il y a moins de 512M de RAM et qui fixe le fonctionnement du clavier.
  • Exécution de la fonction load_modules qui charge tous les modules dont le nom est dans le fichier /conf/module (une ligne par module: son nom suivi des paramètres de chargement), sauf ceux qui sont passés par le paramètre blacklist= dans la /proc/cmdline
  • . /scripts/init-premount/*
  • . /scripts/${BOOT} (pour un live CD c'est donc /scripts/casper). C'est ce script qui définit la fonction mountroot chargée de monter le système de fichier racine. Pour un système local, c'est assez simple, mais pour un système Live il y a beaucoup à faire.
  • exécution de la fonction mountroot définie par le script précédent

Seconde phase, propre à Ubuntu LiveModifier

  • Des variables sont valorisées par . /etc/casper.conf
  • Des fonctions sont définies par . /scripts/casper-helpers
  • La /proc/cmdline est examinée. Paramètre essentiel persistent.
  • . /scripts/casper-premount/*

Phase casper-premountModifier

  • Possibilité d'insérer un CD-ROM si l'on a passé le paramètre debian-installer/driver-update=true. Ce CD est utilisé pour recopier dans /tmp/driver-updates des paquets correspondants à l'architecture de la machine.
  • Si l'on a passé le paramètre iso-scan/filename=nom_image.iso l'ensemble des disques est examiné pour chercher le premier qui contient à sa racine le fichier nom_image.iso (normalement, c'est une image .iso de CD-ROM)

Phase de personnalisationModifier

Si l'on a passé le paramètre debian-installer/custom-installation=nom_de_répertoire l'ensemble des disques est examiné pour chercher le premier qui contient à sa racine le répertoire nom_de_répertoire. Si casper en a trouvé un,

  • le contenu de ce répertoire est recopié sous le dossier /custom-installation
  • sauf le contenu du sous-répertoire initrd-override qui est recopié à la racine du système de fichiers permettant ainsi d'écraser ceux que l'on souhaite remplacer
  • s'il existe un fichier exécutable nommé hooks/casper-premount.sh, il sera exécuté.

Phase de recherche du dossier /casperModifier

  • L'ensemble des disques est examiné pour chercher le premier qui contient à sa racine le répertoire /casper. Cette recherche commence par nom_image.iso. Il faut que le dossier contienne au moins un fichier se terminant par .squashfs, .ext2, ou .dir.
  • Recopie de ce répertoire en mémoire; ou sur un disque si cela a été demandé par le paramètre toram ou todisk

Phase de création de la réunion des systèmes de fichierModifier

  • Le contenu du dossier /casper est unifié par aufs en mode read-only. L'ordre est le suivant, sur le dessus, tous les dossiers *.dir, puis tous les fichiers *.squashfs puis tout en bas tous les fichiers *.ext2 (ce sont des fichiers image d'un système de fichiers ext2). Dans chaque catégorie l'ordre est alphabétique inverse: les premiers dans l'ordre alphabétique sont les plus en bas de la pile formée par aufs.
  • La couche supérieure de l'union est lacture-écriture; elle s'appelle /cow. En général ce sera un système de fichier en mémoire monté en tmpfs auquel sera attribué au plus la moitié de la RAM ...
  • ... mais en présence du paramètre de boot persistent, casper cherchera le premier disque dont le système de fichiers portant le label casper-rw. À défaut il cherchera une partition vfat contenant à la racine un fichier casper-rw image d'un système de fichier.

Phase de montage d'une partition /home persistentModifier

  • En présence du paramètre de boot persistent, casper cherchera le premier disque dont le système de fichiers portant le label home-rw. À défaut il cherchera une partition vfat contenant à la racine un fichier home-rw image d'un système de fichier.
  • La première trouvée, s'il y en a une, sera montée en /home.

Phase de recopie des snapshotsModifier

Les snapshots sont des instantanés des partitions /cow ou /home. Ils permettent donc de restaurer le système de fichiers dans l'état où il était au moment où ils ont été pris.

  • Casper cherche un disque contenant à la racine un fichier casper-sn avec pour suffixe .squashfs *.cpio.gz ou *.ext2. Le premier trouvé voit son contenu recopié dans /cow
  • Même chose avec home-sn, le premier trouvé est recopié en /home
  • Les noms et emplacement trouvés sont mémorisés à la fin du fichier /etc/casper.conf pour permettre la sauvegarde lors de l'extinction du système.

Phase casper-bottomModifier

Dernière phase, commune à tous les modes de démarrage d'UbuntuModifier

Création de scripts personnalisés de démarrage du live CDModifier

À voir aussiModifier

Liens externesModifier