SELinuxを無効にしたらカーネルパニック
CentOS6環境でSELinuxを有効にした場合と無効にした場合の動きの違いについてチェックしようと2つの環境を作ろうと作業を始めた。SELinuxをdisabledにするため/etc/sysconfig/selinixファイルの中の設定をdisabledにしてリブートする…
なんとブートしようとして”Kernel panic – not syncing: Attempted to kill init!”というメッセージが出てブート途中で停止。あらーって感じ。調べるとブートの時にenforcing=0というパラメータが必要だそうだ。grubの設定ファイルに書けばいいのだが、その前にカーネルが立ち上がらない。
つまり、現在のブートパラメータにenforcing=0をつけて立ち上げなければならない。あちこちのサイトにgrubのコマンドラインに手でkernel (hd0,0)/boot~ みたいなことを書け、とかいているがもっと楽にできる。
まずgrubのメニュー画面の時に立ち上げるカーネルを選択した状態で”e”のキーを押してやると、grubのコマンドシーケンスの編集画面になる。
さらにそこにカーネルとカーネルへのパラメータの行にカーソルをもっていき、再度”e”としてコマンド行を編集モードにする。そこの最後に”enforcing=0″を入力し、その後ブートする。
これで立ち上がったら/boot/grubの下にあるgrub.confの中のパラメータを変更してやり恒久的にenforcing=0が効くようにしてやる。grub.confに最初にちゃんとパラメータを設定しなかったのが失敗だったのだが、筆者のように/etc/sysconfig/selinuxのみしか言及していない説明を読んで、そのまま実行してしまう人は多いようだ。
それにしてもKernel panic – not syncing: Attempted to kill init!からは何が問題なのかよくわからない。Virtual Boxを使って実験をしているので簡単にオペレーティングシステムを含めた実行環境のクローンを作ったり、スナップショット時点まで戻ったりすることができるが、これは普通にハードにインストールする人にはクリーンインストールをしなおす人がいるかも知れない。ちょっと大変かもだ。