Тройная загрузка с systemd-boot: Как загрузить Windows 10 и 11 напрямую без менеджера загрузки Windows?

Вопрос или проблема

Недавно я установил Windows 11 на своем домашнем ПК, помимо Arch Linux, но моя жена не готова переключаться, пока не сдаст экзамены, поэтому мы пока оставляем Windows 10, что приводит к очень запутанной ситуации с загрузкой:

  1. При загрузке менеджер загрузки systemd будет ждать 3 секунды с настройками по умолчанию для Windows 10, если ничего не выбрано вручную. При выборе Arch Linux все работает нормально, и он загружается. Однако при выборе Windows:
  2. Сначала загружается Windows 11, и только затем отображается менеджер загрузки Windows, который покажет Windows 10 и 11, но не Arch Linux (в противном случае его можно было бы использовать напрямую) и будет ждать 30 секунд, прежде чем загрузить последнюю загруженную систему. Если выбрана Windows 11, она будет запущена, однако если выбрана Windows 10:
  3. Снова произойдет перезагрузка, и снова будет показан менеджер загрузки systemd. Теперь, если выбрать Windows 10, она наконец-то запустится.

Моя цель состоит в том, чтобы иметь следующие 3 записи в меню systemd-boot, как мне этого достичь?

  1. Arch Linux
  2. Windows 10 (по умолчанию)
  3. Windows 11

И выбор любого варианта Windows должен загружать его напрямую. Я посмотрел в папке /boot/efi/Microsoft/Boot, но единственными .efi файлами являются bootmgfw.efi и bootmgr.efi.

$ bootctl list

Записи загрузчика:
        название: Arch Linux
           id: arch.conf
       источник: /boot/loader/entries/arch.conf
        linux: /vmlinuz-linux-ck-skylake
       initrd: /intel-ucode.img
               /initramfs-linux-ck-skylake.img
      параметры: root=/dev/nvme0n1p5 rw nvidia-drm.modeset=1 systemd.unified_cgroup_hierarchy=false

        название: MemTest86
           id: memtest86-efi.conf
       источник: /boot/loader/entries/memtest86-efi.conf

        название: Windows 10 (по умолчанию)
           id: windows.conf
       источник: /boot/loader/entries/windows.conf

        название: Менеджер загрузки Windows
           id: auto-windows
       источник: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f

        название: Перезагрузка в интерфейс прошивки
           id: auto-reboot-to-firmware-setup
       источник: /sys/firmware/efi/efivars/LoaderEntries-4a67b082-0a4c-41cf-b6c7-440b29bb8c4f

/boot/loader/loader.conf

timeout 3
console-mode max
default windows.conf

/boot/loader/entries/windows.conf

название   Windows 10
efi /EFI/Microsoft/Boot/bootmgfw.efi 

Редактировать: Идея – скрыть grub и активировать его только при нажатии определенной клавиши

Я предлагаю использовать grub2 вместо systemd-boot, что даст вам больше возможностей. Это решение не будет показывать менеджер загрузки “linux” (grub2) до тех пор, пока не будут нажаты ESC или F4, или не удерживается SHIFT (вам нужно будет попробовать, что сработает для вас).

Выполните следующую конфигурацию в /etc/default/grub:

GRUB_TIMEOUT=3 (секунды до выбора параметра по умолчанию)

GRUB_TIMEOUT_STYLE=hidden

‘GRUB_TIMEOUT_STYLE’

Если эта опция не установлена или установлена в ‘menu’, то GRUB будет отображать меню и затем ждать истечения времени ожидания, установленного ‘GRUB_TIMEOUT’, прежде чем загрузить запись по умолчанию. Нажатие клавиши прерывает время ожидания.

Если эта опция установлена в ‘countdown’ или ‘hidden’, то перед отображением меню GRUB будет ждать истечения времени ожидания, установленного ‘GRUB_TIMEOUT’. Если в это время нажаты ESC или F4, или удерживается SHIFT, то оно отобразит меню и будет ждать ввода. Если нажата горячая клавиша, связанная с записью меню, она немедленно загрузит соответствующую запись меню. Если время ожидания истечет до того, как произойдет одно из этих действий, она загрузит запись по умолчанию. В случае ‘countdown’ она покажет однострочное указание оставшегося времени.

Я обнаружил, что иногда необходимо отредактировать /etc/grub.d/30_os_prober и изменить параметр quick_boot="1" на quick_boot="0", чтобы это работало правильно.

В конце концов, вам нужно выполнить update-grub, чтобы обновить вашу конфигурацию.

Ответ или решение

Для того чтобы настроить загрузку Windows 10 и 11 напрямую без использования управления загрузкой Windows (Windows Boot Manager) в конфигурации systemd-boot, вам нужно будет создать два отдельных файла конфигурации для каждой операционной системы в каталоге /boot/loader/entries/. Вот шаги, которые необходимо выполнить:

Шаг 1: Настройка конфигураций для Windows 10 и 11

Создайте файл конфигурации для Windows 11 в каталоге /boot/loader/entries/. Например, вы можете создать файл windows11.conf:

sudo nano /boot/loader/entries/windows11.conf

Добавьте в него следующее содержимое:

title   Windows 11
efi     /EFI/Microsoft/Boot/bootmgfw.efi

Теперь создайте или отредактируйте файл windows.conf для Windows 10:

sudo nano /boot/loader/entries/windows.conf

Добавьте в него следующее содержимое:

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

Теперь у вас будет два отдельных файла для загрузки Windows 10 и 11.

Шаг 2: Конфигурация загрузчика systemd-boot

Отредактируйте файл конфигурации загрузчика /boot/loader/loader.conf, чтобы установить стандартный элемент меню и время задержки. Например:

sudo nano /boot/loader/loader.conf

Добавьте или измените на следующее:

timeout 3
default windows.conf

Шаг 3: Проверка и тестирование

После внесения всех изменений перезагрузите компьютер и проверьте, появляются ли оба варианта Windows в меню загрузчика systemd-boot. Вы должны видеть три опции:

  • Arch Linux
  • Windows 10 (по умолчанию)
  • Windows 11

При выборе любой из опций Windows должно происходить прямое начальное загрузка без взаимодействия с Windows Boot Manager.

Примечания

  1. Проверка структуры EFI: Убедитесь, что файлы bootmgfw.efi находятся по указанным путям. Если они находятся в другом месте, укажите правильные пути в конфигурационных файлах.

  2. Настройка конфигурации для GRUB: Если вы хотите альтернативный вариант, вы можете настроить GRUB с функцией скрытого меню, как обсуждалось в вашем вопросе. Однако systemd-boot предоставляет более простой и легковесный вариант для большинства современных дистрибутивов Linux.

Если после выполнения всех шагов у вас все еще возникают проблемы с загрузкой, возможно, вам стоит рассмотреть возможность простой переустановки загрузчика или использование других инструментов для управления загрузкой (например, GRUB), если возможности systemd-boot не соответствуют вашим требованиям.

Надеюсь, эти рекомендации помогут вам достичь поставленной цели. Удачи!

Оцените материал
Добавить комментарий

Капча загружается...