Linuxのリカバリ:chrootを使用してブートできないカーネルの問題の解決方法

前回の記事では、Linux VMを適切に起動させないカーネル関連の問題を手動で修正する方法について説明しました。

また、 CHROOTを使用するための手順を使用できるオプションもあります。手動でファイルを編集する必要はなく、ツールを使用してこれらの同じ問題を自動的に修正します。

この記事に記載されている手順に進むと、システムが準備されていることを前提としています。つまり、一連の手順を完了し、最終的に実行したことを意味します。 
chroot / rescue

簡単な例として、CentOS 7.2でカーネルをバージョンアップした後で、起動しないシナリオがあるとします。 
3.10.0-327.36.1.el7.x86_64

次のコマンドを実行することで、インストール済みのカーネルをすばやく確認できます。 
cd / rescue / boot / grub2 / 
grep -i linux16 grub.cfg

出力は次のようになります。 
linux16 / boot / vmlinuz-3.10.0-327.36.1.el7.x86_64 root = UUID = 3b5d406c-7fa6-458f-815c-9684bb9fe148 roコンソール= tty1コンソール= ttyS0,115200n8 earlyprintk = ttyS0,115200 rootdelay = 300 net.ifnames = 0 LANG = en_US.UTF-8 
linux16 / boot / vmlinuz-3.10.0-327.18.2.el7.x86_64 root = UUID = 3b5d406c-7fa6-458f-815c-9684bb9fe148 roコンソール= tty1コンソール= ttyS0,115200n8 earlyprintk = ttyS0,115200 rootdelay = 300 net.ifnames = 0

つまり、現在の36.118.2がインストールされていることを意味します。

次のコマンドを実行すると、簡単に18.2にロールバックできます。 
grep -i menuentry grub.cfg

出力は次のようになります。 
menuentry ' CentOS Linux(3.10.0-327.36.1.el7.x86_64)7(コア)  ' -class centos -class gnu-linux -class gnu -class os -unrestricted $ menuentry_id_option 'gnulinux-3.10.0-327.18.2 .el7.x86_64-advanced-3b5d406c-7fa6-458f-815c-9684bb9fe148 '{ 
menuentry ' CentOS Linux(3.10.0-327.18.2.el7.x86_64)7(コア)  ' -class centos -class gnu-linux -class gnu -class os -unrestricted $ menuentry_id_option 'gnulinux-3.10.0-327.18.2 .el7.x86_64-advanced-3b5d406c-7fa6-458f-815c-9684bb9fe148 '{

これで、次のことを実行できます。  grub2-editenvリスト  次のように表示されます:  saved_entry = CentOS Linux(3.10.0-327.36.1.el7.x86_64)7(コア)

grub2-set-default "CentOS Linux(3.10.0-327.18.2.el7.x86_64)7(コア)"

これはカーネルを18.2に戻します。この後、CHROOT環境を終了するための最終ステップを安全に行うことができます:

chroot環境を終了し、すべてをアンマウントする手順は次のとおりです。

出口  cd /  umount / rescue / proc /  umount / rescue / sys /  umount /レスキュー/ dev / pts  umount /レスキュー/ dev /

DebianとUbuntuのディストリビューションでは、アンマウント(実行)する必要があります:

umount / rescue / run /  umount / rescue

最後に、ディスクを切り離して、PowerShellまたはAzure CLIのいずれかを使用して、記事を使用してVMを再構築することができます。 
Azure PowerShell:VHDからVMを削除して再展開する方法  Azure CLI:VHDからVMを削除して再展開する方法