Установка загрузчиков BIOS/EFI на флешку

После создания разделов для флешки, как рассказано в этом посте, перейдем к установке загрузчиков. В качестве загрузчиков будем использовать 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 по ссылке Grub2_BIOS_and_EFI.zip (5.59 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 возможностью конфигурирования обоих загрузчиков из основного раздела.
В следующем материале, мы определимся с содержимым флешки и сконфигурируем загрузчики под это содержимое.

Делаем флешку мультизагрузочной, настройка Grub4Dos

Часть 1, настройка Grub4Dos.
На данном этапе, мы уже подготовили флешку, создали структуру разделов, установили необходимые загрузчики. Иными словами, у нас на руках пустая загрузочная флешка.

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

1. Наличие загрузочных вариантов операционных систем DOS, Linux и Windows.

2. Работа с дисками, разделами и файловыми системами.

3. Резервное копирование и восстановление информации.
4. Работа с сетью, как с проводной, так и беспроводной.
5. Тестирование стабильности оборудования (процессор, оперативная память и т.д.).
6. Антивирусные средства.

7. Сброс и восстановление паролей учетных записей операционных систем Windows и Linux.

Получилось немного пунктов, но по сути, это самое частое что требуется от загрузочной флешки.
Теперь список того, что мы поместим на флешку:
1. Hiren's BootCD
2. Super Grub2 Disk
3. Rescatux
4. SystemRescueCd
5. Ultimate Boot CD
6. Dr.Web LiveDisk
Все вышеописанные требования, присутствуют в данных решениях. Хочу так же обратить внимание, что данный список взят для примера, и не претендует на звание готового универсального загрузочного решения.

Мультизагрузочная флешка

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

Теперь, скачиваем образы указанных выше LiveCD, и скопируем их в папку ISO кроме образа Hiren's Boot CD.

С Hiren's Boot CD действуем иначе. Монтируем скаченный образ, например с помощью ImDisk.

Открываем смонтированный диск и копируем с него, в корень флешки, папку HBCD и файл HBCDMenu.cmd.

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

Переходим к самому главному, настройке загрузчиков. Начнем с конфигурационного menu.lst файла загрузчика Grub4Dos. Редактировать данный файл можно любым текстовым редактором. Я, к примеру, использую Notepad++.
Открываем файл menu.lst, полностью удаляем его содержимое, и вставляем следующий код.

menu.lst (кликните на кнопку "Copy" для копирования)

default 1

graphicsmode -1 1024 768 24:32 || graphicsmode -1 640:800 480:600 24:32 || graphicsmode -1 -1 -1 24:32

color brown/white red/light-gray brown/white yellow/dark-gray

color border=0x999999

title ...:::LiveCD's:::...\n\r

root

title Hiren Boot CD v15.2

configfile /HBCD/menu.lst

title Super GRUB2 Disk hybrid v2.02s2

map /ISO/super_grub2_disk_hybrid_2.02s2-beta1.iso (0xff) || map --mem /ISO/super_grub2_disk_hybrid_2.02s2-beta1.iso (0xff)

map --hook

chainloader (0xff)

title System Rescue CD x86 v4.7.1

if not exist CD partnew (hd0,3) 0x0 /ISO/systemrescuecd-x86-4.7.1.iso

map /ISO/systemrescuecd-x86-4.7.1.iso (0xff) || map --mem /ISO/systemrescuecd-x86-4.7.1.iso (0xff)

map --hook

root (0xff)

chainloader (0xff)

title Rescatux v0.32b3

if not exist CD partnew (hd0,3) 0x0 /ISO/rescatux-0.40b5.iso

map /ISO/rescatux-0.40b5.iso (0xff) || map --mem /ISO/rescatux-0.40b5.iso (0xff)

map --hook

root (0xff)

chainloader (0xff)

title Ultimate Boot CD v5.3.5

if not exist CD partnew (hd0,3) 0x0 /ISO/ubcd535.iso

map /ISO/ubcd535.iso (0xff) || map --mem /ISO/ubcd535.iso (0xff)

map --hook

root (0xff)

chainloader (0xff)

title

root

title ...:::Antivirus LiveCD's:::...\n\r

root

title Dr.Web 9.0 LiveCD

if not exist CD partnew (hd0,3) 0x0 /ISO/drweb-livedisk-900-cd.iso

map /ISO/drweb-livedisk-900-cd.iso (0xff) || map --mem /ISO/drweb-livedisk-900-cd.iso (0xff)

map --hook

root (0xff)

chainloader (0xff)

title

root

title ...:::ACTIONS:::...\n\r

root

title Reboot\nRerstart Computer.

reboot

title Shutdown\nTurn Computer off.

halt

Теперь проверим как все это выглядит в загруженом виде. Для этого воспользуемся программой QemuBootTester.

Во второй части данного материала, будет рассмотрена настройка загрузчика GRUB2.

Яндекс.Директ

Делаем флешку мультизагрузочной, настройка GRUB2 EFI

Часть 2, настройка GRUB2.
И так, после того как мы сконфигурировали загрузчик Grub4Dos, в первой части данного материала, перейдем к загрузчику GRUB2.
Первое что необходимо сказать о данном загрузчике, EFI версия GRUB2 отличается от BIOS версии. GRUB2 EFI построен на 64/32 битной архитектуре, и загрузка некоторых элементов в нем невозможна. То есть, запустить Grub4Dos из GRUB2 EFI не удастся, так же, как и не удастся использовать MEMDISK из загрузчика SYSLINUX. Кроме того, EFI версия загрузчика не поддерживает загрузку MBR дисков. Хотя, в BIOS версии GRUB2 это все сделать можно.
О поддержке ISO файлов в GRUB2. Подключать их можно только монтированием, для просмотра и последующей загрузки его содержимого. Нет возможности загрузить ISO образ целиком в память, или загрузить его с первого сектора, как, к примеру, это умеет делать Grub4Dos.
Напомню, содержимое флешки представленное в первой части статьи:
1. Hiren's BootCD
2. Super Grub2 Disk
3. Rescatux
4. SystemRescueCd
5. Ultimate Boot CD
6. Dr.Web LiveDisk
В виду указанных выше особенностей загрузчика GRUB2 в EFI исполнении, не удалось загрузить следующие LiveCD:
Hiren's BootCD - не удалось запустить вообще. В GRUB2 EFI отсутствует команда ntldr.
Dr.Web LiveDisk - Запуск данного диска возможен при распаковке содержимого образа диска, в корень раздела флешки, но только для файловой системы FAT32. Мы используем NTFS, поэтому запуск данного LiveCD не удался.
Ultimate Boot CD - из набора программ данного диска, удалось запустить только PartedMagic. Остальные приложения отказались грузиться, так как представляли собой образы дисков.
Перейдем к конфигурационному файлу загрузчика GRUB2. Открываем файл grub.cfg в любимом текстовом редакторе (рекомендую Notepad++), так же удаляем его содержимое и вставляем следующий код.

grub.cfg (кликните на кнопку "Copy" для копирования)

insmod part_gpt

insmod part_msdos

insmod efi_gop

insmod efi_uga

insmod gfxterm

insmod loopback

insmod all_video

insmod gzio

insmod ext2

insmod fat

insmod iso9660

insmod ntfs

loadfont "${prefix}/fonts/unicode.pf2"

GRUB_GFXMODE=1024x768

gfxmode=1024x768

if terminal_output --append gfxterm

then

terminal_output --remove console

fi

color_normal=black/black

menu_color_normal=white/cyan

menu_color_highlight=yellow/light-magenta

background_color gray

set timeout=60

set default=0

set pager=1

echo -e "\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n"

echo " http://www.BootDev.ru/"

echo -n "Загрузка... "

sleep --interruptible -v 5

menuentry "(1) SystemRescueCd" --hotkey="1" {

loopback loop /ISO/systemrescuecd-x86-4.7.1.iso

linux (loop)/isolinux/rescue32 isoloop=/ISO/systemrescuecd-x86-4.7.1.iso setkmap=us docache dostartx

initrd (loop)/isolinux/initram.igz

}

menuentry "(2) PartetMagic из образа Ultimate Boot CD" --hotkey="2" {

loopback loop /ISO/ubcd535.iso

linux (loop)/pmagic/bzImage edd=on vga=normal vmalloc=384MiB iso_filename=/ISO/ubcd535.iso

initrd (loop)/pmagic/initrd.img

}

menuentry "(3) Rescatux" --hotkey="3" {

loopback loop /ISO/rescatux-0.40b5.iso

linux (loop)/live/vmlinuz1 boot=live config boot=live config quiet splash selinux=1 security=selinux enforcing=0 locales=en_US.UTF-8 boot=live config quiet splash selinux=1 security=selinux enforcing=0 locales=en_US.UTF-8 findiso=/ISO/rescatux-0.40b5.iso

initrd (loop)/live/initrd1.img

}

menuentry "(4) Super Grub2 Disk - BIOS функции не работают!" --hotkey="4" {

loopback loop /ISO/super_grub2_disk_hybrid_2.02s2-beta1.iso

set root=(loop)

set prefix=(loop)/boot/grub/

configfile /boot/grub/grub.cfg

}

menuentry "(5) MemTest86 от PassMark" --hotkey="5" {

chainloader /ISO/memtest.efi

boot

}

menuentry "" {

echo " "

}

menuentry "(F1) Инфо о дисках системы и текущем видео режиме" --hotkey="f1" {

echo " www.BootDev.ru"

echo ""

echo "[---------------- Информация о дисках системы ----------------]"

ls -l

echo "[---------------- Информация о видео режимах ----------------]"

videoinfo

echo ""

echo "Нажмите клавишу ESC для возврата в главное меню..."

sleep --interruptible 9999

}

menuentry "" {

echo " "

}

menuentry "(r) Перезагрузить компьютер" --hotkey="r" {

reboot

}

menuentry "(h) Выключить компьютер" --hotkey="r" {

halt

}

В меню добавлен MemTest86 от PassMark. Для работоспособности соответствующего пункта, скачайте файл memtest.efi и скопируйте его в папку ISO.

Проверим полученный результат в виртуальной машине. Для этого воспользуемся VirtualBox'ом. О том, как загрузиться c флешки в VirtualBox читаем здесь.