Как вручную получить приглашение initramfs при загрузке

Вопрос или проблема

Я пытаюсь получить приглашение initramfs при загрузке, потому что у меня нет USB-накопителей или чего-то еще, что я могу использовать, и мне нужно использовать fsck на моем /dev/sda, но это, очевидно, не разрешено, пока он смонтирован. Это недостаточно плохо, чтобы я получил приглашение, но оно все равно иногда исправляет несколько вещей при загрузке. Так что мой вопрос сводится к следующему:

Как я могу остановить или приостановить процесс загрузки в Arch Linux, чтобы получить приглашение initramfs?

(Извините, если это невозможно в Arch, я пришел с Debian)

Перезагрузите машину и перейдите в режим восстановления.
выберите переход к корневой оболочке.

перемонтируйте файловую систему с помощью следующей команды.
mount -o remount, rw /

Тогда вы можете запустить команду fsck.

На мой взгляд, самый простой способ сделать это — прервать процесс загрузки, указав альтернативную оболочку init на командной строке ядра.

Например, большинство систем сегодня загружаются через GRUB. GRUB обычно отображает меню или дает вам несколько секунд, чтобы прервать его перед загрузкой. Если ваша система этого не делает, интернет говорит, что вы можете удерживать клавишу <Shift> при загрузке, чтобы заставить систему войти в меню GRUB. В моем случае я просто продолжаю нажимать <Esc>, пока не произойдет то же самое.

Как только вы окажетесь в меню GRUB, выберите 'e', чтобы отредактировать командную строку по умолчанию, которая передается ядру. В конце строки добавьте строку init=/bin/bash. Это заставляет ядро загрузить bash вместо systemd или /etc/init или busybox или чего-то еще.

Теперь у вас есть корневая оболочка и система в состоянии по умолчанию. Вы, вероятно, работаете с initramfs на этом этапе. Если у вас есть fsck в вашем initrd и если ваша корневая файловая система не зашифрована, вы можете просто ввести fsck /dev/hdX для любого /dev/, где находится ваша файловая система.

Если fsck нет в вашем initrd/initramfs, вам нужно будет смонтировать корневую файловую систему, чтобы получить доступ к этой программе. Просто введите mount -o ro /dev/hdX /mnt (опять же, замените hdX на соответствующий узел устройства, разблокируйте LUKS, если он зашифрован, запустите RAID или LVM, если вы используете их, и т. д.), затем вы можете запустить /mnt/bin/fsck /dev/hdX. Вы не можете использовать fsck на файловой системе, если она не смонтирована только для чтения с параметром -o ro.

Когда это будет сделано, если все пройдет успешно, перезагрузите систему (с помощью <Ctrl>+<Alt>+<Delete>), и все будет готово. Если вы введете ‘exit’ или нажмете ^D, чтобы выйти из корневой оболочки, ядро, по сути, выйдет из строя. В теории, вы также можете использовать exec /sbin/init, чтобы запустить систему, но проверить полную загрузку системы здесь было бы разумно.

.

Ответ или решение

Получение доступа к приглашению initramfs при загрузке может быть полезно для выполнения таких задач, как восстановление файловой системы с помощью fsck. Рассмотрим, как это можно сделать вручную на Arch Linux.

Теория

В типичном процессе загрузки Linux начальная загрузка начинается с загрузчика, который передаёт управление ядру операционной системы. Ядро передает управление init-системе, которая затем инициирует загрузку оставшихся компонентов системы. Initramfs, на данный момент, играет роль промежуточной файловой системы и может быть использован для аварийного восстановления системы.

Чтобы прервать процесс загрузки и получить доступ к shell в initramfs, мы можем использовать функциональность загрузчика GRUB, который позволяет модифицировать параметры загрузки.

Пример

Для доступа к приглашению initramfs через модификацию загрузочных параметров используем следующий метод:

  1. Доступ к меню GRUB:

    • Перезагрузите вашу машину.
    • Во время запуска, удерживайте клавишу <Shift>, чтобы войти в меню GRUB (либо нажимайте <Esc> несколько раз для вызова того же меню).
  2. Редактирование командной строки ядра:

    • В меню GRUB выберите загрузочную запись вашего Arch Linux и нажмите e, чтобы отредактировать параметры загрузки.
  3. Добавление параметра для запуска bash:

    • Найдите строку, начинающуюся с linux, и в конце строки добавьте init=/bin/bash (данная команда загрузит bash вместо стандартного init-процесса системы).
  4. Запуск системы:

    • Нажмите Ctrl + X или F10, чтобы запустить ядро с измененными параметрами.

Применение

Сейчас вы находитесь в root shell в состоянии initramfs. Выполните следующие действия для проверки и восстановления вашей файловой системы:

  1. Проверка файловой системы:

    • Если команда fsck имеется в initramfs, просто запустите ее для проверки нужного раздела, например:
      fsck /dev/sda
  2. Если fsck отсутствует:

    • Вам потребуется примонтировать корневую файловую систему, чтобы получить доступ к команде fsck.
    • Смонтируйте файловую систему в режиме только для чтения:
      mount -o ro /dev/sda /mnt
    • Затем выполните:
      /mnt/sbin/fsck /dev/sda
  3. Перезагрузка системы:

    • После завершения процесса проверки и восстановления, перезагрузите систему комбинацией клавиш Ctrl + Alt + Delete.

Данный метод позволяет аккуратно и безопасно получить доступ к initramfs и выполнить необходимые восстановительные процедуры. Он особенно полезен, если у вас нет под рукой загрузочных носителей, таких как USB-накопитель.

Оцените материал
Добавить комментарий

Капча загружается...