poweroff
reclama que não pode se conectar ao systemd via DBus (é claro, não está vivo). Eu tinha sync
seguido por kill $$
, pensando que pid 1 morrendo seria cue o kernel para desligamento, mas que causou um kernel panic. Então segurei o botão liga / desliga para forçar o desligamento.
Qual é a maneira mais adequada de desligar neste cenário?
init=/bin/bash
dica / implicação, é ambíguo se o systemd estiver instalado ou não. Eu quis dizer que não há nenhum systemd em execução . De qualquer forma, não tendo o systemd em execução, pensei que o conjunto de ferramentas do systemd seria inútil e que as respostas usariam outros meios, como o sysrq.Respostas:
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 no comando anterior.Dito isto, você não precisa se preocupar em desmontar demais, a menos que
sync
é suposto 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
.Há um
systemd
equivalente espec�ico depoweroff -f
:systemctl poweroff -f -f
. No entanto,poweroff -f
faz a mesma coisa esystemd
suporta esse comando, mesmo que tenha sido criado sem compatibilidade com o 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 para powerfail 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 gira, inclusive tentando desconectá-lo. Um desligamento total deve parar a unidade girando. Você provavelmente pode ouvir, sentir ou ver se não para :-).
fonte
sync()
é suficiente para ext2. Ele reclamará de estar sujo, mas não será realmente corrompido, exceto pelas informações resumidas. Geralmente considero init = / bin / bash ou qualquer equivalente local como uma situação de emergência.fsck.mode=skip
certo?fsck.mode=skip
para inicializar normalmente após uma desmontagem imunda!Simplesmente executarei abaixo de dois comandos:
Supondo que a chave mágica esteja ativada no kernel
fonte
Ok, então me ocorreu que eu tinha a opção
exec init
. De lá, eu provavelmente seria capaz mais tardepoweroff
. Eu me pergunto se existem alternativas melhores, no entanto.fonte
exec init 0
. Isso não funcionará com todos os sistemas init, mas os mesmos passarão por uma sequência de desligamento.Efetivamente, você deseja chamar o reboot (2) syscall.
Duas maneiras de fazer isso:
Executar
reboot -f
oupoweroff -f
, isso deve chamarreboot(2)
diretamente.Se você estiver no terminal virtual real do Linux (não no emulador de terminal da GUI), pressionando Ctrl+ Alt+ Delete.
Observe que o atalho de teclado pode ser desativado por algum programa de espaço do usuário (geralmente init); quando desativado, o atalho envia um sinal para init.
Todos os comandos acima devem ser executados após a desmontagem de todos os discos ou a remontagem como somente leitura e a execução da sincronização; caso contrário, você poderá perder dados não escritos. Se o seu shell for o único processo em execução, a sincronização poderá ser suficiente.
fonte
Você pode usar as teclas Magic SysRq ( https://en.wikipedia.org/wiki/Magic_SysRq_key ) para desligar o computador.
Para desligar corretamente, você pode usar o seguinte (formulário de cotação Wikipedia):
Mas substituindo o último B por O (para azerty / qwerty) por "power O ff"
fonte