从 initramfs 挂载根文件系统

从 initramfs 挂载根文件系统

这是一个常见的场景。无论出于何种原因,initramfs(OpenSUSE,如果它很重要的话)都无法找到根文件系统,因此它会让您进入救援 shell。我非常清楚需要安装什么设备。我的问题:

挂载根文件系统并继续启动顺序的正确步骤是什么?

大概这就是全部观点救援控制台。然而,似乎没有人记录过你实际上是如何做到这一点的。

显然我可以在某个地方安装根文件系统。但我怎样才能做到这一点文件系统树的?现在我要继续正常的启动过程吗? (我以为只要退出 shell 就可以了...但事实并非如此。)在继续之前您到底需要安装什么,以及如何继续?

答案1

执行 switch_root /mnt/root /sbin/init

https://wiki.gentoo.org/wiki/Custom_Initramfs#Init

答案2

这取决于问题的类型,如果问题在于 initramfs 映像本身,那么您需要实际重新生成它(运行 update-initramfs)来修复问题。请记住,initramfs 文件系统是 RAM 文件系统,因此要修复任何问题,您需要修复压缩的 initramfs 映像和/或修复根文件系统。

我在 LUKS 加密的 Ubuntu 系统上使用了以下过程,以便恢复因错误 crypttab 损坏而损坏的启动。

首先,我解密了分区

cryptsetup luksOpen /dev/nvme0n1p3 nvme0n1p3_crypt

请注意,这device_crypt不是随机的。它需要与系统安装时通常使用的名称匹配(分区 + _crypt 似乎是标准的)。

接下来,您需要激活该现已解密的分区上的卷组。

vgchange -ay

现在,您可以尝试挂载文件系统、/、/boot、proc、swap 等,并以这种方式运行。

尽管就我而言,我所要做的就是输入 exit,initramfs 会看到逻辑卷放在那里并愉快地恢复启动。那时很容易修复损坏并运行update-initramfs -u

答案3

只需运行fsck不带选项的命令,initramfs然后重新启动

例如:根分区是sda3

fsck /dev/sda3

答案4

正常程序是

  1. 挂载 /dev/sdX /mnt
  2. 修复 /mnt 上的问题
  3. 重启

你可能想要

  1. 挂载 /dev/sdX /mnt
  2. 修复/mnt
  3. 卸载/mnt
  4. 挂载/dev/sdX/
  5. 手动完成启动

不建议这样做,您必须在每次启动时执行此操作。在生产环境中,您无法确保手动启动遵循与自动启动相同的步骤。

然而,在涉及关键数据的紧急情况下,第 5 步通常可归结为:

  • 5.1 设置网络
  • 5.2 将重要文件复制到安全的地方

相关内容