Linux:Рецепты/Восстановление незагружающейся системы из приглашения grub rescue
Восстановление незагружающейся системы из приглашения grub rescue
Проблема
Загрузка системы останавливается на приглашении GRUB grub rescue>. Необходимо загрузить систему и восстановить работоспособную конфигурацию.
Решение
Если загрузка системы останавливается на приглашении grub rescue>, аварийной командной оболочки, это означает, что загрузчик не нашел каталог /boot.
Выведим список доступных дисков и разделов. В GRUB свой способ идентификации жестких дисков и разделов. Он нумерует диски, начиная с 0, а разделы — с 1, и маркирует все жесткие диски как hd. В работающей системе Linux жесткие диски обозначаются как /dev/sda, /dev/sdb и т. д.
Команда в следующем примере обнаружила два жестких диска, hd0 и hd1, которые соответствуют устройствам /dev/sda и /dev/sdb. Раздел hd0,gpt5 соответствует разделу /dev/sda5, а hd1,msdos1 — разделу /dev/sdb1:
ls
Вывод результата команды ls:
(hd,0) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1)
(hd1) (hd1,msdos1)
Как можно заметить, диск hd0 имеет таблицу разделов gpt, а диск hd1 — таблицу разделов msdos. При использовании номеров разделов в командах метки gpt и msdos можно опустить.
GRUB может сообщить типы файловых систем, универсальные уникальные идентификаторы (Universally Unique IDentifier, UUID) и другую информацию о разделах:
ls (hd0,3)
Вывод результата команды ls:
Partition hd0,3: filesystem type ext* - Last modification time 2023-11-19
11:27:38 Tuesday, UUID 2b41c7b2-e34a-4464-8fa8-111363cd1bff - Partition start at 526336KiB -
Total size 20444160KiB
Нам нужно найти каталог /boot. Допустим, что он находится в корневой файловой системе во втором разделе. Косая черта после имени раздела означает «список всех файлов и каталогов в разделе»:
ls (hd0,2)/
Все загрузочные файлы находятся в каталоге /boot:
ls (hd0,2)/boot
Вывод результата команды ls:
efi/ grub/ System.map-5.3.18-lp152.57-default config-5.3.18-lp152.57-default
initrd-5.3.18-lp152.57-default vmlinuz vmlinuz-5.3.18-lp152.57-default
sysctl.conf-5.3.18-lp152.57-default vmlinux-5.3.18-lp152.57-default.gz
В приглашении grub rescue> необходимо выполнить несколько дополнительных команд: вы должны указать, где находится каталог /boot/grub, а затем загрузить модули ядра normal и linux, которые находятся в /boot/grub/i386-pc (вместе со многими другими модулями ядра, которые GRUB использует при запуске).
Модуль normal изменяет режим загрузки с аварийного на нормальный, а linux запускает системный загрузчик:
set prefix=(hd0,2)/boot/grub
set root=(hd0,2)
insmod normal
insmod linux
Когда модули normal и linux будут загружены, включится поддержка автодополнения клавишей Tab ⇆ . Кроме того, можно включить прокрутку вывода командой set pager=1, чтобы получить возможность использовать клавиши со стрелками для перехода к предыдущим командам. После этого нужно сообщить загрузчику GRUB, где тот сможет найти ядро и файл initrd:
linux /boot/vmlinuz-5.3.18-lp152.57-default root=/dev/sda2
initrd /boot/initrd-5.3.18-lp152.57-default
boot
См.также
Внешние ссылки