2016-07-25

Делаем флешку мультизагрузочной, настройка 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 читаем здесь.





Комментариев нет :

Отправка комментария