Linux:Рецепты/Восстановление незагружающейся системы из приглашения grub: различия между версиями
Myagkij (обсуждение | вклад) Нет описания правки |
Myagkij (обсуждение | вклад) Нет описания правки |
||
(не показано 8 промежуточных версий этого же участника) | |||
Строка 6: | Строка 6: | ||
==Проблема== | ==Проблема== | ||
Загрузка системы останавливается на приглашении GRUB grub>. Необходимо загрузить систему и восстановить работоспособную конфигурацию. | Загрузка системы останавливается на приглашении GRUB '''grub>'''. Необходимо загрузить систему и восстановить работоспособную конфигурацию. | ||
==Решение== | ==Решение== | ||
Если загрузка системы останавливается на приглашении grub>, значит загрузчик нашел каталог '''/boot/grub/''', но не может найти корневую файловую систему. | Если загрузка системы останавливается на приглашении '''grub>''', значит загрузчик нашел каталог '''/boot/grub/''', но не может найти корневую файловую систему. | ||
Необходимо найти корневую файловую систему, ядро Linux и соответствующий файл initrd. В командной оболочке GRUB нам доступна вся файловая система. | Необходимо найти корневую файловую систему, ядро [[Linux]] и соответствующий файл initrd. В командной оболочке GRUB нам доступна вся файловая система. | ||
Включим возможность перелистывания страниц, чтобы можно было просматривать длинный вывод, прокручивая его вверх и вниз: | |||
<syntaxhighlight lang="bash"> | |||
set pager=1 | |||
</syntaxhighlight> | |||
Выведим список доступных дисков и разделов. В GRUB свой способ идентификации жестких дисков и разделов. Он нумерует диски, начиная с 0, а разделы — с 1, и маркирует все жесткие диски как hd. В работающей системе Linux жесткие диски обозначаются как '''/dev/sda''', '''/dev/sdb''' и т. д. | |||
Команда в следующем примере обнаружила два жестких диска, hd0 и hd1, которые соответствуют устройствам '''/dev/sda''' и '''/dev/sdb'''. Раздел hd0,gpt5 соответствует разделу '''/dev/sda5''', а hd1,msdos1 — разделу '''/dev/sdb1''': | |||
<syntaxhighlight lang="bash"> | |||
ls | |||
</syntaxhighlight> | |||
Вывод результата команды ls: | |||
<syntaxhighlight lang="bash"> | |||
(hd,0) (hd0,gpt5) (hd0,gpt4) (hd0,gpt3) (hd0,gpt2) (hd0,gpt1) | |||
(hd1) (hd1,msdos1) | |||
</syntaxhighlight> | |||
Как можно заметить, диск hd0 имеет таблицу разделов gpt, а диск hd1 — таблицу разделов msdos. При использовании номеров разделов в командах метки gpt и msdos можно опустить. | |||
GRUB может сообщить типы файловых систем, универсальные уникальные идентификаторы (Universally Unique IDentifier, UUID) и другую информацию о разделах: | |||
<syntaxhighlight lang="bash"> | |||
ls (hd0,3) | |||
</syntaxhighlight> | |||
Вывод результата команды [[ls]]: | |||
<syntaxhighlight lang="bash"> | |||
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 | |||
</syntaxhighlight> | |||
Нам нужно найти каталог '''/boot'''. Допустим, что он находится в корневой файловой системе во втором разделе. Косая черта после имени раздела означает «список всех файлов и каталогов в разделе»: | |||
<syntaxhighlight lang="bash"> | |||
ls (hd0,2)/ | |||
</syntaxhighlight> | |||
Все загрузочные файлы находятся в каталоге '''/boot''': | |||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> | ||
ls (hd0,2)/boot | |||
</syntaxhighlight> | |||
Вывод результата команды [[ls]]: | |||
<syntaxhighlight lang="bash"> | |||
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 | |||
</syntaxhighlight> | </syntaxhighlight> | ||
Все, что нужно для загрузки системы, находится здесь. Установите раздел корневой файловой системы, ядро и образ initrd: | |||
<syntaxhighlight lang="bash"> | |||
set root=(hd0,2) | |||
linux /boot/vmlinuz-5.3.18-lp152.57-default root=/dev/sda2 | |||
initrd /boot/initrd-5.3.18-lp152.57-default | |||
boot | |||
</syntaxhighlight> | |||
{{Примечание1| | |||
* vmlinuz-5.3.18-lp152.57-default — сжатое ядро Linux. | |||
* initrd-5.3.18-lp152.57-default — RAM-диск с временной корневой файловой системой, используемой только в начале запуска системы. | |||
}} | |||
{{Примечание1| | |||
Сбой загрузки может быть вызван: | |||
* повреждением файлов; | |||
* добавлением, удалением или перемещением жестких дисков; | |||
* установкой или удалением операционных систем; | |||
* повторной разметкой диска. | |||
}} | |||
=См.также= | =См.также= |
Текущая версия от 18:50, 13 августа 2023
Восстановление незагружающейся системы из приглашения grub
Проблема
Загрузка системы останавливается на приглашении GRUB grub>. Необходимо загрузить систему и восстановить работоспособную конфигурацию.
Решение
Если загрузка системы останавливается на приглашении grub>, значит загрузчик нашел каталог /boot/grub/, но не может найти корневую файловую систему.
Необходимо найти корневую файловую систему, ядро Linux и соответствующий файл initrd. В командной оболочке GRUB нам доступна вся файловая система.
Включим возможность перелистывания страниц, чтобы можно было просматривать длинный вывод, прокручивая его вверх и вниз:
set pager=1
Выведим список доступных дисков и разделов. В 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
Все, что нужно для загрузки системы, находится здесь. Установите раздел корневой файловой системы, ядро и образ initrd:
set root=(hd0,2)
linux /boot/vmlinuz-5.3.18-lp152.57-default root=/dev/sda2
initrd /boot/initrd-5.3.18-lp152.57-default
boot
См.также
Внешние ссылки