Je rencontre une machine virtuelle Windows10 sur OpenStack qui redémarre automatiquement lors d'une connexion automatique réussie. Lutter avec cela pendant un certain temps et les heures passées à rechercher ce sujet sur google ont été vains. Suivez la procédure étape par étape ci-dessous pour trouver la cause première et empêcher le redémarrage automatique de la machine virtuelle Windows10 sur OpenStack !
Vous vous demandez pourquoi Windows redémarre automatiquement ? Heureusement, Windows suit les événements et les enregistre dans le journal système. Avec l'Observateur d'événements Windows intégré, vous pouvez surveiller les activités qui se produisent sur votre ordinateur avant, pendant et après l'arrêt ou le redémarrage. Cet article m'a aidé à afficher les journaux système de Windows10 qui ont déclenché le redémarrage automatique.
Afficher le journal d'arrêt et de redémarrage à partir de l'Observateur d'événements
Ouvrir l'application Observateur d'événements
Accédez à Windows Logs -> System
dans le volet de gauche. Attendez que tous les journaux soient chargés. Cliquez sur Filter Current Log
sur le volet de droite. Tapez 41, 1074, 6006, 6008 dans la zone de texte sous inclut/exclut les ID d'événement, puis cliquez sur OK pour filtrer les journaux d'événements.
À partir des journaux filtrés, a trouvé un journal suspect indiquant que Cloudbase-Init a initié le redémarrage de l'ordinateur comme ci-dessous :
Cela a fourni un indice pour approfondir la recherche et a trouvé un bogue signalé dans le tableau de bord lié à cloudbase-init. Vous trouverez ci-dessous ma compréhension de la raison pour laquelle le redémarrage automatique s'est produit :
Depuis notre cloudbase-init unattend.xml
fichier (C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\unattend.xml
), vous pouvez remarquer que cloudbase-init essaie de définir le nom d'hôte dans les paramètres de spécialisation. Cela provoque l'exécution d'une fonction SetComputerName pendant l'étape de spécialisation, qui modifie le nom de l'ordinateur en DESKTOP-<random string>
. Un problème connu dans Windows10 est qu'une modification du nom de l'ordinateur nécessite un redémarrage.
Comment empêcher la machine virtuelle Windows10 sur OpenStack de redémarrer automatiquement !
Merci à Curt Moore pour sa solution rapide. Le même que j'ai essayé d'expliquer en détail ci-dessous :
Étape 1 : Installez Cloudbase-init en utilisant le MSI comme d'habitude, sauf qu'il ne doit PAS effectuer de sysprep automatique pendant l'installation automatique.
Étape 2 : Une fois l'installation de Cloudbse-init terminée, exécutez la commande suivante à partir de l'invite de commande (Exécuter en tant qu'administrateur) pour désactiver le démarrage automatique de la version de service Windows de cloudbase-init.
sc config cloudbase-init start= disabled
Étape 3 : Modifiez le fichier unattend.xml et ajoutez un autre RunSynchronousC
node pour réactiver le démarrage automatique du service Windows cloudbase-init. Cette commande _doit_ être définie comme <Order>1</Order>
et le nœud cloudbase-init existant sans surveillance défini sur <Order>2</Order>
afin que la commande de réactivation s'exécute avant l'instance sans surveillance de cloudbase-init, qui nécessite un redémarrage. L'idée est que si nous réactivons le service cloudbase-init (mais ne le redémarrons pas pour le moment) lors du redémarrage requis par le cloudbase-init sans surveillance, l'instance de service Windows démarrera comme souhaité et ne sera pas en conflit avec l'instance sans surveillance puisqu'elle aura déjà été exécutée. Ci-dessous se trouve le unattend.xml
modifié fichier :
Étape 4 : Après avoir modifié le unattend.xml
fichier, exécutez manuellement la commande sysprep à partir de l'invite de commande (Exécuter en tant qu'administrateur) et référencez le XML modifié.
C:\Windows\system32>"%SYSTEMROOT%\system32\ sysprep\ sysprep. exe" /generalize /oobe /quit /unattend:C:\Program Files\Cloudbase Solutions\Cloudbase-Init\conf\unattend.xml
Reportez-vous au fichier unattend.xml
Reportez-vous correctement au chemin du fichier unattend.xml en ce qui concerne votre installation.
Étape 5 : Libérez la configuration IP de Windows après le sysprep, puis arrêtez immédiatement la machine virtuelle.
Pourquoi libérer IPCela évitera de re-DÉCOUVRIR la même adresse IP que la VM avait avant d'être syspreppée. Ceci est gênant lors du démarrage d'une machine virtuelle dans OpenStack car les segments de réseau sont totalement différents et il faut environ 10 à 20 secondes à Windows pour arrêter d'essayer de re-DÉCOUVRIR l'ancienne adresse et émettre simplement une nouvelle DEMANDE DHCP.
ipconfig /release shutdown /s /f /t 1
Téléchargez maintenant la machine virtuelle Windows sur OpenStack et démarrez une instance. Voila ! la machine virtuelle Windows10 s'est connectée automatiquement et n'a pas redémarré !