Corrigindo a instalação não inicializável no LVM root a partir do Desktop LiveCD

9

Acabei de fazer uma instalação a partir do LiveCD 10.10 Desktop, tornando o volume raiz um LV LVM.

Aparentemente isso não é suportado; Eu gerenciei essas etapas antes de iniciar o aplicativo de instalação da GUI:

  • instalando o pacote lvm2 no sistema em execução
  • criando uma partição do tipo LVM no disco rígido do sistema
  • criando um volume físico, um grupo de volumes e um LV raiz usando as ferramentas LVM. Eu também criei um segundo LV para /var ; isso não acho relevante.
  • criando um sistema de arquivos (ext4) em cada um dos dois LVs.

Depois de seguir essas etapas, o instalador da GUI ofereceu os dois LVs como destinos de instalação; Aceitei de bom grado, também colocando /boot em uma partição primária separada da partição LVM.

A instalação parece ter ocorrido sem problemas e verifiquei que os volumes raiz e var contêm estruturas de diretórios com aparência aceitável.

No entanto, a inicialização falha; se eu entendi corretamente o que aconteceu, eu fui deixado em um busybox rodando no sistema de arquivos initrd.

Ainda não trabalhei com a totalidade dos documentos do grub2, parece que a entrada que tenta inicializar meu novo sistema está correta:

menuentry 'Ubuntu, with Linux 2.6.35-22-generic' --class ubuntu --class gnu-linux --class gnu --class os {
    recordfail
    insmod part_msdos
    insmod ext2
    set root='(hd0,msdos3)'
    search --no-floppy --fs-uuid --set $UUID_OF_BOOT_FILESYSTEM
    linux   /vmlinuz-2.6.35-22-generic root=/dev/mapper/$LVM_VOLUME_GROUP-root ro   quiet splash
    initrd  /initrd.img-2.6.35-22-generic
}

Note que $ VARS são substituídos no grub.cfg real por seus valores correspondentes.

Eu reiniciei o sistema no livecd e descompactei a imagem initrd em um diretório temporário. Parece que a imagem initrd não possui a funcionalidade LVM. Por exemplo, se eu estiver lendo corretamente /usr/share/initramfs-tools/hooks/lvm2 (instalado com lvm2 no sistema livecd-booted, não presente no sistema instalado), um executável lvm deve estar localizado em /sbin ; esse não é o caso.

Qual é a melhor maneira de remediar esta situação? Eu percebo que seria mais fácil simplesmente usar o CD de instalação alternativo, que aparentemente suporta o LVM, mas eu não quero esperar que ele seja baixado e então tenha que reinstalar.

    
por intuited 17.02.2011 / 21:33

3 respostas

9

Você acertou o problema na cabeça: o initramfs não tem suporte ao LVM. Veja como corrigi-lo:

  1. Inicialize o LiveCD novamente
  2. Instale lvm2 novamente no ambiente Live
  3. Chame o grupo de volume (se -a y não funcionar tente -a sim)

    vgchange -a y
    
  4. Obtenha a raiz LV, / boot e / dev montada sob a árvore separada

    mkdir /newroot
    mount /dev/yourVG/rootLV /newroot
    mount /dev/yourbootpartition /newroot/boot
    mount -o bind /dev /newroot/dev
    
  5. Copie os pacotes necessários para a árvore / newroot

    cp /var/cache/apt/archives/*deb /newroot/tmp/
    
  6. Chroot na nova árvore e instale os pacotes

    chroot /newroot
    cd /tmp
    dpkg -i *.deb
    

Neste ponto, as coisas devem voltar ao normal (já que o initramfs será regenerado quando o lvm2 estiver instalado). Se não, você pode jogar com update-initramfs -u dentro do chroot.

    
por Kees Cook 18.02.2011 / 07:28
1

Depois de instalar o sistema no disco rígido, você precisa instalar o lvm2 nesse sistema antes que ele possa inicializar. Se você instalou o lvm2 no livecd, então os pacotes ainda estarão em / var / cache / apt / archives. Mude para esse diretório, monte o disco rígido e instale os pacotes no disco rígido usando dpkg --root = / mnt * .deb. No seu caso, você precisa montar a raiz fs em / mnt e também o var fs em / mnt / var.

Além disso, você não precisa da partição / boot separada, e uma partição / var separada é questionável.

    
por psusi 17.02.2011 / 21:49
1

Acabei fazendo principalmente o que o Kees Cook expõe, com alguma ajuda da seção final de este passo a passo . No entanto:

  • Eu não vinculei a montagem /dev . Parece que isso causou algumas mensagens de erro mais tarde; veja abaixo.
  • Montei meu volume /var na nova raiz, além de /boot .
  • Eu não copiei os debs no /tmp da nova raiz. Em vez disso, corri # apt-get install aptitude; aptitude install lvm2 após chroot ing.

    • Eu fiz isso para registrar essas ações no banco de dados apt: por exemplo, aptitude e talvez também apt-get , rastrearão quais pacotes foram instalados explicitamente e quais foram instalados automaticamente como dependências.
    • Como estou realmente recebendo meus pacotes por meio de um proxy de apt local (executando apt-cacher-ng ), nem precisei esperar que eles fizessem o download novamente. Eu tive que fazer um arquivo em /etc/apt/apt.conf.d/02proxy contendo Acquire::http::Proxy "http://local-apt-proxy-server:3142"; antes de executar apt-get . Eu tinha feito a mesma coisa antes de começar a instalar pacotes enquanto corria o LiveCD antes de fazer a instalação.
    • Recebi uma mensagem de erro ou avisei algumas vezes, informando

      Can not write log, openpty() failed (/dev/pts not mounted?)
      

** mount -o liga / dev / pts / mnt / nome_do_usuário / dev / pts

    This did not prevent the appropriate lines from being added to '/var/log/dpkg.log'.

    I suspect that this issue could have been averted by bind-mounting '/dev', but I don't really understand what it means, i.e. I don't know what log it's referring to, or why it would need to access a pty in order to write to a log.
    
por intuited 18.02.2011 / 17:14