我最近将Ubuntu从较早的LTS版本(12.04)更新为14.04 LTS,并且在重新启动后,ubuntu无法加载,并显示错误信息/sbin/lvm
:
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!
似乎是/ sbin / lvm:符号查找错误:/usr/local/lib/libreadline.so.5:未定义的符号:PC是罪魁祸首,我想这/sbin/lvm
与正确的库没有正确链接,导致引导映像完全无法运行LVM,因此不会加载LVM卷。
我尝试过的
lvm
在initramfs shell中运行会返回有关符号查找的相同错误。
删除/usr/local/lib/libreadline.so.5
并运行lvm
将使其引发关于libreadline.so.5
不可用的错误。
vgchange
不是有效的命令(我认为它lvm
是必需的,应lvm vgchange -ay
改为使用它来运行?)
我想我应该尝试重新构建启动映像以包括的正确副本lvm
。但是,我不确定如何执行此操作(我应该引导14.04活磁盘并安装lvm2
,还是应该执行更多步骤?如何修改initramfs并进行修复?)我担心会弄乱现有的LVM配置。我该怎么办?谢谢!
经过修改liveCD之后,我已经解决了以下问题:
从Live CD和Live CD引导sudo apt-get install lvm2
。
从中检查LV lvdisplay
,并从中找出启动分区lsblk
使用以下方法安装LV lvchange -a y
挂载根LV和引导分区,例如
须藤mkdir /新
须藤挂载/ dev / mapper / my-root / new
须藤挂载/ dev / sda1 / new / boot
chroot
到/new
并重新安装lvm2
在那里。
转到/usr/local/lib/
并删除(或移动)libreadline.so.5
。
ldconfig
尝试lvm
从chroot运行,您将看到关于/var
不可用的错误,而不是通常的libreadline.so.5
错误。
update-initramfs -u -v
。您将看到libreadline.so.5
不再复制/usr/local/lib
,而是复制x86_64
!这是正确的共享库。
重启。lvm
现在应该可以在initramfs中正确加载,因此它可以成功挂载根分区,并且您现在可以启动。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句