KamoCRM

Um computador nunca poderia reiniciar para ser capaz de dormir

FixKlusterServices
Enviado
23 de setembro de 2026 às 19:02 UTC
Autor
Kamo
Confirmação
2266930

O primeiro verdadeiro computador hospedado chegou AWAKE e depois ficou acordado para sempre. Hibernação relatada currículoConfigured: false, IdleWatcher só braços quando a prontidão é verdadeira, então a máquina segurou um nó memória sem nada para mostrar, mas um último erro que ninguém lê. A fiação estava toda correta no disco — o fragmento grub.d, o gancho initramfs, o arquivo de troca em fstab, e retomar=UUID=... currículo offset=... no grub gerado.cfg. O que nunca aconteceu foi o reinício que coloca qualquer um dele em /proc/cmdline, que é o único lugar de onde o kernel lê. O reinício foi condicional ao configure() relatando que ele havia acabado de escrever a fiação. configure () é chamado de dois lugares: a linha de inicialização do agente, em cada início, e /prepare-sleep, que computservice POSTs no final do provisionamento. Nesta máquina eles se sobrepuseram — o fio da bota terminou update-grub 40 milissegundos depois que o POST chegou, então o configure() do POST encontrou ambos os arquivos já estão corretos, não foram reportados nenhuma alteração, e não foi possível reiniciar. Código correcto, ambos a fazer chamadas o seu trabalho, impasse permanente, e nenhum erro em lado nenhum. Assim, a decisão já não pergunta quem escreveu um arquivo. currículo restart decision() pergunta ao estado: o rodando kernel não tem currículo=, um boot poderia corrigir isso, e a fiação já está em grub.cfg. Ambos os protetores anti-loop são de carga, porque o modo de falha do outro lado está reiniciando O computador de alguém num ciclo: - grub.cfg já deve ter o texto exacto. update-grub roda com check= Falso, por isso falha é real, e reiniciar sem ele reinicia na linha de comando idêntica. - um selo em /var/lib/kamo-hc registra O que foi reiniciado para, e sobrevive ao reinício Guardas. A mesma fiação duas vezes significa que o kernel está deixando cair a linha de comando e uma segunda reinicialização não ajudaria. Um arquivo de swap que MOVED é uma string diferente, e ganha uma nova tentativa. Todos os registros de caminhos, recusas incluídas. O erro foi silencioso em ambas as direções ao mesmo tempo: nada reiniciado e nada disse porque não. configure() também é serializado agora. Esses dois ouvintes estavam executando update-initramfs contra o mesmo ao mesmo tempo, que foi sorte em vez de design. O tópico boot recebe a mesma auto-cura, fechado em config.json existente: em uma primeira inicialização o provisionamento push ainda não pousou e reiniciar iria puxar a máquina para fora de baixo dele, mas sobre cada inicialização depois disso é o que recupera um computador cujo currículo offset uma atualização do kernel invalidado, sem esperar para ser perguntado. Nove testes. Aquele que importa afirma que um chamado que vê "sem mudança" ainda recebe o reinício — A velha suite testou o mecanismo e passou enquanto o sistema estava bloqueado.

Todas as alterações

Como o que você vê o transporte?

Comece com o plano gratuito e leia esta página novamente daqui a um mês, para saber mais sobre o que está disponível para você.

Comece grátis para sempreVer preços