メニュー 閉じる

OS 異常終了後、起動時に「Failed to load SELinux policy」が出てフリーズする場合の対策方法。

SELinux を有効にすると起動できないのはラベルのエラーが原因かもしれません。

OS が異常終了した後に、なぜか「Failed to load SELinux policy」が表示されるようになり、Linux が起動できなくなる。

SELinux の設定値を間違えた結果「Failed to load SELinux policy」が表示されてLinux が起動できなくなるという情報はたくさんあったのですが、私のケースと同じと思われるものはなかったので、その解決手順をメモしておきます。

■ 手順はこちら

SELinux を無効化すると起動するのが、有効化するとエラーになる。

SELinux を再インストールしても「Failed to load SELinux policy」が消えない。

ネット上の「Failed to load SELinux policy」 ケースのどれも該当しない。

VirtualBox で起きた現象ですが、実機でも起きるのではないかと思います。

OS 異常終了後、起動時に「Failed to load SELinux policy」が出て、フリーズする場合の対策方法。

Failed to load SELinux policy
→ Failed to load SELinux policy, freezing のコンボ

症状について。

起動時に「Failed to load SELinux policy」が出て、

画像に alt 属性が指定されていません。ファイル名: image-311.png

ずっとぐるぐるしていて、起動してこない。

【Esc】キーを押すと、Failed to load SELinux policy, freezing でフリーズしているのがわかる。

Failed to load SELinux policy が出始めた原因。

再起動するときにメモリエラーが出て、

中断状態から電源を入れ直して起動するとSELinux のエラー発生するようになる。

以降VM を何度起動しても Failed to load SELinux policy → Failed to load SELinux policy, freezing のループに陥る。

暫定的な回避策。

SELinux を無効にして起動する。

「Failed to load SELinux policy」でネットを検索すると、
起動時に「SELinux」を無効化すれば「 Failed to load SELinux policy → Failed to load SELinux policy, freezing 」のフリーズは回避できることがわかった。

起動時のコア選択画面でキーボードの【E】を押す。

画像に alt 属性が指定されていません。ファイル名: image-298.png

エディット画面に移動するので、以下の位置(LANG=ja_JP.UTF-8 の後ろ)に「selinux=0」を追加して、
【Ctrl】+【X】を押します。

■ 参考サイト

CentOS起動でバーが100%から起動しない場合:SELinux失敗した時

今回の現象について考える。

とりあえず起動するようになったので、解決かなと思ったのですが、腑に落ちない点がありました。

SELinux ってなんだ?

SELinux ってそもそも何なのか。

SELinux は「Security-Enhanced Linux」の略で、セキュリティー機能です。

https://ja.wikipedia.org/wiki/Security-Enhanced_Linux

理解できる範囲でざっくり言うと、
ユーザー、グループ、所有者のパーミッション制御だけでなく、
ファイルごとにラベルを付与しておいて、ラベル側からもアクセス制限しちゃおう。
というコンセプトのセキュリティー機能なのだそうです。(実際は多分もっと複雑なものだと思います。)

このSELinux が有効になっていると一部のアプリケーションが起動しないなどの問題があったり、いろいろとトラブルの原因になったりすることから、無効化しようとして設定値を間違えてしまい、Linux を起動できなくなるケースが多く、「SELinux を無効化して起動する」という暫定回避策も、設定を間違えて起動しなくなったとき用の手順でした。

今回、SELinux の問題で起動できなくなっているのは、
「メモリエラー」による異常終了がトリガーになって起きている問題です。

皆さんはSELinux を無効化して起動して設定を修正すれば元通りですが、
私の場合SELinux を無効化すれば起動はできるのですが、有効化すると起動が出来ないので根本的な解決には至っていません。

SELinux の問題を修正して起動する。

今回の「Failed to load SELinux policy」の原因

いろいろと試した結果、今回のSELinux エラーの原因は、

「VMがメモリエラーで異常終了したことをトリガーにSELinux のラベリングでエラーが発生し、
起動時にSELinux がいろいろなサービスへのアクセスをブロックしてしまっていた結果。」

と推測されます。

起動時の画面。

画像に alt 属性が指定されていません。ファイル名: image-77.png

この問題を修正するには、起動時に「enforce=0 autorelabel=1」を設定して、
リラベルを実行してから再起動すれば解決できることが分かりました。

修正の手順

起動時のコア選択画面でキーボードの【E】を押す。

画像に alt 属性が指定されていません。ファイル名: image-298.png

エディット画面に移動するので、以下の位置(LANG=ja_JP.UTF-8 の後ろ)に
「 enforce=0 autorelabel=1 」を追加して、【Ctrl】+【X】を押します。

パッシブモードで起動しているのはラベルエラーが多い場合、
パッシブモードでないとリラベルが実行できないからです。

リラベルが実行されているのがわかる。

この後、自動的に再起動され、通常通り起動できるようになりました。

■ 設定値については以下のページを参照してください。

16.2.6. システムの起動時に SELINUX モードの変更

以上です。

Posted in Linux

関連投稿

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です