Azure Linux 仮想マシンの起動に失敗し、dracut 緊急シェルに入る
注:
この記事で参照されている CentOS は Linux ディストリビューションであり、End Of Life (EOL) に到達します。 使用を検討し、それに応じて計画します。 詳細については、「 CentOS End Of Life ガイダンス」を参照してください。
この記事では、オペレーティング システム (OS) ファイル システムに RAMdisk からアクセスできないため、Azure Linux 仮想マシン (VM) を起動できない問題の解決策について説明します。 VM は、dracut 緊急シェルに格納されます。
前提条件
Linux VM で シリアル コンソール が有効で機能していることを確認します。
dracut ブートの問題を特定する方法
dracut ブートの問題を特定するには、Azure portalを使用して、ブート 診断 ペイン、シリアル コンソール ペイン、または AZ CLI を使用して VM のシリアル コンソール ログ出力を表示します。
ブートの問題が発生したすべての VM は、dracut または initramfs 緊急シェルに格納され、シリアル コンソール ログの最後に表示されます。
RHEL/CentOS/SLES/Oracle Linux:
[ 201.935612] dracut-initqueue[455]: Warning: dracut-initqueue timeout - starting timeout scripts [ 201.941153] dracut-initqueue[455]: Warning: Could not boot. Starting Setup Virtual Console... [[0;32m OK [0m] Started Setup Virtual Console. Starting Dracut Emergency Shell... Warning: /dev/mapper/rootvg-rootlv does not exist Generating "/run/initramfs/rdsosreport.txt" Entering emergency mode. Exit the shell to continue. Type "journalctl" to view system logs. You might want to save "/run/initramfs/rdsosreport.txt" to a USB stick or /boot after mounting them and attach it to a bug report. dracut:/#
Ubuntu:
mdadm: No arrays found in config file or automatically done. 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)
オンライン トラブルシューティング
ヒント
VM の最近のバックアップがある場合は、バックアップ から VM を復元 してブートの問題を解決します。
シリアル コンソールは、問題を解決するための最速の方法です。 これにより、システム ディスクを復旧 VM に提示することなく、問題を直接修正できます。 ディストリビューションに必要な前提条件を満たしていることを確認します。 詳細については、「 Linux 用仮想マシン シリアル コンソール」を参照してください。
Azure シリアル コンソールを使用して問題のトラブルシューティングを試みます。
注:
Azure シリアル コンソールを使用して、すべての問題に対処できるわけではありません。
- シリアル コンソールから VM の再起動 (ハード) をトリガーします。
- ESC キーを使用して GRUB メニューで VM を中断します。
- [ E ] を選択して、GRUB メニューの最初のカーネル エントリを変更します。
- 行に
linux16
移動し、次のように GRUB の構成ミス を検証して修正します。- GRUB 構成ファイルのルート デバイス パスが正しくない、UUID またはルート ボリューム名が間違っている。
- GRUB 構成ファイルのデバイス パスのスワップが正しくありません。
- GRUB 構成ファイル内の重複したパラメーター。
- 明らかな入力ミス。
GRUB 設定を手動で変更した後、CtrlXを+選択して VM を起動します。
この段階で行われる変更は、永続的ではない変更です。 VM を起動できる場合は、GRUB 構成ファイルでこの問題を解決するか、再発します。
VM がオンラインに戻ったら、構成ファイルの構成の問題を
/etc/default/grub
修正し、GRUB 構成を更新します。 これを行うには、「 GRUB を再インストールし、GRUB 構成ファイルを再生成する」を参照してください。VM を再起動して、手動による介入なしで起動できることを確認します。
オフライン トラブルシューティング
ヒント
VM の最近のバックアップがある場合は、バックアップ から VM を復元 してブートの問題を解決します。
Azure シリアル コンソールが特定の VM で動作しない場合、またはサブスクリプションのオプションではない場合は、レスキュー/修復 VM を使用してこの問題のトラブルシューティングを行います。 vm 修復コマンドを使用して、影響を受ける VM の OS ディスクのコピーがアタッチされている修復 VM を作成します。 chroot を使用して、修復 VM に OS ファイル システムのコピーをマウントします。
注:
または、Azure portalを使用して手動でレスキュー VM を作成することもできます。 詳細については、「Azure portalを使用して OS ディスクを復旧 VM に接続して Linux VM のトラブルシューティングを行う」を参照してください。
特定の問題を解決するには、次のセクションに移動します。
dracut/initramfs 関連のブートの問題が解決されたら、次の操作を実行します。
- chroot を終了します。
- レスキュー/修復 VM からファイル システムのコピーをマウント解除します。
- コマンドを
az vm repair restore
実行して、修復された OS ディスクを VM の元の OS ディスクと交換します。 詳細については、「 Azure Virtual Machine 修復コマンドを使用して Linux VM を修復する」の手順 5 を参照してください。 - Azure シリアル コンソールを見るか、VM に接続して VM を起動できるかどうかを検証します。
VFAT が無効になっているため、ADE で暗号化された VM の起動に失敗する
詳細については、「 ADE で暗号化された VM の起動に失敗する」を参照してください。
Hyper-V ドライバーがありません
最新のすべての Linux ディストリビューションの Linux カーネルに含まれる Hyper-V ドライバーが無効になっている場合は、それらを再度有効にして、initramfs/initrd イメージを再生成します。 詳細については、「 シナリオ 3: その他の Hyper-V ドライバーが無効になっている」を参照してください。
VM が Red Hat で、オンプレミスから移行される場合は、initramfs イメージで必要な Hyper-V ドライバーを有効にします。 詳細については、「 Hyper-V 以外のハイパーバイザーを使用する場合、Hyper-V ドライバーを初期 RAM ディスクに含められなかった」を参照してください。
GRUB の構成ミス
パラメーターは rd.break
、dracut 緊急シェルで VM を強制的に起動します。 このパラメーターが GRUB 構成ファイルにハードコーディングされていないことを確認します。
GRUB 構成ファイルのルート デバイス パスが正しくありません
GRUB 構成ファイルのルート パス root=/dev/***
が正しいかどうかを検証します。 適切なデバイス パスが使用されていることを確認します。
修復/レスキュー VM で chroot 内にいる場合:
- オフライン トラブルシューティングの手順 1 に従います。
- ファイル、
/etc/default/grub
エントリをGRUB_CMDLINE_LINUX
検証し、構成ファイルにハードコーディングされている場合に備えて パラメーターを探root=
します。 - GRUB を再インストールし、GRUB 構成ファイルを再生成します。
Azure シリアル コンソールを使用している場合:
- オンライントラブルシューティングの手順 3 に従います。
- 行を
linux16
検証し、パラメーターをroot=
探して修正します。 - CtrlXキーを押+して VM を起動します。
- VM が正常に起動したら、「GRUB を再インストールして GRUB 構成ファイルを
root
再生成する」の指示に従って、ファイルを変更/etc/default/grub
し、パラメーターを修正し、GRUB 構成ファイルを更新します。
この検証中に、次のことを確認します。
- OS 暗号化を使用する Ubuntu VM で、デバイス名が
/dev/mapper/osencrypt
であることを確認します。 - OS ディスク内の論理ボリューム マネージャー (LVM) を持つ VM では、ルート ボリュームは です
/dev/mapper/rootvg-rootlv
。 ADE OS ディスクが暗号化された RHEL VM では、同じパスが使用されます。 - 再起動の間で変更されるため、 の
/dev/sdX
形式のデバイス名が使用されていないことを確認します。Linux では永続的ではありません。 詳細については、「 Linux VM デバイス名の変更のトラブルシューティング」を参照してください。 - UUID が使用されている場合は、適切なルート ファイル システム UUID が使用され、構文が であることを
root=UUID=xxx-yyy-zzz
確認します。
GRUB 構成ファイルのデバイス パスのスワップが間違っている
このシナリオでは、VM がブート プロセスを完了できず、次のようなエラーが発生して dracut 緊急シェルに入ります。
[ 188.000765] dracut-initqueue[324]: Warning: /dev/VG/SwapVol does not exist
Starting Dracut Emergency Shell...
Warning: /dev/VG/SwapVol does not exist
この例の GRUB 構成ファイルは、 パラメーター とのスワップとして論理ボリューム (LV) を読み込むよう設定されています rd.lvm.lv=VG/SwapVol
。 ただし、VM はブート プロセス中にこの LV を見つけることができません。
Azure Linux VM でこの方法でスワップ デバイスを使用することは推奨されないことに注意してください。 詳細については、「 Azure Linux VM の SWAP ファイルを作成する」を参照してください。
この問題を解決するには、GRUB 構成ファイル (/etc/default/grub
) でスワップ パスrd.lvm.lv=VG/SwapVol
を見つけて削除します。 これを行うには、次のいずれかの方法を使用します。
修復/レスキュー VM で chroot 内にいる場合:
- オフライン トラブルシューティングの手順 1 に従います。
- ファイルを
/etc/default/grub
編集し、エントリにGRUB_CMDLINE_LINUX
移動し、パラメーターをrd.lvm.lv=VG/SwapVol
見つけて、構成から削除します。 - GRUB を再インストールし、GRUB 構成ファイルを再生成します。
Azure シリアル コンソールを使用している場合:
- オンライントラブルシューティングの手順 3 に従います。
- で始まる
linux
行に移動し、 パラメーターをrd.lvm.lv=VG/SwapVol
見つけて削除します。 - CtrlXキーを押+して VM を起動します。
- VM が正常に起動したら、GRUB の再インストールと GRUB 構成ファイルの再生成に関するセクションで説明されているように、ファイルを変更
/etc/default/grub
し、パラメーターを削除rd.lvm.lv=VG/SwapVol
してから GRUB 構成ファイルを更新します。
GRUB 構成ファイル内の重複パラメーター
GRUB 構成ファイルに重複したパラメーターがあるかどうかを検証します。
修復/レスキュー VM で chroot 内にいる場合:
- オフライン トラブルシューティングの手順 1 に従います。
/etc/default/grub
ファイルとエントリをGRUB_CMDLINE_LINUX
検証します。- 重複したパラメーターを探して削除します。
- GRUB 構成ファイルを更新します。 詳細については、「 GRUB を再インストールし、GRUB 構成ファイルを再生成する」を参照してください。
Azure シリアル コンソールを使用している場合:
- オンライントラブルシューティングの手順 3 に従います。
- 行を検証し
linux16
、重複したパラメーターを探して削除します。 - CtrlXキーを押+して VM を起動します。
- VM が正常に起動したら、それに応じてファイルを
/etc/default/grub
変更し、前に特定した構成の問題を修正し、「 GRUB を再インストールして GRUB 構成ファイルを再生成する」の手順に従って GRUB 構成ファイルを更新します。
ルート ファイル システムの破損
ルート ファイル システムが破損している場合、initrd/initramfs イメージからマウントできません。
ルート ファイル システムの破損を修正するには、「 ファイルシステム エラーによる Linux 仮想マシンのブートの問題のトラブルシューティング - ファイルシステムの修復を実行する」の手順に従います。
LVM のアクティブ化に関する問題
LVM 物理ボリューム (PV)、ボリューム グループ (VG)、論理ボリューム (LV) にアクセスすると、いくつかの問題が発生する可能性があります。 Azure シリアル コンソールからアドレス指定することはできません。 それらを解決するには、修復/レスキュー VM を使用します。
オフライン トラブルシューティングの手順 1 に従います。
問題を特定するには、次のコマンドを実行し、コマンド出力を確認します。
OS ディスクに対応するデバイスを特定し、PV として検出されたかどうかを確認します。
lsblk pvs
VG が検出されたかどうかを
rootvg
検証します。vgs
LV が検出されたかどうかを検証します。
lvs
ルート ボリュームへのアクセスに関する問題を引き起こす、次の一般的な LVM エラーのトラブルシューティングを行います。
rootvg VG に 1 つの PV しかない場合の不明な PV (これが標準の Azure 構成)
PV を保持しているパーティションが誤って削除、サイズ変更、または作成されます。 この問題を解決するには、「 ルート パーティションがありません」を参照してください。
rootvg VG が変更され、複数のディスクに分割された場合の不明な PV
rootvg VG に 2 台の PV を設定することは、推奨される構成ではありません。 このシナリオでは、データ ディスクが仮想マシンからデタッチされ、rootvg 論理ボリュームにアクセスできなくなります。 この問題を解決するには、元のディスクを VM に再アタッチして再起動します。
PV が回復不可能な場合は、 バックアップからの復元を実行します。
ルート パーティションがありません
パーティションのサイズ変更操作中にパーティション レベルで発生する問題や他の問題が原因で、ルート ファイル システムにアクセスできない可能性があります。
このシナリオでは、元のパーティション テーブル レイアウトを文書化し、元のパーティションごとに正確な開始と終了のセクターを記述した場合 (また、新しいファイル システムの作成など、システムでそれ以上の変更は行われません)、同じ元のレイアウトを使用してパーティションを再作成します。 (MBR パーティション テーブルの場合) や gdisk
(GPT パーティション テーブルの場合) などのfdisk
ツールを使用して、アクセスできないファイル システムにアクセスできます。 修復/レスキュー VM からこの回復操作に従います。 詳細については、「 オフライントラブルシューティング 」セクションを参照してください。
この方法がうまくいかない場合は、 バックアップからの復元を実行することをお勧めします。
Initrd または initramfs の破損
initrd/initramfs イメージにはある程度の破損があるため、ルート ボリュームのマウントと OS の起動プロセスが失敗します。
この問題を解決するには、修復/レスキュー VM の chroot 内から次の手順を実行します。
- オフライン トラブルシューティングの手順 1 に従います。
- 不足している initramfs を手動で再生成します。
- VM を再起動して、起動できるかどうかを確認します。
次の手順
特定のブート エラーが dracut または initramfs の問題でない場合は、「Azure Linux Virtual Machinesブート エラーのトラブルシューティング」を参照して、さらにトラブルシューティング オプションを確認してください。
お問い合わせはこちらから
質問がある場合やヘルプが必要な場合は、サポート要求を作成するか、Azure コミュニティ サポートにお問い合わせください。 Azure フィードバック コミュニティに製品フィードバックを送信することもできます。
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示