# [RAID/LVM2] Root sur LVM2 (résolu)

## kwenspc

Problème récurrent (une recherche sort pas mal de résultat) mais les solutions de fonctionnent pas chez moi.

ce howto http://gentoo-wiki.com/HOWTO_Install_Gentoo_on_an_LVM2_root_partition non plus

J'ai donc installé gentoo sur du raid avec LVMv2 entre deux. 

J'ai configuré mon kernel à la main, tranquillement. Sans initrd, je vois bien sur l'écran que les disques RAID sont bien detectés (raid software 100%) mais après il bloque car il n'arrive pas à mounter la partition root. Et pour cause: il check pas du tout lvm  :Neutral:   (il devrait...)

Ma config:

```

/dev/md1 -> /boot Raid 1

/dev/md2 -> /home Raid 1

/dev/md3 -> Raid 0 + LVMv2: / (/dev/vg/baseroot), /tmp (/dev/... ), /usr/portage, /var et /var/tmp

```

Bref rien d'exotique.

Sur grub j'ai mis cette ligne:

```

dolvm2 baseroot init=linuxrc lvmraid=/dev/md3 root=/dev/vg/baseroot 

```

Bon j'ai essayé pas mal de combinaison différentes rien n'y fait.

Je suis déjà sûr qu'il ne faille pas absolument booté avec un initrd. D'ailleurs quand je boot avec ce dernier il bloque avant même d'avoir détecté les disques raid: aucuns disques, rien dans /dev/mapper et il se plante en me sortant "je connait pas /dev/vg/baseroot", normal... (et puis j'utilise jamais les initrd, je trouve ça pas top).

Si vous avez une idée... 

Au fait, question subsidiaire, c'est normal si je ne trouve rien de relatif à LVMv2 dans la config kernel? J'ai bien "Raid and LVM" support mais après nada (à part les différents mode RAID et quelques autres babioles)

----------

## UB|K

 *kwenspc wrote:*   

> Au fait, question subsidiaire, c'est normal si je ne trouve rien de relatif à LVMv2 dans la config kernel? J'ai bien "Raid and LVM" support mais après nada (à part les différents mode RAID et quelques autres babioles)

 

pour LVM2 c'est bien dans la section "Raid and LVM" qu'il faut chercher:

-> Device mapper support (soit CONFIG_BLK_DEV_DM)

donc si tu ne vois rien, c'est pas normal...

Bon, je sais que ça se fait pas de ne répondre qu'à la question subsidiaire mais j'ai pas beaucoup d'idée pour le reste, une seule pour être précis (mais comme tu dis avoir assez pas mal de combinaisons, ça doit pas être pertinent): ne devrait tu pas dire à ton grub un truc du genre: lvm2root=blahblah ?

----------

## kwenspc

 *UB|K wrote:*   

>  *kwenspc wrote:*   Au fait, question subsidiaire, c'est normal si je ne trouve rien de relatif à LVMv2 dans la config kernel? J'ai bien "Raid and LVM" support mais après nada (à part les différents mode RAID et quelques autres babioles) 
> 
> pour LVM2 c'est bien dans la section "Raid and LVM" qu'il faut chercher:
> 
> -> Device mapper support (soit CONFIG_BLK_DEV_DM)
> ...

 

Ok donc ma config est bonne. 

Pour la suite je vois pas. Avec l'initrd ça s'arrête avant même que les disques RAID aient été détecté, sans initrd ce sont les volumes LVM qui ne sont pas détecté avant le montage du root (les disques RAID étant bien détectés à ce moment là).

----------

## anigel

Rhaaaa cette manie de faire des initrd, j'ai jamais compris à quoi ça pouvait bien servir  :Wink:  (mis à part un /boot au format exotique, ce qui n'est pas ton cas).

Au vu de ta conf, et si c'était pour moi (tiens c'est vrai, ça ressemble vachement à chez moi tout ça   :Laughing:  ), je m'en tiendrais à un noyau classique, sans initrd, avec les pilotes inclus dedans en dur, et chargé direct depuis le /boot, en read-only pour éviter de faire gueuler le driver md.

----------

## kwenspc

 *anigel wrote:*   

> Rhaaaa cette manie de faire des initrd, j'ai jamais compris à quoi ça pouvait bien servir  (mis à part un /boot au format exotique, ce qui n'est pas ton cas).

 

Oui j'en utilise jamais habituellement. (j'en vois pas l'intérêt quand on a une config fixe et que le noyau est fait aux ptits oignons)

 *anigel wrote:*   

> 
> 
> Au vu de ta conf, et si c'était pour moi (tiens c'est vrai, ça ressemble vachement à chez moi tout ça   )

 

Tiens oui c'est bizarre  :Laughing: 

Je vais en effet privilégier la solution sans initrd, autant ne pas changer mes habitudes. Mon kernel est, je pense, bien configuré. Je mets toujours tout en dur (les rares modules que je peux avoir concerne du matériel utile une fois que la machine a bootée. Genre carte son etc...)

Reste à savoir quel boot-line balancer au kernel dans grub afin qu'il sache bien faire d'abord md + lvm avant de vouloir monter le root. Là est mon unique problème (car via le livecd j'arrive sans problème a ré-assembler mes disques raid, puis détecter le groupes lvm2 et chrooter dans tout ça)

----------

## El_Goretto

 *kwenspc wrote:*   

> Reste à savoir quel boot-line balancer au kernel dans grub afin qu'il sache bien faire d'abord md + lvm avant de vouloir monter le root. Là est mon unique problème (car via le livecd j'arrive sans problème a ré-assembler mes disques raid, puis détecter le groupes lvm2 et chrooter dans tout ça)

 

Mmmm, strange, car à part / qui était pas LVM, j'ai déjà monté une gentoo en RAID+LVM sans soucis particuliers, et le liveCD allait bien.

Je vais pas être franchement précis, car c'était il y a presque 1 an, et "ailleurs", donc j'ai plus la bête sous la main.

Mais tout pareil qu'anigel, rien d'exotique, çà s'est fait tout seul (tout en dur dans le noïo), et faut juste jouer du mdadm et du vgscan/vgchange avec le liveCD.

--

edit: tenez, une page sympa que j'ai trouvé pour me rafraichir la mémoire.

----------

## kwenspc

 *El_Goretto wrote:*   

> 
> 
> Mais tout pareil qu'anigel, rien d'exotique, çà s'est fait tout seul (tout en dur dans le noïo), et faut juste jouer du mdadm et du vgscan/vgchange avec le liveCD.
> 
> 

 

Ah nan mais ça ok ça fonctionne parfaitement via le livecd de cette manière. Ce que je cherche à faire maintenant c'est booter sur mon install toute fraiche, à partir de mon noyau via grub. Et justement j'y arrive pas car je dois pas avoir la bonne ligne de commande kernel (les options qu'on passe au kernel pour booter).

----------

## El_Goretto

Oh la la, désolé, j'avais pas compris :/

Et puis je viens de réaliser un truc: "avant", j'avais pas besoin de "root=" pour booter mes noïos, et tout de suite, c'était plus simple  :Smile: 

D'ailleurs, ça vient d'où, ce besoin subit des noyaux à partir d'une certaine version, de vouloir un "root=xxx" pour booter?

----------

## kwenspc

 *El_Goretto wrote:*   

> 
> 
> D'ailleurs, ça vient d'où, ce besoin subit des noyaux à partir d'une certaine version, de vouloir un "root=xxx" pour booter?

 

Ce serait pas par hasard juste parce que nous séparons /boot sur une partition propre et distincte de / ? Il me semble...

[Edit] Grumblblll je vois pas pourquoi ce noyau me check pas LVM avant de vouloir monter root!! rien à faire sans ça.

```

dolvm2 lvmraid=/dev/md3 real_root=:dev/vg/baseroot

dolvm2 lvmraid=/dev/md3 lvm2root=:dev/vg/baseroot

...

```

Et l'erreur est:

```

VFS: cannot open root device "<NULL>" or unknown-block(253,4) 

```

Je nage encore dans la semoule...

[/edit]

[edit2]

Je comprends encore moins bien maintenant...soit disant qu'il faut absolument un initrd lorsqu'on a le root sur lvm...

cf. https://forums.gentoo.org/viewtopic-t-573807-highlight-lvm2+boot.html (serieux je trouve ça louche...)

[/edit2]

----------

## kwenspc

ouin   :Crying or Very sad: 

Par désespoir j'ai testé avec l'initrd fait via genkernel --lvm2 --dmraid --mdadm ...nada

C'est vraiment nul ce initrd, le bouzin il laisse même pas le kernel s'occuper de la détection des disques RAID... ce que lui foire complètement. Alors penez bien: lvm il en est loin... 

Je sens que je vais péter une durite là.   :Mad: 

----------

## kwenspc

J'ai revu pour la enième fois l'initrd...et oh tiens dolvm2 existe plus en fait. (super les docs "achement" à jour...). c'est dolvm tout court. (et pourtant oui c'est bel et bien du lvm2 derrière)

Résultat des courses, j'arrive à booter. MAIS toujours avec cet initrd "tu purri"   :Razz: 

Enfin, je vais m'en contenter, j'en ai un peu marre là. Merci de votre aide!

----------

## anigel

Je ne peux émettre que des hypothèses, mais je pense que tu dois avoir un souci entre grub et cette fameuse option root=.

Tu as un /boot séparé. Donc lorsque tu vas installer grub, il doit aller chercher le noyau sur cette partition. Peu importe qu'elle soit en RAID-1 : grub ne fait qu'y lire, il n'y écrit jamais. L'important à ce stade, c'est simplement que le noyau puisse se charger en mémoire (à la limite, si tu obtiens un kernel panic, c'est encourageant). Ensuite, une fois que ton kernel démarre, il faut simplement vérifier qu'il a les bonnes options compilées dedans (à priori oui), et qu'il est capable d'aller ouvrir la bonne partition pour démarrer init (le processus qui lance ensuite tous les autres). Ce dernier est sur la partition /, il faut donc en premier lieu que le noyau puisse ouvrir cette dernière. C'est le rôle de l'argument root= (qui ne devrait jamais être omis d'ailleurs). Ce dernier doit pointer, en nomenclature linux et non grub, vers la partition racine (donc pas celle désignée dans la conf grub pour trouver le noyau).

Si avec ça ça ne marche pas, c'est plutôt une question de conf du noyal.

----------

## kwenspc

 *anigel wrote:*   

> Si avec ça ça ne marche pas, c'est plutôt une question de conf du noyal.

 

Si si ça fonctionne  :Smile: 

Le seul "défaut" est qu'il m'a fallu créer un initrd afin que les volumes LVM2 (sur lequel se trouve la partition racine / sur laquelle je souhaite booter, /boot est en effet séparé juste sur un "disque" RAID-1, auquel grub à accès en lecture sans problème)

Pour résumer: je n'ai trouvé nulle part la technique permettant de démarrer sur une partition / sous LVM SANS se passer d'initrd. Si j'ai bien compris, le noyau est incapable de faire vgscan/vgchange afin de "découvrir" les volumes LVM. 

Voilà donc finalement la ligne de boot que j'ai:

```

title  Nux!

root (hd0,0)

kernel /boot/kernel-2.6.22-r9 dodmraid dolvm root=/dev/ram0 init=/linuxrc lvmraid=/dev/md3 real_root=/dev/vg/baseroot lvm2root=/dev/vg/baseroot splash=silent,theme:livecd-2007.0 CONSOLE=/dev/tty1 quiet video=vesafb:mtrr:3,ywrap vga=791

initrd /boot/initramfs-2.6.22-r9

```

J'ai crée l'initrd via genkernel (pas le noyau, celui là je me le réserve) sinon c'est la misère de faire ça, il y a bien un script mais j'ai été feignant.

Je me suis sans doute mal expliqué avant mais sans passer par un initrd, le noyau étant le même (j'ai vérifié et re-vérifié maintes fais sa config), le noyau s'arrête après la détection des disques RAID et plante car ne sait trouver root (qui avait alors pour valeur /dev/vg/baseroot, j'ai même essayé avec /dev/mapper/vg-baseroot...nada). Donc c'est bien un soucis de "découverte" LVM que le noyau est incapable de faire de lui même. D'où l'obligation de passer par un initrd (qui possède alors les bons outils lvm-utils en statique et peut donc faire cette découverte des volumes LVM).

Si quelqu'un a LA méthode pour ce passer d'un initrd dans le cas où la partition root est sous LVM je suis preneur. (je n'ai trouvé personne qui y arrivait sans initrd)

----------

## El_Goretto

Ca me rappelle étrangement cette discussion avec Yoyo (où j'ai bien été ridicule, mais passons  :Smile: ) sur la méthode pour passer en full libata, et la façon dont on peut indiquer l'option "root=/dev/by-label/truc".

A ce moment là aussi, j'ai comme qui dirait eu un problème à concevoir qu'on puisse ne pas nécessiter d'initrd pour passer par les labels.

Si vous avez des explications, ça m'interesse grandement.

----------

## kwenspc

 *El_Goretto wrote:*   

> 
> 
> A ce moment là aussi, j'ai comme qui dirait eu un problème à concevoir qu'on puisse ne pas nécessiter d'initrd pour passer par les labels.
> 
> 

 

Et bien moi c'est l'inverse  :Laughing: , j'ai du mal à concevoir qu'on ne puisse pas se passer d'initrd pour passer sur un label LVM... Malheureusement mes recherches m'ont prouvés que j'avais tord: if partition("/").isLVM() then BootWithInitrd() else goToHell() fi

----------

