Можно ли выбрать систему для загрузки до перезагрузки в многозагрузочной системе UEFI?
Мне интересно, есть ли способ установить компьютер с UEFI и двумя разными операционными системами (в моем случае Windows 10 и Linux Mint 17.x), где вам не нужно ждать завершения работы системы, чтобы выбрать другая система для загрузки.
Чтобы объяснить дальше:
Обычно мультизагрузочные системы работают так, что при запуске компьютера появляется меню (из менеджера uefi, загрузчика и т. Д.), И вы выбираете ОС для загрузки. Это меню обычно можно настроить так, чтобы оно имело значение по умолчанию, поэтому, если оставить его без присмотра, оно "сделает выбор" самостоятельно или даже запомнит ваш последний выбор и будет использовать его повторно, пока вы не сделаете другой выбор (по крайней мере, это было дело с наследием GRUB).
На моем компьютере по умолчанию используется Mint, и это работает большую часть времени. Однако, если я нахожусь в Windows, и я хочу перезагрузиться в Windows, мне придется подождать, пока появится меню GRUB, и выбрать Windows, иначе он перезагрузится в Mint. Поскольку завершение работы может занять некоторое время (особенно при установке обновлений), это означает, что вы должны оставаться рядом с компьютером, в противном случае я смог бы отойти.
В идеале я хотел бы иметь возможность выбрать операционную систему, когда скажу перезагрузить компьютер.
Очевидно, что это не будет частью стандартного "выключенного" меню ни в одной из систем, но я думаю, что это может произойти с помощью запускаемого сценария.
Например, в GRUB может быть возможно иметь скрипт, который изменяет свой файл конфигурации, чтобы установить определенную систему по умолчанию, а затем запускает перезагрузку, но это может занять слишком много времени, потребует привилегий root и также будет работать только из Mint.
Существует ли такой метод, использующий любой доступный менеджер загрузки (например, rEFInd), который будет работать с любой ОС без какого-либо специального подтверждения?
РЕДАКТИРОВАТЬ: REFInd сам поддерживает такую функцию, по-видимому. Ссылка На той же странице также предлагается, как установить переменную из Linux. Кроме того, в MSDN, похоже, есть метод установки переменной EFI с помощью кода C++, доступный в Windows 10. Ссылка
Таким образом, кажется, что создание способа сделать это было бы возможно. Однако я не смогу сделать это через несколько дней.
1 ответ
Ваш вопрос сам содержит несколько возможных ответов. Еще один - манипулировать EFI BootNext
параметр. Это устанавливает однократную загрузку для указанной целевой загрузочной программы. Это можно сделать в Linux через efibootmgr
полезность:
- Тип
efibootmgr
(или жеefibootmgr -v
чтобы получить более подробную информацию) какroot
или используяsudo
, Это отобразит список ваших параметров загрузки. - Определите вариант загрузки, который вы хотите загрузить. Например, чтобы загрузиться прямо с Windows, вы, вероятно, захотите опцию под названием
Windows Boot Manager
, (Однако обратите внимание, что эти имена иногда вводят в заблуждение. Возможно, вам придется поэкспериментировать и выяснить детали вашей системы.) - Тип
efibootmgr -n ####
какroot
или используяsudo
сказать системе загрузитьсяBoot####
дальше, где####
номер записи, которую вы хотите загрузить.
Я полагаю, что вы можете сделать что-то подобное с EasyUEFI в Windows, но это инструмент с графическим интерфейсом, поэтому он может оказаться бесполезным для описываемого вами сценария. возможно bcdedit
мог бы сделать трюк, но я не смотрел на это.