ページ更新: 2005-03-18 (金) (4872日前)

(2004-07-27 新規作成)

Cygwin で init って一般的じゃないよなあと思ったり。 Apacheだけ使う、とか、PostgreSQL だけつかう、とかだと、 サービスにしちゃうから出番が無いし。

Windows には 特権ユーザ (root) がないから、勝手が違いそうだし。

目次

[編集]

情報源 #

[編集]

設定 #

/usr/bin/init-config を実行する。

$ init-config
Overwrite existing /etc/inittab file (answer "no" if you have initscripts instal
led)? (yes/no) yes  ★ no にすべきだが、わざと yes にしてみる。
Creating default /etc/inittab file
Overwrite existing /etc/rc file? (yes/no) yes
Creating default /etc/rc file
Do you want to set up init to run as NT service? (yes/no) yes
Cygwin init サービスを開始します.
Cygwin init サービスは正常に開始されました。

$ net stop init
Cygwin init サービスを停止中です.
Cygwin init サービスは正常に停止されました。

/etc/inittab がこんなの。

# id:runlevels:action:process
id:3:initdefault:
rc::bootwait:/etc/rc
#S0:2345:respawn:/sbin/agetty -L -T vt100 -n ttyS0 9600 ttyS0

/etc/rc

#!/bin/sh
# Clean up utmp database
>/var/run/utmp
#rm -rf /tmp/*

さっさと元に戻す。

$ /etc/postinstall/initscripts.sh.done

Configuration finished. Have fun!

/etc/inittab

#
# inittab       This file describes how the INIT process should set up
#               the system in a certain run-level.
#
# Author:       Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
#               Modified for RHS Linux by Marc Ewing and Donnie Barnes
#

# Default runlevel. The runlevels used by RHS are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:

# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6

# Things to run in every runlevel.
#ud::once:/sbin/update

# Trap CTRL-ALT-DELETE (SIGINT on cygwin)
#ca::ctrlaltdel:/sbin/shutdown -t3 -r now

# When our UPS tells us power has failed, assume we have a few minutes
# of power left.  Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
# UPS connected and working correctly.
#pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down"

# If power was restored before the shutdown kicked in, cancel it.
#pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled"


# Run agettys in standard runlevels
#S0:2345:respawn:/sbin/agetty -L -T vt100 -n ttyS0 9600 ttyS0

# Run xdm in runlevel 5
# xdm is now a separate service
#x:5:respawn:/etc/X11/prefdm -nodaemon
[編集]

補足 #

[編集]

chkconfig (2004-11-15) #

$ cygcheck -f /usr/sbin/chkconfig.exe
chkconfig-1.2.24h-1
$ cygcheck -l chkconfig
/usr/doc/chkconfig-1.2.24h/INSTALL
/usr/doc/chkconfig-1.2.24h/README
/usr/doc/Cygwin/chkconfig-1.2.24h.README
/usr/man/man8/chkconfig.8
/usr/sbin/chkconfig.exe
[編集]

initscript (2004-11-15) #

initscriptパッケージのファイル一覧。

$ cygcheck -l initscripts
/etc/postinstall/initscripts.sh
/etc/rc.d/init.d/functions
/etc/rc.d/init.d/sshd
/etc/rc.d/rc
/etc/rc.d/rc.local
/etc/rc.d/rc.sysinit
/usr/doc/Cygwin/initscripts.README
[編集]

sysvinit (2004-11-15) #

パッケージに含まれるファイルの一覧。

$ cygcheck -l sysvinit
/bin/pidof
/etc/postinstall/sysvinit.sh
/sbin/init.exe
/sbin/killall5.exe
/sbin/runlevel.exe
/sbin/telinit
/usr/bin/last.exe
/usr/bin/lastb
/usr/bin/mesg.exe
/usr/bin/utmpdump.exe
/usr/bin/wall.exe
/usr/include/initreq.h
/usr/share/doc/Cygwin/sysvinit.README
/usr/share/doc/sysvinit-2.84/COPYRIGHT
/usr/share/doc/sysvinit-2.84/README
/usr/share/man/man1/last.1
/usr/share/man/man1/lastb.1
/usr/share/man/man1/mesg.1
/usr/share/man/man1/wall.1
/usr/share/man/man5/initscript.5
/usr/share/man/man5/inittab.5
/usr/share/man/man8/init.8
/usr/share/man/man8/killall5.8
/usr/share/man/man8/pidof.8
/usr/share/man/man8/runlevel.8
/usr/share/man/man8/telinit.8

/usr/bin/init-config は、/etc/postinstall/sysvinit.sh を実行すると 作成される。つまり、setup.exe でインストールしたときに作成されるわけだ。

ちなみに、このファイルは sysvinit.sh と同じ。

$ diff /usr/bin/init-config /etc/postinstall/sysvinit.sh.done; echo $?
0