ce qui a été fait durant l'installation:
/etc/rc.conf modifié pour prendre en compte LVM (uselvm="yes")
/etc/mkinitcpio.conf modifié pour activer les volumes logiques et les supports USB au boot:
HOOK="base udev autodetect ... lvm ... usb ... filesystem"
/boot/grub/menu.lst vérifié => il utilise bien les volumes logiques (idem pour fstab)
ce qui se passe lors du premier boot:
recherche des volumes logiques (par l'option "uselvm=yes" dans rc.conf) => aucun volume trouvé
le délai passé par le paramètre rootdelay= dans la commande kernel s'écoule...
le disque usb est détecté (messages dmesg)
la partition /root reste introuvable
C'est normal puisque la détection des volumes logiques s'effectue trop tôt (avant que le disque usb ne soit lui-même détecté)
J'ai trouvé ce billet http://bbs.archlinux.org/viewtopic.php?id=68259.
Première question: la solution proposée est-elle toujours en vigueur? Je veux dire "est-il toujours nécessaire de créer un hook personnalisé pour résoudre le problème ou celui-ci peut-il être à présent être résolu en standard?"
Si une version standard existe, comment l'applique-t-on?
Edit: Je me réponds à moi-même!
le hook "lvm" dispose d'une nouvelle option "lvmwait" (à passer dans la commande kernel de grub) qui, combinée à "rootdelay" semble vouloir satisfaire mon besoin et celui de Michael Gutmann (Gutnix) qui avait ouvert le ticket FS#18428.
Mais, sauf erreur de ma part, le résultat n'est pas probant:
Lorsque le hook s'exécute, on constate bien qu'il attent l'activation du volume physique avant de tenter un vgscan suivi d'un vgchange -ay.
Cependant, malgré la découverte du disque dur usb (messages dmesg faisant preuve), les groupes de volumes et donc les volumes logiques ne sont pas activés.
Je dois donc exécuter manuellement la commande lvm vgchange -ay au prompt initram (comme je devais le faire avant l'existence de l'option lvmwait
Utilisé-je mal cette options ou existe-t-il un bug dans son implémentation?
Voici le contenu du script /lib/initcpio/hooks\lvm2
Code : Tout sélectionner
# vim:set ft=sh:
run_hook ()
{
/sbin/modprobe -q dm-mod >/dev/null 2>&1
if [ -e "/sys/class/misc/device-mapper" ]; then
if [ ! -e "/dev/mapper/control" ]; then
/bin/mknod "/dev/mapper/control" c $(cat /sys/class/misc/device-map$
fi
# If the lvmwait= parameter has been specified on the command line
# wait for the device(s) before trying to activate the volume group(s)
if [ -n "${lvmwait}" ]; then
for pvdev in $(echo ${lvmwait} | sed 's|,| |g'); do
poll_device ${pvdev} ${rootdelay}
done
fi
[ "${quiet}" = "y" ] && LVMQUIET=">/dev/null"
msg "Scanning logical volumes..."
eval /sbin/lvm vgscan --ignorelockingfailure $LVMQUIET
msg "Activating logical volumes..."
eval /sbin/lvm vgchange --ignorelockingfailure --ignoremonitoring -ay $$
fi
}
J'ai modifié les fichiers fstab et grub.cfg pour faire en sorte que la partition /root ne soit pas identifiée par son uuid mais par /dev/mapper/vg01-lv_root
vg01 est le groupe de volumes
lv_root est le volume logique
Je modifie le statut de ce billet en résolu et envisage de vous préparer une page dans le wiki