次の方法で共有


Azure Linux VM での "Failed to start Switch Root (ルートの切り替えを開始できませんでした)" を解決する

適用対象: ✔️ Linux VM

この記事では、Azure Linux 仮想マシン (VM) の "ルートの切り替えを開始できませんでした" というエラーを解決する方法について説明します。 この問題は、Oracle 8 SP2 で次の GRUB パッケージ バージョンに更新する場合に発生する可能性があります。

  • grub2-common-2.02-78.0.3.el8_1.1.noarch
  • grub2-pc-modules-2.02-78.0.3.el8_1.1.noarch
  • grub2-efi-x64-2.02-78.0.3.el8_1.1.x86_64
  • grub2-tools-extra-2.02-78.0.3.el8_1.1.x86_64
  • grub2-tools-2.02-78.0.3.el8_1.1.x86_64
  • grub2-pc-2.02-78.0.3.el8_1.1.x86_64
  • grub2-tools-minimal-2.02-78.0.3.el8_1.1.x86_64

この記事で Azure の問題に対処できない場合は、MSDN および Stack Overflow の Azure 関連フォーラムを参照してください。 これらのフォーラムまたは Twitter で @AzureSupportに問題を投稿

Azure サポート ページでAzure サポート要求を送信するには、Get サポートを選択します。

ゲスト OS の問題を手動で修正する

Azure シリアル コンソールにアクセスできる場合は次のAzure シリアル コンソールの方法セクションの手順に進みます。

Azure シリアル コンソール セクションを使用できない場合は、 Offline メソッドに進みます。

Azure シリアル コンソールの方法

  1. Azure シリアル コンソールを使用して VM を再起動し、Escape キーを押したまま GRUB メニューにアクセスします。

  2. 復旧カーネルのエントリを選択します。

  3. grubenv ファイルからkernelopts値をコピーします。 Linux の grubenv ファイルのパスは、システムのディストリビューションと構成によって異なる場合があります。 これは一般的に /boot/efi/EFI/redhat/grubenv または /boot/grub2/gubenvにあります。

    例:

    cat /boot/grub2/gubenv
    
  4. /boot/loader/entriesから目的のブート エントリを編集します。

    例:

    vi /boot/loader/entries/a358b364a6d3492898bedc8d1dea3e92-4.18.0-147.8.1.el8_1.x86_64.conf
    

    コピーした kernelopts 値を手動で追加し、ブート エントリ ファイルに earlyprintk=ttyS0 します。

  5. VM を再起動してください。 複数のカーネルがインストールされている場合は、GRUB メニューから変更されたエントリを選択する必要があります。

オフライン メソッド

Azure シリアル コンソールを使用して VM にアクセスできない場合は、VM が起動しないため、修復はオフライン モードで行う必要があります。

  1. VM 修復コマンドの手順 1 から 3 を使用して、修復 VM を準備します。

  2. SSH を使用して修復 VM に接続します。

  3. 修復 VM に接続したら、 lsblk を使用してブートパーティションと efi パーティションを見つけます。

    ブート パーティションと efi パーティションを示すスクリーンショット。

  4. 一時的なマウント ポイントを作成します。 たとえば、 /repairを使用します。

    mkdir /repair

  5. 一時マウント ポイントにブート パーティションをマウントします。 たとえば、 /dev/sdc1を使用します。

    mount /dev/sdc1 /repair/

  6. 一時マウント ポイントの efi の下に efi パーティションをマウントします。 たとえば、 /dev/sdc15を使用します。

    mount /dev/sdc15 /repair/efi/

  7. grubenv ファイルからkernelopts値をコピーします。 Linux の grubenv ファイルのパスは、システムのディストリビューションと構成によって異なる場合があります。 これは一般的に /boot/efi/EFI/redhat/grubenv または /boot/grub2/gubenvにあります。

    例:

    cat /boot/efi/EFI/redhat/grubenv
    
  8. /boot/loader/entriesから目的のブート エントリを編集します。

    例:

    vi /boot/loader/entries/a358b364a6d3492898bedc8d1dea3e92-4.18.0-147.8.1.el8_1.x86_64.conf
    

    コピーした kernelopts 値を手動で追加し、ブート エントリ ファイルに earlyprintk=ttyS0 します。

  9. efi パーティションのマウントを解除します。 たとえば、/repair/efi/ のようにします。

    umount /repair/efi

  10. ブート パーティションのマウントを解除します。 たとえば、/repair/ のようにします。

    umount /repair

  11. VM 修復コマンドの手順 5. を使用して VM をリビルドします。

  12. VM を起動します。 複数のカーネルがインストールされている場合は、GRUB メニューから変更されたエントリを選択する必要があります。

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

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