[Install] installer /root en LVM sur un disque USB(résolu)

Questions et astuces concernant l'installation et la configuration d'archlinux
ArchIMEDE
Hankyu
Messages : 41
Inscription : lun. 05 janv. 2009, 15:32

[Install] installer /root en LVM sur un disque USB(résolu)

Message par ArchIMEDE »

Je souhaite installer archlinux sur un disque externe usb tel que la partition /root soit stockée dans un volume logique (LVM).

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
}

Edit2: Je me réponds encore à moi même et vous dévoile une façon de contourner le problème car j'ignore si mon constat est la source de celui-ci.

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
Répondre