Compartir a través de


La máquina virtual Linux de Azure no se puede arrancar después de deshabilitar el tipo de sistema de archivos VFAT

Nota:

CentOS al que se hace referencia en este artículo es una distribución de Linux y llegará al final de la vida útil (EOL). Considere su uso y planifique en consecuencia. Para obtener más información, consulte Guía de fin de vida de CentOS.

En este artículo se proporcionan soluciones a un problema en el que una máquina virtual Linux (VM) de Azure no puede arrancar después de deshabilitar el tipo de sistema de archivos de tabla de asignación de archivos virtuales (VFAT).

VFAT es necesario en los siguientes escenarios:

Deshabilitar VFAT hará que las máquinas virtuales Linux de Azure no arranquen. Varias herramientas de protección pueden deshabilitar VFAT. Para evitar este tipo de problema, asegúrese de que VFAT está excluido de la protección y está habilitado.

Requisitos previos

Asegúrese de que la consola serie está habilitada y funciona en la máquina virtual Linux.

Cómo identificar el problema de arranque

Para identificar un problema de arranque, use la CLI de AZ o Azure Portal para ver la salida del registro de consola serie de la máquina virtual en el panel de diagnósticos de arranque o en el panel de consola serie. Si VFAT está deshabilitado, experimentará los siguientes problemas:

No se pudo montar /boot/efi

Cuando el sistema de archivos /boot/efi no se puede montar, se muestran una o varias de las siguientes salidas:

  • Salida 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.
    
  • Salida 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.
    
  • Salida 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 máquina virtual cifrada de ADE no puede acceder al volumen raíz

Cuando se produce un error en el arranque de una máquina virtual con el sistema operativo cifrado y VFAT deshabilitado, se muestra la salida correspondiente, como se muestra a continuación. Una vez que el sistema agote el tiempo de espera, el shell de dracut o initramfs se mostrará al final del registro de consola serie.

  • Máquina virtual Ubuntu con el disco del sistema operativo cifrado y VFAT deshabilitado:

        [   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
    
  • Máquina virtual de RHEL 7.x con el disco del sistema operativo cifrado y VFAT deshabilitado:

    %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.
    
  • Máquina virtual de RHEL 8.x con el disco del sistema operativo cifrado y VFAT deshabilitado:

    [   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.
    
  • En algunos sistemas antiguos, es posible que vea el siguiente error en la consola serie de Azure:

    error de tipo de sistema de archivos desconocido "vfat".

Todas las máquinas virtuales con este problema terminarán bloqueadas en dracut/initramfs y se mostrarán al final del registro de consola serie:

  • 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)
    

Para resolver el problema de arranque, vaya a Solución de problemas en línea o Solución de problemas sin conexión.

Nota:

Si el disco del sistema operativo no está cifrado y solo los sistemas de archivos de datos se cifran mediante ADE, los discos de datos cifrados por ADE no se montarán porque VFAT está deshabilitado. En este caso, siga los mismos pasos en Solución de problemas en línea o Solución de problemas sin conexión para resolver este problema.

Solución de problemas en línea

Sugerencia

Si tiene una copia de seguridad reciente de la máquina virtual antes de que VFAT esté deshabilitada, restaure la máquina virtual desde la copia de seguridad para corregir el problema de arranque.

La consola serie es el método más rápido para resolver este problema. Permite corregir directamente el problema sin tener que presentar el disco del sistema en una máquina virtual de recuperación. Asegúrese de cumplir los requisitos previos necesarios para la distribución. Para obtener más información, consulte Consola serie de máquina virtual para Linux.

Las máquinas virtuales no cifradas no pueden montar /boot/efi

  1. Use la consola serie de Azure para arrancar la máquina virtual en modo de usuario único. Para obtener más información, consulte Uso de la consola serie para acceder a GRUB y al modo de usuario único.

    Para arrancar la máquina virtual en modo de usuario único, interrumpa el proceso de arranque en el nivel de menú de GRUB y edite la entrada principal del kernel para agregar la init=/bin/bash opción kernel en la línea de GRUB que comienza por linux.

    GIF animado que muestra el proceso de interrupción del proceso de arranque en el nivel de menú de GRUB para arrancar el sistema en modo de usuario único.

  2. Asegúrese de que todos los sistemas de archivos necesarios están montados y la raíz está en modo de lectura y escritura.

    1. Si inicia el sistema con la init=/bin/bash opción kernel, prepare los sistemas de archivos necesarios ejecutando los siguientes comandos:

      mount -o rw,remount /
      mount -a
      
    2. Vuelva a habilitar VFAT.

    3. Reinicie el sistema.

Nota:

Si la máquina virtual es Gen1 y no está cifrada, también podría simplemente comentar la /boot/efi entrada desde /etc/fstab , ya /boot/efi que no es necesaria en las máquinas virtuales Gen1. Para obtener más información, consulte Solución de problemas de inicio de máquinas virtuales Linux debidos a errores de fstab.

Las máquinas virtuales cifradas de ADE no pueden arrancar

  • Máquina virtual con disco del sistema operativo cifrado:

    Cuando el disco del sistema operativo está cifrado, no es posible solucionar este problema desde la consola serie de Azure.

  • La máquina virtual con solo discos de datos cifrados no se puede arrancar debido a problemas de /etc/fstab:

    1. Si solo se cifran los discos de datos de máquina virtual (el disco del sistema operativo no está cifrado), para arrancar el sistema, agregue la nofail opción de montaje a las entradas correspondientes en /etc/fstabdesde el modo de usuario único mediante la consola serie de Azure. Para obtener más información, consulte Solución de problemas de inicio de máquinas virtuales Linux debidos a errores de fstab.

    2. Una vez arrancada la máquina virtual, vuelva a habilitar VFAT y reinicie la máquina virtual.

Solución de problemas sin conexión

Sugerencia

Si tiene una copia de seguridad reciente de la máquina virtual antes de que VFAT esté deshabilitada, restaure la máquina virtual desde la copia de seguridad para corregir el problema de arranque.

Si la consola serie de Azure no funciona en la máquina virtual específica o no es una opción de la suscripción, solucione este problema mediante una máquina virtual de rescate o reparación.

Las máquinas virtuales no cifradas no pueden montar /boot/efi

  1. Utilice comandos de reparación de VM para crear una VM de reparación que tenga adjunta una copia del disco del SO de la VM afectada. Monte la copia de los sistemas de archivos del SO en la VM de reparación mediante chroot.

    Nota:

    Como alternativa, puede crear una VM de rescate manualmente utilizando el portal de Azure. Para más información, consulte Solución de problemas de una VM Windows mediante la conexión del disco de SO a una VM de recuperación mediante Azure Portal.

  2. Vuelva a habilitar VFAT.

  3. Una vez que se vuelva a habilitar VFAT, realice las siguientes acciones:

    1. Salga de chroot y desmonte la copia de los sistemas de archivos de la máquina virtual de rescate o reparación.

    2. Ejecute el comando az vm repair restore para intercambiar el disco de SO reparado con el disco de SO original de la VM. Para obtener más documentación e instrucciones, vea el paso 5 en Reparar una máquina virtual de Windows mediante los comandos de reparación de máquinas virtuales de Azure.

    3. Valide si la máquina virtual puede arrancar echando un vistazo a la consola serie de Azure o intentando conectarse a la máquina virtual.

Nota:

Si la máquina virtual es Gen1 y no está cifrada, también podría simplemente comentar la /boot/efi entrada desde /etc/fstab , ya /boot/efi que no es necesaria en las máquinas virtuales Gen1. Para obtener más información, consulte Solución de problemas de inicio de máquinas virtuales Linux debidos a errores de fstab.

Las máquinas virtuales cifradas de ADE no se pueden arrancar

  1. Utilice comandos de reparación de VM para crear una VM de reparación que tenga adjunta una copia del disco del SO de la VM afectada.

  2. Cuando la máquina virtual se cifra mediante ADE, los comandos de reparación de máquinas virtuales de Azure se encargan de desbloquear y montar los sistemas de archivos cifrados automáticamente. Los sistemas de archivos cifrados se montarán como /investigateroot/* y /investigateboot. Puede iniciar sesión en la máquina virtual de reparación y volver a montar los sistemas de archivos en los puntos de montaje deseados mediante chroot.

    Nota:

    Como alternativa, puede crear manualmente una máquina virtual de rescate mediante el Azure Portal y adjuntar una copia del disco del sistema operativo cifrado en el momento de la creación de la máquina virtual. Para más información, consulte Solución de problemas de una VM Windows mediante la conexión del disco de SO a una VM de recuperación mediante Azure Portal.

  3. Vuelva a habilitar VFAT.

  4. Una vez que se vuelva a habilitar VFAT, realice las siguientes acciones:

    1. Salga de chroot y desmonte la copia de los sistemas de archivos de la máquina virtual de rescate o reparación.

    2. Ejecute el comando az vm repair restore para intercambiar el disco de SO reparado con el disco de SO original de la VM. Para obtener más documentación e instrucciones, vea el paso 5 en Reparar una máquina virtual de Windows mediante los comandos de reparación de máquinas virtuales de Azure.

    3. Valide si la máquina virtual puede arrancar echando un vistazo a la consola serie de Azure o intentando conectarse a la máquina virtual.

Volver a habilitar VFAT

  1. Para identificar los archivos que deshabilitan VFAT y los números de línea correspondientes, ejecute el siguiente comando:

    grep -nr vfat /etc/modprobe.d/
    
  2. Modifique el archivo correspondiente y comente o elimine la entrada VFAT. La entrada suele ser: install vfat /bin/true.

    vi /etc/modprobe.d/disable.conf
    

    Nota:

    Reemplace por disable.conf el nombre de archivo correspondiente donde VFAT está deshabilitado.

  3. Vuelva a generar el archivo initramfs mediante el siguiente comando correspondiente:

    • Ejecute el comando desde la consola serie de 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)
        
    • Ejecute el comando desde una máquina virtual de reparación o rescate:

      Importante

      Asegúrese de que se sigue el paso 1 en Solución de problemas sin conexión y que estos comandos se ejecutan dentro 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
        

        Importante

        Reemplace por 3.10.0-1160.59.1.el7.x86_64 la versión del kernel correspondiente.

      • SLES 12/15

        dracut -f /boot/initrd-5.3.18-150300.38.53-azure 5.3.18-150300.38.53-azure
        

        Importante

        Reemplace por 5.3.18-150300.38.53-azure la versión del kernel correspondiente.

      • Ubuntu 18.04

        mkinitramfs -k -o /boot/initrd.img-5.4.0-1077-azure
        

        Importante

        Reemplace por 5.4.0-1077-azure la versión del kernel correspondiente.

Pasos siguientes

Si el error de arranque específico no es un problema deshabilitado de VFAT, consulte Solución de problemas de errores de arranque de Azure Linux Virtual Machines para obtener más opciones de solución de problemas.

Ponte en contacto con nosotros para obtener ayuda

Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.