Как загрузить grub4dos через uefi

Обновлено: 04.07.2024

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

Раньше для загрузки Linux использовалось несколько загрузчиков, это isolinux, lilo, grub. Но сейчас чаще всего применяется Grub или полное его название GRand Unified Bootloader. В этой статье будет рассмотрена установка загрузчика Grub через терминал. Также мы поговорим как установить grub на компьютер с UEFI, тоже вручную.

Немного теории

Как я уже сказал, основная задача загрузчика - предоставить возможность выбора операционной системы перед загрузкой. Не думайте, что в Windows загрузчик не используется, там он тоже есть и работает, подобно тому, как работает Grub.

Загрузчик может быть установлен в различные таблицы разделов диска. Сейчас самые используемые это GPT и MBR. Установка загрузчика Grub немного отличается для каждой из этих таблиц, учитывая их особенности. Подробнее об отличиях MBR vs GPT можно почитать в отдельной статье. Тут же я скажу, что GPT - более новая и функциональная таблица разделов, MBR - уже устаревшая, но до сих пор часто используемая.

В MBR вариантов немного, Grub записывается в область MBR на диске. Размер сектора MBR занимает первых 512 байт и этого вполне достаточно для того, чтобы установить туда загрузчик.

GPT предоставляет более широкие возможности. Во-первых, для совместимости в GPT эмулируется сектор MBR, и мы можем установить GRUB туда, но такой вариант очень ненадежный и не рекомендуемый. Во-вторых, теперь появилась возможность устанавливать Grub на раздел диска. Мы просто создаем раздел на диске размером 1 Мб и записываем туда то, что раньше записывалось в MBR, это делает установку загрузчика более надежной и защищенной от сбоев.

UEFI предоставляет совсем иной способ установки загрузчика. Тут его не нужно никуда записывать, загрузчик - это обычное приложение EFI, которое помещается на раздел EFI и уже там полностью успешно работает наряду с другими приложениями.

Для установки Grub будет использоваться команда grub-install, во всех случаях. Давайте кратко рассмотрим ее синтаксис и параметры. Синтаксис:

$ grub-install опции диск

Параметров здесь достаточно много, но нам будут нужны только некоторые:

  • --compress - сжать файлы загрузчика;
  • --install-modules=модули - установить только эти модули;
  • --modules - записать эти модули в MBR;
  • --boot-directory - использовать другой каталог для файлов Grub;
  • --bootloader-id - имя загрузчика в меню EFI;
  • --core-compress - сжимать образ, загружаемый в MBR;
  • --efi-directory - использовать системный раздел EFI;
  • --force - установить несмотря на ошибки;
  • --recheck - удалить существующую карту устройств, помогает если возникают ошибки;
  • --removable - установка grub на флешку (только EFI);

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

Установка загрузчика Grub в MBR для BIOS

Начнем с самого просто и привычного. Данная инструкция как установить загрузчик Grub подойдет для любого дистрибутива, поскольку команды везде почти одинаковые. Здесь не нужно устанавливать никаких дополнительных пакетов или создавать разделов. Установка Grub на жесткий диск выполняется командой:

sudo grub-install /dev/sda

sudo grub2-install /dev/sda

Утилиты grub в разных дистрибутивах могут включать двойку, а могут и не включать. Здесь /dev/sda - ваш жесткий диск. Теперь генерируем конфигурационный файл, чтобы автоматически определились установленные операционные системы:

sudo grub-mkconfig -o /boot/grub/grub.cfg

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Готово. По поводу двойки здесь такое же замечание. Если вы хотите установить Grub на флешку в MBR, то тут тоже нет проблем просто примонтируйте флешку и выполните такую команду:

sudo grub-install --root-directory=/mnt/USB/ /dev/sdb

Здесь /mnt/USB - папка, куда была смотирована ваша флешка, а /seb/sdb - сама флешка. Только здесь есть одна проблема, конфигурационный файл придется делать вручную.

Установка загрузчика Grub в GPT для BIOS

Во-первых, мы можем ничего не менять и установить Grub так, как описано в предыдущем способе. Но тогда он будет установлен в область совместимости с MBR, а это не надежно. Поэтому рекомендуется установить grub так, как описано ниже, на отдельный раздел.

Нужный нам раздел можно создать в установщике любого дистрибутива, если вы выполняете установку в графическом интерфейсе или с помощью gparted. Нам нужен раздел размером 1 Мегабайт без файловой системы и с меткой grub_bios:

grub

Дальше примените изменения, нажмите на разделе правой кнопкой, выберите manage flags и добавьте флаг grub_bios:

grub1

Готово. Если у вас нет под рукой доступа к графическому интерфейсу, вы можете создать такой раздел через терминал. Утилита fdisk не поддерживает работу с gpt, поэтому будем использовать gfdisk. Сначала запустите утилиту:

sudo gdisk /dev/sda

grub2

Чтобы создать новый раздел нажмите n и выберите номер раздела:

grub3

Соглашаемся с начальным сектором, будет использован первый же свободный:

grub4

Выбираем конечный сектор раздела. По умолчанию будет использоваться максимальный. Нам нужен раздел размером 1 Мб. Размер одного сектора GPT - 512 байт, поэтому нам нужен раздел размеров 2048 секторов. Таким образом, конечный сектор будет 24000 с чем-то.

grub5

HEX Code - это тот код, который скажет системе, что этот раздел нужно использовать для Grub, нужно установить ef02:

grub6

Готово, осталось нажать w для записи изменений на диск:

grub7

Установка grub на жесткий диск дальше выполняется точно так же, как и в предыдущем способе:

sudo grub-install /dev/sda

Осталось создать конфигурационный файл grub:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Теперь переходим к самому сложному, как установить grub efi.

Установка GRUB UEFI GPT

Установка Grub UEFI чем-то похожа на установку в GPT, тут у нас тоже будет отдельный раздел, только на этот раз не для загрузчика, а раздел EFI. Если у вас уже установлена Windows, то, скорее всего, он уже существует. Этот раздел обычно занимает 100 Мб, имеет файловую систему fat32 и флаг ESP. Вот так он будет выглядеть:

grub11

Если же такого раздела нет, мы можем его создать с помощью gparted. Для этого создаем раздел с такими параметрами:

grub9

Размер 100 Мегабайт, имя раздела ESP, файловая система fat32. Дальше примените изменения и установите для раздела флаг ESP:

grub10

То же самое вы можете сделать в Gdisk, только на этот раз нужно устанавливать HEX Code раздела ef00. После того как раздел был создан, подключаем его к нашей файловой системе:

sudo mkdir /boot/efi
$ sudo mount /dev/sda2 /boot/efi

Здесь /dev/sda2 - это наш EFI раздел. Далее необходимо установить нужные пакеты, если они еще не установлены. В Ubuntu это будет выглядеть вот так:

sudo apt install grub-efi efibootmgr

Дальше останется только установка grub efi. Система сама определит нужный раздел и скопирует туда все файлы:

Установка Grub efi на MBR все выглядит точно так же, только тут есть несколько ограничений. Раздел ESP нужно создавать только в начале диска. В режиме EFI тоже можно установить GRUB на флешку, и это не очень сложно. Для этого используется команда:

grub-install --boot-directory=/mnt/sdb2/boot --efi-directory=/mnt/sdb1 --target=x86_64-efi --removable

Рассмотрим опции: --boot-directory - задает папку с файлами загрузчика на флешке, --efi-directory - папка куда смонтирован раздел efi, --target - архитектура целевой системы и --removable говорит, что это установка на съемный носитель. С UEFI все. После перезагрузки и выбора в меню EFI пункта связанного с Grub, вы получите доступ к привычному меню grub и сможете выбрать нужный параметр.

Выводы

Теперь установка Grub не вызовет у вас проблем. Мы разобрали не только как установить Grub2 в MBR но и в EFI. Кроме того, всю приведенную здесь информацию вы можете использовать для восстановления Grub. Так вы будете лучше понимать что происходит во время восстановления. А настройку параметров и ручное создание конфигурационного файла мы рассмотрим в одной из следующих статей.

вот и меня накрыло несчастье купил ноут, а там uefi. соответственно можно забыть про старые мультибут-флэшки под grub4dos.
начал копать. написано про это уже прилично, НО как то однобоко что ли
продолжил копать про секьюр бут и прочее.
наткнулся на такой вот вариант: флэшку под фат32 потом через bootmgr запустить grub4dos.
вариант прям понравился. флэшка под MBR готовится для grub4dos. всё как и всегда.
только плюсом добавляются ещё файлы для bootmgr:

\boot\
\efi\
\bootmgr
\bootmgr.efi

вот только что то при загрузке идёт не так. редактирую \efi\microsoft\boot\bcd,
оставляю две строки: первая - по умолчанию из установщика Win10, вторую - добавляю на загрузку grub/linux
всё происходит через программу bootice.

при загрузке в uefi без legacy вижу ошибку установщика Win10, что то типа 0xc000000f.
выбираю запуск grldr, ошибка та же
с установщиком понятно, не видит свои файлы установки. их ведь нет
а вот почему grldr не грузится не понятно

сначала разметил флэшку под GPT с фат32.
подумал, что именно в этом дело, НО нет, вернул MBR с фат32, те же ошибки.
фат32 раздел на флэшке можно как ставить в статус "загрузочный", так и нет. то же самое.
хотя это то и понятно. uefi ищет свои файлы без всяких там "активный" или нет.
в этом то и смак был, НЕ получилось с uefi, грузим grub4dos стандартно.

может быть я что то упускаю? первоисточник

точно, я пропустил
в BCD на загрузку grub4dos стоит файл с расширением *.mbr
вот про него то я и забыл
берём файлы отсюда , пишем загрузку в BCD через bootice или bcdedit ручками и получаем профит

. пока на уровне QEMU
щас допилю флягу, загружусь в uefi, попробую покопать дальше.

p.s.: а ещё в интернетах пишут, что grub4dos не умеет работать с GPT. тогда будет совсем весело

У меня ноут с UEFI НР имеет возможность грузиться в режиме имитации биос, legacy, поищи хорошенько, может есть такое?

нашёл поддержку CSM в UEFI своего ноута в принципе обрадовался, НО.
судя по всему реагировать нужно уже сейчас, ведь
в дальнейшем BIOS как таковой "вымрет", останется только один "true"-загрузчик bootmgr
всё ведёт к этому. конечно я преувеличиваю, НО

затея с запуском grub4dos через bootmgr провалилась. grub4dos не работает в uefi-режиме.
точно также будут возникать проблемы с запуском других штук типа memtest, mhdd, hdd regenerator и прочим таким.
остаётся только копать и копать, изучая вопрос и экспериментировать на вновь выпущенных железках.

однажды мне посоветовали для создания мультибута использовать сборку утилит на основе easy2boot проекта.
есть маны на русском первый , второй , третий .

беглый осмотр сего показал , что народ уже начал ковырять образы, подстраивая их под "новые" загрузчики для использования.
идея до прочтения приходила и мне - почему бы не переделывать образы под *.wim и не грузить их в "единственно верном" bootmgr.
в easy2boot как я понял делают то же самое только под GRUB2 с UEFI версией
эта идея кажется мне более интересной. ковыряя яндекс, нормального мануала по bootmgr я так и не нарыл. пока

почему искал по bootmgr? потому что secure boot
чтоб не ковырять настройки uefi каждый раз и не вырубать ручками эту фигню.

смотрел в сторону syslinux (isolinux), grub2, rEFInd, НО чёт универсальности особой не заметил, а она мне нужна по работе в том числе.

пока склоняюсь к GRUB2 с конвертированием загрузочных файлов в некий один формат

После создания разделов для флешки, как рассказано в этом посте, перейдем к установке загрузчиков. В качестве загрузчиков будем использовать Grub4Dos, для загрузки в обычном BIOS, и GRUB 2, для загрузки в UEFI BIOS. Из программ нам понадобится только BOOTICE.

И так, снова посмотрим на текущую разметку флешки, выглядит она следующим образом.


У нас в распоряжении два раздела, одни основной, файловый и по совместительству выполняющий роль загрузочного для BIOS систем, и второй небольшой раздел, исключительно для загрузки в EFI. Подробнее о теории разделов читаем тут.

Теперь перейдем собственно к установке загрузчиков.

Установка BIOS загрузчика

Запускаем BOOTICE, во вкладке Physical disk выбираем нашу флешку, если она не выбрана по умолчанию, и нажимаем на кнопку Process MBR.


В открывшемся окне выставляем переключатель в секции Available MBR Types в положение GRUB4DOS 0.4.5c/0.4.6a (grldr.mbr) и жмем на кнопку Install / Config.


Откроется окно конфигурирования загрузочной записи GRUB4DOS. В секции GRUB4DOS Version выставляем переключатель в положение 0.4.6a (FAT, FAT32, ExFAT, NTFS, EXT2), снимаем остальные все галочки. Должно быть так как на скрине ниже. Жмем на кнопку Save to disk.


BOOTICE скажет что MBR GRUB4DOS успешно установлена, и попросит скопировать внешние файлы загрузчика GRLDR и menu.lst в корень любого раздела на устройстве. Жмем на OK.


Возвращаемся главное окно программы. Во вкладке Physical disk нажимаем на кнопку Process PBR.


В открывшемся окне записи загрузочной области раздела, в секции Destination Partition
выбираем первый раздел флешки, а в секции Available PBR Types выставляем переключатель в положение GRUB4DOS 0.4.5c/0.4.6a (FAT, FAT32, NTFS, ExFAT) и нажимаем на Install / Config.


Откроется окно конфигурации загрузочной области раздела. В нем выставляем переключатель в положение Version 0.4.6a и жмем на OK.


Программа скажет что успешно изменила PBR раздела.


Теперь выполняем просьбу программы о копировании файлов. Для этого качаем свежую версию загрузчика Grub4Dos по ссылке в начале статьи. На момент написания статьи это версия от 2015-11-18.


Из скачанного архива grub4dos-0.4.6a-2015-11-18.7z, извлекаем файлы grldr и menu.lst в корень первого раздела.


Файл menu.lst располагается в директории sample внутри архива.


В итоге имеем такую картину.


На этом установка BIOS загрузчика завершена. Теперь дело осталось только за EFI.

Установка UEFI BIOS загрузчика

Специально для EFI загрузчика мы подготовили отдельный раздел, второй по счету. Чтобы получить к нему доступ, его нужно смонтировать. К сожалению из-за ограничения самой операционной системы Windows, для флешек возможно монтировать только один раздел, поэтому при необходимости работы с разделами, между ними необходимо переключаться.

Для переключения на второй раздел, в BOOTICE, во вкладке Physical disk выбираем нашу флешку, и нажимаем на кнопку Parts Manage.


Открывшемся окне управления разделами, выбираем второй раздел, и жмем на кнопку Set Accessible.



Второй раздел при этом станет доступным для работы в системе. В списке он переместиться на первое место, и в поле Drive ему будет присвоена буква. Первый же раздел станет недоступным.



Качаем архив с загрузчиком GRUB 2 по ссылке GRUB_2.04_UEFI_and_LEGACY.7z (4.91 MB), и распаковываем в корень флешки.


Должно получиться так.


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

Конфигурационный файл располагается по адресу boot\grub\grub.cfg.


Открываем его любым текстовым редактором, удаляем все его содержимое, и вписываем следующее:

insmod ntfs
search --set=root --file /grub.cfg
configfile /grub.cfg

Получиться должно так.


Необязательно, но так же можно скопировать в корень раздела программу BOOTICE. На всякий случай.

Далее переключаемся снова на первый раздел, и копируем, с архива, файл grub.cfg в корень флешки.


На этом установку EFI загрузчика можно считать завершенной.

Напоследок проверим флешку c помощью программы QemuBootTester.

Загружаемся в режиме обычного BIOS.



Теперь загрузимся в EFI режиме.



В итоге, у нас получилась флешка с возможностью загрузки как в BIOS, так и в UEFI BIOS, c возможностью конфигурирования обоих загрузчиков из основного раздела.

В следующем материале, мы определимся с содержимым флешки и сконфигурируем загрузчики под это содержимое.


Ре-форматируем флешку в USB-HDD
(необязательно, если флешка уже USB-HDD, но желательно если флешка использовалась как загрузочная):


Раздел флешки должен иметь файловую систему FAT32, и его нужно сделать активным:

Устанавливаем MBR через BOOTICE (GRUB/BOOTMGR):
(или устанавливаем Windows NT6 MBR, чтобы грузилось только меню WinPE5)
(это так же бывает полезно для старых BIOS, когда GRUB4DOS грузится некорректно)



Устанавливаем PBR через BOOTICE (BOOTMGR):




Закрываем BootIce:

Распаковываем всё что есть на загрузочном диске в корень флешки,
используя UltraISO или WinRAR.

Готово!

P.S. при UEFI-загрузке с USB будет грузится reFInd, и будут доступны MemTest86 UEFI и UEFIMark.
В случае с Secure Boot (загрузкой только подписанных загрузчиков UEFI):
нужно предварительно переключать загрузчики UEFI (можно подключив на другой компьютер):
rEFInd > Microsoft BootManager: запустить [флешка]:\EFI\Microsoft64.cmd.
Microsoft > rEFInd (возврат загрузчика rEFInd): запустить [флешка]:\EFI\rEFInd64.cmd

Также будут отображаться загрузчики от систем Linux и MacOSX (UEFI)
(при наличии их в системе)

Для загрузки на планшетах прочтите инструкцию по загрузке на TabletPC
Для загрузки в режиме UEFI (Secure Boot) прочтите инструкцию по загрузке в режиме UEFI (Secure Boot)

Создание скрытой загрузочной флешки с AdminPE (UEFI/GRUB):


В данном видео показано, как создать загрузочную флешку со скрытым при работе в обычной системе (и защищенным от записи при работе в AdminPE) загрузочным разделом, используя программы BootIce и WinRAR.
Это позволяет избежать заражения вирусами файлов на загрузочном разделе, а также защищить загрузочный раздел от нежелательных изменений.
Все действия производятся в среде загруженной AdminPE, но вы можете выполнить их на любой установленной системе, имея права Администратора.
Программа BootIce входит в состав раздачи, и находится в папке Addons
Распаковать AdminPE_UEFI.iso вы можете при помощи WinRAR либо UltraISO.

После распаковки образа загрузочная флешка готова.
P.S.: процессы создания флешки на базе WinPE5 и WInPE10 одинаковы!.

Создание загрузочного USB-HDD с AdminPE (с сохранением данных):


В данном видео показано создание загрузочного USB-HDD (UEFI/GRUB) с AdminPE с сохранением уже существующих на диске данных.

Читайте также: