Dela via


Det går inte att starta den virtuella Azure Linux-datorn när VFAT-filsystemtypen har inaktiverats

Gäller för: ✔️ Virtuella Linux-datorer

Kommentar

CentOS som refereras i den här artikeln är en Linux-distribution och kommer att nå End Of Life (EOL). Överväg att använda och planera i enlighet med detta. Mer information finns i CentOS End Of Life-vägledning.

Den här artikeln innehåller lösningar på ett problem där en virtuell Azure Linux-dator (VM) inte kan starta efter att den virtuella filallokeringstabellen (VFAT) har inaktiverats.

VFAT krävs i följande scenarier:

Om du inaktiverar VFAT kan de virtuella Azure Linux-datorerna inte startas. Flera härdningsverktyg kan inaktivera VFAT. För att undvika den här typen av problem kontrollerar du att VFAT undantas från härdningen och är aktiverat.

Förutsättningar

Kontrollera att seriekonsolen är aktiverad och funktionell på den virtuella Linux-datorn.

Så här identifierar du startproblem

Om du vill identifiera ett startproblem använder du AZ CLI eller Azure Portal för att visa utdata från seriekonsolloggen för den virtuella datorn i startdiagnostikfönstret eller seriekonsolfönstret. Om VFAT är inaktiverat får du följande problem:

Det gick inte att montera /boot/efi

När filsystemet /boot/efi inte kan monteras visas en eller flera av följande utdata:

  • Utdata 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.
    
  • Utdata 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.
    
  • Utdata 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.
    

ADE-krypterad virtuell dator kan inte komma åt rotvolymen

När en virtuell dator med operativsystemet krypterat och VFAT är inaktiverat inte kan startas, visas motsvarande utdata enligt nedan. När systemet har överskridit tidsgränsen visas dracut- eller initramfs-gränssnittet i slutet av seriekonsolloggen.

  • Virtuell Ubuntu-dator med os-disken krypterad och VFAT inaktiverad:

        [   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
    
  • VIRTUELL RHEL 7.x-dator med OS-disken krypterad och VFAT inaktiverad:

    %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.
    
  • VIRTUELL RHEL 8.x-dator med OS-disken krypterad och VFAT inaktiverad:

    [   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.
    
  • I vissa gamla system kan följande fel visas i Azure-seriekonsolen:

    okänt fel av filsystemtypen "vfat".

Alla virtuella datorer med det här problemet fastnar i dracut/initramfs och visas i slutet av seriekonsolloggen:

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

Lös startproblemet genom att gå till Felsökning online eller Felsökning offline.

Kommentar

Om OS-disken inte är krypterad och endast datafilsystemen krypteras med hjälp av ADE, kan de ADE-krypterade datadiskarna inte monteras eftersom VFAT är inaktiverat. I det här fallet följer du samma steg i Felsökning online eller offline för att lösa problemet.

Felsökning online

Dricks

Om du nyligen har säkerhetskopiering av den virtuella datorn innan VFAT har inaktiverats återställer du den virtuella datorn från säkerhetskopian för att åtgärda startproblemet.

Seriekonsolen är den snabbaste metoden för att lösa problemet. Det gör att du kan åtgärda problemet direkt utan att behöva presentera systemdisken för en virtuell återställningsdator. Se till att du uppfyller de nödvändiga förutsättningarna för distributionen. Mer information finns i Seriekonsolen för virtuella datorer för Linux.

Icke-krypterade virtuella datorer kan inte montera /boot/efi

  1. Använd Azure-seriekonsolen för att starta den virtuella datorn i enanvändarläge. Mer information finns i Använda seriekonsolen för att få åtkomst till GRUB och enanvändarläge.

    Om du vill starta den virtuella datorn i enanvändarläge avbryter du startprocessen på GRUB-menynivån och redigerar huvud kernelposten för att lägga init=/bin/bash till kernelalternativet på GRUB-raden som börjar med linux.

    Animerad GIF som visar processen att avbryta startprocessen på GRUB-menynivå för att starta systemet i enanvändarläge.

  2. Kontrollera att alla nödvändiga filsystem är monterade och att roten är i läs- och skrivläge.

    1. Om du startar systemet med kernelalternativet init=/bin/bash förbereder du de nödvändiga filsystemen genom att köra följande kommandon:

      mount -o rw,remount /
      mount -a
      
    2. Återaktivera VFAT.

    3. Starta om systemet.

Kommentar

Om den virtuella datorn är Gen1 och den inte är krypterad kan du också helt enkelt kommentera ut /boot/efi posten från /etc/fstab som /boot/efi inte behövs på virtuella Gen1-datorer. Mer information finns i Felsöka startproblem för virtuella Linux-datorer på grund av fstab-fel.

ADE-krypterade virtuella datorer kan inte startas

  • Virtuell dator med os-disk krypterad:

    När OS-disken är krypterad går det inte att felsöka det här problemet från Azure-seriekonsolen.

  • Den virtuella datorn med endast krypterade datadiskar kan inte startas på grund av /etc/fstab-problem:

    1. Om endast virtuella datordatadiskar är krypterade (OS-disken inte är krypterad) för att starta systemet lägger du till monteringsalternativet nofail till motsvarande poster i /etc/fstab från enanvändarläge med hjälp av Azure-seriekonsolen. Mer information finns i Felsöka startproblem för virtuella Linux-datorer på grund av fstab-fel.

    2. När den virtuella datorn har startats upp aktiverar du VFAT igen och startar om den virtuella datorn.

Felsökning offline

Dricks

Om du nyligen har säkerhetskopiering av den virtuella datorn innan VFAT har inaktiverats återställer du den virtuella datorn från säkerhetskopian för att åtgärda startproblemet.

Om Azure-seriekonsolen inte fungerar på den specifika virtuella datorn eller inte är ett alternativ i din prenumeration kan du felsöka det här problemet med hjälp av en virtuell dator för återställning/reparation.

Icke-krypterade virtuella datorer kan inte montera /boot/efi

  1. Använd vm-reparationskommandon för att skapa en reparations-VM som har en kopia av den berörda virtuella datorns OS-disk ansluten. Montera kopian av OS-filsystemen på den virtuella reparationsdatorn med hjälp av chroot.

    Kommentar

    Du kan också skapa en virtuell räddningsdator manuellt med hjälp av Azure Portal. Mer information finns i Felsöka en virtuell Linux-dator genom att ansluta OS-disken till en återställnings-VM med hjälp av Azure Portal.

  2. Återaktivera VFAT.

  3. När VFAT har återaktiverats utför du följande åtgärder:

    1. Avsluta chroot och demontera kopian av filsystemen från den virtuella datorn för räddning/reparation.

    2. az vm repair restore Kör kommandot för att växla den reparerade OS-disken med den virtuella datorns ursprungliga OS-disk. Mer information finns i Steg 5 i Reparera en virtuell Linux-dator med hjälp av reparationskommandona för Azure Virtual Machine.

    3. Kontrollera om den virtuella datorn kan startas genom att titta på Azure-seriekonsolen eller genom att försöka ansluta till den virtuella datorn.

Kommentar

Om den virtuella datorn är Gen1 och den inte är krypterad kan du också helt enkelt kommentera ut /boot/efi posten från /etc/fstab som /boot/efi inte behövs på virtuella Gen1-datorer. Mer information finns i Felsöka startproblem för virtuella Linux-datorer på grund av fstab-fel.

ADE-krypterade virtuella datorer kan inte startas

  1. Använd vm-reparationskommandon för att skapa en reparations-VM som har en kopia av den berörda virtuella datorns OS-disk ansluten.

  2. När den virtuella datorn krypteras med hjälp av ADE tar reparationskommandona för virtuella Azure-datorer hand om att låsa upp och montera de krypterade filsystemen åt dig. De krypterade filsystemen monteras som /investigateroot/* och /investigateboot. Du kan logga in på den virtuella reparationsdatorn och montera om filsystemen till önskade monteringspunkter med hjälp av chroot.

    Kommentar

    Du kan också skapa en virtuell räddningsdator manuellt med hjälp av Azure Portal och koppla en kopia av den krypterade OS-disken när den virtuella datorn skapas. Mer information finns i Felsöka en virtuell Linux-dator genom att ansluta OS-disken till en återställnings-VM med hjälp av Azure Portal.

  3. Återaktivera VFAT.

  4. När VFAT har återaktiverats utför du följande åtgärder:

    1. Avsluta chroot och demontera kopian av filsystemen från den virtuella datorn för räddning/reparation.

    2. az vm repair restore Kör kommandot för att växla den reparerade OS-disken med den virtuella datorns ursprungliga OS-disk. Mer information finns i Steg 5 i Reparera en virtuell Linux-dator med hjälp av reparationskommandona för Azure Virtual Machine.

    3. Kontrollera om den virtuella datorn kan startas genom att titta på Azure-seriekonsolen eller genom att försöka ansluta till den virtuella datorn.

Återaktivera VFAT

  1. Identifiera de filer som inaktiverar VFAT och motsvarande radnummer genom att köra följande kommando:

    grep -nr vfat /etc/modprobe.d/
    
  2. Ändra motsvarande fil och kommentera ut eller ta bort VFAT-posten. Posten är oftast: install vfat /bin/true.

    vi /etc/modprobe.d/disable.conf
    

    Kommentar

    Ersätt disable.conf med motsvarande filnamn där VFAT är inaktiverat.

  3. Återskapa initramfs-filen med hjälp av följande motsvarande kommando:

    • Kör kommandot från Azure-seriekonsolen:

      • 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)
        
    • Kör kommandot från en virtuell reparations-/räddningsdator:

      Viktigt!

      Kontrollera att steg 1 i Offline-felsökning följs och att dessa kommandon körs i 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
        

        Viktigt!

        Ersätt 3.10.0-1160.59.1.el7.x86_64 med motsvarande kernelversion.

      • SLES 12/15

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

        Viktigt!

        Ersätt 5.3.18-150300.38.53-azure med motsvarande kernelversion.

      • Ubuntu 18.04

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

        Viktigt!

        Ersätt 5.4.0-1077-azure med motsvarande kernelversion.

Nästa steg

Om det specifika startfelet inte är ett VFAT-inaktiverat problem kan du läsa Felsöka startfel för virtuella Azure Linux-datorer för ytterligare felsökningsalternativ.

Kontakta oss för att få hjälp

Om du har frågor eller behöver hjälp skapar du en supportförfrågan eller frågar Azure community support. Du kan också skicka produktfeedback till Azure-feedbackcommunityn.