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