poweroff
reclama que não pode se conectar ao systemd via DBus (claro, não está vivo). Eu fiz sync
seguido por kill $$
, pensando que a morte do pid 1 faria com que o kernel fosse desligado, mas isso causou um pânico no kernel. Em seguida, segurei o botão liga / desliga para forçar o desligamento.
Qual é a maneira mais adequada de desligar neste cenário?
Desmonte os sistemas de arquivos que você montou. O sistema de arquivos raiz é um caso especial; para isso você pode usar
mount / -o remount,ro
. No Linux,umount /
também funciona, porque é efetivamente convertido para o comando anterior.Dito isto, você não precisa se preocupar em desmontar muito, a menos que
sync
deve ser suficiente, e o sistema de arquivos se reparará muito rapidamente na próxima inicialização.O acima é a parte importante. Depois disso, você também pode desligar convenientemente o hardware usando
poweroff -f
. Ou reinicie comreboot -f
.Existe um
systemd
equivalente específico depoweroff -f
:systemctl poweroff -f -f
. No entantopoweroff -f
, faz a mesma coisa esystemd
suporta este comando mesmo que tenha sido construído sem compatibilidade com SysV.Tecnicamente, lembro que meu disco rígido USB foi documentado como exigindo "remoção segura" do Windows ou equivalente. Mas esse requisito não é seguro contra falhas de energia, e o Linux não faz isso durante um desligamento normal de qualquer maneira. É melhor interpretado como significando que você não deve movimentar o disco rígido enquanto ele está girando - inclusive tentando desconectá-lo. Um desligamento total deve parar a rotação da unidade. Você provavelmente pode ouvir, sentir ou ver se não para :-).
Vou simplesmente executar abaixo dois comandos:
Assumindo que a chave mágica está habilitada no kernel
Ok, então me ocorreu que eu tinha a opção de
exec init
. A partir daí, eu provavelmente seria capaz de mais tardepoweroff
. Eu me pergunto se existem alternativas melhores, no entanto.Efetivamente, você quer chamar reboot(2) syscall.
Duas maneiras de você fazer isso:
Execute
reboot -f
oupoweroff -f
, isso deve chamarreboot(2)
diretamente.Se você estiver no terminal virtual Linux real (não no emulador de terminal GUI), pressionando Ctrl+ Alt+ Delete.
Observe que o atalho de teclado pode ser desabilitado por algum programa de espaço do usuário (geralmente init), quando desabilitado o atalho enviará um sinal para init.
Todos os comandos acima devem ser executados após desmontar todos os discos ou remontar como somente leitura e executar a sincronização, caso contrário, você poderá perder dados não gravados. Se o seu shell for o único processo em execução, a sincronização pode ser suficiente.
Você pode usar as teclas Magic SysRq ( https://en.wikipedia.org/wiki/Magic_SysRq_key ) para desligar seu computador.
Para desligar corretamente, você pode usar o seguinte (formulário de citação da Wikipedia):
Mas substituindo o último B por O (para azerty/qwerty) por "power Off "