O cenário:
Um dos servidores do Windows Server 2012 R2 Standard instalou um grande número de atualizações +200 de uma só vez (por isso, infelizmente, não tenho ideia de qual delas causou esse problema).
O problema:
Após a reinicialização, o servidor ficou preso na tela inicial de inicialização, informando “Atualizando seu sistema 8%”. Eu tentei o seguinte
- Esperando várias horas
- Reiniciando
- Reiniciar no modo de segurança (pressione F8
imediatamente quando o servidor é inicializado para acessar essa opção de inicialização)
- Reiniciando
usando Última configuração válida (pressione F8 imediatamente como
inicialização do servidor para acessar essa opção de inicialização)
Nenhum dos itens acima funcionou.
A solução:
- Reinicialize o servidor, pressione F8 para acessar as opções avançadas de inicialização
- Selecione a opção "Reparar seu computador"
- Na tela Opções, selecione Solucionar problemas > Prompt de Comando
- O servidor inicializa em um prompt de comando limitado na unidade X .
- Obtenha uma lista de todas as unidades disponíveis, digite “ wmic logicaldisk get name “. Isso é importante porque, enquanto no ambiente de reparo, os mapeamentos de unidade costumam ser alterados, por exemplo, eu estava em pânico quando mudei para a unidade C apenas para descobrir que ela estava vazia. Na verdade, a unidade do sistema foi mapeada para a unidade E. Não há uma maneira óbvia de saber, você só precisa mudar para cada mapeamento de unidade e executar um comando Dir. (Para saber com certeza, você pode criar um cd para todas as unidades listadas acima e verificar se ele possui um diretório relacionado ao Windows.)
- Navegue até a pasta \ Windows \ Winsxs. Uma vez aqui, você precisa encontrar todos os arquivos chamados pending.xml * e renomeá-los todos adicionando .OLD ao final do nome do arquivo. (No meu servidor eu tinha dois pending.xml e pending.xml.random_number - eu adicionei .OLD ao final de ambos). A razão para isso é que, em um deles, há uma corrupção que é a causa do problema.
ren pending.xml pending.xml.old
- Se você tiver muitos arquivos com o nome e uma seqüência de números, poderá usar o seguinte na linha de comando: para / r% i em (pending.xml *) mover% i% i. antigo
- Crie um novo arquivo em branco pending.xml na pasta \ Windows \ Winsxs; echo > pending.xml
- O próximo passo é executar um comando DISM para remover / reverter todas as ações pendentes da imagem, no nosso caso essas atualizações tentam instalar. No entanto, antes de fazer isso, você deve criar uma pasta de rascunho para os arquivos temporários a serem armazenados. Se você não concluir esta etapa, obterá um 3017 error , que reclama o local temporário padrão para o risco pasta é muito pequena. Crie a pasta de rascunho no diretório \ Windows; mkdir \ windows \ scratch
- Execute o seguinte comando (NB minha unidade do sistema foi mapeada para a unidade E); DISM / Imagem: E: \ / Cleanup-Image / RevertPendingActions / scratchdir: E: \ Windows \ Scratch
- Depois de concluir, renomeie o \ windows \ SoftwareDistribution para SoftwareDistributionOLD; ren E: \ windows \ SoftwareDistribuição SoftwareDistributionOLD
- Finalmente, execute sfc / scannow - a ferramenta Verificador de arquivos do sistema para reparar arquivos de sistema ausentes ou corrompidos
- Reinicialize o servidor. A tela inicial de inicialização deve mostrar pontos giratórios por um minuto ou dois e, em seguida, inicializar normalmente. Em minha instância, ele relatou que as atualizações não puderam ser instaladas e, portanto, revertidas as que foram instaladas. Em seguida, forçou outra reinicialização.
- Nesse estágio, o servidor está pronto para ter as atualizações instaladas, mas, desta vez, faça apenas algumas por vez para localizar a atualização defeituosa.