According to Wikipedia, 'S' is supposed to be a standard runlevel: "Single-User Mode". But if I'm not mistaken, the Single-User mode on Debian is Runlevel 1. One Debian article I found claims, that 'S' is a runlevel "that the system uses on it's way to another runlevel". Interesting...
Actually, I had always pretty much ignored this runlevel so far, but today I played around with Firestarter (yes, really, an end-user firewall) just because I was curious, which firewall rules it would generate. But then I noticed, that it creates a startup hook in /etc/rcS.d, and I wondered, if my firewall script should maybe have that, too?
Update
Now I'm even more interested in knowing what it actually is on Debian/Ubuntu, because the Shorewall package (which is a strongly "Debianized" package) also creates its (only!) startup hook in rcS.d!
All the above seem to skirt round a direct answer to the question asked.
From all I can find, the
rcS.d
scripts are implemented as is theS
stood for "startup" not "single".They are all run during boot. If you then want to use run level 1, the scripts in
rc1.d
are run ( which may well be pretty empty, given all the work we just did inrcS
)More to the point, the
rcS
scripts are run on the way torc3
- so effectively the system places itself in single-user mode, then has a re-think and decides what it REALLY ought to be doing. Very confusing and mostly ill-documented.As proof, if you examine
/etc/inittab
, you find:followed later by many lines resembling:
I look at the runlevels in this way:
Thus, a firewall is really needed if TCP/IP is up and running and that generally happens only in Init State 3.
Runlevel 1 is also known as runlevel s.
In Debian based systems this is the single-user / minimal mode. See Debian Runlevel:
S is for single user mode.
http://wiki.debian.org/RunLevel
In addition to the answer provided by mdpc, In run level 1, no daemons (services) are started.