Linux VM起動時に以下メッセージが表示されて起動しない場合、
Failed to load selinux policy freezing
SELinuxの設定に誤りがあります。Azure VMの場合、起動してこない、場合に、シリアルコンソールから見た場合に上記メッセージが確認できます。
※SELinuxの設定を触った後に、SSHログインできない、、などの状況が発生した場合、本件に該当している可能性が高いです。本事象が発生した場合でも、Azureポータル上からはVMが通常起動しているように見えます。SELinuxの設定を触った後に、SSHログインできない という場合は、シリアルコンソールから本事象に該当していないか確認してみるのがよいと思います。
このような場合、シリアルコンソール上から復旧させることが可能です。
1.まず、シリアルコンソールの電源ボタンからVMを再起動します
電源ボタンから「再起動」をクリックします。
2.タイミングよくEscキーを押下
VMが再起動するので、以下出力時に、Escキーを何度か押します。
※Escキー連打でもgrubメニューに入れるようですが、失敗して、grubのリカバリシェル に入ってしまうことがありました。「grub>grub> ・・・」と表示される場合、リカバリシェルに入っています。grubメニューに上手く入れない場合は何度か挑戦してください。基本、Escキー1回でgrubメニューに入れるようです。
3.以下画面で キーボードの e を押下
4.「selinux=0」を追記する
以下画面に遷移したら、
initrd ($root)/initramfs-******の前の行に、selinux=0 を追記します。
ここが少しわかり辛いですが、以下のような箇所です。
5.ctrl + Xキーを押し、起動
selinux=0の追記をしたら、ctrl + X で起動させます。
あとは、起動してきたLinuxにログインし、SELinuxの設定ファイルを正しく修正してください。
#vi /etc/selinux/config
で、編集します。よくある間違いとして以下があります。(筆者はこれをやりました)
selinuxを無効化する場合、
SELINUX=enforcing という部分を
SELINUX=disabled
に修正して、OS再起動する必要があります。
これを、誤って、
SELINUXTPYE=disabled
と書いてしまうと、OS起動時にエラーとなり、今回のような事象が発生します。
【間違いの例】
【正しい例】
以上、selinux設定の失敗からリカバリする方法を案内しました。