缺少根 VG,被丟棄到 initramfs shell
我的 Linux Mint 17.1(64 位)在其作業系統驅動器(SSD)上使用 LVM。我一定是做了“什麼”來破壞我的系統,因為上次我重新啟動時,啟動失敗了。相反,我收到消息*“警報!/dev/mapper/mint–vg-root 不存在。正在進入 shell!”* 和一個 initramfs 外殼。我不知道如何繼續。
我通常是最新的正常系統更新,但不要使用自定義核心或類似的東西。我也很長時間沒有重新啟動,所以我不知道這是最近的問題還是只是因為想要重新啟動而未被發現。
我既不知道 grub 也不知道 initramfs,也沒有任何從這類事情中恢復過來的經驗。當然,我迫切需要訪問我的數據!
其他文章說這可能是由於升級到不支持 lvm2 的核心造成的,並說它可以用這個或那個 Live DVD 修復。問題是,我不能再從 USB 或 DVD 啟動,因為我仍然只是在這個螢幕上結束。
我的下一步是斷開 SSD,看看我是否可以從其他媒體啟動,但這並不是真正的解決方案。
假設我知道如何從媒體啟動,我該怎麼辦?關於我的情況,我還需要告訴你什麼?
更新:
**“lvm lvs”和“lvm pvs”**如下所述。我不知道當一切正常時這個輸出應該是什麼樣子。這是否意味著他們都處於類似(壞)的狀態,還是什麼?
我有一個帶有兩個 LV 的 SSD 用於 root 和交換,另一個 LV 基於兩個獨立驅動器中的每個驅動器上的兩個 PV。LV和VG的數量和命名跟我預想的一樣。
但是,我不知道如何閱讀其他專欄。似乎所有捲都處於相似的狀態(要麼全部好要麼全部壞),但我可能錯了。
**“fdisk -l”**在我的 initramfs shell 上不可用,但我發現從媒體啟動,所以這是從 LinuxMint 17.1 Live USB(與目前作業系統):
$ fdisk -l $ fdisk -l /media/mint/verylonguuidstring last_lba(): I don't know how to handle files with mode 40755 $ fdisk -v fdisk (util-linux 2.20.1) $
嗯,結果不大。這是我偶爾使用的名為 REDO Backup & Restore 的 Live CD 的結果。這會產生更好的結果,或者至少是實際輸出。
至少,我所有的磁碟都可以掛載並且看起來完好無損,所以問題只是在引導。
更新!
我做了一件大膽的事,似乎奏效了。在不同的介質上啟動後,我安裝了啟動分區並修改了 /boot/grub/grub.cfg。在該文件中,“有問題的”標識符“/dev/mapper/mint–vg-root”多次出現。我將它們全部更改為“/dev/mapper/ssd_vg-root_lv”,保存並重新啟動。瞧!它有效,我現在可以將我的普通作業系統啟動到我常用的桌面。呸!
只是,GRUB 選擇螢幕等待了 10 秒,但我設法關閉了“/etc/default/grub”中的“TIMEOUT”設置。
@Bratchley,@nkms,非常感謝您的支持!
確保您的“/boot/grub/grub.cfg”列出了正確的 VG 和 LV。在我的例子中,VG 被命名為“ssd_vg”,而 LV 被命名為“root_lv”,所以 grub.cfg 文件需要引用“/dev/mapper/ssd_vg-root_lv”(注意使用斜線和破折號!)。
在 initramfs 類型中
#/sbin/lvm vgchange -a y # vgchange -a y #exit
如果您無法解決問題,請鍵入此
#ls /dev/mapper
你找到了 root (like /dev/vgname/lvname) #reboot 然後在螢幕上選擇一個核心並選擇 e 來編輯和粘貼一個 root 值(比如 /dev/vgname/lvname)到 /boot/vmlinuxxxxx root=uuid/dev /xxx。然後 ctrl+x 啟動
If problem repeats when reboot the server
去
#/boot/grub/grub.cfg
在 /vm/vmlinuz root=寫你的完整 lv 路徑
如果問題未解決,請嘗試如下修復 initramfs
1.進入伺服器端
# sudo rmmod floppy #echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklis-floppy.conf #dpkg-reconfigure initramfs-tools #update-initramfs -u #update-grub #reboot
2.執行這個
#/etc/initramfs-tools/scripts/local-top/forcelvm
內容如下:
#!/bin/sh PREREQ="" prereqs() { echo "$PREREQ" } case $1 in prereqs) prereqs exit 0 ;; esac . /scripts/functions lvm vgchange -ay
然後做
# chmod +x `/etc/initramfs-tools/scripts/local-top/forcelvm` # update-initramfs -u -k all
- 備份lvm2
#apt-get install lvm2 #cp /usr/share/initramfs-tools/scripts/local-top/lvm2 /tmp
編輯lvm2
#vi /usr/share/initramfs-tools/scripts/local-top/lvm2
在 modprobe -q dm-mod 和 activate_vg “$ROOT” 之間寫入,添加這一行來初始化你的 lvm:
lvm vgchange -ayactivate_vg "$ROOT" if you not find this line
在exit 0上方的文件末尾寫下兩行
#lvm vgchange -ayactivate_vg "$ROOT" #activate_vg="$ROOT"
然後保存文件
#update-initramfs -u #update-grub #reboot