Partager via


Erreur d’arrêt Windows - Statut pas de mémoire

S’applique à : ✔️ Machine virtuelles Windows

Cet article fournit des étapes pour résoudre les problèmes où Windows ne démarre pas et affiche le code d’état ou d’erreur #0xC0000017, également connu sous le nom de « État Mémoire insuffisante ».

Symptôme

Lorsque vous utilisez les diagnostics de démarrage pour obtenir la capture d’écran de la machine virtuelle, la capture d’écran affiche le code d’erreur suivant :0xC0000017. Selon la version de Windows que vous utilisez, vous pouvez voir ce code affiché dans le Gestionnaire de démarrage Windows ou dans l’écran de récupération.

Gestionnaire de démarrage Windows

Capture d’écran du code d’erreur 0xC0000017 dans le gestionnaire de démarrage Windows.

Écran de récupération

Capture d’écran du code d’erreur 0xC0000017 dans l’écran de récupération.

Cause

Le disque du système d’exploitation est plein, trop fragmenté ou le système d’exploitation (OS) n’est pas en mesure d’accéder à la mémoire ou au fichier d’échange, ou aux deux.

Solution

Présentation du processus

Conseil

Si vous disposez d’une sauvegarde récente de la machine virtuelle, vous pouvez essayer de restaurer la machine virtuelle à partir de la sauvegarde pour résoudre le problème de démarrage.

  1. Créer et accéder à une VM de réparation
  2. Libérer de l’espace sur le disque
  3. Nettoyez la mauvaise mémoire du magasin BCD
  4. Restaurer le fichier d’échange à son emplacement par défaut
  5. Activer la console série et la collecte de vidage mémoire
  6. Reconstruire la VM

Note

Lorsque vous rencontrez cette erreur, le système d’exploitation invité n’est pas opérationnel. Vous effectuerez un dépannage en mode hors connexion pour résoudre ce problème.

Créer et accéder à une VM de réparation

  1. Utilisez les étapes 1 à 3 des commandes de réparation de machine virtuelle pour préparer une machine virtuelle de réparation.
  2. À l’aide de la connexion Bureau à distance, connectez-vous à la machine virtuelle de réparation.

Pour les machines virtuelles de génération 2, attribuez une lettre à la partition EFI (Extensible Firmware Interface)

Si vous utilisez une machine virtuelle de génération 2, la partition EFI du disque attaché peut ne pas avoir de lettre qui lui est attribuée. Vous devrez suivre les étapes ci-dessous pour attribuer une lettre à la partition avant de poursuivre avec ce guide de dépannage.

  1. Dans la recherche Windows, saisissez diskmgmt et ouvrez la Console de gestion des disques.

  2. Identifiez le disque cassé attaché à la machine virtuelle de réparation. En règle générale, ce disque est répertorié en dernier dans la console et a la valeur numérique la plus élevée.

  3. Dans ce disque, vérifiez si une partition renferme la partition système EFI, qui ne dispose pas non plus de valeur de lettre assignée (comme le lecteur F:). Si toutes les partitions sont attribuées, vous pouvez sauter l’étape suivante pour libérer de l’espace sur le disque. Dans le cas contraire, attribuez une lettre à ce disque.

    Capture d’écran de la fenêtre Gestion des disques, montrant une partition contenant la partition système EFI.

  4. Ouvrez une invite de commandes avec élévation de privilèges en tant qu’administrateur et saisissez diskpart pour lancer l’outil DISKPART.

  5. Entrez les commandes suivantes :

    list disk
    sel disk <NUMBER OF THE ATTACHED DISK>
    list partition
    sel partition <NUMBER OF THE SYSTEM (EFI) PARTION>
    assign
    
    • Dans la commande, remplacez <NUMBER OF THE ATTACHED DISK> par le numéro de disque que vous avez identifié à l’étape 2.
    • Dans la commande, remplacez <NUMBER OF THE SYSTEM PARTION> par le numéro de partition de la partition système EFI. Aucune lettre n’a encore été attribuée à cette partition, mais elle doit être du type Système et avoir une taille d’environ 100 Mo.

    Note

    La comparaison des partitions de la console de gestion des disques avec celles répertoriées dans l’outil DISKPART peut être utile pour déterminer le numéro de partition correspondant à la partition système EFI dans le disque attaché.

  6. Fermez la fenêtre d'invite de commandes.

Libérer de l’espace sur le disque

Maintenant que le disque cassé est attaché à la machine virtuelle de réparation, vous devez vérifier que le système d’exploitation sur ce disque dispose de suffisamment d’espace pour fonctionner correctement.

  1. Vérifiez si le disque est plein en cliquant avec le bouton droit sur le lecteur du disque attaché et en sélectionnant Propriétés.

  2. Si le disque a moins de 300 Mo d’espace libre, étendez-le à un maximum de 1 To à l’aide de PowerShell.

  3. Une fois que la taille du disque atteint 1 To, vous devrez effectuer un nettoyage du disque. Vous pouvez utiliser l’outil de nettoyage de disque pour libérer de l’espace.

  4. Ouvrez une instance d’invite de commande élevée (exécutée en tant qu’administrateur) et effectuez une défragmentation sur le lecteur :

    defrag <LETTER ASSIGNED TO THE OS DISK>: /u /x /g

    • Selon le niveau de fragmentation, la défragmentation peut prendre des heures.
    • Dans la commande, remplacez <LETTER ASSIGNED TO THE OS DISK> par la lettre du disque du système d’exploitation (par exemple, lecteur F :).

Nettoyer la mauvaise mémoire du magasin de données de configuration de démarrage (BCD)

  1. Ouvrez une session Invite de commande avec élévation de privilèges (exécuter en tant qu’administrateur).

  2. Interrogez le fichier de configuration de démarrage pour les indicateurs de mauvaise mémoire avec la commande suivante :

    bcdedit /store <LETTER ASSIGNED TO THE OS DISK>:\boot\bcd /enum {badmemory}

    • Dans la commande, remplacez <LETTER ASSIGNED TO THE OS DISK> par la lettre du disque du système d’exploitation (par exemple, lecteur F :).
  3. Si la requête ne montre aucun bloc de mémoire défectueux, passez à la tâche suivante. Sinon, passez à l’étape 4.

  4. Si des blocs de mémoire défectueux sont identifiés, ces blocs empêchent la création d’un disque virtuel et doivent être supprimés avec la commande suivante :

    bcdedit /store <LETTER ASSIGNED TO THE OS DISK>:\boot\bcd /deletevalue {badmemory} badmemorylist

    • Dans la commande, remplacez <LETTER ASSIGNED TO THE OS DISK> par la lettre du disque du système d’exploitation (par exemple, lecteur F :).

Restaurer le fichier d’échange à son emplacement par défaut

Le fichier d’échange stocke des données qui ne peuvent pas être conservées par la mémoire vive (RAM) de votre ordinateur sous forme de débordement/sauvegarde. Il est possible que le fichier soit hébergé sur un VHD plutôt que sur le lecteur temporaire, qui est l’emplacement Azure par défaut. Si c’est le cas, le fichier n’est peut-être pas accessible et doit être restauré à l’emplacement par défaut.

Avant de prendre toute mesure, vous devez créer une copie du dossier \windows\system32\config sur un disque sain. Cette étape permet d’annuler toutes les modifications indésirables. Vous allez travailler sur des fichiers système importants, cette précaution est donc fortement recommandée.

  1. Dans la recherche Windows, entrez regedit et ouvrez l’application Éditeur du Registre.

  2. Dans l’Éditeur du Registre, mettez en surbrillance la clé HKEY_LOCAL_MACHINE et sélectionnez Fichier> Charger la ruche ... dans le menu.

    La capture d’écran montre les étapes pour charger une ruche dans l’Éditeur du Registre.

  3. Dans la boîte de dialogue Charger la ruche, sélectionnez \windows\system32\config\SYSTEM et cliquez sur Ouvrir.

    1. Vous serez invité à entrer un nom, que vous devrez saisir BROKENSYSTEM. Ce nom aidera à différencier les ruches affectées pendant le dépannage.
    2. Développez HKEY_LOCAL_MACHINE pour voir la nouvelle clé BROKENSYSTEM que vous avez ajoutée.
  4. À l’aide de l’Éditeur du Registre, déterminez à partir de quel ControlSet la machine démarre.

    1. Accédez à HKEY_LOCAL_MACHINE>> BROKENSYSTEM>> Sélectionnez.
    2. Dans les clés répertoriées, notez la valeur de données de Current. Par exemple, si cette valeur est 1 ou 0x00000001 (1), alors le jeu de contrôle serait ControlSet001.
  5. Vérifiez l’emplacement de la configuration de la création PageFile.

    1. Dans HKEY_LOCAL_MACHINE\BROKENSYSTEM, développez le répertoire correspondant au numéro de ControlSet que vous avez identifié à l’étape 4, tel que ControlSet001.
    2. Accédez à Control>> Session Manager>> Memory Management et notez l’emplacement de la clé ExistingPageFiles.
    3. Cette clé doit se trouver dans l’emplacement Azure par défaut du lecteur temporaire. S’il n’y est pas et se trouve dans un VHD à un autre emplacement, tel que le lecteur de disque de données ou le lecteur du système d’exploitation, il devra être supprimé.
    4. Accédez à cet emplacement dans l’Explorateur de fichiers, puis supprimez le fichier pagefile.sys.

Activer la Console série et la collecte de vidage mémoire

Recommandé : avant de reconstruire la machine virtuelle, activez la console série et la collecte de vidage mémoire en procédant comme suit :

  1. Ouvrez une invite de commandes avec élévation de privilèges exécutée avec les privilèges Administrateur.

  2. Exécutez les commandes BCDEdit suivantes à l’aide des options /ems et /emssettings :

    Activez la console série :

    bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /ems {<boot-loader-identifier>} ON
    bcdedit /store <volume-letter-containing-the-bcd-folder>:\boot\bcd /emssettings EMSPORT:1 EMSBAUDRATE:115200
    
  3. Vérifiez que l’espace libre sur le disque du système d’exploitation est supérieur à la taille de la mémoire (RAM) sur la machine virtuelle.

    Si l’espace sur le disque de système d’exploitation est insuffisant, modifiez l’emplacement où le fichier de vidage de la mémoire sera créé et assignez cet emplacement à tout disque de données connecté à la machine virtuelle qui dispose de suffisamment d’espace libre. Pour modifier l’emplacement, remplacez %SystemRoot% par la lettre de lecteur du disque de données, telle que F:, dans les commandes suivantes.

    Pour activer le fichier de vidage du système d’exploitation, exécutez les commandes charger, ajouter et décharger suivantes pour implémenter la configuration suggérée à l’aide de l’outil reg :

    Chargez la ruche du Registre à partir du disque de système d’exploitation endommagé :

    reg load HKLM\<broken-system> <volume-letter-of-broken-os-disk>:\windows\system32\config\SYSTEM
    

    Activer sur ControlSet001 :

    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f
    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f
    reg add "HKLM\<broken-system>\ControlSet001\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
    

    Activer sur ControlSet002 :

    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v CrashDumpEnabled /t REG_DWORD /d 1 /f
    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v DumpFile /t REG_EXPAND_SZ /d "%SystemRoot%\MEMORY.DMP" /f
    reg add "HKLM\<broken-system>\ControlSet002\Control\CrashControl" /v NMICrashDump /t REG_DWORD /d 1 /f
    

    Décharger le disque du système d’exploitation endommagé :

    reg unload HKLM\<broken-system>
    

Reconstruire la VM

Utilisez l’étape 5 des commandes de réparation de VM pour reconstruire la VM.

Contactez-nous pour obtenir de l’aide

Pour toute demande ou assistance, créez une demande de support ou posez une question au support de la communauté Azure. Vous pouvez également soumettre des commentaires sur les produits à la communauté de commentaires Azure.