Да, загрузчики и менеджеры загрузки запускаются непосредственно прошивкой.
(Хотя некоторые прошивки настолько сложны, что вы можете фактически назвать UEFI "ОС", а его загрузчики - "программами UEFI" ...)
- Может ли менеджер загрузки Windows существовать без Windows? Да.
- Может ли он заменить GRUB? Может быть, а может и нет. (Хотя это зависит от того, какую ОС вы подразумеваете под "UNIX"!) На UEFI было бы проще, чем на BIOS.
- Может ли GRUB заменить менеджер загрузки Windows? Может быть, а может и нет. (Зависит от версии Windows.)
Проблема в том, что ядра ОС имеют разные способы запуска и ожидают, что загрузчик предоставит определенные начальные параметры, такие как, с какого диска загружаться, какую "командную строку ядра" использовать, где находится initramfs Linux и так далее. Например, вот протокол загрузки Linux, а также спецификация Multiboot, используемая некоторыми BSD.
Таким образом, вы не можете указать Windows BOOTMGR запускать vmlinuz
напрямую, и вы не можете указать GRUB запустить ntoskrnl.exe
напрямую.
Однако иногда эта работа выполняется не самим менеджером загрузки, а небольшим загрузчиком-заглушкой, который можно запустить стандартным способом. И этот загрузчик заглушки может быть запущен другим менеджером загрузки, чем обычно.
Например, Windows BOOTMGR сначала запускает winload.efi
, и на этом все приготовления к запуску ntoskrnl
сделаны.
Это означает, что вы можете настроить GRUB для загрузки Windows, запустив winload.efi
, не проходя через BOOTMGR.
Точно так же ядро Linux часто приходит с встроенным "EFI шлейфом", так что само ядро может работать как отдельная программа UEFI.
Поэтому, если в вашем ядре Linux включена собственная опция "EFISTUB" или присоединена заглушка systemd-boot, вы можете заставить Windows BOOTMGR запускать его напрямую, без использования GRUB или чего-либо еще.