У меня есть следующие диски:
/dev/sda
/dev/sda1 EFI partition
/dev/sda2 Windows
/dev/sdb
/dev/sdb1 EFI partition
/dev/sdb2 Linux <-- currently mounted as /
и я в настоящее время использую Linux, поэтому /dev/sdb2
в настоящее время монтируется как /
.
Мой BIOS настроен на загрузку по умолчанию со второго жесткого диска, таким образом загружается Linux.
Вопрос: как из командной строки Linux перезагрузиться в Windows, т.е. /dev/sda2
?(загрузчик находится в /dev/sda1
, точнее в /EFI/Boot/bootx64.efi
)
Безнеобходимость делать что-то вроде F12запуска компьютера, чтобы вызвать меню загрузки, ибезвыбор опции в меню загрузки Grub.
TL;DR: Есть ли способ перезагрузиться /dev/sda2
с помощью одной команды командной строки?
решение1
Сначала запустите, sudo efibootmgr -v
чтобы отобразить текущие переменные загрузки UEFI. Записи загрузки будут названы, BootXXXX
где XXXX=четырехзначное число (может быть шестнадцатеричным).
Если есть загрузочная запись, во втором столбце которой написано "Windows Boot Manager", то это загрузочная запись для Windows. Она должна выглядеть примерно так:
BootXXXX* Windows Boot Manager HD(2,GPT,12345678-90ab-cdef-0123-456789abcdef,0x109000,0x32000)/File(\EFI\Microsoft\Boot\bootmgfw.efi)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{ <UTF-16 representation of an UUID here>
Здесь 12345678-90ab-cdef-0123-456789abcdef
будет PARTUUID раздела ESP, \EFI\Microsoft\Boot\bootmgfw.efi
на котором будет расположен менеджер загрузки Windows. В вашем случае это должен быть PARTUUID вашего /dev/sda1
диска. Используйте lsblk -o +PARTUUID
для просмотра PARTUUID разделов вашего диска.
Узнав номер XXXX вашей загрузочной записи Windows, вы можете выполнить:
sudo efibootmgr --bootnext XXXX
Это должно заставить систему загрузиться (только один раз) с использованием указанной загрузочной записи, т. е. Windows. Как только вы скажете Windows завершить работу или перезагрузиться, следующая загрузка должна автоматически запустить Linux снова.
После использования sudo efibootmgr --bootnext
команды система будет готова к загрузке Windows, и вы можете использовать любую из обычных команд для перезагрузки системы.
Если вы хотите сделать это одной командой, вы можете создать простой скрипт:
#!/bin/sh
sudo efibootmgr --bootnext XXXX
sudo reboot
решение2
systemctl reboot --firmware-setup
Это приведет к перезагрузке в утилиту настройки BIOS.