Échec du démarrage de la machine virtuelle Linux Azure après la désactivation du type de système de fichiers VFAT
S’applique à : ✔️ Machines virtuelles Linux
Note
CentOS référencé dans cet article est une distribution Linux et atteint la fin de vie (EOL). Faites le point sur votre utilisation et organisez-vous en conséquence. Pour plus d’informations, consultez les conseils sur la fin de vie centOS.
Cet article fournit des solutions à un problème dans lequel une machine virtuelle Linux Azure ne peut pas démarrer après la désactivation du type de système de fichiers VFAT (Virtual File Allocation Table).
VFAT est requis dans les scénarios suivants :
Les distributions Linux approuvées sur les machines virtuelles Azure montent le système de fichiers /boot/efi .
Les machines virtuelles Linux Gen2 (basées sur UEFI) nécessitent le système de fichiers /boot/efi , mais elles sont incluses dans les images Linux Gen1 (basées sur BIOS).
Chiffrez les disques de système d’exploitation et de données des machines virtuelles Linux Azure à l’aide d’Azure Disk Encryption(ADE).
La désactivation de VFAT entraîne l’échec du démarrage des machines virtuelles Linux Azure. Plusieurs outils de renforcement peuvent désactiver VFAT. Pour éviter ce type de problème, vérifiez que VFAT est exclu du renforcement et est activé.
Conditions préalables
Vérifiez que la console série est activée et fonctionnelle dans la machine virtuelle Linux.
Comment identifier le problème de démarrage
Pour identifier un problème de démarrage, utilisez l’interface CLI AZ ou Portail Azure pour afficher la sortie du journal de la console série de la machine virtuelle dans le volet diagnostics de démarrage ou le volet console série. Si VFAT est désactivé, vous rencontrerez les problèmes suivants :
Échec du montage /boot/efi
Lorsque le système de fichiers /boot/efi ne parvient pas à être monté, une ou plusieurs des sorties suivantes sont affichées :
Sortie 1
[[1;31mFAILED[0m] Failed to mount /boot/efi. See 'systemctl status boot-efi.mount' for details. [[1;33mDEPEND[0m] Dependency failed for Local File Systems. [[1;33mDEPEND[0m] Dependency failed for Relabel all filesystems, if necessary. [[1;33mDEPEND[0m] Dependency failed for Migrate local... structure to the new structure. [[1;33mDEPEND[0m] Dependency failed for Mark the need to relabel after reboot.
Sortie 2
[FAILED] Failed to mount /boot/efi. See 'systemctl status boot-efi.mount' for details. [DEPEND] Dependency failed for Local File Systems. [DEPEND] Dependency failed for Mark the need to relabel after reboot.
Sortie 3
[ 17.707983] ------------[ cut here ]------------ [ 17.714144] request_module fs-vfat succeeded, but still no fs? [ 17.714426] RPC: Registered named UNIX socket transport module. [ 17.721163] WARNING: CPU: 1 PID: 933 at fs/filesystems.c:275 get_fs_type+0xcd/0xe0 [ 17.738587] RPC: Registered udp transport module. [ 17.722103] Modules linked in: fat sunrpc(+) rdma_ucm ib_srpt ib_isert iscsi_target_mod target_core_mod intel_rapl_msr intel_rapl_common isst_if_mbox_msr isst_if_common ib_iser libiscsi nfit scsi_transport_iscsi ib_umad libnvdimm rdma_cm ib_ipoib iw_cm ib_cm kvm_intel kvm irqbypass mlx5_ib crct10dif_pclmul crc32_pclmul ib_uverbs ghash_clmulni_intel rapl pcspkr ib_core i2c_piix4 hv_balloon hv_utils joydev ip_tables xfs libcrc32c mlx5_core mlxfw tls pci_hyperv pci_hyperv_intf ata_generic sd_mod t10_pi sg hv_storvsc hv_netvsc hyperv_keyboard scsi_transport_fc hid_hyperv hyperv_fb ata_piix libata hv_vmbus crc32c_intel serio_raw dm_mod [ 17.766462] RPC: Registered tcp transport module. [ 17.722103] CPU: 1 PID: 933 Comm: mount Not tainted 4.18.0-305.17.1.el8_4.x86_64 #1 [ 17.722103] Hardware name: Microsoft Corporation Virtual Machine/Virtual Machine, BIOS 090008 12/07/2018 [ 17.722103] RIP: 0010:get_fs_type+0xcd/0xe0 [ 17.722103] Code: 5d 41 5c c3 80 3d 6a 7a 49 01 00 75 ec 48 89 da 44 89 e6 48 89 04 24 48 c7 c7 c8 47 ce b7 c6 05 50 7a 49 01 01 e8 6c 67 da ff <0f> 0b 48 8b 04 24 e9 66 ff ff ff 0f 1f 84 00 00 00 00 00 0f 1f 44 [ 17.722103] RSP: 0018:ffffabd68394fe70 EFLAGS: 00010282 [ 17.722103] RAX: 0000000000000000 RBX: ffffa04a1e6879e0 RCX: 0000000000000000 [ 17.722103] RDX: ffffa04a37d267a0 RSI: ffffa04a37d167c8 RDI: ffffa04a37d167c8 [ 17.722103] RBP: 0000000000000000 R08: 0000000000000000 R09: 0000000000000092 [ 17.722103] R10: 00000000ff000000 R11: ffffabd682fec020 R12: 0000000000000004 [ 17.722103] R13: ffffa04a1d80f920 R14: ffffa04a1e6879e0 R15: 0000000000000000 [ 17.722103] FS: 00007fb0630e1080(0000) GS:ffffa04a37d00000(0000) knlGS:0000000000000000 [ 17.722103] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 [ 17.722103] CR2: 00007fb86bb7a0c0 CR3: 000000029bfe4004 CR4: 00000000003706e0 [ 17.722103] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000 [ 17.722103] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400 [ 17.722103] Call Trace: [ 17.722103] do_mount+0x1f2/0x950 [ 17.722103] ksys_mount+0xb6/0xd0 [ 17.722103] __x64_sys_mount+0x21/0x30 [ 17.722103] do_syscall_64+0x5b/0x1a0 [ 17.722103] entry_SYSCALL_64_after_hwframe+0x65/0xca [ 17.874253] RPC: Registered tcp NFSv4.1 backchannel transport module. [ 17.722103] RIP: 0033:0x7fb06211192e [ 17.722103] Code: 48 8b 0d 5d 15 2c 00 f7 d8 64 89 01 48 83 c8 ff c3 66 2e 0f 1f 84 00 00 00 00 00 90 f3 0f 1e fa 49 89 ca b8 a5 00 00 00 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 8b 0d 2a 15 2c 00 f7 d8 64 89 01 48 [ 17.722103] RSP: 002b:00007fff02a92b78 EFLAGS: 00000246 ORIG_RAX: 00000000000000a5 [ 17.722103] RAX: ffffffffffffffda RBX: 00005626752f3460 RCX: 00007fb06211192e [ 17.722103] RDX: 00005626752f36e0 RSI: 00005626752f3700 RDI: 00005626752f53d0 [ 17.722103] RBP: 00007fb062ebe184 R08: 00005626752f3670 R09: 0000000000000003 [ 17.722103] R10: 00000000c0ed0000 R11: 0000000000000246 R12: 0000000000000000 [ 17.722103] R13: 00000000c0ed0000 R14: 00005626752f53d0 R15: 00005626752f36e0 [ 17.722103] ---[ end trace 910fa795ff1c6c89 ]--- [[0;1;31mFAILED[0m] Failed to mount /boot/efi. See 'systemctl status boot-efi.mount' for details.
La machine virtuelle chiffrée ADE ne peut pas accéder au volume racine
Lorsqu’une machine virtuelle avec le système d’exploitation chiffré et désactivé VFAT échoue au démarrage, la sortie correspondante s’affiche, comme indiqué ci-dessous. Une fois le système expiré, l’interpréteur de commandes dracut ou initramfs s’affiche à la fin du journal de la console série.
Machine virtuelle Ubuntu avec le disque du système d’exploitation chiffré et VFAT désactivé :
[ 24.062228] dracut-initqueue[261]: +++ '[' -z 0 ']' [ 24.065039] dracut-initqueue[261]: + luksname=osencrypt [ 24.068026] dracut-initqueue[261]: + ask_passphrase=1 [ 24.070498] dracut-initqueue[261]: + '[' /dev/sda2 '!=' /dev/sda2 ']' [ 24.073528] dracut-initqueue[261]: + device=/dev/sda2 [ 24.076046] dracut-initqueue[261]: + numtries=1 [ 24.078410] dracut-initqueue[261]: + info 'luksOpen /dev/sda2 osencrypt' [ 24.081822] dracut-initqueue[261]: + check_quiet [ 24.084663] dracut-initqueue[261]: + '[' -z no ']' [ 24.087067] dracut-initqueue[261]: + '[' no '!=' yes ']' [ 24.089711] dracut-initqueue[261]: + echo 'luksOpen /dev/sda2 osencrypt' [ 24.092857] dracut-initqueue[261]: luksOpen /dev/sda2 osencrypt [ 24.095737] dracut-initqueue[261]: + ls '/mnt/azure_bek_disk/LinuxPassPhraseFileName*' [ 24.099506] dracut-initqueue[261]: ls: cannot access /mnt/azure_bek_disk/LinuxPassPhraseFileName*: No such file or directory [ 24.104460] dracut-initqueue[261]: + mkdir -p /mnt/azure_bek_disk/ [ 24.107648] dracut-initqueue[261]: + mount -L 'BEK VOLUME' /mnt/azure_bek_disk/ [ 24.111029] dracut-initqueue[261]: mount: unknown filesystem type 'vfat' [ 24.114456] dracut-initqueue[261]: ++ ls '/mnt/azure_bek_disk/LinuxPassPhraseFileName*' [ 24.118570] dracut-initqueue[261]: ls: cannot access /mnt/azure_bek_disk/LinuxPassPhraseFileName*: No such file or directory [ 24.124108] dracut-initqueue[261]: + cryptsetupopts='--header /osluksheader' [ 24.127630] dracut-initqueue[261]: + '[' -n '' -a '' '!=' none -a -e '' ']' [ 24.131265] dracut-initqueue[261]: + '[' 1 -eq 0 ']' [ 24.134614] dracut-initqueue[261]: + sleep 1 [ 24.817478] dracut-initqueue[261]: + info 'No key found for /dev/sda2. Will try 1 time(s) more later.' [ 24.823243] dracut-initqueue[261]: + check_quiet
Machine virtuelle RHEL 7.x avec le disque du système d’exploitation chiffré et VFAT désactivé :
%G%G[[32m OK [0m] Found device Virtual_Disk BEK_VOLUME. Mounting /bek... [[1;31mFAILED[0m] Failed to mount /bek. See 'systemctl status bek.mount' for details.
Machine virtuelle RHEL 8.x avec le disque du système d’exploitation chiffré et VFAT désactivé :
[ 11.592932] dracut-initqueue[470]: + systemctl start bek.mount [ 11.600362] dracut-initqueue[470]: Bus n/a: changing state UNSET → OPENING Mounting /bek... [ 11.611171] dracut-initqueue[470]: Bus n/a: changing state OPENING → AUTHENTICATING [ 11.616206] dracut-initqueue[470]: Executing dbus call org.freedesktop.systemd1.Manager StartUnit(bek.mount, replace) [ 11.622972] dracut-initqueue[470]: Bus n/a: changing state AUTHENTICATING → RUNNING [ 11.628048] dracut-initqueue[470]: Sent message type=method_call sender=n/a destination=org.freedesktop.systemd1 path=/org/freedesktop/systemd1 interface=org.freedesktop.systemd1.Manager member=StartUnit cookie=1 reply_cookie=0 signature=ss error-name=n/a error-message=n/a [ 11.639221] dracut-initqueue[470]: Got message type=method_return sender=org.freedesktop.systemd1 destination=n/a path=n/a interface=n/a member=n/a cookie=1 reply_cookie=1 signature=o error-name=n/a error-message=n/a[[0;1;31mFAILED[0m] Failed to mount /bek. See 'systemctl status bek.mount' for details.
Dans certains anciens systèmes, vous pouvez voir l’erreur suivante dans la console série Azure :
erreur « vfat » du système de fichiers inconnu.
Toutes les machines virtuelles avec ce problème se retrouvent bloquées à dracut/initramfs et s’affichent à la fin du journal de la console série :
RHEL/CentOS/SLES :
///lib/dracut/hooks/emergency/80-\x2fdev\x2fmapper\x2frootvg-rootlv.sh@1(source): warn '/dev/mapper/rootvg-rootlv does not exist' //lib/dracut-lib.sh@79(warn): echo 'Warning: /dev/mapper/rootvg-rootlv does not exist' Warning: /dev/mapper/rootvg-rootlv does not exist /bin/dracut-emergency@19(main): echo ... /bin/dracut-emergency@29(main): '[' -f /run/dracut/fsck/fsck_help_auto.txt ']' /bin/dracut-emergency@30(main): '[' -f /etc/profile ']' /bin/dracut-emergency@30(main): . /etc/profile //etc/profile@1(source): PS1='dracut:${PWD}# ' /bin/dracut-emergency@31(main): '[' -z 'dracut:${PWD}# ' ']' /bin/dracut-emergency@32(main): exec sh -i -l dracut:/#
Ubuntu :
Gave up waiting for root file system device. Common problems: - Boot args (cat /proc/cmdline) - Check rootdelay= (did the system wait long enough?) - Missing modules (cat /proc/modules; ls /dev) ALERT! /dev/mapper/osencrypt does not exist. Dropping to a shell! BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.4) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)
Pour résoudre le problème de démarrage, accédez à la résolution des problèmes en ligne ou à la résolution des problèmes hors connexion.
Note
Si le disque du système d’exploitation n’est pas chiffré et que seuls les systèmes de fichiers de données sont chiffrés à l’aide d’ADE, les disques de données chiffrés par ADE ne sont pas montés, car VFAT est désactivé. Dans ce cas, suivez les mêmes étapes de résolution des problèmes en ligne ou de résolution hors connexion pour résoudre ce problème.
Résolution des problèmes en ligne
Conseil
Si vous avez une sauvegarde récente de la machine virtuelle avant la désactivation de VFAT, restaurez la machine virtuelle à partir de la sauvegarde pour résoudre le problème de démarrage.
La console série est la méthode la plus rapide pour résoudre ce problème. Il vous permet de résoudre directement le problème sans avoir à présenter le disque système à une machine virtuelle de récupération. Veillez à respecter les conditions préalables nécessaires pour votre distribution. Pour plus d’informations, consultez la console série de machines virtuelles pour Linux.
Les machines virtuelles non chiffrées ne parviennent pas à monter /boot/efi
Utilisez la console série Azure pour démarrer la machine virtuelle en mode mono-utilisateur. Pour en savoir plus, consultez Utiliser la console série pour accéder au GRUB et au mode mono-utilisateur.
Pour démarrer la machine virtuelle en mode mono-utilisateur, interrompez le processus de démarrage au niveau du menu GRUB et modifiez l’entrée principale du noyau pour ajouter l’option
init=/bin/bash
de noyau dans la ligne GRUB qui commence parlinux
.Vérifiez que tous les systèmes de fichiers requis sont montés et que la racine est en mode lecture et écriture.
Si vous démarrez le système à l’aide de l’option
init=/bin/bash
noyau, préparez les systèmes de fichiers requis en exécutant les commandes suivantes :mount -o rw,remount / mount -a
Redémarrez le système.
Note
Si la machine virtuelle est Gen1 et qu’elle n’est pas chiffrée, vous pouvez également simplement commenter l’entrée /boot/efi
de /etc/fstab , car /boot/efi
elle n’est pas nécessaire dans les machines virtuelles Gen1. Pour plus d’informations, consultez Résoudre les problèmes de démarrage des machines virtuelles Linux en raison d’erreurs fstab.
Échec du démarrage des machines virtuelles chiffrées ADE
Machine virtuelle avec disque de système d’exploitation chiffré :
Lorsque le disque du système d’exploitation est chiffré, il n’est pas possible de résoudre ce problème à partir de la console série Azure.
La machine virtuelle avec uniquement des disques de données chiffrés ne parvient pas à démarrer en raison de problèmes /etc/fstab :
Si seuls les disques de données de machine virtuelle sont chiffrés (le disque du système d’exploitation n’est pas chiffré), pour démarrer le système, ajoutez l’option
nofail
de montage aux entrées correspondantes dans /etc/fstab en mode mono-utilisateur à l’aide de la console série Azure. Pour plus d’informations, consultez Résoudre les problèmes de démarrage des machines virtuelles Linux en raison d’erreurs fstab.Une fois la machine virtuelle démarrée, réactivez VFAT et redémarrez la machine virtuelle.
Résolution des problèmes hors connexion
Conseil
Si vous avez une sauvegarde récente de la machine virtuelle avant la désactivation de VFAT, restaurez la machine virtuelle à partir de la sauvegarde pour résoudre le problème de démarrage.
Si la console série Azure ne fonctionne pas dans la machine virtuelle spécifique ou n’est pas une option dans votre abonnement, résolvez ce problème à l’aide d’une machine virtuelle de secours/réparation.
Les machines virtuelles non chiffrées ne parviennent pas à monter /boot/efi
Utilisez les commandes de réparation de machine virtuelle pour créer une machine virtuelle de réparation qui a une copie du disque de système d’exploitation de la machine virtuelle affectée attachée. Montez la copie des systèmes de fichiers du système d’exploitation dans la machine virtuelle de réparation à l’aide de chroot.
Note
Vous pouvez également créer une machine virtuelle de secours manuellement à l’aide du portail Azure. Pour plus d’informations, consultez l’article Résoudre les problèmes d’une machine virtuelle Linux en attachant le disque du système d’exploitation à une machine virtuelle de récupération à l’aide du portail Azure.
Une fois le VFAT réactivé, effectuez les actions suivantes :
Quittez chroot et démontez la copie des systèmes de fichiers à partir de la machine virtuelle de secours/réparation.
Exécutez la
az vm repair restore
commande pour échanger le disque du système d’exploitation réparé avec le disque de système d’exploitation d’origine de la machine virtuelle. Pour plus d’informations, consultez l’étape 5 de la réparation d’une machine virtuelle Linux à l’aide des commandes de réparation de machine virtuelle Azure.Vérifiez si la machine virtuelle est en mesure de démarrer en examinant la console série Azure ou en essayant de se connecter à la machine virtuelle.
Note
Si la machine virtuelle est Gen1 et qu’elle n’est pas chiffrée, vous pouvez également simplement commenter l’entrée /boot/efi
de /etc/fstab , car /boot/efi
elle n’est pas nécessaire dans les machines virtuelles Gen1. Pour plus d’informations, consultez Résoudre les problèmes de démarrage des machines virtuelles Linux en raison d’erreurs fstab.
Échec du démarrage des machines virtuelles chiffrées ADE
Utilisez les commandes de réparation de machine virtuelle pour créer une machine virtuelle de réparation qui a une copie du disque de système d’exploitation de la machine virtuelle affectée attachée.
Lorsque la machine virtuelle est chiffrée à l’aide d’ADE, les commandes de réparation de machine virtuelle Azure s’occupent du déverrouillage et du montage des systèmes de fichiers chiffrés pour vous. Les systèmes de fichiers chiffrés sont montés en tant que
/investigateroot/*
et/investigateboot
. Vous pouvez vous connecter à la machine virtuelle de réparation et remonter les systèmes de fichiers aux points de montage souhaités à l’aide de chroot.Note
Vous pouvez également créer une machine virtuelle de secours manuellement à l’aide de l’Portail Azure et attacher une copie du disque de système d’exploitation chiffré au moment de la création de la machine virtuelle. Pour plus d’informations, consultez l’article Résoudre les problèmes d’une machine virtuelle Linux en attachant le disque du système d’exploitation à une machine virtuelle de récupération à l’aide du portail Azure.
Une fois le VFAT réactivé, effectuez les actions suivantes :
Quittez chroot et démontez la copie des systèmes de fichiers à partir de la machine virtuelle de secours/réparation.
Exécutez la
az vm repair restore
commande pour échanger le disque du système d’exploitation réparé avec le disque de système d’exploitation d’origine de la machine virtuelle. Pour plus d’informations, consultez l’étape 5 de la réparation d’une machine virtuelle Linux à l’aide des commandes de réparation de machine virtuelle Azure.Vérifiez si la machine virtuelle est en mesure de démarrer en examinant la console série Azure ou en essayant de se connecter à la machine virtuelle.
Réactiver VFAT
Identifiez les fichiers qui désactivent VFAT et les numéros de ligne correspondants en exécutant la commande suivante :
grep -nr vfat /etc/modprobe.d/
Modifiez le fichier correspondant et commentez ou supprimez l’entrée VFAT. L’entrée sera la plus souvent :
install vfat /bin/true
.vi /etc/modprobe.d/disable.conf
Note
Remplacez
disable.conf
par le nom de fichier correspondant où VFAT est désactivé.Régénérez le fichier initramfs à l’aide de la commande correspondante suivante :
Exécutez la commande à partir de la console série Azure :
RHEL/CentOS/Oracle Linux 7/8
dracut -f /boot/initramfs-$(uname -r).img $(uname -r)
SLES 12/15
dracut -f /boot/initrd-$(uname -r) $(uname -r)
Ubuntu 18.04
mkinitramfs -k -o /boot/initrd.img-$(uname -r)
Exécutez la commande à partir d’une machine virtuelle de réparation/sauvetage :
Important
Vérifiez que l’étape 1 de la résolution des problèmes hors connexion est suivie et que ces commandes sont exécutées à l’intérieur de chroot.
RHEL/CentOS/Oracle Linux 7/8
dracut -f /boot/initramfs-3.10.0-1160.59.1.el7.x86_64.img 3.10.0-1160.59.1.el7.x86_64
Important
Remplacez
3.10.0-1160.59.1.el7.x86_64
par la version du noyau correspondante.SLES 12/15
dracut -f /boot/initrd-5.3.18-150300.38.53-azure 5.3.18-150300.38.53-azure
Important
Remplacez
5.3.18-150300.38.53-azure
par la version du noyau correspondante.Ubuntu 18.04
mkinitramfs -k -o /boot/initrd.img-5.4.0-1077-azure
Important
Remplacez
5.4.0-1077-azure
par la version du noyau correspondante.
Étapes suivantes
Si l’erreur de démarrage spécifique n’est pas un problème VFAT désactivé, consultez Résoudre les erreurs de démarrage d’Azure Linux Machines Virtuelles pour obtenir d’autres options de résolution des problèmes.
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.