Some things about SystemV initialisation First off, runlevels. There are 6 of them. Basically, linux [un*x] is in a runlevel, and you can switch between them, and they do different things. The general concept is that: 0 is Off [halted] 1 is single user 2 is multi-user, no networking 3 is normal multi-user, with networking [ie, the console, when you start x with startx] 4 or 5 is managed X [ie, when you have a graphical login] 6 is rebooting. It should be noted that this is only the traditional unix way of doing things [to which slackware, redhat, and some others, adhere, but many distros do something different; eg debian's runlevel 2 is what I call runlevel 3 above] It should also be noted that this, while being the ideal, is a touch too clear. Usually, things are far more nebulous that this... I go to 3 by default, as I don't like point-and-click for anything that's not a game (= Most distros of the Mandrake-or-Redhat-or-SuSE calibre take you to a runlevel with managed X to start with. Usually, under runlevels 3,4,5, you get things like webservers, SAMBA, etc, etc all started. 1 is almost nothing running. And while this is a lovely theory, in practice it's not so good. You probably won't find any distros that come in such a way as you'd be able to cleanly go from runlevel 2 to 3, say. For eg, it turns out that in linux, a lot of the time, the init scripts for runlevel 3 are nothing more than the scripts that _aren't_ in runlevel 2, ie, just the bits necessary to bring up the network. Not an ideal solution, but it's what we've got, so make the most of it. To switch between them, you need to [as root] type "/sbin/telinit runlevel", so, for eg, you'd type "/sbin/telinit 1". To switch your machine off, "/sbin/telinit 0", etc, etc. Right. That's runlevels sorted. Now you have to know what makes them function as such... /etc/rc.d/rc{0-6}.d are directories full of links to scripts in /etc/rc.d/init.d For the slack users out there, all you have to do is create these directories, and they'll magically do sysV init. [as opposed to BSD-style init, which is the default] Note that some distros apparently put those in /etc/rc{0-6}.d When changing runlevel, they're run through in alphabetical order, so if you need an order to start things up [you might need a particular bit of system mounted before you can start a specific service, for example], just give them ordered numbers, ie:/etc/rc.d/rc3.d/S45foo will start before /etc/rc.d/rc3.d/S87bar The S at the start means "Start", and the K at the start means "Kill". Anything else is ignored. So to stop a service from working either delete it, or rename it so that it starts with something else. "X" is a good choice, for reference. So you have a whole bunch of things of the form /etc/rc.d/rc{0-6}.d/SXXfile -> /etc/rc.d/init.d/file and /etc/rc.d/rc{0-6}.d/KXXfile -> /etc/rc.d/init.d/file They take params "start", "stop", and they sometimes take "restart", "status", and some take some others, too. If you're using Apache webserver, for example, there's a "graceful" option that does a graceful restart; it doesn't just restart, it stops taking requests, and once it's finished all the requests it's currently dealing with, it restarts itself. Pretty neat, huh? Basically, to move to each runlevel, all scripts "KXXsomething" in the directory for the runlevel you're moving to are called with the parameter "stop", and then all the ones with "SXXsomething" in that directory will be called with the parameter "start". The kills will ALWAYS be done first, with the starts done second. Yes, it's perfectly acceptable to symlink rc0.d and rc6.d to the same thing, as the machine gets cycled either way... Unless you have a really good reason. There are tools out there to deal with these things automatically, by the way... RedHat has one called "chkconfig", but I'd urge you to find out how these things work, do a few by hand, and _then_ do it with a utility... trust me; it's one of those things that one day _will_ bite you if you don't know how to do it by hand. Anyway, enjoy, Gary (-;