次の方法で共有


VFAT ファイル システムの種類が無効になった後、Azure Linux 仮想マシンの起動に失敗する

注:

この記事で参照されている CentOS は Linux ディストリビューションであり、End Of Life (EOL) に到達します。 使用を検討し、それに応じて計画します。 詳細については、「 CentOS End Of Life ガイダンス」を参照してください。

この記事では、仮想ファイル割り当てテーブル (VFAT) ファイル システムの種類を無効にした後に Azure Linux 仮想マシン (VM) を起動できない問題の解決策について説明します。

次のシナリオでは、VFAT が必要です。

  • Azure での保証済み Linux ディストリビューション VM は 、/boot/efi ファイル システムをマウントします。

    Linux Gen2 VM (UEFI ベース) には /boot/efi ファイル システムが必要ですが、Gen1 (BIOS ベース) Linux イメージに含まれています。

  • Azure Disk Encryption(ADE) を使用して、Azure Linux VM の OS ディスクとデータ ディスクの両方を暗号化します。

VFAT を無効にすると、Azure Linux VM の起動に失敗します。 いくつかの強化ツールでは、VFAT を無効にすることができます。 この種の問題を回避するには、VFAT がセキュリティ強化から除外され、有効になっていることを確認します。

前提条件

Linux VM で シリアル コンソール が有効で機能していることを確認します。

ブートの問題を特定する方法

ブートの問題を特定するには、AZ CLI または Azure portal を使用して、ブート 診断 ペインまたはシリアル コンソール ペインで VM のシリアル コンソール ログ出力を表示します。 VFAT が無効になっている場合は、次の問題が発生します。

/boot/efi のマウントに失敗しました

/boot/efi ファイル システムがマウントに失敗すると、次の 1 つ以上の出力が表示されます。

  • 出力 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.
    
  • 出力 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.
    
  • 出力 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 で暗号化された VM がルート ボリュームにアクセスできない

OS が暗号化され、VFAT が無効になっている VM が起動に失敗すると、次に示すように、対応する出力が表示されます。 システムがタイムアウトすると、シリアル コンソール ログの最後に dracut または initramfs シェルが表示されます。

  • OS ディスクが暗号化され、VFAT が無効になっている Ubuntu VM:

        [   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
    
  • OS ディスクが暗号化され、VFAT が無効になっている RHEL 7.x VM:

    %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.
    
  • OS ディスクが暗号化され、VFAT が無効になっている RHEL 8.x VM:

    [   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.
    
  • 一部の古いシステムでは、Azure シリアル コンソールに次のエラーが表示されることがあります。

    不明なファイル システムの種類 'vfat' エラー。

この問題が発生したすべての VM は、dracut/initramfs でスタックし、シリアル コンソール ログの最後に表示されます。

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

ブートの問題を解決するには、 オンライントラブルシューティング または オフライントラブルシューティングに関するページを参照してください。

注:

OS ディスクが暗号化されておらず、データ ファイル システムのみが ADE を使用して暗号化されている場合、VFAT が無効になっているため、ADE で暗号化されたデータ ディスクのマウントに失敗します。 この場合は、「 オンライントラブルシューティング 」または「 オフライン トラブルシューティング」の同じ手順に従ってこの問題を解決してください。

オンライン トラブルシューティング

ヒント

VFAT が無効になる前に VM の最近のバックアップがある場合は、 バックアップから VM を復元 してブートの問題を解決します。

シリアル コンソールは、この問題を解決するための最速の方法です。 これにより、システム ディスクを復旧 VM に提示することなく、問題を直接修正できます。 ディストリビューションに必要な前提条件を満たしていることを確認します。 詳細については、「 Linux 用仮想マシン シリアル コンソール」を参照してください。

暗号化されていない VM が /boot/efi のマウントに失敗する

  1. Azure シリアル コンソールを使用して、シングル ユーザー モードで VM を起動します。 詳細については、「 シリアル コンソールを使用して GRUB およびシングル ユーザー モードにアクセスする」を参照してください。

    シングル ユーザー モードで VM を起動するには、GRUB メニュー レベルでブート プロセスを中断し、メインカーネル エントリを編集して、で始まる linuxGRUB 行にカーネル オプションを追加init=/bin/bashします。

    GRUB メニュー レベルでブート プロセスを中断してシングル ユーザー モードでシステムを起動するプロセスを示すアニメーション GIF。

  2. 必要なすべてのファイル システムがマウントされ、ルートが読み取りおよび書き込みモードになっていることを確認します。

    1. カーネル オプションを使用してシステムを起動する init=/bin/bash 場合は、次のコマンドを実行して、必要なファイル システムを準備します。

      mount -o rw,remount /
      mount -a
      
    2. VFAT を再度有効にします

    3. システムを再起動します。

注:

VM が Gen1 で暗号化されていない場合は、Gen1 VM で必要とされないように/boot/efi、/etc/fstab からエントリをコメントアウト/boot/efiすることもできます。 詳細については、「 fstab エラーによる Linux VM の起動に関する問題のトラブルシューティング」を参照してください。

ADE で暗号化された VM の起動に失敗する

  • OS ディスクが暗号化された VM:

    OS ディスクが暗号化されている場合、Azure シリアル コンソールからこの問題のトラブルシューティングを行うことはできません。

  • /etc/fstab の問題により、暗号化されたデータ ディスクのみの VM の起動に失敗します。

    1. VM データ ディスクのみが暗号化されている場合 (OS ディスクは暗号化されていません)、システムを起動するには、Azure シリアル コンソールを使用して、シングル ユーザー モードから/etc/fstab の対応するエントリにマウント オプションを追加nofailします。 詳細については、「 fstab エラーによる Linux VM の起動に関する問題のトラブルシューティング」を参照してください。

    2. VM が起動したら、 VFAT を再度有効に し、VM を再起動します。

オフライン トラブルシューティング

ヒント

VFAT が無効になる前に VM の最近のバックアップがある場合は、 バックアップから VM を復元 してブートの問題を解決します。

Azure シリアル コンソールが特定の VM で動作しない場合、またはサブスクリプションのオプションではない場合は、レスキュー/修復 VM を使用してこの問題のトラブルシューティングを行います。

暗号化されていない VM が /boot/efi のマウントに失敗する

  1. vm 修復コマンドを使用して、影響を受ける VM の OS ディスクのコピーがアタッチされている修復 VM を作成します。 chroot を使用して、修復 VM に OS ファイル システムのコピーをマウントします。

    注:

    または、Azure portalを使用して手動でレスキュー VM を作成することもできます。 詳細については、「Azure portalを使用して OS ディスクを復旧 VM に接続して Linux VM のトラブルシューティングを行う」を参照してください。

  2. VFAT を再度有効にします

  3. VFAT が再度有効になった後、次のアクションを実行します。

    1. chroot を終了し、レスキュー/修復 VM からファイル システムのコピーをマウント解除します。

    2. コマンドを az vm repair restore 実行して、修復された OS ディスクを VM の元の OS ディスクと交換します。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」の手順 5 を参照してください。

    3. Azure シリアル コンソールを見るか、VM に接続して VM を起動できるかどうかを検証します。

注:

VM が Gen1 で暗号化されていない場合は、Gen1 VM で必要とされないように/boot/efi、/etc/fstab からエントリをコメントアウト/boot/efiすることもできます。 詳細については、「 fstab エラーによる Linux VM の起動に関する問題のトラブルシューティング」を参照してください。

ADE で暗号化された VM の起動に失敗する

  1. vm 修復コマンドを使用して、影響を受ける VM の OS ディスクのコピーがアタッチされている修復 VM を作成します。

  2. ADE を使用して VM が暗号化されると、 Azure VM 修復コマンド によって、暗号化されたファイル システムのロック解除とマウントが自動的に行われます。 暗号化されたファイル システムは、 と /investigatebootとして/investigateroot/*マウントされます。 chroot を使用して、修復 VM にサインインし、ファイル システムを目的のマウント ポイントに再マウントできます。

    注:

    または、Azure portalを使用し、VM 作成時に暗号化された OS ディスクのコピーをアタッチすることで、手動でレスキュー VM を作成することもできます。 詳細については、「Azure portalを使用して OS ディスクを復旧 VM に接続して Linux VM のトラブルシューティングを行う」を参照してください。

  3. VFAT を再度有効にします

  4. VFAT が再度有効になった後、次のアクションを実行します。

    1. chroot を終了し、レスキュー/修復 VM からファイル システムのコピーをマウント解除します。

    2. コマンドを az vm repair restore 実行して、修復された OS ディスクを VM の元の OS ディスクと交換します。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」の手順 5 を参照してください。

    3. Azure シリアル コンソールを見るか、VM に接続して VM を起動できるかどうかを検証します。

VFAT を再度有効にする

  1. 次のコマンドを実行して、VFAT を無効にするファイルと対応する行番号を特定します。

    grep -nr vfat /etc/modprobe.d/
    
  2. 対応するファイルを変更し、VFAT エントリをコメントアウトまたは削除します。 エントリは最も一般的に になります。 install vfat /bin/true

    vi /etc/modprobe.d/disable.conf
    

    注:

    を、VFAT が無効になっている対応するファイル名に置き換えます disable.conf

  3. 次の対応するコマンドを使用して、initramfs ファイルを再生成します。

    • 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)
        
    • 修復/レスキュー VM からコマンドを実行します。

      重要

      オフライン トラブルシューティングの手順 1 に従い、これらのコマンドが 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
        

        重要

        を対応するカーネル バージョンに置き換えます 3.10.0-1160.59.1.el7.x86_64

      • SLES 12/15

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

        重要

        を対応するカーネル バージョンに置き換えます 5.3.18-150300.38.53-azure

      • Ubuntu 18.04

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

        重要

        を対応するカーネル バージョンに置き換えます 5.4.0-1077-azure

次の手順

特定のブート エラーが VFAT 無効の問題でない場合は、「Azure Linux Virtual Machinesブート エラーのトラブルシューティング」を参照して、その他のトラブルシューティング オプションを確認してください。

お問い合わせはこちらから

質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。