2011/01/30

SLiMでXfceなCentOSにハマる

前回、SLiMを入れて喜んでいたけれど、色々と問題が出てきた。
亊の発端は、職場のCentOS機を新しく調達したマシンに移行する作業だった。
新しいマシンは、Corei5でAsrockなドスパラ仕様。
当初は、GDM+Xfce4環境で構築していたけど、
スクリーンセーバーが作動すると次回操作時にモニタが復帰出来なかった。
原因は、gnome-screensaverにあると見て、Gnome環境を極力捨てる方向に転換した。
そこで、SLimでXfceなCentOSに至った。
真面目に構築すると、検証環境では気付かなかった問題が色々出てきた。

まずは、scim。
当たり前ではあるけど、xinitrcをslim用でテキトーに作った結果、scimが起動しなかった。
これについては、
#!/bin/sh
DESKTOP=¨SLIM¨
DISPLAYMANAGER=¨SLIM¨
PREFERRED="startxfce4"
等と、改めて/etc/sysconfig/desktopを記述して回避した。

次に、xfceのアクションボタン(ログアウト等)を押すと、
「再起動」と「電源を切る」が利用できない状態だった。
ググってみると、「んなもん、sudo shutdown すりゃいいじゃん」的な答えがあってゲンナリしたけど、
本家FAQに「Xfce を使用しているときにコンピュータのシャットダウンや再起動ができないんです」なるトピックがあった。
これに従って、
groupadd power
gpasswd -a hogehoge power
vi /etc/dbus-1/system.d/hal.conf
等と、実施して解決した。

そして最後にgnome-screensaver外し。
gnome-screensaverを削除して、新たにxlock-moreを入れた。
というのも、画面ロック(xflock)がスクリーンセーバーに依存していた為。
以上で当初の目的を達成できた...が、モニタ復帰は微妙に出来ていなかった。
とりあえず、ググってみた結果、xorg.confのServerLayoutに
Option "blank time" "0"
Option "standby time" "0"
Option "suspend time" "0"
Option "off time" "0"
を追記して様子見中。
それにしても、紆余曲折した原因はX起動フローを理解していないことだったと痛感した

2011/01/27

GDMからSlimへ移行

業務利用しているCentOS 5.5機はメモリーが厳しい環境な為、
去年の秋に軽量化としてgnomeからxfceに移行した。
とはいえ、gdmは残留していたことが心残りだった。
手持ちの化石ノートに軽量化したdebianを入れたついでに試してみたSlimをCentOSにも入れてみる。

残念ながら、yumで一発完了とはいかないようなので、本家から辿ってソースを取得する。
ちなみに構築時のバージョンは、1.3.2。
尚、ビルド時の依存ライブラリを事前に導入しておく。

yum install gcc-c++ libX11-devel libXft-devel libjpeg-devel libpng-devel


後は、流れ作業...

wget http://prdownload.berlios.de/slim/slim-1.3.2.tar.gz
tar xf slim-1.3.2.tar.gz && cd slim-1.3.2
./configure
make && make install

これで一通り導入される。
が、以降の設定変更をしないと利用できない。

  1. /etc/sysyconfig/desktopの作成
  2. /etc/X11/prefdmの変更
  3. ~/.xinitrcの作成
[ /etc/sysyconfig/desktopの作成 ]

#!/bin/sh
DESKTOP=¨SLIM¨
DISPLAYMANAGER=¨SLIM¨

等と記述したファイルを作成する。
この設定で、後述 prefdmを切り替える。

[/etc/X11/prefdmの変更]

if [ -f /etc/sysconfig/desktop ]; then
        . /etc/sysconfig/desktop
        if [ "$DISPLAYMANAGER" = GNOME ]; then
                preferred=/usr/sbin/gdm
        elif [ "$DISPLAYMANAGER" = KDE ]; then
                preferred=/usr/bin/kdm
        elif [ "$DISPLAYMANAGER" = XDM ]; then
                preferred=/usr/bin/xdm
        elif [ "$DISPLAYMANAGER" = SLIM ]; then
                preferred=/usr/bin/slim
        elif [ -n "$DISPLAYMANAGER" ]; then
                preferred=$DISPLAYMANAGER
        fi
fi

等とgdmやxdmと同様に、preferredの設定を追記する。

[~/.xinitrcの作成]
make install時に作成される/etc/slim.confに従って、

DEFAULT_SESSION="gnome" case $1 in kde) exec startkde ;; xfce4) exec startxfce4 ;; fluxbox) exec startfluxbox ;; *) exec $DEFAULT_SESSION ;; esac

等と記述したファイルを作成する。
他にもやり方は色々あるだろうけど、面倒なのでこれでヨシとした。
尚、このステップを省くと、
「 Failed to Execute Login command 」
と出力されて無限ループにハマるので注意が必要!

[/etc/slim.confの変更]
sessionsに利用するxsessinを必要に応じて追記する
make install で導入した直後は、

sessions xfce4,icewm,wmaker,blackbox

と記述されていた。
軽量系がそろっている当たりにSlimのターゲットユーザーが滲み出ている。
ちなみに化石ノートに構築したDebianでは、
slim.confの編集のみで一発利用できた。
ディストロ利用者層の違いか...