Plamo-4.6 で upstart-0.3.9 を使う
とりあえず目標は現在の Plamo の起動スクリプトをそのまま動かす事.
make
configure で --enable-compat を付けないと,sysvinit 互換モードで起動に必要なコマンドがインストールされません.起動に必要なスクリプト群は /etc/event.d に置きます.
$ ./configure --prefix=/opt/upstart --sysconfdir=/etc --enable-compat # make install # tar zxvf example-jobs-0.3.9.tar.gz -C /etc/event.d
rc.S 呼び出し
起動するとまず /etc/event.d/rcS が呼ばれます.rcS の最後の方で
exec /etc/init.d/rcS
としている所を
exec /etc/rc.d/rc.S
とします.
rcS 終了後
/etc/event.d/rc-default が呼ばれます.このファイルでやることは特に変更はないのですが,実行するコマンドは /opt/upstart/sbin 以下のものを使わなければいけないので,
というように書き換えが必要です.
各 runlevel のファイル
rc-default で各 runlevel に移行します.Plamo-4.6 だと /etc/inittab が存在し,デフォルトでは
id:3:initdefault:
というようになっているので,何もしてないと runlevel 3 に移行するので,/etc/event.d/rc3 が呼ばれます.
デフォルトの runlevel を 4 にしている場合は /etc/event.d/rc4 が呼ばれます.
/etc/event.d/rc[2-5] の各ファイルの最後で
exec /etc/init.d/rc 3 (← rc3 ファイルの場合)
のように書かれている所を
exec /etc/rc.d/rc.M
と書き換えます.rc[2-5] のファイル全て rc.M を呼びます.
tty? ファイル
example-jobs-0.3.9.tar.gz には tty[1-6] の 6 つのファイルが付いてます.
それぞれ,各 runlevel に入った時に /sbin/getty を実行するように
start on runlevel 2 start on runlevel 3 start on runlevel 4 start on runlevel 5 stop on runlevel 0 stop on runlevel 1 stop on runlevel 6 respawn exec /sbin/getty 38400 tty1 linux
のように書かれています (これは tty1 ファイル).
まず,Plamo だと /sbin/getty はないので,ここを /sbin/agetty とします.これだけでも起動はしますが,このままだと各 runlevel に入った時点で agetty が実行されるので,rc.M の実行と重なってしまい,通常の Plamo の起動と異なります.そこで "start on runlevel 3" のような行を "start on stopped rc3" のように /etc/event.d/rc[2-5] ファイルの実行と同時に tty[1-6] を実行するようにします.
tty1 ファイルは以下のようになります.
start on stopped rc2 start on stopped rc3 start on stopped rc4 start on stopped rc5 stop on runlevel 0 stop on runlevel 1 stop on runlevel 6 respawn exec /sbin/agetty 38400 tty1
これでログインプロンプトは出ます.
rc0, rc6
これも /etc/event.d/rc[2-5] ファイルと同様で,スクリプトの最後の方で
exec /etc/init.d/rc 0
のような行があるので,
- rc0 ファイルは "exec /etc/rc.d/rc.0"
- rc6 ファイルは "exec /etc/rc.d/rc.6"
をそれぞれ呼びます.Plamo だと rc.0 は rc.6 へのシンボリックなので,まあ,両方 rc.6 でもいいんですがね.
rc1
これも同様で "exec /etc/init.d/rc 1" のような行を
exec /etc/rc.d/rc.K
のようにします.(これは未確認)
(追記) これはダメです.rc.K 内で telinit とか呼んでいるため.また調査します.
rcS-sulogin
このファイルは,起動時オプションでシングルユーザモードが指定されたとき ("S" とか "single" とか "-s" とか指定したとき) に実行されます.これもファイル中のコマンドを
のようにフルパス指定にします.sulogin コマンドは既存のをそのままなので "/sbin/sulogin" で OK です.
control-alt-delete
/etc/event.d/control-alt-delete ファイルは文字通り Ctrl+Alt+Del キーが押されたときのスクリプトで,リブートさせたい場合は必要です.これも "exec shutdown -r now "Control-Alt-Delete pressed" のように書かれている部分の shutdown コマンドをフルパスで /opt/upstart/sbin/shutdown にすれば OK です.
以上で,Plamo 上で Upstart が使えます.起動時のオプションとして
init=/opt/upstart/sbin/init
を指定すれば Ok です.grub.conf に以下のような行を追加で書いておけば良いですね.
title Plamo-4.6 (Upstart) root (hd0,1) kernel (hd0,1)/boot/vmlinuz root=/dev/hda2 ro vt.default_utf8=0 vga16 unicon=eucjp resume=/dev/hda1 init=/opt/upstart/sbin/init