Como reiniciar em um dispositivo específico na linha de comando?

Como reiniciar em um dispositivo específico na linha de comando?

Eu tenho os seguintes discos:

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

e atualmente estou usando Linux, então /dev/sdb2atualmente está montado como /.

Meu BIOS está configurado para inicializar por padrão no segundo HDD, inicializando assim no Linux.

Pergunta: na linha de comando do Linux, como reiniciar no Windows, ou seja /dev/sda2?(o bootloader está em /dev/sda1, mais precisamente em /EFI/Boot/bootx64.efi)

Semter que fazer algo como F12na inicialização do computador para acionar um menu de inicialização, esemescolhendo uma opção no menu Grub/boot.
DR: Existe uma maneira de reinicializar /dev/sda2com um único comando de linha de comando?

Responder1

Primeiro, execute sudo efibootmgr -vpara exibir suas variáveis ​​de inicialização UEFI atuais. As entradas de inicialização serão nomeadas BootXXXXonde XXXX=número de quatro dígitos (pode ser hexadecimal).

Se houver uma entrada de inicialização cuja segunda coluna diga "Gerenciador de inicialização do Windows", essa será a entrada de inicialização do Windows. Deve ser semelhante a isto:

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>

Aqui, 12345678-90ab-cdef-0123-456789abcdefserá o PARTUUID da partição ESP onde o gerenciador de boot do Windows \EFI\Microsoft\Boot\bootmgfw.efiestará localizado. No seu caso, deve ser o PARTUUID do seu /dev/sda1disco. Use lsblk -o +PARTUUIDpara visualizar os PARTUUIDs das partições do seu disco.

Depois de saber o número XXXX da entrada de inicialização do Windows, você pode executar:

sudo efibootmgr --bootnext XXXX

Isto deve fazer com que o sistema inicialize (apenas uma vez) usando a entrada de inicialização especificada, ou seja, para o Windows. Depois de dizer ao Windows para desligar ou reiniciar, a próxima inicialização deverá iniciar automaticamente o Linux novamente.

Depois de usar o sudo efibootmgr --bootnextcomando, o sistema está preparado para inicializar no Windows e você pode usar qualquer um dos comandos normais para reinicializar o sistema.

Se quiser fazer isso com um único comando, você pode criar um script simples:

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

Responder2

systemctl reboot --firmware-setup

Isso irá reinicializar no utilitário de configuração do BIOS.

informação relacionada