Accelerated-kde for KNOPPIX - 旧 Wiki アーカイブ
!
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