![调整根分区大小后,Fedora 29 启动到 dracut 紧急 shell](https://linux22.com/image/1614222/%E8%B0%83%E6%95%B4%E6%A0%B9%E5%88%86%E5%8C%BA%E5%A4%A7%E5%B0%8F%E5%90%8E%EF%BC%8CFedora%2029%20%E5%90%AF%E5%8A%A8%E5%88%B0%20dracut%20%E7%B4%A7%E6%80%A5%20shell.png)
我在 VirtualBox 中将 Fedora 29 上的根文件系统从 15GB 调整为 20GB,但无法再启动。它总是进入 dracut 紧急 shell。在 VirtualBox 中首先调整 VDI 和快照的大小后,我按照步骤 1.1 到 1.11 扩大了磁盘,并按照此主题。当我遇到问题时,我正在执行步骤 2(重新启动)。
运行后blkid
我看到/dev/sda1
和/dev/sda2
。我已经/dev/sda1
在 Fedora Live 中挂载了 并且可以看到它是启动分区,因此如果我想的话可以编辑 grub 配置,但我找不到挂载 的方法/dev/sda2
。LVM 报告没有设备。
blkid
两个设备的输出有所不同。虽然/dev/sda1
报告了UUID
,TYPE
但PARTUUID
我只PARTUUID
在 上看到/dev/sda2
。当我使用 删除并重新创建分区时fdisk
,它是否抹去了 LVM 所需的一些元数据?有没有什么办法可以让这个系统再次启动?
答案1
我将回答我自己的问题,以防将来其他人遇到同样的问题。我遇到这个问题的主要原因是因为fdisk
自邮报我正在跟进,所以被问了一个我没有想到的问题(即我所遵循的说明中没有提到的问题)并且我也回答得很差。
fdisk
现在将提醒您存在签名LVM2_member
并询问您是否要删除它:
Partition #2 contains a LVM2_member signature.
Do you want to remove the signature? [Y]es/[N]o:
不幸的是,由于我现在不想深入讨论的原因,但您可以阅读我的完整博客文章(我将在下面提供链接),我Y
对此做出了回答。不出所料,这将磁盘上的 64 位lvm_type
字段清零LABEL_HEADER
,导致我的系统无法启动,而是毫不客气地将我扔进 dracut 紧急 shell 中。
解决方案是将 64 位标头写回到磁盘。我找不到可以帮我完成此操作的工具,因此我使用dd
Fedora Live 中的将磁盘中的前几个块读入文件,使用 编辑文件vi -b
,然后使用 将其再次写回到磁盘dd
。我确切地知道要编辑哪些字节,因为我将 的输出od -Ax -tx1z -v <filename>
与我可用的早期快照的副本进行了比较。请注意,我正在使用的 Fedora Live 映像不可用xxd
。重新添加缺失的签名后,LVM 立即识别出磁盘,我能够再次挂载我的卷。
由于完整的解释和过程相当长,我写了一篇博客。如果你也遇到过类似的困境,你可能会发现我的笔记很有用,你可以查看这里。