所以我想我刚才搞乱了我的 Ubuntu 服务器。
我安装了一个 500GB 的硬盘,用 ext4 格式化它,然后想通过编辑 /etc/fstab 和 UUID 来静态挂载。
由于某种原因,我以某种方式删除了 UUID 中的“-”,因为我不知道为什么。因此,重新启动后,我得到了以下信息:
"Gave up waiting for root device. Common Problems:
- Boot args (cat /proc/cmdline)
- Check rootdelay = (did the system wait long enough?)
- Check root = (did the system wait for the right device?)
- Missing module (cat /proc/modules; ls /dev)
ALERT! /dev/mapper/server--vg-root does not exist. Dropping to shell!"
然后我得到一个非常有限的 BusyBox shell。
到目前为止,我尝试过使用实时 USB Ubuntu 桌面进行启动并安装启动驱动器,但访问它时只有内核版本和 grub 以及其他一些内容,但没有根文件“/etc、/usr、/home 等”,否则我只需要撤消对 fstab 的更改并尝试,但我甚至没有到达那里。
编辑(的输出fdisk -l
):
Disk /dev/sdb: 320.1 GB, 320072933376 bytes
81 heads, 63 sectors/track, 122504 cylinders, total 625142448 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00094364
Device Boot Start End Blocks Id System
/dev/sdb1 * 2048 625142447 312570200 83 Linux
答案1
在 中initramfs
输入:
#/sbin/lvm vgchange -a y
#vgchange -a y
#exit
如果您无法解决该问题,请输入以下内容:
ls /dev/mapper
现在,您应该已经找到了根(如/dev/vgname/lvname
)。
reboot
然后在屏幕上选择一个内核,并选择e
编辑并粘贴根值(如/dev/vgname/lvname
):
/boot/vmlinuxxxxx root=uuid/dev/xxx.
然后,最后按Ctrl+X启动。
如果重启服务器后问题再次出现
去
#/boot/grub/grub.cfg
at /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
执行此
#/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" 如果你找不到此行
在文件末尾的 exit 0 上方写入以下两行
#lvm vgchange -ayactivate_vg "$ROOT"
#activate_vg="$ROOT"
save the file
然后
#update-initramfs -u
#update-grub
#reboot
答案2
按照以下步骤挂载lvm分区:
在实时会话中,打开一个终端
按Ctrl++AltT
并运行:sudo fdisk -l
这列出了系统的分区表,它看起来像这样:
Device Boot Start End Blocks Id System
/dev/sda1* 1 4864 39070048+ 83 Linux
/dev/sda2 4865 6691 14675377+ 83 LVM2_member ...
下一步是访问 /dev/sda2 分区。它是一个 lvm 分区。
为了安装所需的工具,请运行以下命令。
sudo apt-get update
sudo apt-get install lvm2
完成此操作后,运行 pvs:
sudo pvs
这将列出我们的物理卷 /dev/sda2 所属的卷组。其格式如下
PV VG Fmt Attr PSize PFree /dev/sda2 VolGroup01 lvm2 a- 148.94G 32.00M
字段 VG: 显示卷组。
上面的输出只是一个示例,表明我们关注卷组“VolGroup01”。
下一步是列出有关此卷组的信息:
sudo lvdisplay /dev/VolGroup01
它会抛出一堆输出,但我们关心的是 LV 名称。它看起来像这样:
LV Name /dev/VolGroup01/LogVol00
假设上面那个是我们需要挂载的分区,那么就用通常的方法挂载就可以了:
sudo mount /dev/VolGroup01/LogVol00 /mnt
现在,您可以在文件夹中找到您正在寻找的数据/mnt
。
答案3
对我来说,这是在 vgrename 出错后发生的。编辑新根的 grub.cfg 即可。此外,我还必须编辑 /etc/fstab,因为它保留了旧的根 vg/lv 值。