ランレベル5でXが起動しなくなった事例と対処


発生した現象

Intel HD530 Graphics搭載のあるノートPCにFedora24をインストールして問題なく使っていた。
ただし、カーネルオプションに"i915.preliminary_hw_support=1"を追加して使っていた
が、これは別の話である。最近のカーネル(少なくとも4.11.12以降)ではこのオプション
は削除されていて、あってもなくても影響しない。

NVIDIAのCUDAのrpmレポジトリを追加して使っていたが、これを削除して、もういちど追加
した。さらに、wayland関連のパッケージを追加して、削除して、もう一度追加した。する
と、/etc/X11/以下の設定ファイルはもとのままであるのに、ランレベル5でXが起動しなく
なった。

症状としては、以下のとおり。
(1) ランレベル1やランレベル3で、
# startx
で起動するとXもWindow Managerもきちんと起動する。
ただし、私は、 /etc/X11/xinit/Xclients をバックアップした上で中身を以下のように
単純なものにしている。
#!/bin/bash
xfce4-session
GNOMEユーザは、xfce4-sessionの代わりにgnome-sessionとしているだろう。おそらく、
Xclientsの設定は、今回の件には関わりがなかったと思われる。

(2) ランレベル5では、Xを起動しようとして、ディスプレイが延々と点滅を繰り返す。
/var/log/Xorg.0.logに、以下のようなエラーが残る。
(EE) Screen 0 deleted because of no matching config section.
また、ときどき"device not found"というエラーも残る。

(3) こういうときの常套手段として、/etc/X11/xorg.conf.d/20-intel.conf というファイル
を作成し、以下のような内容で保存してみた。
Section "Device"
    Identifier     "Card0"
    Driver         "intel"
#    Driver         "fbdev"
    VendorName     "Intel Corporation"
    BusID          "PCI:0:2:0"
    Option         "AccelMethod" "sna"
EndSection
ここで、BusIDは、以下のようにして調べることができる。
$ lspci | grep VGA
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
01:00.0 VGA compatible controller: NVIDIA Corporation GM206M [GeForce GTX 965M] (rev a1)
00:02.0というのが、"PCI:0:2:0"に対応する。
さて、この常套手段で通常、解決するはずだが、相変わらずランレベル5では、ディスプレイ
が明滅するだけでXがあがってこなかった。

解決した方法

試行錯誤の末、以下のようにしたら、ランレベル5でもXがあがってくるようになった。

(1) PCを再起動して、GRUBの起動画面で、'e' をタイプし、"rhgb quiet"とか書いてあるところ
に、カーネルオプション"single"をスペース区切りで追加。そのままCtrl+Xで起動する。

(2) rootパスワードでログインしたら、/etc/X11/xorg.conf.d/20-intel.conf などの余計な
設定ファイルを、別のフォルダ、例えば/etc/X11/xorg.conf.d.bak などに移動する。ただし、
/etc/X11/xorg.conf.d/00-keyboard.conf は残しておく。また、/etc/X11/xorg.conf も、とり
あえず/etc/X11/xorg.conf.bak といったファイル名に変更しておく。最近では、xorg.confは
置かず、modesettingモジュール任せで自動でモード設定させるのが標準的であるようだ。

(3) 次に、ディスプレイマネージャーを起動してみる。私はlightdmを使っているので、
# service lightdm start
で起動してみた。あっさり起動した。gdmユーザは、lightdmの代わりにgdmを使うと良い。
lightdmのログイン画面に、一般ユーザでログオンし、画面サイズを arandr で調整した。
arandrがない場合は、GNOMEなどデスクトップ環境標準の設定ツールを使っても良いだろう。

(4) 一般ユーザをログアウトする。続いて、Ctrl+Alt+F2などを押してコンソールを出し、
rootでログオンして、
# service lightdm stop
でディスプレイマネージャを終了する。

(5) lightdmはきちんと動くことが分かったので、これがランレベル5で立ち上がるように
systemdの設定ディレクトリのシンボリックリンクを調整する。
# ln -sf /usr/lib/systemd/system/lightdm.service /etc/systemd/system/display-manager.service

(6) PCを再起動したら、ランレベル5できちんとXとlightdmが立ち上がるようになった。
なお、なぜかibusが動作停止状態で日本語入力ができなくなっていたので、
$ ibus-setup
でibusの再設定とデーモンの起動をする必要があった。

戻る