Поиск по сайту:

Как использовать GRUB Rescue для исправления Linux


Резюме: если ваши оболочки GRUB показывают приглашение «grub>», вы можете использовать ls, set, linux и initrd. , чтобы исправить вашу систему Linux. Если вместо этого вы видите подсказку «grub escape>», используйте команды set, insmod, linux и initrd. для загрузки вашего ПК.

Если ваш компьютер с Linux не может загрузить свою операционную систему, вы, вероятно, обнаружите, что смотрите на приглашение в оболочке GRUB. Выполните следующие действия, чтобы восстановить сломанные процессы загрузки.

Когда ваш загрузчик не загружается

Существует очень мало компьютерных проблем, которые заставят ваше сердце сжаться так же глубоко и быстро, как сбой при загрузке. Без работающей операционной системы ваш компьютер на самом деле не компьютер.

Это может быть очень непрозрачной проблемой, и нет простого способа углубиться в первопричину. Без доступа к Linux вы не сможете использовать обычные диагностические инструменты и процессы, которые вы использовали бы для исследования проблемы. А не определив, в чем проблема, как ее исправить?

В Linux GRUB – это программное обеспечение, управляющее процессом загрузки. Если у вас установлено несколько операционных систем, вы можете выбрать ту, в которую хотите загрузиться.

GRUB управляется своей конфигурацией. Он также полагается на другие вспомогательные файлы для выполнения своих функций. Если какой-либо из них отсутствует или поврежден, GRUB не будет работать. Изменения жестких дисков и разделов вашего компьютера должны быть отражены в конфигурации GRUB. Если это не так, инструкции GRUB не будут иметь смысла, и ваш процесс загрузки не будет работать.

В качестве примечания: то, что мы все называем GRUB, на самом деле является GRUB 2. Это расширенная версия GRUB, выпущенная еще в 2012 году. Помимо других изменений, она изменила способ создания файла «grub.cfg» и загружаться со съемных носителей.

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

Есть две разные оболочки GRUB. В зависимости от основной причины проблемы вы можете обнаружить приглашение оболочки GRUB:

grub>

или в командной строке GRUB rescue:

grub rescue>

Оболочка восстановления GRUB еще более ограничена, чем оболочка GRUB, но все же обладает достаточной мощностью, чтобы ваш компьютер загрузился. Как только ваш компьютер загрузится, у вас будет гораздо больше возможностей для устранения основной причины.

Использование оболочки GRUB

Оболочка GRUB — это интерфейс командной строки, который позволяет вам использовать небольшое подмножество команд Linux. Если вы окажетесь здесь, а не на обычном экране входа в систему, это означает, что ваш процесс загрузки испорчен.

Команды, к которым у вас есть доступ, отличаются от обычных версий Linux. Например, команда оболочки GRUB ls не является командой Bash ls. С ним очень мало общего. Мы можем увидеть это, используя опцию --help.

ls --help

Он перечисляет только пять вариантов. Это далеко от десятков опций, поддерживаемых ls в Bash. Тем не менее, даже с нашей несколько приглушенной палитрой команд, мы все же можем исправить ситуацию.

В командной строке введите ls и нажмите «Enter».

ls

На этом компьютере в нем перечислены три элемента.

  • (hd0) – первый жесткий диск.
  • (hd0,gpt1) – это первый раздел на первом жестком диске.
  • (hd0,gpt2) – это второй раздел на первом жестком диске.

Метка «gpt» означает таблицу разделов GUID. Нам нужно включать скобки «()», когда мы ссылаемся на раздел, но мы можем опустить метку.

Чтобы просмотреть разделы по очереди, мы будем использовать ls.

ls (hd0,1)
ls (hd0,2)

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

ls (hd0,2)/

Ясно, что это раздел Linux с загрузочным каталогом на нем. Здесь хранятся файлы GRUB, загрузочные образы Linux и другие загрузочные файлы.

На этом компьютере нам нужно будет ссылаться на раздел (hd0,2), когда мы будем выполнять наши команды. На вашем компьютере вы будете использовать любой раздел, на котором вы найдете свою установку Linux.

Мы можем использовать команду cat для просмотра текстовых файлов, добавив путь к каталогу и имя файла к имени раздела, например:

cat (hd0,2)/etc/issue

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

Здесь мы используем команду ls с параметрами -l (длинный) и -h (удобочитаемый размер) для вывода списка файлов. в каталоге «/boot».

ls -lh (hd0,2)/boot

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

set root=(hd0,2)

Нам нужно указать, с какого ядра Linux загружаться. Мы делаем это с помощью команды linux. Обратите внимание, что мы также должны указать корневой каталог, используя обычную схему именования жестких дисков и разделов Linux.

linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2

На нашем тестовом компьютере мы используем (hd0), который является первым жестким диском. В обычной номенклатуре Linux это называется sda. Мы обнаружили, что второй раздел — это раздел Linux, поэтому нам нужно указать sda2.

Ваша машина может быть другой. Например, если ваш раздел Linux указан как (hd2,1), это означает первый раздел на третьем жестком диске или sdc1.

Нам также необходимо указать, какой образ файловой системы в ОЗУ использовать при загрузке компьютера. Это должно использовать тот же числовой компонент, что и ядро Linux, которое мы используем.

initrd /boot/initrd.img-6.2.0-20-generic

Теперь, чтобы загрузить нашу систему, введите «boot» и нажмите «Enter».

Это должно загрузить ваш компьютер в Linux. Это заставило нас снова работать, но нам все еще нужно исправить GRUB, поэтому нам не нужно делать это каждый раз, когда мы запускаем наш компьютер.

Мы запустим update-grub. Это просканирует нашу систему, определит операционные системы и создаст новую конфигурацию GRUB. Нам нужно запустить это как пользователь root.

sudo update-grub

В редких случаях вам может понадобиться переустановить загрузчик GRUB, используя grub-install.

sudo grub-install /dev/sda

Обратите внимание, что вам не нужно указывать, на какой раздел устанавливать, а только на какой диск. В обычных установках это тот же диск, на котором находится ваш Linux.

Доказательство пудинга приходит со следующей перезагрузкой. Ваш компьютер должен нормально перезагрузиться.

Использование спасательной оболочки GRUB

В зависимости от характера проблемы с загрузкой вы можете не попасть в оболочку GRUB. Вы можете остаться в режиме rescue GRUB. Если это так, ваше приглашение будет выглядеть так:

grub rescue>

Команды, которые нам нужно выполнить в этой оболочке, отличаются. Нам нужно использовать ls, чтобы найти раздел Linux, как если бы вы использовали оболочку GRUB. Определив раздел Linux, вы можете продолжить и ввести эти команды.

Не забудьте использовать идентификаторы дисков и номера версий ядра, которые подходят для вашего компьютера. Команда insmod загружает модули ядра.

set prefix=(hd0,2)/boot/grub
set root=(hd0,2)
insmod normal
insmod linux
linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2
initrd /boot/initrd.img-6.2.0-20-generic

Затем вы можете ввести «boot» и нажать «Enter», чтобы перезагрузить компьютер. После перезагрузки и входа в систему обновите GRUB с помощью команды update-grub.

Другие возможные средства правовой защиты

Если проблема заключается в отсутствии загрузочных файлов, таких как файлы «vmlinuz» и «initrd.img», вы можете загрузить компьютер с Live DVD или загрузочного USB-накопителя Linux и скопировать недостающие файлы на место.

Обратите внимание, что файлы «vmlinuz» и «initrd.img» должны иметь одинаковые номера версий, потому что они работают как совпадающая пара.