Вопрос или проблема
Я использую двойную загрузку Arch Linux и Windows 11. После обновления Windows 11 до 24H2 у меня возникли проблемы с тем, что Windows удаляет загрузочную запись Arch из UEFI Boot Manager (не уверен в правильной терминологии), когда я выключаю Windows.
Я использую разные физические (NVMe) диски для Arch и Windows, каждый диск имеет свой собственный EFI раздел. Раздел EFI, где хранится Grub (т.е. на диске Arch), остается нетронутым Windows (насколько я могу судить). Следовательно, мне не нужно запускать grub-install
, чтобы иметь возможность загрузиться обратно в Arch, достаточно добавить загрузочную запись обратно, используя efibootmgr
(загружаясь с USB live системы).
Это вывод efibootmgr
, когда у меня есть загрузочная запись Arch:
$ efibootmgr
BootCurrent: 0000
Timeout: 1 seconds
BootOrder: 0000,0003,0004,0005
Boot0000* arch HD(2,GPT,173e8e08-39d0-4ef2-a001-925a28e5f67a,0x800,0x100000)/\EFI\arch\grubx64.efi
Boot0003* Windows Boot Manager HD(3,GPT,8c14e3de-9af4-481a-8b4c-3501d59e5ee7,0x746d4800,0x32000)/\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI57494e444f575300010
0000088000000780000004200430044004f0042004a004500430054003d007b00390064006500610038003600320063002d0035006300640064002d0034006500370030002d0061006300
630031002d006600330032006200330034003400640034003700390035007d0000006c000100000010000000040000007fff0400
Boot0004* UEFI: USB PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/USB(2,0)/CDROM(1,0x1f9000,0x5a040)0000424f
Boot0005* UEFI: USB, Partition 2 PciRoot(0x0)/Pci(0x1,0x2)/Pci(0x0,0x0)/USB(2,0)/HD(2,MBR,0x6c692b18,0x1f9000,0x5a000)0000424f
При загрузке в Windows это вывод bcdedit /enum firmware
:
Firmware Boot Manager
---------------------
identifier {fwbootmgr}
displayorder {6430a111-f9e3-11ef-9def-806e6f6e6963}
{bootmgr}
{6430a10f-f9e3-11ef-9def-806e6f6e6963}
{6430a110-f9e3-11ef-9def-806e6f6e6963}
timeout 1
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume3
path \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {f4a86340-d3e4-11ee-b6d4-b2830b3bf22d}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Firmware Application (101fffff)
-------------------------------
identifier {6430a10f-f9e3-11ef-9def-806e6f6e6963}
description UEFI: USB
Firmware Application (101fffff)
-------------------------------
identifier {6430a110-f9e3-11ef-9def-806e6f6e6963}
description UEFI: USB, Partition 2
Firmware Application (101fffff)
-------------------------------
identifier {6430a111-f9e3-11ef-9def-806e6f6e6963}
device partition=\Device\HarddiskVolume6
path \EFI\arch\grubx64.efi
description arch
Загрузочная запись для Arch все еще там. Но после перезагрузки:
Firmware Boot Manager
---------------------
identifier {fwbootmgr}
displayorder {bootmgr}
{6430a10f-f9e3-11ef-9def-806e6f6e6963}
{6430a110-f9e3-11ef-9def-806e6f6e6963}
timeout 1
Windows Boot Manager
--------------------
identifier {bootmgr}
device partition=\Device\HarddiskVolume3
path \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
description Windows Boot Manager
locale en-US
inherit {globalsettings}
default {current}
resumeobject {f4a86340-d3e4-11ee-b6d4-b2830b3bf22d}
displayorder {current}
toolsdisplayorder {memdiag}
timeout 30
Firmware Application (101fffff)
-------------------------------
identifier {6430a10f-f9e3-11ef-9def-806e6f6e6963}
description UEFI: USB
Firmware Application (101fffff)
-------------------------------
identifier {6430a110-f9e3-11ef-9def-806e6f6e6963}
description UEFI: USB, Partition 2
Теперь Arch исчез.
Я отключил Turn on fast startup
в параметрах питания.
Я немного растерян, что делать. Как мне остановить Windows от удаления загрузочной записи для Arch?
Ответ или решение
Ваше описание проблемы указывает на то, что Windows 11, а точнее его обновление до версии 24H2, стирает загрузочную запись Arch Linux из UEFI Boot Manager. Несмотря на то, что система хранения загрузочной информации Arch Linux остаётся нетронутой, запись исчезает, и вам приходится восстанавливать её при помощи efibootmgr
при загрузке с USB-накопителя. Рассмотрим возможные причины и способы решения этой проблемы.
Теория
Современные системы используют Unified Extensible Firmware Interface (UEFI), чтобы управлять загрузкой операционных систем. Загрузочная информация хранится в области, называемой Boot Manager. Windows, особенно более современные версии, такие как Windows 11, могут вмешиваться в этот Boot Manager для управления загрузочным порядком. Иногда это приводит к исчезновению или перезаписи существующих записей других систем, таких как Linux. Это может быть связано с политиками безопасности Windows, которые изменяются с новыми обновлениями, политиками управления питанием, такими как Быстрый старт (Fast Startup), или стандартными установками загрузчика Windows.
Пример
Ваш случай показывает, что несмотря на отдельные физические диски и разделы EFI, Windows периодически обновляет или перезаписывает UEFI-совместимые загрузочные записи, удаляя Arch Linux из списка загрузок. Сначала запись существует, но после определенных операций в Windows запись отсутствует. Перезагрузка и восстановление с помощью efibootmgr
, как вы и делаете, временно восстанавливают работоспособность, но это не является желаемым долгосрочным решением.
Применение
Для решения вашей проблемы рассмотрим несколько возможных шагов и рекомендаций:
-
Проверка и изменение конфигураций UEFI:
- Убедитесь, что вы используете последнюю версию микропрограммы для вашей материнской платы. Иногда обновления UEFI могут исправлять несовместимости или улучшать поддержку многоосевых конфигураций.
- Войдите в BIOS/UEFI и убедитесь, что Secure Boot отключен, если это допустимо встроенной политикой безопасности. Secure Boot препятствует изменениям в загрузочной конфигурации, если ключи безопасности не удовлетворяют требованиям одной из систем.
-
Конфигурация загрузчика:
- Рассмотрите возможность использования более устойчивой конфигурации загрузчика, например,
rEFInd
, который может быть более устойчивым к изменениям, вносимым Windows. - Проверьте, правильно ли настроены пути к файлам .efi в загрузочных конфигурациях. Возможно, Windows изменяет конфигурацию из-за ошибки в путях или назвать ELF-файлов.
- Рассмотрите возможность использования более устойчивой конфигурации загрузчика, например,
-
Настрока системы Windows:
- Обратите внимание на дополнительные параметры управления энергопотреблением. Проверка и отключение всех функций быстрого запуска может быть недостаточно, – убедитесь, что все настройки энергопотребления и управления дисками не влияют на вторичный диск, где находится Linux.
- Используйте административные инструменты Windows, такие как
bcdedit
, для контроля загрузочной конфигурации с Windows. Убедитесь, что конфигурация правильно отображает наличие других ОС.
-
Автоматизация восстановления:
- Если проблема продолжает появляться, стоит рассмотреть автоматизацию процесса восстановления при помощи скрипта или автоматизированной процедуры для загрузочной liveUSB, которая устанавливает загрузочную запись за вас.
Заключение: часть проблем связана с тем, как некоторые системы пытаются обслуживать начально-загрузочную конфигурацию только для себя. Ваша задача – управлять этим с обоих концов: настройкой Windows так, чтобы минимизировать вмешательство, и защитой системы Linux с помощью устойчивых инструментов и практик.