You could also try the following:

http://fedorafastboot.wiki.sourceforge.net/The+Runlevel+Scheme

It is something I have been working on for a couple of months and is a little rough around the edges. Mainly developed for fedora but it is fairly generalised so I guess it can easily be ported. There are no 1, 2 and 3 scripts as described in the runit docs. Runit is controlled by inittab. Each runlevel change runs a runsvchdir command to a different directory. So for each service you are monitoring you will need a symlink for that service in the runlevel directories. You will need to put a 'runsvdir -P runlevel1' command somewhere early in the startup - I have it right after there is a r/w filesystem and selinux relabel or just as the last command in rc.sysinit.

so something like :

runsvchdir runlevel1
runsvdir -P /var/service

runlevelS can be symlinked to runlevel1 or have it's own directory.

 Init is still process 1 and init runlevels run as normal. No changes to the kernel parameters are neccessary (as it is still init). The checksrv.sh and checksrvgtk.sh (gui for x using zenity) scripts are quite useful in seeing what services are running/stopped or failing and they should work fine in Suse (there might be bashisms that need sorting to get them working ok). Annvix distro has a pretty good script for managing runit services (which works on fedora, but there are long delays (~2-3mins at least on fedora) while it figures out if a service is failing. The above scripts can get the status quicker although there is a small chance it might be inaccurate (1 in every 100 times it is run) for a failing service.

The init scripts are direct ports of the fedora scripts so they might only be helpful to you as additional examples of how to start a particular services.

I haven't done much work on the runlevel scheme as I mainly use the incremental scheme (which gets me to a desktop fast). If you try it I would appreciate any feedback on what works and more importantly what doesn't.

regs
Rehan

-----Original Message-----
From: Bernhard Graf [mailto:list-supervision@augensalat.de]
Sent: Sat 1/5/2008 00:15
To: supervision@list.skarnet.org
Subject: Re: using runit as init

Mike Buland wrote:

> In general, if you want to retain init-style runlevels, then you
> don't want to replace SysV init.  I have switched to runit entirely,
> it manages every service, and it does indeed support "runlevels."
> See
> http://smarden.org/runit/runsvchdir.8.html for details.  Each runit
> runlevel is really just another service directory, runsvchdir changes
> which service directory you are using.  the runit "init" program is
> provided mainly for compatibility.
>
> There is no reason for runlevels to be numbered, and the kernel
> offers no support for runlevels, nor do any bootloaders.  When you
> pass 2, 3, 4, S, etc. to the kernel, it is ignored as an unrecognized
> parameter, but made available to running processes a number of ways.
> Runit makes the commandline as well as any variables that are set on
> the kernel commandline available to the script 1 (and maybe 2 and 3,
> but I use it in 1).  Therefore if you set a variable in the
> bootloader on the kernel commandline named "runlevel" then you can
> use that in script 1 to change your runlevel.
>
> However, I would say based on the way you are using runit as process
> 1, you would probably be better off sticking with sysvinit and adding
> runsvdir to your inittab (a script very similar to the example script
> 2 provided with runit is just what you want).

As I wrote in my previous email I want an easy way to switch from SysV
init to runit (or may be another one that supports process
supervision). Since I have to care for a couple of production systems
this switch must meet some conditions:
- full support for the old init system
- keep manual adjusting to a minimum

ATM I'm starting daemontools svscan from inttab on those hosts in
addition to the normal SysV init stuff. This works but is not really
pretty - I'd like to have a more consistent administration interface.

The goal is to install runit with RPM, reboot and then link the
daemontools things into runit's service directory.

> As for the runlevel code, I got this from this very list a long time
> ago, give it a shot in script 1:
>
> # Set runlevel to:
> # - single       if kernel has param: S
> # - RUNLEVELNAME if kernel has param: runlevel=RUNLEVELNAME
> # - default      if kernel has no params or unable to set requested
> runlevel grep -q '\(^\| \)S\( \|$\)' /proc/cmdline &&
> runlevel='single' runsvchdir ${runlevel:-default} || runsvchdir
> default

Good tip! /proc/cmdline seems a smart way. Question 1 resolved. :-)

> utmp/wtmp support is done, I believe, through an external program,
> check out the getty*/finish scripts that are provided with the
> default distribution.

utmpset only clears lines from utmp, there is no way of setting anything
as the name suggest.

--
Bernhard Graf