Что такое ошибка загрузки Grub и как исправить ошибку загрузки Grub
Что такое ошибка загрузки Grub? Как исправить ошибку загрузки Grub? В этой статье приведены простые решения для исправления ошибок загрузки Grub 15, 17, 21, 22.

Дмитрий Соловьев
2021-06-08 17:44:47 • Обновлено: Компьютерные решения Windows • Проверенные решения
Часть 1. Что такое GRUB и ошибки загрузки GRUB?
GRUB означает Grand Unified Bootloader, который вызывается BIOS вашей системы для загрузки ядер и отображения загрузочного меню на выбор пользователя. Он похож на NTLDR или BOOTMGR для Windows, но поддерживает ядра Windows и Linux и имеет больше возможностей. Однако если вы не настроили Grub должным образом, вы столкнетесь с ошибками GRUB, подобными тем, что описаны ниже.

Ошибки загрузки Grub 15, 17, 21, 22
Для Grub Stage 1 нет номеров ошибок, только «Hard Disk Error», «Floppy Error», «Read Error» или «Geom Error». Следовательно, если вы получаете номер ошибки, вы, вероятно, используете Grub Stage 1.5 или Stage 2.0. Итак, что означает номер ошибки загрузки Grub? Давайте выясним это ниже:
Grub Loading Error 15: Файл не найден. Эта ошибка отображается, когда указанное имя файла не может быть найдено.
Grub Loading Error 17: Не удается смонтировать выбранный раздел. Эта ошибка отображается, когда требуемый раздел существует, но тип файловой системы не распознается GRUB.
Grub Loading Error 21: Выбранный диск не существует. Эта ошибка отображается, если диск не распознается BIOS в системе.
Grub Loading Error 22: Нет такого раздела. Эта ошибка появляется, если запрашиваемый раздел отсутствует на выбранном диске.
Что вызывает ошибки загрузки Grub 15, 17, 21, 22?
Правильная настройка GRB при установке Windows и Linux на компьютер важна для успешной загрузки одной из операционных систем. Если это сделано неправильно, это может привести к ошибкам загрузки GRUB, таким как ошибки 15, 17, 21 и 22. Распространенными причинами возникновения ошибок загрузки GRUB могут быть:
- Повреждение MBR.
- Неправильная конфигурация GRUB.
- GRUB установлен в неправильном месте.
- GRUB случайно удален.
Теперь, когда вы знаете, что такое GRUB, распространенные коды ошибок GRUB Loading Error, а также общие причины возникновения этих ошибок, вы, возможно, ищете, как от них избавиться. Итак, если вас беспокоит ошибка GRUB Loading Error, и вы хотите исправить ее, чтобы продолжать беспрепятственно использовать компьютер для работы, читайте дальше, чтобы узнать решения.
Часть 2. Как исправить ошибку загрузки Grub
Вот несколько простых решений для всех популярных ошибок загрузки Grub.
Ошибка загрузки Grub 15: Если вас беспокоит ошибка загрузки Grub 15, вам необходимо убедиться, что файл ядра существует на вашем компьютере. Чтобы узнать точное имя ядра, необходимо выключить компьютер, а затем загрузить его с Live CD. Затем смонтируйте /boot на вашем компьютере, а затем выполните следующие действия: cd /boot | ls
Это даст вам точное имя файла ядра. Однако возможно, что файл ядра отсутствует на вашем компьютере. В этом случае вы все равно можете использовать live CD для переустановки системы, чтобы избавиться от ошибки.
Grub Loading Error 17: Если вы столкнулись с Grub Loading Error 17, вам следует убедиться, что настройки root(x,y) в Grub.conf верны. Вам понадобится дистрибутивный или Live CD для настройки Grub, как показано ниже, где (h0,0) означает первый жесткий диск и первый раздел на этом диске.
sudo grub
root (hd0,0)
setup (hd0)
Exit
1. Загрузите компьютер с live CD.
2. Выполните эту команду: sudo fdisk -l.
3. Вероятно, вы получите следующие результаты:
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
255 heads, 63 sectors/track, 60801 cylinders, total 976773168 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disk identifier: 0x62ff371f
Device Boot Start End Blocks Id System
/dev/sdb1 2048 206847 102400 7 HPFS/NTFS/exFAT
/dev/sdb2 206848 174082047 86937600 7 HPFS/NTFS/exFAT
/dev/sdb3 174082110 976771071 401344481 f W95 Ext’d (LBA)
Grub Loading Error 21: Чтобы исправить ошибку Grub 21, сначала убедитесь, что диск правильно подключен и обнаружен BIOS, затем загрузите компьютер с установочного диска Ubuntu. Теперь запустите Command Prompt от имени администратора и введите следующие команды:
$sudo -s
#grub
grub> find /boot/grub/stage1 (затем cmd вернет что-то вроде «hd0,0»)
grub> root (hd0,0)
grub> setup (hd0)
grub> quit
Grub Loading Error 22: Вы можете использовать установочный диск Windows для запуска Startup Repair и исправления MBR.
Ошибка загрузки Grub обычно возникает, когда Grub пытается загрузить систему, отличную от Windows. Поэтому вы можете исправить MBR с помощью опции Startup Repair на установочном диске Windows, а затем переустановить Grub. Для Unix-подобных систем используйте дистрибутивный CD или Live CD. Также, чтобы легко исправить ошибку Grub 22, вы можете перезагрузить компьютер, а затем несколько раз нажать «F8» до появления опций на экране. Теперь вернитесь в меню, где была опция выбора операционной системы. Выберите «Консоль восстановления Microsoft Windows». Для этого вам может понадобиться установочный диск Windows, чтобы получить доступ к консоли восстановления. Теперь введите номер перед системным диском, указанным в списке, когда вам будет предложено выбрать системный диск. Затем введите пароль учетной записи. Теперь запустите команду fixmbr и введите «y» для подтверждения операции. И наконец, нажмите на «exit» и перезагрузите компьютер.
Часть 3. Как восстановить данные с незагружающегося компьютера из-за ошибки загрузки GRUB
Когда компьютер сталкивается с ошибками загрузки GRUB, вы не сможете загрузить компьютер, если вышеуказанные решения не сработают. Однако как восстановить данные на компьютере, если это произошло? Не волнуйтесь. В этом случае вам понадобится мощное средство восстановления данных, чтобы убедиться, что из-за ошибок загрузки GRUB не будут потеряны важные фотографии, видео, электронные письма или документы.
Recoverit Data Recovery может помочь вам в этом вопросе. Она может создать загрузочный носитель для загрузки незагружающегося компьютера и восстановить все виды данных. Просто выполните следующие действия:
Ваше безопасное и надежное ПО для восстановления файлов
- Восстанавливает потерянные или удаленные файлы, фотографии, аудио, музыку, электронную почту с любого устройства хранения данных эффективно, безопасно и полностью.
- Поддерживает восстановление данных из корзины, жесткого диска, карты памяти, флэш-накопителя, цифрового фотоаппарата и видеокамеры.
- Поддерживает восстановление данных после внезапного удаления, форматирования, повреждения жесткого диска, вирусной атаки, сбоя системы в различных ситуациях.
Шаг 1. После запуска программы Recoverit нажмите на режим восстановления данных. Если ваша windows 10 не запускается, перейдите на вкладку «Восстановление с аварийного компьютера», после чего в следующем появившемся окне вам будет предложено нажать «Пуск».

Шаг 2. Чтобы создать загрузочный диск, нажмите кнопку mode. Перед вами появятся два варианта загрузки: CD/DVD-привод и USB. Вы можете выбрать любой вариант из этих двух, а затем нажать кнопку «Создать», чтобы начать процесс.

Шаг 3. Появится еще одно всплывающее окно с предложением отформатировать выбранный режим. Если вы выбрали вариант USB, нажмите на вкладку «Форматировать». Однако перед тем, как продолжить, убедитесь, что у вас есть резервная копия соответствующих данных.

Шаг 4. Процесс загрузки начнется немедленно. Однако не извлекайте флэш-накопитель USB во время этого процесса. Следующее действие, которое необходимо выполнить, отобразится на экране, или вы можете просмотреть все руководство.

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

Шаг 6. Перед началом процесса восстановления убедитесь, что вы разрешили последовательность загрузки компьютера для загрузки с загрузочного носителя, созданного ранее. После этого перезагрузите компьютер и сразу же нажмите клавишу F12.

Обратите внимание, что ключ BIOS (Basic Input/Output System) в разных системах будет разным. Посмотрите как настроить компьютер для загрузки с USB-накопителя.
Шаг 7. После завершения загрузки программа Recoverit запустится автоматически. Теперь вы можете скопировать данные с жесткого диска или начать процесс восстановления потерянных данных в Windows 10. Мы поможем вам решить проблемы с потерянными данными на Windows 10.
Заключительные слова
Теперь вы знаете, что такое ошибка загрузки Grub и как можно исправить эту проблему. Кроме того, если вы потеряли важные данные из-за ошибки загрузки GRUB, профессиональный инструмент восстановления данных, такой как Wondershare Recoverit — это все, что вам нужно, чтобы вернуть потерянные или удаленные файлы данных.
Не загружается Linux, чиним загрузчик GRUB

Любите экспериментировать? Наверняка вы когда-либо пытались произвести какие-то действия со своей Linux-системой, причем не так важно какие были цели: изучение и познание новых возможностей или же какая-то более конкретная цель, в виде исправления той или иной ошибки. В любом случае, при работе с дистрибутивами Linux, для загрузки которых, в большинстве случаев, и используется Grub, с последним могут возникать неприятные проблемы, ввиду которых дальнейшая эксплуатация системы просто-напросто невозможна. В этой статье вы узнаете, что делать, если не загружается Linux. Как вести себя в подобной ситуации и какие действия производить, чтобы починить загрузчик Grub. Пожалуй, начнем.
Что такое Grub

Grub (или GRand Unified Bootloader) — загрузчик операционных систем с открытым исходным кодом. Распространяется он под лицензией GNU GPL, в полностью свободном виде. С помощью этого замечательного лоадера можно сделать много всего — основная же функция не ограничивается загрузкой лишь одной операционной системы. Вы можете иметь куда больше операционных систем на своем ПК, загружая любую из них с помощью Grub. На скриншоте выше вы можете видеть как примерно Grub выглядит. Кстати говоря, если вы захотите установить Ubuntu 18.04 рядом с Windows, вам определенно понадобится помощь Grub.
Grub используется в большинстве дистрибутивов Linux в качестве загрузчика по-умолчанию. Разумеется и с ним иногда возникают проблемы. Этим самые проблемы чреваты полным отказом операционной системы. Поэтому для починки Grub нам понадобятся дополнительные инструменты. Какие именно — узнаете далее.
От чего могут возникнуть проблемы
Одна из самых распространенных причин — это неправильный порядок установки двух операционных систем (Linux и Windows). Допустим, если вы захотите установить две этих операционных системы на свой ПК — вам непременно стоит знать правильную последовательность:
- Сначала устанавливаем Windows
- И только потом уже Linux
Если, например, сделать наоборот, то как раз-таки Grub будет поврежден; система будет грузиться напрямую в Windows, а дистрибутив Linux останется недоступным.
Grub может сломаться и по другим причинам. Например, из-за попыток ручного изменения параметров запуска (при недостатке опыта), в таком случае нужно будет либо вручную убирать лишнее, либо полностью переустанавливать Grub.
Восстановление Grub с помощью LiveCD/USB
Для этого способа нам понадобится флешка с дистрибутивом Linux на борту. Подойдет любой: от Ubuntu, Arch или даже Linux Mint. Здесь нужен только терминал, поэтому подойдет даже версия без графической оболочки.
Как создать LiveCD/USB
Само собой, нам понадобится носитель, на который мы временно (а может и нет) запишем систему. Сохраните все важные файлы, которые были на этом носителе, после чего (имеется ввиду на другом ПК, желательно под управлением Windows) запишите загруженный образ дистрибутива на носитель. В качестве примера мы будем использовать дистрибутив Ubuntu.
Идем на официальную страницу загрузки. Загружаем любую понравившуюся версию (лучше взять новейшую для десктопа), после чего записываем ее на USB/CD.
С помощью Rufus:
Последняя версия приложения доступна на официальном сайте. Сразу после загрузки и запуска/установки мы увидим такое окно:

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

Находим загруженный образ через менеджер, после чего жмем "Старт".
С помощью Etcher:
Опять же, идем на официальный сайт, где скачиваем последнюю версию утилиты. Далее делаем все так, как показано на этой гифке:
Ну а теперь, собственно, можно переходить к восстановлению Grub. Вставляем флешку в наш ПК (где сломан загрузчик), после чего перезагружаем его с этой самой флешки. Как только мы войдем в лайв-систему, сразу открываем терминал, после чего проделываем следующие действия:
Открываем таблицу разделов с помощью команды:
Примерно такая таблица будет выведена на экран:
По этой таблице мы видим, что Linux, в нашем случае, расположен на разделе /dev/sda1.
С помощью следующей команды мы смонтируем этот раздел в /mnt:
Теперь, для записи grub в MBR, нужно ввести следующую команду:
Если нужно только восстановить MBR диска (после переустановки Windows, к примеру), то этих действий будет вполне достаточно.
Если же необходимо обновить и меню grub (после установки Windows), то нужно выполнить еще и эту команду:
Вот и все, восстановление закончено!
Восстановление с помощью chroot
Помимо вышеописанного способа, при восстановлении Grub с помощью LiveCD можно использовать и этот. Тут мы будем использовать утилиту chroot.
Здесь нам, опять же, понадобится таблица разделов. Вводим уже известную команду:
В выводе снова будет эта таблица. Теперь нам надо присмотреться к ней еще внимательнее.
В этом способе нам необходимо примонтировать системный, а также нескольких других важных разделов. Для этого вводим эти команды:
Обратите внимание, что если если разделы /boot или /var находятся отдельно, то Вам нужно будет примонтировать их в /mnt/boot и /mnt/var.
Далее мы переходим в окружающую среду chroot с помощью команды:
И теперь, наконец-таки переустанавливаем Grub с помощью следующей команды:
Если вы на этом этапе получаете какие-то сообщения об ошибках, то попробуйте использовать эти команды:
Если все прошло успешно, выходим из chroot, используя команду:
Далее нужно отмонтировать все разделы. Для этого вводим в терминал:
В случае, если вы монтировали раздел /boot введите команду:
Теперь перезагружаем систему с помощью:
Можно также обновить меню Grub, используя команду:
Восстановление Grub в rescue mode
Если по каким-то причинам у вас нет доступа к LiveCD/USB-носителю, а также к компьютеру, с помощью которого этот самый носитель можно было бы сделать, то этот способ для вас.
Само восстановление проходит таким образом: сначала мы подгружаем все модули, чтобы открыть доступ ко всей функциональной части Grub, после чего запуститься с нужного раздела. Надо понимать, что Grub состоит из двух частей:
Одна из этих частей (первая) записана в MBR диска. В ней присутствует базовый функционал и ничего больше (консоль в rescue mode).
Стало быть, нам нужно определить, в каком разделе находится вторая часть Grub (находится в каталоге /boot/grub), и после чего подгрузить все недостающие модули. А вот уже после этого мы сможем запустить загрузчик с нужного раздела. В rescue mode есть всего четыре команды:
Для начала вводим следующую команду:
В выводе будет что-то подобное:
В некоторых случаях Grub неправильно опеределяет файловые системы находящиеся на разделах дисков. В данном примере загрузчик показывает их как msdos. Мы должны попытаться угадать диски, которые видим. В примере доступно два диска. Диск с индексом 0 содержащий три раздела, и диск с индексом 1 содержащий два раздела. Если вы знаете структуру своих дисков, определить нужный труда не составит.
В загрузчике Grub разделы нумеруются в обратном исчислении. Не очень ясно какой именно из разделов назван, к примеру (hd0,msdos3). Чтобы было более понятно, можно использовать вид (hd0,1). Если в грабе отсчет дисков идет с 0, а разделов с 1, то можно определить, что операционная система установлена в первый раздел первого раздела — (hd0,1). Используем следующую команду:
С помощью этих команд мы приказываем системе использовать какой-то конкретный диск, для выполнения всех остальных операций (в нашем случае, это диск (hd0,1)). Чтобы проверить есть ли на данном диске загрузчик, введем эту команду:
Если в выводе будет список файлов и папок, значит мы все сделали правильно. Теперь можно загрузить все необходимые модули. Для этого выполним команды:
После выполнения команд Grub загрузится в полнофункциональном режиме. Будут найдены все операционные системы, которые установлены на компьютере, после чего будет показано стандартное меню загрузки.
Чтобы закрепить результат (и не проделывать все то же самое после перезапуска ПК), нужно зайти в терминал своего дистрибутива Linux, где с root правами выполнить следующую команду:
sdX — диск, на который должен быть установлен Grub.
Если операционная система расположена на разделе с файловой системой btrfs, то нам необходимо выполнить следующие команды:
И подгрузить модули:
Ну и теперь запустить GRUB:
Восстановление Grub с помощью утилиты Boot repair

С помощью этой замечательной утилиты вы сможете восстановить загрузчик всего в пару кликов. Как видно из скриншота, утилита имеет собственный GUI, ее использование не вызовет трудностей.
Чтобы установить boot repair, вы можете воспользоваться одним из приведенных способов:
- Запись и установка специального образа диска Boot Repair (и дальнейшая загрузка с него)
- Установка Boot repair из PPA-репозитория в LiveCD/USB дистрибутиве.
Если с первым способом все понятно: нужно просто скачать и записать образ с помощью соответствующих инструментов. То во втором уже нужно знать конкретные команды, которые выглядят следующим образом:
В утилите будет доступно два варианта на выбор:
Recommended repair исправляет большую часть известных ошибок, которые могли бы возникнуть при запуске. С его помощью вы сможете пофиксить и загрузчик Grub.
Create a BootInfo summary создает Boot-Info-Script – скрипт, который позволяет диагностировать большинство проблем при загрузке.
Здесь же есть и Advanced options. Он включает в себя варианты для восстановления и настройки загрузчика Grub2 (загрузка по-умолчанию, опции загрузки ядра, отображение или скрытие GRUB при загрузке, удаление GRUB). С помощью этих же инструментов, вы можете восстановить MBR и т.д.
Вам обязательно стоит заглянуть на официальный сайт Boot Repair. Там вы сможете найти более подробную информацию обо всех возможностях и особенностях программы. Там же будет доступна информация о выходе новых версий: фиксах и улучшениях самой утилиты, а также многом и многом другом.
Выводы
Вот мы и рассмотрели несколько вариантов исправления загрузчика Grub. Стоит сказать, что некоторые из них могут показаться сложными или даже невыполнимыми. Это не так, каждый из рассмотренных способов нашел подтверждение в виде сотен и тысяч актов исправления загрузчика Grub в опенсорсном сообществе. Кстати говоря, какой из способов выбрать — решать только вам, любой из них достаточно эффективен, чтобы попасть в этот материал.
Возможно вас заинтересуют и другие похожие материалы про починку загрузчика Grub2. Например, в этом материале вы узнаете, как починить GRUB2 если Ubuntu не хочет загружаться. Там более подробно рассказывается, как фиксить груб с помощью утилиты Boot Repair, возможно вам стоит заглянуть туда, если вы не поняли что-то из этого материала. Что же, ну а на сегодня это все. Надеюсь, что данный материал помог вам разобраться в ошибках. Что, в свою очередь, поможет вам их решить.
Глава 3. Начальный загрузчик GRUB
Тот начальный загрузчик, который используют системы Linux в эти дни это GRUB версии 2. Самая первый стабильный выпуск GRUB 2 состоялся в 2012, однако он начал появляться в Linux корпоративного уровня в 2014 с Centod 7 и RHEL 7. После 2015 он наблюдался как широко адаптированный в почти всех популярных дистрибутивах Linux. Обычно, когда пользователи сообщают об ошибках или запрашивают новые функциональные возможности, разработчики прислушиваются к получаемым отзывам, расставляют приоритеты и в конечном счёте запускают некую новую версию кода. Тем не менее, в случае GRUB это работает несколько иным способом. Разработчики GRUB приняли решение изменить всю структуру GRUB 2 в то время, когда пользователи были счастливы с наследуемым GRUB (версии 1).
"Наследуемый GRUB превратился в не поддающийся поддержке из- за неряшливого кода и неудачного проектирования. Мы получили большое число запросов на новые функции и расширили GRUB за рамки первоначальной сферы, при этом не изменяли его конструкцию. Это привело к тому, что больше не возможно было расширять GRUB без переосмысления всего с самого начала."
Вот некоторые предоставляемые или находящиеся в разработке функциональные возможности GRUB:
Полная поддержка USB.
Поддержка LUKS (Linux Unified Setup Key, Унифицированного ключа установки Linux). LUKS выступает стандартом для шифрования жёсткого диска Linux.
Модная реализация меню, которая обладает анимацией, эффектами, таблицами стилей и т.п.
Инструмент "parted" будет добавлен в имеющийся начальный загрузчик. После его добавления пользователи смогут редактировать настройки диска в момент загрузки.
Данная глава рассмотрит следующее:
Как GRUB 2 реализуется для встроенного ПО BIOS и UEFI.
Относящиеся к встроенному ПО структурные изменения в GRUB 2.
Функциональные возможности спецификации начального загрузчика GRUB 2.
Функциональная возможность Безопасного запуска UEFI и то как она реализована в GRUB 2.
Некоторые относящиеся к начальному загрузчику проблемы и как их можно исправлять.
Реализация GRUB 2
Как мы уже видели, GRUB получает управление от встроенного ПО. Это означает, что ему приходится иметь дело как с UEFI, так и с BIOS. Для начала давайте рассмотрим как GRUB 2 был реализован для систем на основе BIOS.
GRUB 2 в системах на основе BIOS
GRUB 2 в системах на основе BIOS удерживает все свои файлы в трёх различных местоположениях.
В случае Ubuntu версия 2 не применяется в именовании GRUB, а потому это будет /boot/grub/ вместо /boot/grub2/ , grub-install вместо grub2-install и grub-mkconfig вместо grub2-mkconfig .
Давайте обсудим эти местоположения и их содержимое.
/boot/grub2
Это то местоположение, в котором будет установлен GRUB 2. Как вы можете видеть на Рисунке 3-1, этот каталог содержит основные файлы ядра начального загрузчика.
Рисунок 3-1
Представленные в /boot/grub2 файлы
Device.map
GRUB не понимает названия дисков такие как sda или vda , так как эти соглашения об именование дисков были созданы драйверами SCSI операционной системы. Очевидно, что GRUB исполняется когда ваша ОС ещё не представлена, а потому он обладает своим собственным соглашением именования дисков. Ниже приводятся соглашения об именовании дисков GRUB:
2
hd0, msdos1
Жёсткий диск номер 0 и раздел номер 1, который обладает разделом таблиц MS-DOS
2
hd1, msdos3
Жёсткий диск номер 2 и раздел номер 3, который обладает разделом таблиц MS-DOS
2
hd2, gpt1
Жёсткий диск номер 3 и раздел номер 1, который обладает разделом таблиц GPT
1
hd0, 0
Жёсткий диск номер 0 и раздел номер 0
В GRUB номер жёсткого диска начинается с 0, а номера его разделов стартуют с 1, в то время как соглашения об именовании дисков и разделов ОС стартуют с 1. Поскольку соглашения об именовании дисков ОС и GRUB различны, следует устанавливать соответствие для пользователей и именно по этой причине был создан файл device.map .
Этот файл device.map будет применяться grub2-install в качестве команд для понимания на каком из дисков установлены файлы ядра GRUB. Вот некий образец такого файла:
Наша команда grub2-install получит ввод в виде соглашений именования дисков ОС, так как пользователи не осведомлены о соглашениях именования дисков GRUB. В процессе своего выполнения grub2-install преобразует соглашения об именовании дисков SCSI в соглашения об именовании дисков GRUB считав файл device.map .
grub.cfg
Это основной файл настрое GRUB. Как вы можете видеть на Рисунке 3-2, это гигантский файл сценария, который вырабатывается по ссылкам на прочие файлы сценариев, которые мы вскоре обсудим. Настоятельно предлагается не вносить изменения в само содержание grub.cfg , поскольку это может превратить вашу версию Linux в не запускаемую. Именно этот файл является тем, из которого Часть 3 GRUB получает такие инструкции как:
Местоположение своего ядра и initramfs
Подобные командам параметры ядра
Название корневой файловой системы и её местоположения и т.п.
Рисунок 3-2
Файл grub.cfg
Как вы можете увидеть отсюда, GRUB обладает своим собственным набором команд:
menuentry
Выводит на печать на экран имеющийся заголовок.
set root
Предоставит названия диска и раздела в которых хранятся необходимое ядро и initramfs
linux
Значение абсолютного пути к самому файлу ядра Linux
initrd
Значение абсолютного пути к самому файлу initramfs Linux
Итак, последовательность запуска GRUB 2 в системе Fedora на основе BIOS следующая:
Включается электропитание: вначале BIOS, далее POST, затем BIOS и после этого самый первый сектор.
Первой идёт самораскрутка (Часть 1 GRUB), затем Часть 2 GRUB и потом Часть 3 GRUB.
Часть 3 GRUB считает только что показанный grub.cfg из /boot/grub2/ (в случае Ubuntu это будет /boot/grub/ ) и выдаст на печать приветственное окно, как это отображено на Рисунке 3-3.
Рисунок 3-3
Приветственное окно
В тот момент как пользователь выбирает menuentry , будут запущены команды set root , linux и initrd и стартует загрузка в оперативную память необходимых ядра и initramfs.
В подобных Fedora дистрибутивах Linux вы обнаружите другой подход. Будет иметься файл grub.cfg , однако команды menuentry , set root , linux и initrd будут недоступны в grub.cfg . Тогда это некая новая разработка восходящего проекта GRUB с названием BLS. Мы обсужим её позднее в этом разделе.
i386-pc
Этот каталог имеет в себе модули (драйверы) всех имеющихся сопровождаемых GRUB файловых систем (обратитесь, пожалуйста, к Рисунку 3-4. Все файлы *.mod являются такими модулями. Применяя эти модули GRUB способен загружать необходимые файлы ядра и initramfs в оперативную память. Например, /boot в этой системе обладает файловой системой ext4 , а потому, очевидно, при выявлении и загрузке файлов vmlinuz и initramfs из /boot , GRUB требуется модуль ext4 , который он и получает из файла ext4.mod . Аналогично для /boot в файловой системе XFS или UFS; следовательно, файлы xfs.mod и ufs.mod представлены в /boot/grub2/i386-pc . В то же самое время вы обнаружите такие файлы как http.mod и pxe.mod . Это означает, что Часть 3 GRUB 2 может загружать необходимые файлы ядра и initramfs с устройств http и pxe . В целом, файлы *.mod добавляют функциональные возможности, а не просто устройства. Эти возможности будут включать в себя поддержку устройства, поддержку файловой системы или сопровождение протокола.
Ранее, /boot под LVM был не возможен и причина этого была простой. GRUB не понимал устройства LVM. Для распознавания и сборки необходимого устройства LVM GRUB потребуется модуль LVM, а также такие исполняемые файлы как vgscan , vgchange , pvs , lvscan и т.п.. Это увеличивало бы размер GRUB как пакета; следовательно, производители основных корпоративных систем Linux всегда избегали /boot на устройствах LVM. Однако после введения UEFI GRUB начал поддерживать /boot и на устройствах LVM.
Рисунок 3-4
Файлы .mod* из /boot/grub2/i386-pc
Как вы можете видеть на Рисунке 3-5, помимо таких файлов *.mod , вы обнаружите и пару прочих файлов в рассматриваемом нами местоположении /boot/grub2/i386-pc/ .
Рисунок 3-5
Дополнительные к *.mod файлы
Файл core.mod это Часть 3 GRUB 2. Поэтому последовательность запуска Linux становится следующей:
После того как наше ядро в оперативной памяти, задание GRUB 2 выполнено. Об оставшейся части последовательности запуска будет заботиться само ядро, которое мы обсудим в Главе 4.
/etc/default/grub
Другой важный файл, это конечон же /etc/default/grub . Обратите, пожалуйста, внимание на Рисунок 3-6.
Рисунок 3-6
Содержимое каталога /etc/default
Этот файл используется GRUB для принятия косметических исправлений и изменений командной строки ядра от своего пользователя.
Как вы можете видеть, в этом файле мы можем изменять значение таймаута по умолчанию приветственного окна GRUB, значение шрифта, значений подменю и параметры командной строки ядра, такие как название его корневого устройства, название устройства подкачки и т.п..
/etc/grub.d/
Теперь мы дошли до того момента, который представляет реальный интерес относительно GRUB 2.
GRUB 2 обладает командой с названием grub2-mkconfig . Её название подразумевает, что она сделает необходимый файл настроек GRUB grub.cfg , который будет справочным для Части 3 GRUB при отображении своего приветственного окна. Файл grub2-mkconfig вначале получит имеющиеся входные параметры косметических исправлений и командной строки ядра из /etc/default/grub и запустит необходимые файлы сценария, перечисленные на внимание на Рисунке 3-7 из своего каталога /etc/grub.d/ .
Рисунок 3-7
Содержимое каталога /etc/grub.d/
Как вы можете видеть, эти файлы обладают назначенными им номерами вместе с собой. Это означает, что они будут запускаться по порядку.
Соответствующие файлы сценариев 00_header , 01_users , 08_fallback_counting , 10_reset_boot_success и 12_menu_auto_hide выполнят работу по уборке. Например, файл сценария 00_header grub.cfg отвечает за добавление некого заголовка в собираемый файл. Скажем для примера, чо после выполнения файла grub2-mkconfig в Linux Fedora к grub.cfg будет добавлен такой заголовок:
Как вы можете видеть, этот файл добавляет тот код, который будет отслеживать устанавливаемое по умолчанию значение таймаута приветственного окна GRUB, точно также все остальные файлы ( 10_reset_boot_success и 12_menu_auto_hide ) выполнят работу по приборке для GRUB. Давайте рассмотрим те файлы сценариев,которые превращают GRUB 2 в один из наилучших начальных загрузчиков для множественной загрузки.
10_linux
Этот файл содержит почти 500 строк файла сценария bash. Всякий раз когда некий пользователь выполняет команду grub2-mkconfig , она запускает этот сценарий. 10_linux обнаружит какие прочие дистрибутивы Linux вы установили в своей системе. Он итеративно пройдёт раздел за разделом и отыщет все прочие версии Linux, которые были установлены в вашей системе. Если существует какая- то ещё, она сделает в grub.cfg некую menuentry . Совместно с menuentry она добавит соответствующие записи ядра и initramfs. Ну не замечательно ди?
Положим, вы установили первой Ubuntu и следом Fedora; теперь вам не придётся добавлять записи Ubuntu вручную в grub.cfg Fedora. Вам всего лишь требуется запустить grub2-mkconfig . Эта команда исполнит для нас 10_linux , а она в конечном счёте обнаружит что установлен Ubuntu и добавит для неё соответствующую запись.
20_linux_xen
После 10_linux этот файл сценария обнаружит имеет ли ваша система установленным ядро XEN. Если это так, он добавит надлежащую запись для него в grub.cfg . Большинство распространителей Linux поставляют XEN как некий отдельный пакет ядра. XEN в основном применяется гипервизорами.
20_ppc_terminfo
Если ваша система обладает архитектурой PPC или PowerPC лт IBM, тогда этот файл сценария обнаружит соответствующее ядро и добавит необходимую надлежащую запись в grub.cfg .
30_os_prober
Когда вы имеете на своём HDD установленными ОС не на основе Linux, тогда этот файл сценария обнаружит такую ОС и сделает соответствующую запись для неё. Иными словами, если у вас имеется установленный в вашей системе Windows, он автоматически обнаружит его и выполнит надлежащую запись в grub.cfg . Именно по этой причине после установки нашей третьей ОС (Fedora 31) в системе UEFI, мы получили полный перечень операционных систем ничего не предпринимая. На Рисунке 3-7 вы можете видеть представляемый Fedora 31 приветственный экран.
Рисунок 3-8
Экран приветствия
После установки Fedora, Anaconda запускает grub2-mkconfig в фоновом режиме, который в конечном счёте запустил 30_os_prober и он отыскивает нашу установку и сделает соответствующую запись для него в grub.cfg .
30_uefi-firmware
Этот сценарий успешно запустится только когда вы обладаете системой UEFI. Основная задание этого файла сценария состоит в добавлении всех соответствующих записей встроенного ПО UEFI в grub.cfg . Как вы можете увидеть на Рисунке 3-8, файлом сценария 30_uefi-firmware была добавлена запись System setup .
Если наш пользователь выбирает предоставленный вариант "System setup", тогда он запустит обратно это встроенное ПО UEFI. На Рисунке 3-9 вы можете видеть интерфейс встроенного ПО UEFI.
Рисунок 3-9
Экран приветствия
40_custom и 41_custom
Эти записи предоставляются своему пользователю в случае когда этот пользователь желает добавить некие индивидуальные записи в grub.cfg . Например, когда grub2-mkconfig отказывает в добавлении любой из установленных ОС в качестве записей, тогда пользователь добавить некую индивидуальную запись в эти два индивидуальных файла. Вы можете делать свои собственные индивидуальные файлы, но вам следует убедиться что каждый обладает неким назначенным ему номером и обладает полномочиями на выполнение.
GRUB 2 в системах на основе UEFI
И снова имеются три местоположения в которых GRUB 2 хранит свои файлы. Рисунок 3-10 отображает соответствующие каталоги и их файлы.
Рисунок 3-10
Местоположения GRUB 2 в системах на основе UEFI
Файл grub.cfg , который был показан ранее в /boot/grub2/ , был передвинут в ESP ( /boot/efi/EFI/fedora/ ). Кроме того, как вы можете видеть, не существует каталога i386-pc . Это из- за того, что EFI предоставляет богатую поддержку устройств и файловых систем. Внутри ESP вы можете обнаружить пару файлов *.efi , в том числе исполняемые файлы shim.efi и grubx64.efi . Файл etc/default/grub , который отвечает за косметические изменения и для параметров командной строки ядра всё ещё пребывает в том же самом местоположении. Файл device.map не доступен, так как команда grub2-install не имеет значения в системах UEFI. Позднее в этой главе мы обсудим эту команду.
BLS (Boot Loader Specification, Спецификация начального загрузчика) это новая разработка в восходящем проекте GRUB которая пока не была адаптирована для многих дистрибутивов основного потока. В частности, эта схема была адаптирована операционными системами на основании Fedora, таких как RHEL, Fedora, Centos, Oracle Linux, и т.п., но не дистрибутивами на основе Debian, таких как Ubuntu, Mint и т.п..
В системах на основе BIOS, в которых ОС обладающая контролем над самыми первыми 512 байтами обладает контролем над последовательностями запуска всех имеющихся операционных систем, именно по этой причине всякая ОС пытается получить удержание этих самых первых 512 байт. Такая ситуация возникает потому, что наш BIOS всегда запускается в самых первых 512 байтах своего HDD и вызывает Часть 1 своего начального загрузчика (самораскрутку). Переход этой Части 1 к Части 2 и от Части 2 к Части 3 происходит позднее и затем в самом конце Часть 3 считывает особый для своего начального загрузчика файл настроек ( bcdedit в случае Windows, grub.cfg при варианте с Linux). Еси такой файл настроек обладает соответствующими записями для прочих установленных ОС, тогда они получат шанс для запуска. Итак, длинная история вкратце: всякий кто обладает контролем над самыми первыми 512 байтами контролирует всю последовательность запуска. Однако в случае с ESP все ОС получают некую равную возможность запуска, так как UEFI проверяет имеющиеся каталоги ESP и перечисляет записи всех доступных ОС. Разработчики стали задаваться вопросом могут ли они получить нечто подобное в системе на основе BIOS и они придумали BLS.
В BLS было введено некое новое местоположение (пятое) для хранения необходимых файлов относящихся к начальному загрузчику, и это /boot/loader/ . Итак, у нас теперь имеется пять расположений в которых GRUB будет хранить свои файлы.
boot/efi/EFI/<OS_vendor>/ (только в случае UEFI)
/boot/loader/ (здесь будут храниться файлы BLS)
Основная идея состоит в том, что после установки соответствующего нового ядра, это ядро само по себе со своими сценарии по окончанию (post-scripts, нечто подобное пакету kernel-core в случае Fedora) создаст некую запись для какого- то нового ядра в своём каталоге /boot/loader/ . К примеру, мы установили такой пакет ядра:
Это тот же самый пакет, который предоставит соответствующие файлы /boot/vmlinuz и /boot/initramfs . После установки этого ядра будет подготовлен такой файл:
Как вы можете видеть, этот файл обладает четырьмя записями.
Соответствующий заголовок, который будет выведен на печать Частью 3 GRUB
Значениями местоположения и названия файла своего файла ядра
Значениями местоположения и названия файла своего файла initramfs
Соответствующей переменной $kernelopts , которая была объявлена в файле /boot/grub2/grubenv
В целом, $kernelopts предоставляет параметры командной строки ядра, такие как название своей корневой файловой системы ( /dev/mapper/fedora_localhost—live-root ) и в каком режиме её надлежит монтировать ( ro — read only , только для чтения).
Итак, имеющаяся последовательность запуска становится подобна такой:
BIOS -> POST -> BIOS
Часть 1 GRUB -> Часть 2 GRUB -> Часть 3 GRUB
Часть 3 GRUB -> считывает grub.cfg
Часть 3 GRUB -> считывает /boot/loader/entries/*
Выводит на печать все заголовки файлов, представленных в /boot/loader/entries
В качестве некого примера, рассмотрим некую установленной новую ОС или некое новое ядро. Это должно выработать свой собственный файл записи и поместить его в каталог /boot/loader/entries/ самого первого раздела. Таким образом, всякий раз когда Часть 3 GRUB ОС из самого первого первичного раздела считывает установленные записи, все прочие ОС будут иметь возможность для запуска. Такой файл записи может быть создан при помощи команды Fedora kernel-install .
Данная команда создаст надлежащую запись для kernel-5.3.7-301.fc31.x86_64 в /boot/loader/entries/ , как это показано здесь:
Значение числа, связанного с файлом *.conf уникально. Такая BLS обладает своими преимуществами и недостатками.
Всякая ОС получает равные возможности для запуска.
Это срабатывает вне зависимости от наличия встроенным ПО BIOS или UEFI.
В случае системы с BIOS, самая последняя установка Linux удалит Части 1 и 2 ранее установленных операционных систем, которые устарели с момента последней установки Linux, сделав свою собственную запись посредством команды kernel-install в более ранних ОС.
А вот недостатки:
BLS пока ещё не полностью реализована. Когда имеющаяся вторая ОС желает сделать свою запись в своей первой ОС, тогда /boot этой первой ОС должен иметь разделяемый доступ. Это не является тем вариантом, который представлен сейчас. Поэтому я рассматриваю это как некую половину реализации.
BLS усложняет без необходимости имеющуюся последовательность запуска, так как нам приходится обладать двумя файлами настройки для справок: grub.conf и <uniq_no><kernel_version>.conf из /boot/loader/entries/ . BLS особенно усложняет жизнь в случае разрешения проблем "can’t boot".
За исключением дистрибутивов на основе Fedora ни один прочий пока ещй не адаптировал BLS, что выглядит как имеющее предпосылки стать обшим решением. Походе, что именно Fedora является наиболее заинтересованным в разработке этого проекта; следовательно, BLS была реализована в Fedora.
Распространённые проблемы начальной загрузки
На основании этих знаний давайте попытаемся разрешить некоторые из наиболее распространённых проблем "невозможности запуска", связанных с начальным загрузчиком.
Проблема 1 "Can’t Boot" (начальный загрузчик)
Проблема: после включения вашей системы она проваливается в приглашение на ввод GRUB, как это показано на Рисунке 3-11:
Рисунок 3-11
Приглашение на ввод GRUB 2
Это именно то, что вы наблюдаете на своём экране. Вы должны были сталкиваться с этой ошибкой хотя бы раз в своей жизни. Давайте попробуем разрешить её.
Вы будете способны разрешить свою проблему только если вы знаете чем вызвана данная проблема. Прямо сейчас, однако, у нас нет никаких мыслей что это за чертовщина, так как мы только запустили свою систему и получили вот это.
Наш экран имеет приглашение на ввод GRUB. Когда вы получили такое приглашение, это означает, что вы имеете возможность выполнять в нём команды. Помните, что это приглашение на ввод команд GRUB, что означает что вы можете получать доступ только к командам GRUB.
Знакомясь с Рисунком 3-11, какая менно из трёх Частей GRUB какая именно из них предоставила нам это приглашение на ввод GRUB?
Естественно, это должна быть Часть 3, потому как Часть 1 и Часть 2 слишком малы в размере, а потому они не могут обладать такой функциональностью. Итак, мы успешно достигли Части 3 GRUB и, что наиболее важно, не имеет значения будет ли эта система обладать UEFI или BIOS. Поскольку мы достигли Части 3, это означает, что мы покинули среду своего встроенного ПО. Это критически важные исходные сведения. Теперь мы можем сосредоточиться только на Части 3.
В чём состоит основная цель Части 3 GRUB? Она считывает grub.cfg и из него получает местоположения своих ядра и initramfs. Если это система с включённой BLS, тогда она получает названия ядра и initramfs из каталогов /boot/loader/entries/ . Например, допустим, наша система не осведомлена о BLS. Часть 3 тогда загружает vmlinuz и initramfs в оперативную память.
Поскольку Часть 3 предоставила нам приглашение на ввод GRUB, но отказала в загрузке самой ОС, это означает, что либо файлы ядра или initramfs не представлены, либо наш файл grub.cfg не указывает правильно на местоположение этих файлов.
Итак, в подобном случае мы можем попытаться запустить Fedora вручную. Вручную означает, что мы предоставим файлы ядра и initramfs с абсолютными путями при помощи приглашения на ввод GRUB. Вот как мы это делаем.
linux это команда GRUB через которую нам требуется предоставить абсолютный путь к своему файлу ядра ( vmlinuz ). Как мы знаем, файл vmlinuz находится в /boot и GRUB следует своему собственному соглашению об именовании дисков. Таким образом, нашим путём к /boot будет жёсткий диск с номером 0 и раздел номер 1. Конечно, вы можете быть не осведомлены на каком HDD или в каком разделе хранится /boot . В этом случае вы можете получить справку у функциональности автозавершения GRUB. Вы можете нажать Tab дважды и GRUB выведет для вас доступные возможности. Давайте найдём номера HDD и раздела /boot . Обратите внимание на Рисунок 3-12.
Рисунок 3-12
Доступные разделы на жёстком диске с номером 0
Самая первая табуляция после hd0 покажет нам что существует два раздела доступных в жёстком диске с номером 0 . Второй раздел не читается из GRUB, а потому, естественно, второй раздел не способен быть /boot . Следовательно, мы выбираем раздел msdos1 . Затем, как это отображено на Рисунке 3-13, мы начнём поиск необходимого файла vmlinuz там при помощи автозаполнения.
Рисунок 3-13
Файл vmlinuz
Как вы можете видеть внутри HDD номер 0 и раздела номер 1 мы обнаружили два файла vmlinuz ; один является аварийным ядром, а другой это обычный файл ядра Fedora 31. Как показано на Рисунке 3-14, мы выберем это обычное ядро и предоставим ему название его корневой файловой системы, затем вы сможете запустить эту систему с аварийным или live образом и проверить значение записей /etc/fstab . Мы обсудим аварийный режим в Главе 10.
Рисунок 3-14
Название корневой файловой системы и установленный флаг ro
Значением абсолютного пути к файлу vmlinuz является (hd0,msdos1)/vmlinuz-5.3.7-301.fc31.x86_64 . Вслед за ним следует параметр командной строки ro является , что является сокращением "read-only". После ro у нас имеется передаваемое нашей системой название файловой системы root , которым выступает /dev/mapper/fedora_localhost—live-root .
После успешного выполнения команды linux нам требуется передать название своей initramfs. Доступными для выполнения этого у нас имеются две команды: initrd и initrd16 . Обратите внимание, пожалуйста на Рисунок 3-15.
Рисунок 3-15
Команды linux, initrd и boot в действии
В тот момент как вы исполните свою команду boot , как это отражено на Рисунке 3-16 и Рисунке 3-17, Часть 3 GRUB получит эти входные данные и загрузит /boot/vmlinuz-5.3.7-301.fc31.x86_64 (hd0,msdos1) . Затем она загрузит /boot/initramfs-5.3.7-301.fc31.x86_64.img и передаст управление этому ядру. Данное ядро в конечном счёте смонтирует корень ( / ) файловой системы из /dev/mapper/fedora_locahost—live-root в свой каталог / и отобразит экран входа в систему.
Рисунок 3-16
Сообщения консоли при запуске
Рисунок 3-17
Экран входа в систему
В случае Ubuntu 18 эти команды слегка иные. В Fedora 31 мы выдавали адрес своего раздела /boot напрямую самой команде linux , в то время как в Ubuntu нам придётся иметь для этого отдельную команду GRUB с названием set root .
Как вы можете видеть на Рисунке 3-18, устанавливаемым названием корневой файловой системы в системе Ubuntu 18 является /dev/sda1 . Это стандартный раздел, в отличии от устройства lvm Fedora 31.
Рисунок 3-18
Подход Ubuntu слегка отличается
Как только мы предоставим надлежащие входные сведения GRUB 2, он приведёт нас к экрану входа в систему. Вы можете наблюдать этот экран входа в систему на Рисунке 3-19.
Рисунок 3-19
Представляемый Ubuntu экран входа в систему
Возвращаясь обратно к нашей системе Fedora, поскольку сейчас она была загружена, мы имеем возможность восстановить свой файл grub.cfg воспользовавшись командой grub2-mkconfig , как это отображено на Рисунке 3-20.
Рисунок 3-20
Команда grub2-mkconfig
В случае с Ubuntu мы можем выполнить grub-mkconfig . Взгляните на Рисунок 3-21.
Рисунок 3-21
Команда grub-mkconfig Ubuntu
Однако если бы это была бы система UEFI, а вы бы желали восстановить grub.cfg , тогда, как это продемонстрировано на Рисунке 3-22, местоположением grub.cfg был бы ESP.
Рисунок 3-22
Команда grub2-mkconfig системы на основе UEFI
После того как grub.cfg создан, нам требуется восстановить для Fedora соответствующие записи BLS.
Данная команда сделает соответствующую запись для ядра kernel-5.3.7-301.fc31.x86_64 в /boot/loader/entries/ .
Когда Fedora располагается в системе UEFI , тогда шаг BLS останется тем же самым.
После перезагрузки Fedora способная гладко выполнить запуск и проблема "can’t boot" окажется исправленной.
Проблема 2 "Can’t Boot" (начальный загрузчик)
Проблема: После включения системы она проходит стадию встроенного ПО, однако после этого, как вы можете это видеть на Рисунке 3-23, на вашем экране ничего нет.
Рисунок 3-23
Чёрный экран
Решение для систем на основе BIOS
Вот шаги по решению этого:
Так как стадия встроенного ПО BIOS была пройдена, это означает, что что- то пошло не так на уровне имеющегося начального загрузчика.
Поскольку мы не получили ничего на своём экране, это означает, что Часть 1 или Часть 2 GRUB отсутствует, либо, в крайнем случае повреждена (512 байт + 31 кБ). Если бы была достигнута Часть 3, тогда мы по крайней мере получили бы приглашение на ввод GRUB. Итак, проблема была выделена и наш план действий состоит в замене Части 1 и Части 2 GRUB.
Это можно осуществить при помощи команды grub2-install . Прежде всего загрузитесь с носителя live того же самого дистрибутива Linux или, когда это доступно, загрузитесь в аварийном режиме. Пояснения по самим образу live и аварийному режиму мы дадим в Главе 10.
Как вы можете видеть на Рисунке 3-24, grub2-install получает на входе значение названия устройства. Обратите, пожалуйста, внимание что это название устройства не должно быть номером раздела; вместо этого оно должно представлять название диска. Это обусловлено тем, что Часть 1 и Часть 2 GRUB должны быть установлены в самых первых 512 байтах + 31 кБ диска, а не внутри раздела. Вам необходимо заменить sda на название вашего диска.
Рисунок 3-24
Команда grub2-install
Помимо файлов Части 1 и Части 2 своего начального загрузчика, grub2-install восстановит или повторно установит свой каталог i386-pc , который обладает всеми модулями своего начального загрузчика GRUB 2. Мы можем перекрёстно проверить это, установив эти модули в некий индивидуальный каталог. Обратитесь, пожалуйста к Рисунку 3-25.
Рисунок 3-25
Установка grub2 во временном каталоге
Вы можете видеть, что все файлы GRUB 2 были восстановлены совместно с файлами модулей GRUB.
После перезагрузки Fedora должен запуститься нормально и проблема "can’t boot" должна быть исправленной. Если GRUB выбросит вам своё приглашение на вод команд, тогда вам потребуется пройтись шагами, упомянутыми в Проблема 1 "Can’t Boot" (начальный загрузчик), поскольку grub2-install восстановил необходимые исполняемые файлы, однако не выработал повторно файл grub.cfg .
Но что если мы сталкиваемся с этой проблемой в системе на основе UEFI?
Решение для систем на основе UEFI
Как вы уже могли догадаться, нам всего лишь придётся изменить название передаваемого для нашей команды grub2-install устройство, как это и показано на Рисунке 3-26. Названием этого устройства должен быть ESP.
Рисунок 3-26
Команда grub-install в некой системе на основе UEFI
Способы восстановления Grub или восстановление меню Grub

Этим прекрасным утром вы запустили свой ноутбук и БУМ! Вы получили черный экран с сообщением “Неизвестная файловая система” и сообщением о спасении grub. Теперь вы здесь, на LinuxCool, чтобы узнать, как решить эту проблему, сохранить ваши драгоценные данные и снова нормально загрузиться в Linux. Давайте обсудим некоторые команды восстановления grub.
Способы спасения или восстановления загрузчика Grub
Вы, возможно, думаете о том, что случилось с дистрибутивом. Причин может быть много. Вы могли установить какое-то программное обеспечение, могли испортить GRUB2, кто знает, вы использовали другой дистрибутив при попытке двойной загрузки и многое другое. Независимо от причины, в большинстве случаев проблема заключается в GRUB. Ниже приведены некоторые способы, которые вы можете использовать, чтобы вернуть свой дистрибутив с экрана Grub Rescue.
Способ 1 Для восстановления Grub
Введите ls и нажмите enter.
Теперь вы увидите множество разделов, которые присутствуют на вашем компьютере. [например, (hd0),(hd0,msdos1)(hd0,msdos2)]. Выберите раздел, в котором установлен дистрибутив Linux.
Предполагая, что вы установили дистрибутив во втором варианте, введите эту команду
(Совет: – если вы не помните раздел, попробуйте ввести команду с каждым вариантом. Если вы ошиблись, вы получите сообщение об ошибке. Если правильно – вы продолжите)
После того, как вы нашли диск, введите эту команду insmod normal, а затем normal.
Теперь ваш компьютер/ноутбук перезагрузится, и вы окажетесь на рабочем столе. Теперь нажмите Ctrl+Alt+T, откройте терминал и введите
sudo grub-install /dev/sda
Вас могут попросить ввести пароль; введите его, пароль останется невидимым, это нормально.
У вас может быть запрошено подключение для передачи данных, если файлы GRUB потеряны и система хочет их загрузить. Ваша ошибка исправлена, и дистрибутив восстановлен.
Способ 2 Для восстановления Grub
Возьмите флешку Live USB. Я предпочту флешку Ubuntu Live USB.
Откройте терминал после загрузки на live рабочем столе.
Смонтируйте корневой раздел, набрав /mnt и загрузитесь в /mnt/boot и нажмите enter. [например, sudo grub-install -root-directory=/mnt -boot-directory=/mnt/boot /dev/sda].
sudo grub-install -root-directory=/mnt -boot-directory=/mnt/boot /dev/sda
Вы должны заменить /dev/sda на правильный раздел или диск. Теперь обновите grub, набрав
Это может занять некоторое время, поэтому подождите. После успешного обновления перезагрузитесь, и вуаля – проблема решена.
Метод 3 для восстановления Grub
Если у вас двойная загрузка и ни один из вышеперечисленных шагов не работает, вам может пригодиться следующий способ.
Возьмите установочный DVD-диск Windows OS, одолжите его у друга или у кого-нибудь еще. (Не берите DVD с Windows XP или Vista.)
Запустите его на своем компьютере и запустите программу установки. Это можно сделать, выбрав загрузочный носитель либо нажатием F12, либо установив порядок загрузки в загрузчике. Доступ к нему можно получить, нажав F2 или Del. или любую клавишу, предложенную производителем.
После того как все файлы Windows загрузятся, выберите Восстановление ОС. Обычно эта опция появляется в нижней части диалогового окна после выбора нескольких опций.
При появлении запроса выберите ОС, затем в опции восстановления системы выберите командную строку. Теперь введите по очереди следующие команды
bootrec /fixboot
bootrec /fixmbr
Теперь завершите установку и перезагрузите компьютер/ноутбук. Окно восстановлено и переопределило GRUB.
Ваш дистрибутив Linux по-прежнему присутствует в нем. Только GRUB отменен. Вы можете вернуть его обратно, следуя методу 2, описанному выше.
Метод 4 Восстановление Grub
Возьмите USB/DVD-накопитель Ubuntu live и загрузитесь с него на рабочий стол.
Подключитесь к Интернету и откройте терминал.
Установите Boot Repair Tool, введя следующие команды –
sudo add-apt-repository -y ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair && boot-repair
Появится инструмент восстановления загрузки. Выберите рекомендуемый вариант и выполните все шаги в точности, как там написано. Ваш ПК будет восстановлен, и ничего не будет потеряно.
Помните, что скорость восстановления зависит от вашего интернет-соединения.
Советы профи:-
Если вы задаетесь вопросом, где взять Live USB, вы можете посетить своего друга и скачать Ubuntu iso и создать загрузочный USB-накопитель с помощью Rufus и загрузочный DVD с помощью PowerISO, а также с помощью Ventoy.
Вы можете посетить общественное место, если вам нужен WiFi. Есть много мест, таких как аэропорты, железнодорожные вокзалы, больницы, где есть открытый Wi-Fi. Это поможет, только если у вас есть ноутбук.
Заключение
Наша команда LinuxCool готова помочь вам с вашим ПК. Если вы столкнулись с какими-либо трудностями, не стесняйтесь оставлять комментарии. Также, если у вас есть потрясающий способ выхода из этой ситуации, оставьте комментарий; мы с удовольствием добавим его в статью. Однако, несмотря на все ваши усилия, если вы не сможете спасти свой ноутбук или данные будут испорчены, мы в LinuxCool не будем нести ответственность за разгневанную мать, взбешенного отца, мертвого котенка или ядерную войну.