« Bodhi(Ubuntu)での起動スクリプト:Upstart編 | トップページ | Windows7 インストールメモ »

2011/08/14

Bodhi(Ubuntu)での起動スクリプト:SysVinit編

  1. 基本路線は、/etc/init.d/skeletonという起動スクリプトサンプルを極力利用します。このため、Upstartの時とは違い、まず実行したいスクリプト単体を用意してみることにします。
  2. これだけでもUpstartの時よりも複雑になりますね。でもこれが一般的みたいですよ。確かにArchな人達が嫌になるのもわかる気が・・・。 ともかくこのファイルを/usr/local/sbin/laptop としました。 ファイル名はなんでもいいですが、15文字以内にしないと後で文句を言われることになります。回避方法はありますが、長い名前にこだわりもないのであれば15字以内で付けましょう。
    gksu leafpad /usr/local/sbin/laptop
    

    でエディタを起動して以下のコードコピペして保存します。

    #!/bin/sh
    # Power saving script for laptop
    sysctl -w vm.swappiness=1
    sysctl -w vm.vfs_cache_pressure=50
    # Make directories on ramdrive
    for dir in apparmor apt cups dist-upgrade ConsoleKit fsck gdm installer samba unattended-upgrades ;
    do
        if [ ! -e /var/log/$dir ] ; then
            mkdir /var/log/$dir
        fi
    done
    

    スクリプトが正しく動作しているか確認するために

    sudo /usr/local/sbin/laptop
    

    を行い、正常に動作することを確認します。例えば、

    cat /proc/sys/vm/swappiness
    cat /proc/sys/vm/vfs_cache_pressure
    

    で、値が正しく設定されていばOKです。或いは、前回のようにスクリプトにデバッグコードを埋め込んでも良いですが。

  3. /etc/init.d/skeletonに起動スクリプトのサンプルがあるので、これをlaptopという名前でコピーして編集。
  4. sudo cp /etc/init.d/skeleton /etc/init.d/laptop
    sudo chmod +x /etc/init.d/laptop
    gksu leafpad /etc/init.d/laptop &
    

    編集した結果のdiffは以下。

    --- /etc/init.d/skeleton 
    +++ /etc/init.d/laptop 
    @@ -1,6 +1,6 @@
     #! /bin/sh
     ### BEGIN INIT INFO
    -# Provides:          skeleton
    +# Provides:          laptop
     # Required-Start:    $remote_fs $syslog
     # Required-Stop:     $remote_fs $syslog
     # Default-Start:     2 3 4 5
    @@ -10,19 +10,17 @@
     #                    placed in /etc/init.d.
     ### END INIT INFO
     
    -# Author: Foo Bar 
    +# Author: sneez_k
     #
    -# Please remove the "Author" lines above and replace them
    -# with your own name if you copy and modify this script.
     
     # Do NOT "set -e"
     
     # PATH should only include /usr/* if it runs after the mountnfs.sh script
    -PATH=/sbin:/usr/sbin:/bin:/usr/bin
    -DESC="Description of the service"
    -NAME=daemonexecutablename
    -DAEMON=/usr/sbin/$NAME
    -DAEMON_ARGS="--options args"
    +PATH=/sbin:/usr/sbin:/bin:/usr/bin:/usr/local/sbin
    +DESC="Power saving script for laptop"
    +NAME=laptop
    +DAEMON=/usr/local/sbin/$NAME
    +DAEMON_ARGS=""
     PIDFILE=/var/run/$NAME.pid
     SCRIPTNAME=/etc/init.d/$NAME
     
    @@ -48,9 +46,9 @@
     	#   0 if daemon has been started
     	#   1 if daemon was already running
     	#   2 if daemon could not be started
    -	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
    +	start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
     		|| return 1
    -	start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
    +	start-stop-daemon --start --quiet --make-pidfile --pidfile $PIDFILE --exec $DAEMON -- \
     		$DAEMON_ARGS \
     		|| return 2
     	# Add code here, if necessary, that waits for the process to be ready
    

    テストとして、

    sudo service laptop start
    sudo service laptop stop
    sudo service laptop restart
    

    を行って、特にエラー等が出ないこと確認します。

  5. スクリプトを起動時に実行されるように登録します。
  6. sudo update-rc.d laptop defaults 60
    

    一応ユーザレベルのスクリプトなので起動順位落として60にしました。何も指定しないと20になります。
    削除したい場合には、

    sudo update-rc.d -f laptop remove
    

    で実行しないように出来ます。

んで、これらの動作を調べているうちに、自分のPCには不要なデーモンであるcpufreqとcpufrequtilsが動作しているのがわかりました。cpufreqの動作を調べる為にcpufrequtilsをインストールしたのがいけなかったみたいです。でもすぐにapt-get removeしたんだすけどね~?
鬱陶しいので、これを機に停止です。そういえば起動時にcpufreqデーモンを起動しているメッセージが出てましたね・・・

sudo update-rc.d -f cpufrequtils remove 
sudo update-rc.d -f loadcpufreq remove

少しすっきり。もっともこのSysVinitスクリプトの方は勉強のために動作確認だけしたものの、使う予定は今のところないです。動作確認だけしてremoveしちゃいました。

« Bodhi(Ubuntu)での起動スクリプト:Upstart編 | トップページ | Windows7 インストールメモ »

Bodhi Linux」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28800/52433008

この記事へのトラックバック一覧です: Bodhi(Ubuntu)での起動スクリプト:SysVinit編:

« Bodhi(Ubuntu)での起動スクリプト:Upstart編 | トップページ | Windows7 インストールメモ »