Persistent LiveCD : casper script [résolu! (ou presque)]
Après un court congé, nous voici replongés dans les joies de l’adaptation de la persistance. Aujourd’hui, le principe est simple, on localise les lignes de scripts qui correspondent à ce que casper n’arrive pas à monter le “casper-rw” mais arrive à monter le “home-rw”. Ensuite, on ajoute des petits commentaires de débuggage pour préciser le problème. Ensuite si le problème est proprement localisé, il ne devrait pas y avoir trop de difficultés pour le résoudre. Il devrait…
C’est parti.
- Les lignes de scripts incriminées semblent être les lignes 380 à 415 du script “casper” dans “scripts/” (version 1.135 de casper). Ça commence par
mkdir -p /cow
cowdevice=”tmpfs”
cow_fstype=”tmpfs”
cow_mountopt=”rw,noatime,mode=755″ - La fontion “find_cow_device” est définie dans “casper-helpers” (ligne 182 et suivantes).
N.b.: Petit rappel pour ceux qui comme moi ont la mémoire courte…
Quand on voit utilisé dans un script un test du genre “if [ -b $FICHIER ]“, pour se souvenir ce que veut dire le “-b” ou le “-x” etc, il suffit de lire le man de “test”. Par exemple, “-b” teste si le fichier “$FICHIER” existe et si c’est un fichier spécial en mode block.
L’USB n’apparaît pas dans la liste des “dev” à regarder pour casper-rw. Si il apparaît pour home-rw, c’est qu’il se passe quelque chose entre temps qui fait que /dev/sdx1 peut apparaître. Reste à trouver quoi.
- De mon côté, il y a beaucoup de warnings disant que /dev/fd0 est introuvable. Ça peut être ça qui perturbe le processus (?!)…
/init: /init: 1: Cannot open /dev/fd0: No such file
On peut essayer de désactiver le lecteur de disquettes en suivant les directives données sur cette page. On va dans “$test/squashfs/etc/modprobe.d” pour rajouter la ligne “alias block-major-2 off” dans le fichier “aliases”. Pas sûr que ça améliore grand chose. En fait, c’est même sûr que ça ne servira à rien vu que les scripts correspondants au “modprobe.d” sont lancés beaucoup plus tard.
- On tente d’insérer un “sleep” suffisament long (10 secs pour tester) pour que si le fait que le /dev/sdx n’apparaît pas dans la liste des dev, ce ne soit pas seulement lié à un problème de synchronisation entre deux scripts. On refait un initrd.gz. On refait un squashfs. On refait un iso. On relance une VM. Ça marche ? Et oui ! en tout cas, l’USB apparaissait dans la liste des périphériques block au moment où ils étaient interrogés pour la recherche du volume “casper-rw”. Le problème reste que les messages de log que je faisais envoyer par les fonctions pour debugger ont légèrement perturbé le fonctionnement et que ça n’a pas vraiment totalement marché du coup. Bon, on ré-essaie de même, mais sans les logs.
- Ça marche ! Enfin ça marche dans la machine virtuelle. Pour le reste il va falloir avoir la patience d’attendre que le CD se grave.
- Une fois le CD gravé, ça ne se passe pas trop mal, sauf que j’aboutis à une console en clavier US et qu’il faut lancer kdm à la mano. Je ne vois pas encore d’où ça vient. Par contre, la persistence fonctionne très bien semble-t-il. C’est très rassurant et finalement très impressionant.
Conclusion… Hé bien ça semble marcher plutôt pas mal. On obtient un pendrive-liveCD bien pratique. Je vais peut-être essayer de remettre le descriptif de l’installation totale au propre ici dans la semaine. J’aimerais quand même bien résoudre ce bug de kdm qui ne se lance pas, mais ce n’est absolument pas prioritaire.
Aucun commentaire pour le moment
Laissez une réponse