.boot 的磁盘驱动器尚未准备好或不存在

.boot 的磁盘驱动器尚未准备好或不存在

在 Server 2012 R2 标准集群中的 Hyper-V 上运行 Ubuntu 14.04。当我将此虚拟机故障转移到另一个节点时,它启动时出现此错误:

/boot 的磁盘驱动器尚未准备好或不存在。继续等待,或按 S 跳过安装或按 M 进行手动恢复。

我可以按 S 跳过错误,系统可以启动,但如果我重新启动虚拟机,错误又会再次出现。我也无法对虚拟机进行正确的备份,因为备份软件抱怨启动分区是空的。

有人见过这种情况吗?有什么建议可以解决它吗?

谢斯克

答案1

这可能意味着该/boot分区(通常/dev/sda1)已受到非致命损坏。系统仍能从中读取和启动内核,但无法在启动过程中检测到该分区并挂载它。

除此之外,系统运行正常,但未/boot安装,因此您将无法看到 grub 文件或执行更新内核等操作。

您可能会/boot/etc/fstab文件中找到一个条目,该条目尝试通过其块 ID 来挂载它:

# /boot was on /dev/sda1 during installation
UUID=cc1f7924-150b-412c-81c0-a8931eed57f0 /boot           ext2    defaults        0       2

如果你运行blkid,你应该正常地看到像这样的条目/dev/sda1,但它可能缺失:

/dev/sda1: UUID="cc1f7924-150b-412c-81c0-a8931eed57f0" TYPE="ext2"

file -s能够识别它,并且可能会显示正确的 ID,但它不知何故被损坏了:

$ sudo file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext2 filesystem data (mounted or unclean), UUID=cc1f7924-150b-412c-81c0-a8931eed57f0 (needs journal recovery)

在其上运行 fsck 有望解决问题(尽管在 VM 中可能值得先进行检查点/快照):

$ sudo fsck /dev/sda1
fsck from util-linux 2.20.1
e2fsck 1.42.9 (4-Feb-2014)
Superblock needs_recovery flag is set, but no journal is present.
Clear<y>? yes
/dev/sda1 was not cleanly unmounted, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information

/dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****
/dev/sda1: 301/62248 files (15.3% non-contiguous), 46683/248832 blocks

此后file -s应该会显示一个没有问题的文件系统,并且您应该能够再次挂载它,或者在重新启动时成功挂载它。

$ sudo file -s /dev/sda1
/dev/sda1: Linux rev 1.0 ext2 filesystem data, UUID=cc1f7924-150b-412c-81c0-a8931eed57f0

相关内容