Erro de LVM na inicialização causando queda no initramfs

0

Eu recentemente atualizei o Ubuntu de uma versão mais antiga do LTS (12.04) para o 14.04 LTS e na reinicialização, o ubuntu não carrega e um erro em /sbin/lvm é mostrado:

There appears to be one or more degraded LVM volumes, and your root device may 
depend on the LVM volumes being online. 
One or more of the following LVM volumes are degraded:
/sbin/lvm: symbol lookup error: /usr/local/lib/libreadline.so.5: undefined symbol: PC
Gave up waiting for root device...
ALERT! /dev/mapper/my-server-root does not exist. Dropping to a shell!

Parece que o erro de pesquisa de símbolo / sbin / lvm:: /usr/local/lib/libreadline.so.5: símbolo indefinido: PC é o culpado, e suponho que /sbin/lvm não foi corretamente vinculado com as bibliotecas apropriadas, fazendo com que a imagem de inicialização não seja capaz de executar o LVM, portanto, os volumes LVM não são carregados.

O que tentei

  1. A execução de lvm no shell initramfs retorna o mesmo erro sobre a pesquisa de símbolos.

  2. Remover /usr/local/lib/libreadline.so.5 e executar lvm fará com que seja exibido um erro sobre libreadline.so.5 não estar disponível.

  3. vgchange não é um comando válido (suponho que exija lvm e deve ser executado usando lvm vgchange -ay em vez disso?)

Eu acho que eu deveria tentar reconstruir a imagem de inicialização para incluir uma cópia correta de lvm . No entanto, não tenho certeza de como fazer isso (devo inicializar um disco live 14.04 e instalar lvm2 , ou devo fazer mais algumas etapas? Como posso modificar o initramfs e corrigi-lo?) E tenho medo de estragar configuração existente do LVM. Como devo fazer isso? Obrigado!

    
por Jimmie Lin 04.05.2017 / 17:27

1 resposta

0

Depois de alguns ajustes no liveCD, resolvi o problema da seguinte forma:

  1. Inicialize a partir do Live CD e do Live CD sudo apt-get install lvm2 .

  2. Verifique os LVs de lvdisplay e descubra a partição de inicialização em lsblk

  3. Monte o LV usando lvchange -a y

  4. Monte a raiz LV e a partição de inicialização, por exemplo

    sudo mkdir / new

    monte / dev / mapper / my-root / new

    sudo mount / dev / sda1 / novo / boot

  5. chroot to /new e reinstalar lvm2 de lá.

  6. Acesse /usr/local/lib/ e remova (ou mova) libreadline.so.5 .

  7. ldconfig

  8. Tente executar lvm do chroot, você verá um erro sobre /var não estar disponível, em vez do erro usual libreadline.so.5 .

  9. update-initramfs -u -v . Você verá que libreadline.so.5 não será copiado de /usr/local/lib , mas sim de x86_64 ! Esta é a biblioteca compartilhada correta.

  10. Reinicie. lvm agora deve ser carregado corretamente no initramfs, por isso monta a partição raiz com êxito e agora você pode inicializar.

por Jimmie Lin 07.05.2017 / 05:58