FAI 4 Debian Wheezy und LVM Probleme
FAI 4 Debian Wheezy LVM Bug
Leider sind bei meiner aktuellen FAI Installation noch zwei LVM Bugs vorhanden.
Ist schon im FAI Wiki hinterlegt.
Der erste Fehler:
dracut findet beim booten ein bestehendes LVM und mountet nicht das Live-System (nfsroot)
Lösung ist beim fai-chroot den Kernelparameter „-k rd_NO_LVM“ anzugeben.
[stextbox id=“bash“]fai-chboot -IBv -k rd_NO_LVM test.dmz-home.secretisland.de[/stextbox]
Dadurch wird der Kernel angewiesen keine LVM Treiber zu laden.
Wenn man dies nicht immer wieder von hand angeben will kann man auch nen alias in der .bachrc setzen.
[stextbox id=“bash“]nano /root/.bashrc[/stextbox]
alias fai-chboot='fai-chboot -k rd_NO_LVM'
Der zweite Fehler:Die FAI Installation bricht beim Storage Setup da es ein LVM findet, und dies nicht löschen tut.
Eine mögliche Lösung ist bei github hinterlegt
Hier als Patch Datei
[stextbox id=“bash“]nano /root/FAI_setup-storage_Commands.pm.patch[/stextbox]
--- /srv/fai/nfsroot/usr/share/fai/setup-storage/Commands.pm.orig 2013-04-19 20:48:00.000000000 +0200 +++ /srv/fai/nfsroot/usr/share/fai/setup-storage/Commands.pm 2013-04-19 20:50:17.170737861 +0200 @@ -644,6 +644,8 @@ if (0 == $clear_vg) { my $vg_setup_pre = "vgchange_a_n_VG_$vg"; + &FAI::push_command( "vgchange -a y $vg", + "", "vg_enabled_for_destroy_$vg" ); if (defined($FAI::configs{"VG_$vg"})) { $FAI::configs{"VG_$vg"}{exists} = 1; @@ -664,12 +666,12 @@ } } - &FAI::push_command( "wipefs -a $vg/$lv", - "vgchange_a_n_VG_$vg$pre_deps_cl", + &FAI::push_command( "wipefs -a /dev/$vg/$lv", + "vg_enabled_for_destroy_$vg$pre_deps_cl", "wipefs_$vg/$lv"); &FAI::push_command( "lvremove -f $vg/$lv", "wipefs_$vg/$lv", - "lv_rm_$vg/$lv,self_cleared_/dev/$vg/$lv"); + "lv_rm_$vg/$lv,self_cleared_$lv"); $vg_setup_pre .= ",lv_rm_$vg/$lv"; } } else { @@ -683,18 +685,21 @@ } my $vg_destroy_pre = "vgchange_a_n_VG_$vg"; + &FAI::push_command( "vgchange -a y $vg", + "", "vg_enabled_for_destroy_$vg" ); + foreach my $lv (keys %{ $FAI::current_lvm_config{$vg}{volumes} }) { my $pre_deps_cl = ""; $pre_deps_cl = ",self_cleared_" . join(",self_cleared_", @{ $FAI::current_dev_children{"/dev/$vg/$lv"} }) if (defined($FAI::current_dev_children{"/dev/$vg/$lv"}) && scalar(@{ $FAI::current_dev_children{"/dev/$vg/$lv"} })); - &FAI::push_command( "wipefs -a $vg/$lv", - "vgchange_a_n_VG_$vg$pre_deps_cl", + &FAI::push_command( "wipefs -a /dev/$vg/$lv", + "vg_enabled_for_destroy_$vg$pre_deps_cl", "wipefs_$vg/$lv"); &FAI::push_command( "lvremove -f $vg/$lv", "wipefs_$vg/$lv", - "lv_rm_$vg/$lv,self_cleared_/dev/$vg/$lv"); ++ "lv_rm_$vg/$lv,self_cleared_$lv"); $vg_destroy_pre .= ",lv_rm_$vg/$lv"; } &FAI::push_command( "vgremove $vg", "$vg_destroy_pre", "vg_removed_$vg");
Eventuell verzieht mein Blog die Zeichen deswegen hier noch als Datei.
FAI_setup-storage_Commands.pm.patch
Alternativ kann man diese Datei in /etc/fai/nfsroot-hooks erstellen und ausführbar machen.
10_FAI_setup-storage_Commands.pm.patch.sh
Patch anwenden
[stextbox id=“bash“]patch -Np1 -i /root/FAI_setup-storage_Commands.pm.patch[/stextbox]
Dieser Patch muss, bis er eingebaut ist, bei jeder neu Erstellung des FAI Live-Systems wieder angewendet werden.
Anstatt einen alias zu nutzen wuerde ich die Templatefunktion von fai-chboot nutzen und dann das Template mit fai-chboot -vc templatename rechnermane kopieren.