redhat9のグラフィカルログイン(?)の仕組み

redhat9のグラフィカルログイン(?) について,認証後からwindow manager が起動するまでの処理について調べた.

/etc/X11/prefdm

グラフィカルなログイン画面を起動するための準備を行うシェルスクリプト.処理としては

  • PATH変数 を設定する.
  • /etc/profile.d/lang.sh があれば 読み込む
  • /etc/sysconfig/autologin があれば autologin する.
  • /etc/sysconfig/desktop の内容に従い gdm や kdm を起動する.

ってな事を行う.

手元のredhat9なマシンはgdmが起動されるので,続けてgdmを用いた場合の処理を調査.

gdm の処理

gdmの設定は/etc/X11/gdm/gdm.conf で行う.重要そうなパラメタを以下に列挙.

[debug]
Enable=false
[daemon]
SessionDir=/etc/X11/gdm/Sessions/
PostSessionScriptDir=/etc/X11/gdm/PostSession/
PreSessionScriptDir=/etc/X11/gdm/PreSession/

SessionDir に置いたしたファイル名が,gdmの画面で選択できる セッションの一覧に出てくるみたい.

gdmにより選択されたセッションが立ち上がるまでの処理

選択したセッションに従い,gdm (正確には gdm-binary)は,gdm.conf の内容に従い 下記のスクリプトを順に実行する.

  • /etc/X11/gdm/PreSession/Default
  • exec /etc/X11/xdm/Xsession [選択したセッション名]
  • /etc/X11/gdm/PostSession/Default


具体例として,たとえば Gnome が選択された場合なら,次の順に実行する.

  • /etc/X11/gdm/PreSession/Default
  • exec /etc/X11/xdm/Xsession gnome
  • /etc/X11/gdm/PostSession/Default

/etc/X11/xdm/Xsession

Xsession は,引数に セッション名をとるシェルスクリプトである.処理の概要としては,

  • ~/.Xmodmap があれば,xmodmap ~/.Xmodmap を行う.
  • /etc/X11/xinit/xinitrc.d/* を片っ端から実行する
  • /usr/bin/ssh-agent があれば,起動する.

最後に window manager を起動する.

まず

  • /usr/share/apps/switchdesk/Xclients.[選択したセッション名]
  • ~/.xsession
  • ~/.Xclients
  • /etc/X11/xinit/Xclients

を順に探し,見つかればそれを実行.

みつからなければ xsm を実行する.

これでなんらかの window manager が立ち上がる.