- Вопрос или проблема
- $ bootctl list
- /boot/loader/loader.conf
- /boot/loader/entries/windows.conf
- Редактировать: Идея – скрыть grub и активировать его только при нажатии определенной клавиши
- Ответ или решение
- Шаг 1: Настройка конфигураций для Windows 10 и 11
- Шаг 2: Конфигурация загрузчика systemd-boot
- Шаг 3: Проверка и тестирование
- Примечания
Вопрос или проблема
Недавно я установил Windows 11 на своем домашнем ПК, помимо Arch Linux, но моя жена не готова переключаться, пока не сдаст экзамены, поэтому мы пока оставляем Windows 10, что приводит к очень запутанной ситуации с загрузкой:
- При загрузке менеджер загрузки systemd будет ждать 3 секунды с настройками по умолчанию для Windows 10, если ничего не выбрано вручную. При выборе Arch Linux все работает нормально, и он загружается. Однако при выборе Windows:
- Сначала загружается Windows 11, и только затем отображается менеджер загрузки Windows, который покажет Windows 10 и 11, но не Arch Linux (в противном случае его можно было бы использовать напрямую) и будет ждать 30 секунд, прежде чем загрузить последнюю загруженную систему. Если выбрана Windows 11, она будет запущена, однако если выбрана Windows 10:
- Снова произойдет перезагрузка, и снова будет показан менеджер загрузки systemd. Теперь, если выбрать Windows 10, она наконец-то запустится.
Моя цель состоит в том, чтобы иметь следующие 3 записи в меню systemd-boot, как мне этого достичь?
- Arch Linux
- Windows 10 (по умолчанию)
- 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.
Примечания
-
Проверка структуры EFI: Убедитесь, что файлы
bootmgfw.efi
находятся по указанным путям. Если они находятся в другом месте, укажите правильные пути в конфигурационных файлах. -
Настройка конфигурации для GRUB: Если вы хотите альтернативный вариант, вы можете настроить GRUB с функцией скрытого меню, как обсуждалось в вашем вопросе. Однако systemd-boot предоставляет более простой и легковесный вариант для большинства современных дистрибутивов Linux.
Если после выполнения всех шагов у вас все еще возникают проблемы с загрузкой, возможно, вам стоит рассмотреть возможность простой переустановки загрузчика или использование других инструментов для управления загрузкой (например, GRUB), если возможности systemd-boot не соответствуют вашим требованиям.
Надеюсь, эти рекомендации помогут вам достичь поставленной цели. Удачи!