From 81fd230419b0cfd052b08fc1ed352bb7d49975df Mon Sep 17 00:00:00 2001 From: Gerard Beekmans Date: Sat, 19 Feb 2005 22:16:42 +0000 Subject: Trunk is now identical to Testing git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@4648 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689 --- chapter07/usage.xml | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 106 insertions(+), 1 deletion(-) (limited to 'chapter07/usage.xml') diff --git a/chapter07/usage.xml b/chapter07/usage.xml index 918f981f7..5baede25b 100644 --- a/chapter07/usage.xml +++ b/chapter07/usage.xml @@ -7,7 +7,112 @@ How Do These Bootscripts Work? + +Bootscripts +usage -See testing +Linux uses a special booting facility named SysVinit that is +based on a concept of run-levels. It can be quite +different from one system to another, so it cannot be assumed that +because things worked in <insert distro name>, they should work +the same in LFS too. LFS has its own way of doing things, but it +respects generally accepted standards. + +SysVinit (which will be referred to as init from +now on) works using a run-levels scheme. There are seven (from 0 to 6) +run-levels (actually, there are more run-levels, but they are for +special cases and are generally not used. The init man page describes +those details), and each one of those corresponds to the actions the +computer is supposed to perform when it starts up. The default +run-level is 3. Here are the descriptions of the different run-levels +as they are implemented: + +0: halt the computer +1: single-user mode +2: multi-user mode without networking +3: multi-user mode with networking +4: reserved for customization, otherwise does the same as 3 +5: same as 4, it is usually used for GUI login (like X's xdm or KDE's kdm) +6: reboot the computer + +The command used to change run-levels is init +[runlevel], where +[runlevel] is the target run-level. For +example, to reboot the computer, a user would issue the init +6 command. The reboot command is an +alias for it, as is the halt command an alias for +init 0. + +There are a number of directories under /etc/rc.d that look like rc?.d (where ? is the number of the +run-level) and rcsysinit.d, all +containing a number of symbolic links. Some begin with a +K, the others begin with an +S, and all of them have two numbers following the +initial letter. The K means to stop (kill) a service and the S means +to start a service. The numbers determine the order in which the +scripts are run, from 00 to 99—the lower the number the earlier it +gets executed. When init switches to another run-level, the +appropriate services get killed and others get started. + +The real scripts are in /etc/rc.d/init.d. They do the actual +work, and the symlinks all point to them. Killing links and starting +links point to the same script in /etc/rc.d/init.d. This is because the +scripts can be called with different parameters like +start, stop, +restart, reload, and +status. When a K link is encountered, the +appropriate script is run with the stop +argument. When an S link is encountered, the appropriate script is run +with the start argument. + +There is one exception to this explanation. Links that start +with an S in the rc0.d and rc6.d directories will not cause anything +to be started. They will be called with the parameter +stop to stop something. The logic behind this +is that when a user is going to reboot or halt the system, nothing +needs to be started. The system only needs to be stopped. + +These are descriptions of what the arguments make the scripts +do: + + + +start +The service is started. + + + +stop +The service is stopped. + + + +restart +The service is stopped and then started again. + + + +reload +The configuration of the service is updated. +This is used after the configuration file of a service was modified, when +the service does not need to be restarted. + + + +status +Tells if the service is running and with which PIDs. + + + +Feel free to modify the way the boot process works (after all, +it is your own LFS system). The files given here are an example of how +it can be done. + -- cgit v1.2.3-54-g00ecf