K Desktop Environment • Support • 古い資料

[u'Accelerated-kde for KNOPPIX - PukiWiki']

KDE起動の高速化方法

CDブートのKNOPPIXを前提として、KDE起動の最適化方法を考察する。

startkdeスクリプトの解析

まず、結論として、knoppix起動用のstartkde-knoppixのようなものを用意し、
そちらを起動時に使用するようにするのが最適だと思われる。

以下では、スクリプト内部の解析を行う。

ブートシーケンスの前処理部

startkdeスクリプトで行われている最初の処理

# Check if a KDE session already is running
if dcop kdesktop >/dev/null 2>&1; then
        echo "KDE seems to be already running on this display."
        xmessage -geometry 500x100 "KDE seems to be already running on this display." > /dev/null 2>/dev/null
        exit 1
fi

は、既にKDEが起動されているかどうかをテストしているので、KNOPPIXでは必要ない処理だと思われる。
念のためカットできないと思われる。また、バックグラウンドでの実行もできないだろう。

次の

if test -z "$XDM_MANAGED" || echo "$XDM_MANAGED" | grep ",auto" > /dev/null; then
  xsetroot -solid "#C0C0C0"
fi

もカットできないし、おそらくすぐ実行が終わるので、カットする必要がない。

ブートシーケンスのksplash起動前

ブートシーケンスの始めで、kdehomeの設定処理があるが、$HOME/.kdeに決めうちに変更して問題ないだろう。

その後、フォントディレクトリの初期化処理が走る。

# Activate the kde font directories.
#
# There are 4 directories that may be used for supplying fonts for KDE.
... (中略)...
# Only do usr_fdir and usr_odir if they are *not* listed in fontpaths
test -d "$sys_odir" && xset +fp "$sys_odir"
test $do_usr_odir -eq 1 && test -d "$usr_odir" && (mkfontdir "$usr_odir" ; xset +fp "$usr_odir")
test $do_usr_fdir -eq 1 && test -d "$usr_fdir" && (mkfontdir "$usr_fdir" ; xset fp+ "$usr_fdir")
test -d "$sys_fdir" && xset fp+ "$sys_fdir"
... (中略)...
# Get Ghostscript to look into user's KDE fonts dir for additional Fontmap
if test -n "$GS_LIB" ; then
    GS_LIB=$usr_fdir:$GS_LIB
    export GS_LIB
else
    GS_LIB=$usr_fdir
    export GS_LIB
fi

ここは、おそらくKNOPPIXの場合は環境特有の値を使って処理を簡素化できるだろう。
今後USBメモリからのブートような形で環境を変更できるようになる場合には、
ブートオプションの対応で良いと思う(フォントを追加する人は少ないだろう)。

その少し後にある、以下のkpersonilzerの実行処理は、削っても問題ないだろう。

# run KPersonalizer before the session, if this is the first login
if kreadconfig --file kpersonalizerrc --group General --key FirstLogin --default true --type bool; then
    # start only dcopserver, don't start whole kdeinit (takes too long)
    echo 'startkde: Running kpersonalizer...'  1>&2
    dcopserver
    kwin --lock &
    kpersonalizer --before-session
    # handle kpersonalizer restarts (language change)
    while test $? -eq 1; do
        kpersonalizer --r --before-session
    done
    dcopserver_shutdown
    # shutdown will also make kwin quit, give it time to do so
    sleep 1
fi

ksplashの起動後の処理

ここでカットできる部分は、ざっと見た限り存在しない。
簡素化するためには、kdeinit等のソースに手を入れる必要がある。

周辺機器の設定をしているところを並列にするなどできれば、 それだけで速くなるとは思うが……。

Counter: 22, today: 1, yesterday: 0

[ Edit ]

Global navigation links