Смонтировать корневую файловую систему из initramfs

16

Это распространенный сценарий. По какой-то причине initramfs (OpenSUSE, в случае, если это имеет значение) не смог найти корневую файловую систему, поэтому он бросает вас в спасательную оболочку. Я прекрасно знаю, какое устройство нужно монтировать. Мой вопрос:

Какова правильная процедура для монтирования корневой файловой системы и продолжения последовательности загрузки?

Предположительно, в этом вся суть спасательной консоли. И все же никто, кажется, не задокументировал, как вы на самом деле это делаете.

Очевидно, я могу где-то смонтировать корневую файловую систему. Но как мне сделать это корнем дерева файловой системы? И теперь я продолжу нормальный процесс загрузки после этого? (Я думал, что только выход из оболочки сделает это ... но это не так.) Что именно вам нужно смонтировать перед тем, как продолжить, и как вы продолжите?

MathematicalOrchid
источник
2
Я могу ошибаться, но я думаю, что после того, как вы окажетесь в спасательной оболочке, вы не сможете продолжить текущую загрузку, вы исправите вещи, чтобы следующая загрузка прошла успешно
Эрик Ренуф,
@EricRenouf ручная загрузка всей системы вполне может быть самым простым способом решения такой проблемы. В прошлом у меня были проблемы, когда initramfs не удавалось открыть мой зашифрованный корневой раздел cryptsetup-luks, и проще всего было вручную загрузить его и запустить update-initramfs -u. Я абсолютно не мог заставить его работать, когда я только что chrootвошел в корневую файловую систему из спасательной системы; полученный initramfs всегда был сломан.
Мартин фон Виттих
Это на самом деле initrd или initramfs? ( Тот факт, что файл вызывается initrd, не означает, что он один: большинство дистрибутивов переключились на него, initramfsно продолжают вызывать файл initrd.) Какой дистрибутив вы используете (поскольку то, что делает initrd / initramfs, зависит от того, какой дистрибутив помещен туда)?
Жиль "ТАК - перестань быть злым"
@ Жиль, я уверен, что это на самом деле initramfs. Не уверен, если это действительно имеет значение, хотя; в любом случае, у меня есть мини файловая система, и мне нужно смонтировать настоящую файловую систему. (OpenSUSE, в случае , если это имеет значение.)
MathematicalOrchid

Ответы:

2

нормальная процедура

  1. mount / dev / sdX / mnt
  2. исправить проблему на / mnt
  3. перезагрузка

Вы можете захотеть

  1. mount / dev / sdX / mnt
  2. исправить / мн
  3. umount / mnt
  4. mount / dev / sdX /
  5. закончить загрузку вручную

Это не рекомендуется, вам придется делать это при каждой загрузке. В производственной среде вы не можете быть уверены, что при ручной загрузке выполняются те же действия, что и при автоматической.

Однако в чрезвычайной ситуации с критическими данными, шаг 5 обычно сводится к:

  • 5.1 настроить сеть
  • 5.2 скопировать важный файл в безопасное место
Archemar
источник
2
Я полагаю, что «реальным» вопросом оригинального плаката было «Как именно вы делаете« 5. завершить загрузку вручную »?»
user2121874
2

Просто запустите fsckкоманду без параметров, initramfsзатем перезагрузите

например: корневой раздел sda3

fsck /dev/sda3
GAD3R
источник
Перезагрузка просто бросила меня в оболочку grub вместо оболочки initramfs. Теперь я сделаю все снова, чтобы попасть в оболочку
initramfs
1

Если root=параметр верен и проблема заключается только в том, что необходимое устройство недоступно (например, потому что initramfs не смог собрать mdRAID), тогда достаточно сделать устройство доступным вручную, например:

mdadm --assemble ...

Затем проверьте, что устройство есть, и если все выглядит хорошо, нажмите ctrl+ dили введите, exitчтобы выйти из оболочки initramfs. Затем initramfs смонтирует корневую файловую систему и продолжит загрузку как обычно. После загрузки системы необходимо устранить основную проблему, например, запустив update-initramfs -u.

Я еще не нашел способ сказать initramfs, чтобы загрузить другое устройство, чем то, что /proc/cmdlineговорит. Может быть, у кого-то еще есть идея?

Мартин фон Виттих
источник