从initramfs挂载根文件系统


16

这是常见的情况。无论出于何种原因,initramfs(如果需要的话,OpenSUSE)都无法找到根文件系统,因此它将您带入了应急外壳。我完全清楚需要安装什么设备。我的问题:

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

据推测,这是整个抢救控制台。但是,似乎没有人记录您如何实际执行此操作。

显然,我可以将根文件系统挂载到某个地方。但是,如何使它成为文件系统树的呢?现在,在那之后我是否继续正常的启动过程?(我以为只退出外壳就可以了...但是没有。)在继续之前,您到底需要安装什么,以及如何继续?


2
我可能是错的,但是我认为一旦您进入救援壳,就无法继续当前的启动,请进行修复以确保下一次启动能够成功
Eric Renouf

@EricRenouf手动启动整个系统可能是解决此问题的最简单方法。过去,我遇到了一些问题,其中initramfs无法打开我的cryptsetup-luks加密的根分区,最简单的修复方法是手动启动它然后运行update-initramfs -u。当我chroot从救援系统访问根文件系统时,我绝对无法使它工作。由此产生的initramfs总是被破坏。
Martin von Wittich

它实际上是initrd还是initramfs?(仅仅因为文件被调用initrd并不意味着它是一个文件:大多数发行版都切换到initramfs该文件,而是继续调用该文件initrd。)您使用的是哪种发行版(因为initrd / initramfs的工作取决于发行版所放的内容)?
吉尔斯(Gillles)“所以-别再邪恶了”

@Gilles我很确定它实际上是initramfs。不确定是否真的有所作为;无论哪种方式,我都有一个小型文件系统,并且需要挂载真实的文件系统。(OpenSUSE中,如果它很重要。)
MathematicalOrchid

Answers:



2

正常程序是

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

你可能想要

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

不建议这样做,每次启动时都必须这样做。在生产环境中,您不能确定手动引导的步骤与自动引导的步骤相同。

但是,在紧急情况下,如果有关键数据,步骤5通常可以归结为:

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

2
我相信原始海报的“实际”问题是“您如何精确地完成'5.手动完成启动'?”
user2121874

2

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

例如:根分区是 sda3

fsck /dev/sda3

重新启动只是将我放到了grub shell而不是initramfs shell。现在,我将再次做所有事情以获取initramfs shell
jaam

1

如果root=参数正确并且问题仅在于必需的设备不可用(例如,由于initramfs无法组装mdRAID),那么足以手动使设备可用,例如:

mdadm --assemble ...

然后检查设备是否存在,如果一切看起来都不错,请按ctrl+ d或键入exit以退出initramfs shell。然后,initramfs将挂载根文件系统并继续照常启动。系统启动后,您应该修复基本问题,例如通过运行update-initramfs -u

我还没有找到一种方法来告诉initramfs引导不同于/proc/cmdline所说的设备。也许有人有主意?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.