Как перезагрузить определенное устройство из командной строки?

Как перезагрузить определенное устройство из командной строки?

У меня есть следующие диски:

/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.

Связанный контент