В далеком 2003-м году еще во времена первого «груба» один предприимчивый китаец с никнеймом Tinybit сделал форк с названием grub4dos — с целью адаптировать изначально линуксовый загрузчик для работы в среде MS-DOS. Одним MS-DOS дело не ограничилось, загрузчик прекрасно загружал системы под управлением Windows, а поддержка им NTFS и возможность загрузки из ISO-образов сделали grub4dos моим верным спутником на долгие годы для организации мультизагрузки на системах BIOS\MBR. Но шло время и UEFI потеснил BIOS, для линуксов с нуля был написан GRUB 2 и, казалось бы, для grub4dos наступил закат. К счастью (или к сожалению) мне не по нраву мигрировать на другие продукты только лишь потому, что «ну, пришло время обновиться», а это значит, что grub4dos наносит ответный удар.

На смену одному китайцу пришел следующий — на этот раз с никнеймом chenall. Подхватив эстафету разработки он выпускает форк уже самого grub4dos для систем под управлением UEFI. Вышло настолько хорошо, что конфигурации загрузки (которые по прежнему находятся в menu.lst) пришлось либо совершенно незначательно модифицировать, либо вообще оставить без каких-либо изменений. Вот это я понимаю — преемственность и обратная совместимость! Смотрите сами:

title Windows 10
chainloader /EFI/Microsoft/Boot/bootmgfw.efi

Как можно заметить, концепт передачи управления другому загрузчику «по цепочке» не претерпел изменений. С if-условным отображением пунктов загрузочного меню тоже все в порядке:

iftitle [if %@uefi%==64 if exist (hd0,0)/EFI/Memtest86.efi] Memtest86+
chainloader /EFI/Misc/Memtest86.efi

Здесь опытный читатель заметит нововведение относительно «проверки на UEFI». Загрузка различных WinPE из ISO никуда не делась и по-прежнему очень проста:

title Windows 10 PE from ISO (NTFS)
rootnoverify (hd0,1)
set ISO=/ISO/Win10PE.iso
find —set-root %ISO%
map %ISO% (hd32) || map —mem %ISO% (hd32)
chainloader (hd32)

А с помощью плагинов можно грузиться и напрямую из WIM-образа:

title Windows 10 PE from WIM
set WIM=(hd0,0)/EFI/Microsoft/Win10PE.wim
find /EFI/Grub/Ext/ntboot | set bd=
%bd%/EFI/Grub/Ext/ntboot %WIM%
boot

Acronis на базе Linux запускается без всяких проблем:

title Acronis Disk Director 12.5.163 Server
kernel (hd0,0)/EFI/Acronis/DiskDirector/kernel vga=791 mbrcrcs=on force_modules=usbhid quiet lang=RU_ru quiet
initrd (hd0,0)/EFI/Acronis/DiskDirector/initrd (hd0,0)/EFI/Acronis/DiskDirector/server.dat

Slax на базе Slackware, как всегда, имеет одну из самых лаконичных конфигураций загрузки:

title Slax Linux from ISO
set ISO=/EFI/Linux/Slax.iso
map %ISO% (0xff) || map —mem %ISO% (0xff)
map —hook
kernel (0xff)/slax/boot/vmlinuz from=%ISO%
initrd (0xff)/slax/boot/initrfs.img

Для запуска свежей версии Tails теперь нужно указывать UUID — прямо как в Arch:

title Tails Linux from ISO
set ISO=/EFI/Linux/Tails.iso
map %ISO% (0xff) || map —mem %ISO% (0xff)
map —hook
uuid () && set TUUID=%?%
kernel (0xff)/live/vmlinuz initrd=/live/initrd.img boot=live config findiso=%ISO% nopersistence noprompt noautologin module=Tails slab_nomerge slub_debug=FZ mce=0 vsyscall=none init_on_free=1 mds=full,nosmt page_alloc.shuffle=1 randomize_kstack_offset=on efi_pstore.pstore_disable=1 erst_disable spec_store_bypass_disable=on systemd.condition_needs_update=no
initrd (0xff)/live/initrd.img

Таким образом для тех, кто ранее пользовался grub4dos на системах BIOS, миграция на UEFI становится практически безболезненной.