Compartir a través de


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

Se aplica a: ✔️ Máquinas virtuales Linux

Nota

CentOS al que se hace referencia en este artículo es una distribución de Linux y llegará al final del ciclo de vida (EOL). Tenga en cuenta 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 se puede arrancar después de deshabilitar el tipo de sistema de archivos de la tabla de asignación de archivos virtual (VFAT).

VFAT es necesario en los escenarios siguientes:

Deshabilitar VFAT hará que las máquinas virtuales Linux de Azure no se inicien. 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 funcional en la máquina virtual Linux.

Identificación del problema de arranque

Para identificar un problema de arranque, use la CLI de AZ o Azure Portal para ver la salida del registro de la consola serie de la máquina virtual en el panel de diagnóstico 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 salidas siguientes:

  • 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 una máquina virtual con el sistema operativo cifrado y VFAT deshabilitado no se inicia, se muestra la salida correspondiente, como se muestra a continuación. Después de que se agote el tiempo de espera del sistema, el shell dracut o initramfs se mostrará al final del registro de la 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 desconocido del sistema de archivos "vfat".

Todas las máquinas virtuales con este problema terminarán bloqueadas en dracut/initramfs y se mostrarán al final del registro de la 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 con ADE no se podrán montar porque VFAT está deshabilitado. En este caso, siga los mismos pasos de 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 a una máquina virtual de recuperación. Asegúrese de cumplir los requisitos previos necesarios para la distribución. Para 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 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ú GRUB y edite la entrada principal del kernel para agregar la init=/bin/bash opción kernel en la línea GRUB que comienza por linux.

    GIF animado que muestra el proceso de interrupción del proceso de arranque en el nivel de menú 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 arranca el sistema mediante la init=/bin/bash opción kernel, prepare los sistemas de archivos necesarios mediante la ejecución de 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 comentar la /boot/efi entrada de /etcetera/fstab , ya /boot/efi que no es necesaria en las máquinas virtuales de Gen1. Para más información, consulte Solución de problemas de inicio de máquinas virtuales Linux debido a errores de fstab.

Las máquinas virtuales cifradas con ADE no se inician

  • 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 /etcetera/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 /etcetera/fstab desde el modo de usuario único mediante la consola serie de Azure. Para más información, consulte Solución de problemas de inicio de máquinas virtuales Linux debido a errores de fstab.

    2. Una vez que se arranca 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. Use comandos de reparación de máquina virtual para crear una máquina virtual de reparación que tenga una copia del disco del sistema operativo de la máquina virtual afectada conectado. Monte la copia de los sistemas de archivos del sistema operativo en la máquina virtual de reparación mediante chroot.

    Nota

    Como alternativa, puede crear una máquina virtual de rescate manualmente mediante el Azure Portal. Para más información, consulte Solución de problemas de una máquina virtual Linux mediante la conexión del disco del sistema operativo a una máquina virtual de recuperación mediante el Azure Portal.

  2. Vuelva a habilitar VFAT.

  3. Después de volver 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 az vm repair restore comando para intercambiar el disco del sistema operativo reparado con el disco del sistema operativo original de la máquina virtual. Para más información, consulte Paso 5 en Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.

    3. Valide si la máquina virtual puede arrancar; para ello, examine la consola serie de Azure o intente conectarse a la máquina virtual.

Nota

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

Las máquinas virtuales cifradas con ADE no arrancan

  1. Use comandos de reparación de máquina virtual para crear una máquina virtual de reparación que tenga una copia del disco del sistema operativo de la máquina virtual afectada conectado.

  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 automáticamente los sistemas de archivos cifrados. 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 una máquina virtual de rescate manualmente mediante Azure Portal y adjuntar una copia del disco del sistema operativo cifrado en el momento de creación de la máquina virtual. Para más información, consulte Solución de problemas de una máquina virtual Linux mediante la conexión del disco del sistema operativo a una máquina virtual de recuperación mediante el Azure Portal.

  3. Vuelva a habilitar VFAT.

  4. Después de volver 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 az vm repair restore comando para intercambiar el disco del sistema operativo reparado con el disco del sistema operativo original de la máquina virtual. Para más información, consulte Paso 5 en Reparación de una máquina virtual Linux mediante los comandos de reparación de máquinas virtuales de Azure.

    3. Valide si la máquina virtual puede arrancar; para ello, examine la consola serie de Azure o intente conectarse a la máquina virtual.

Volver a habilitar VFAT

  1. Identifique los archivos que deshabilitan VFAT y los números de línea correspondientes ejecutando el siguiente comando:

    grep -nr vfat /etc/modprobe.d/
    
  2. Modifique el archivo correspondiente y convierta en comentario 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 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.