¿Cómo reiniciar en un dispositivo específico desde la línea de comandos?

¿Cómo reiniciar en un dispositivo específico desde la línea de comandos?

Tengo los siguientes discos:

/dev/sda 
  /dev/sda1 EFI partition
  /dev/sda2 Windows
/dev/sdb
  /dev/sdb1 EFI partition
  /dev/sdb2 Linux                    <-- currently mounted as /

y actualmente estoy usando Linux, por lo que /dev/sdb2actualmente está montado como /.

Mi BIOS está configurado para arrancar de forma predeterminada en un segundo disco duro, por lo que arranca en Linux.

Pregunta: desde la línea de comandos de Linux, ¿cómo reiniciar en Windows, es decir /dev/sda2?(el gestor de arranque está en /dev/sda1, más precisamente en /EFI/Boot/bootx64.efi)

Sintener que hacer algo como F12al iniciar la computadora para activar un menú de inicio, ysineligiendo una opción en un menú de Grub/arranque.
TL;DR: ¿Hay alguna manera de reiniciar /dev/sda2con un solo comando de línea de comando?

Respuesta1

Primero, ejecute sudo efibootmgr -vpara mostrar sus variables de arranque UEFI actuales. Las entradas de inicio se nombrarán BootXXXXdonde XXXX=número de cuatro dígitos (puede ser hexadecimal).

Si hay una entrada de inicio cuya segunda columna dice "Administrador de inicio de Windows", entonces esa es la entrada de inicio de Windows. Debería verse similar a este:

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>

Aquí, 12345678-90ab-cdef-0123-456789abcdefserá el PARTUUID de la partición ESP desde donde \EFI\Microsoft\Boot\bootmgfw.efise ubicará el administrador de arranque de Windows. En tu caso debería ser el PARTUUID de tu /dev/sda1disco. Úselo lsblk -o +PARTUUIDpara ver los PARTUUID de las particiones de su disco.

Una vez que sepa el número XXXX de su entrada de inicio de Windows, puede ejecutar:

sudo efibootmgr --bootnext XXXX

Esto debería hacer que el sistema arranque (sólo una vez) utilizando la entrada de arranque especificada, es decir, en Windows. Una vez que le indique a Windows que se apague o reinicie, el siguiente inicio debería iniciar Linux nuevamente automáticamente.

Después de usar el sudo efibootmgr --bootnextcomando, el sistema está preparado para iniciarse en Windows y puede usar cualquiera de los comandos normales para reiniciar el sistema.

Si quieres hacerlo con un solo comando, puedes hacer un script simple:

#!/bin/sh
sudo efibootmgr --bootnext XXXX
sudo reboot

Respuesta2

systemctl reboot --firmware-setup

Esto se reiniciará en la utilidad de configuración del BIOS.

información relacionada