source: chapter07/usage.xml@ a2e555d

10.0 10.0-rc1 10.1 10.1-rc1 11.0 11.0-rc1 11.0-rc2 11.0-rc3 11.1 11.1-rc1 11.2 11.2-rc1 11.3 11.3-rc1 12.0 12.0-rc1 12.1 12.1-rc1 7.0 7.1 7.2 7.3 7.4 7.5 7.5-systemd 7.6 7.6-systemd 7.7 7.7-systemd 7.8 7.8-systemd 7.9 7.9-systemd 8.0 8.1 8.2 8.3 8.4 9.0 9.1 arm bdubbs/gcc13 ml-11.0 multilib renodr/libudev-from-systemd s6-init trunk xry111/arm64 xry111/arm64-12.0 xry111/clfs-ng xry111/lfs-next xry111/loongarch xry111/loongarch-12.0 xry111/loongarch-12.1 xry111/mips64el xry111/pip3 xry111/rust-wip-20221008 xry111/update-glibc
Last change on this file since a2e555d was 0cda898, checked in by Bruce Dubbs <bdubbs@…>, 13 years ago

Rewrite bootscripts and Chaper 7

git-svn-id: http://svn.linuxfromscratch.org/LFS/trunk/BOOK@9574 4aa44e1e-78dd-0310-a6d2-fbcd4c07a689

  • Property mode set to 100644
File size: 8.2 KB
Line 
1<?xml version="1.0" encoding="ISO-8859-1"?>
2<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
3 "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
4 <!ENTITY % general-entities SYSTEM "../general.ent">
5 %general-entities;
6]>
7
8<sect1 id="ch-scripts-usage">
9 <?dbhtml filename="usage.html"?>
10
11 <title>How Do These Bootscripts Work?</title>
12
13 <indexterm zone="ch-scripts-usage">
14 <primary sortas="a-Bootscripts">Bootscripts</primary>
15 <secondary>usage</secondary>
16 </indexterm>
17
18 <para>Linux uses a special booting facility named SysVinit that is based on a
19 concept of <emphasis>run-levels</emphasis>. It can be quite different from one
20 system to another, so it cannot be assumed that because things worked in one
21 particular Linux distribution, they should work the same in LFS too. LFS has its
22 own way of doing things, but it respects generally accepted standards.</para>
23
24 <para>SysVinit (which will be referred to as <quote>init</quote> from now on)
25 works using a run-levels scheme. There are seven (numbered 0 to 6) run-levels
26 (actually, there are more run-levels, but they are for special cases and are
27 generally not used. See <filename>init(8)</filename> for more details), and
28 each one of those corresponds to the actions the computer is supposed to
29 perform when it starts up. The default run-level is 3. Here are the
30 descriptions of the different run-levels as they are implemented:</para>
31
32<literallayout>0: halt the computer
331: single-user mode
342: multi-user mode without networking
353: multi-user mode with networking
364: reserved for customization, otherwise does the same as 3
375: same as 4, it is usually used for GUI login (like X's <command>xdm</command> or KDE's <command>kdm</command>)
386: reboot the computer</literallayout>
39
40 <sect2 id="conf-sysvinit" role="configuration">
41 <title>Configuring Sysvinit</title>
42
43 <indexterm zone="conf-sysvinit">
44 <primary sortas="a-Sysvinit">Sysvinit</primary>
45 <secondary>configuring</secondary>
46 </indexterm>
47
48 <indexterm zone="conf-sysvinit">
49 <primary sortas="e-/etc/inittab">/etc/inittab</primary>
50 </indexterm>
51
52 <para>During the kernel initialization, the first program that is run
53 is either specified on the command line or, by default
54 <command>init</command>. This program reads the initialization file
55 <filename>/etc/inittab</filename>. Create this file with:</para>
56
57<screen><userinput>cat &gt; /etc/inittab &lt;&lt; "EOF"
58<literal># Begin /etc/inittab
59
60id:3:initdefault:
61
62si::sysinit:/etc/rc.d/init.d/rc sysinit
63
64l0:0:wait:/etc/rc.d/init.d/rc 0
65l1:S1:wait:/etc/rc.d/init.d/rc 1
66l2:2:wait:/etc/rc.d/init.d/rc 2
67l3:3:wait:/etc/rc.d/init.d/rc 3
68l4:4:wait:/etc/rc.d/init.d/rc 4
69l5:5:wait:/etc/rc.d/init.d/rc 5
70l6:6:wait:/etc/rc.d/init.d/rc 6
71
72ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now
73
74su:S016:once:/sbin/sulogin
75
761:2345:respawn:/sbin/agetty tty1 9600
772:2345:respawn:/sbin/agetty tty2 9600
783:2345:respawn:/sbin/agetty tty3 9600
794:2345:respawn:/sbin/agetty tty4 9600
805:2345:respawn:/sbin/agetty tty5 9600
816:2345:respawn:/sbin/agetty tty6 9600
82
83# End /etc/inittab</literal>
84EOF</userinput></screen>
85
86 <para>An explanation of this initialization file is in the man page for
87 <emphasis>inittab</emphasis>. For LFS, the key command that is run is
88 <command>rc</command>. The intialization file above will instruct
89 <command>rc</command> to run all the scripts starting with an S in the
90 <filename class="directory">/etc/rc.d/rcsysinit.d</filename> directory
91 followed by all the scripts starting with an S in the <filename
92 class="directory">/etc/rc.d/rc?.d</filename> directory where the question
93 mark is specified by the initdefault value.</para>
94
95 <para>As a convenience, the <command>rc</command> script reads a library of
96 functions in <filename class="directory">/lib/boot/functions</filename>.
97 This library also reads an optional configuration file,
98 <filename>/etc/sysconfig/init_params</filename>. Any of the system
99 configuration file parameters described in subsequent sections can be
100 alternatively placed in this file allowing consolidation of all system
101 parameters in thsi one file.</para>
102
103 <para>As a debugging convenience, the functions script also logs all output
104 to <filename>/run/var/bootlog</filename>. Since the <filename
105 class="directory">/run</filename> directory is a tmpfs, this file is not
106 persistent across boots.</para>
107
108 </sect2>
109
110 <sect2 id="init-levels" >
111 <title>Changing Run Levels</title>
112
113 <para>Changing run-levels is done with <command>init
114 <replaceable>&lt;runlevel&gt;</replaceable></command>, where
115 <replaceable>&lt;runlevel&gt;</replaceable> is the target run-level. For example, to
116 reboot the computer, a user could issue the <command>init 6</command> command,
117 which is an alias for the <command>reboot</command> command. Likewise,
118 <command>init 0</command> is an alias for the <command>halt</command>
119 command.</para>
120
121 <para>There are a number of directories under <filename
122 class="directory">/etc/rc.d</filename> that look like <filename
123 class="directory">rc?.d</filename> (where ? is the number of the run-level) and
124 <filename class="directory">rcsysinit.d</filename>, all containing a number of
125 symbolic links. Some begin with a <emphasis>K</emphasis>, the others begin with
126 an <emphasis>S</emphasis>, and all of them have two numbers following the
127 initial letter. The K means to stop (kill) a service and the S means to start a
128 service. The numbers determine the order in which the scripts are run, from 00
129 to 99&mdash;the lower the number the earlier it gets executed. When
130 <command>init</command> switches to another run-level, the appropriate services
131 are either started or stopped, depending on the runlevel chosen.</para>
132
133 <para>The real scripts are in <filename
134 class="directory">/etc/rc.d/init.d</filename>. They do the actual work, and
135 the symlinks all point to them. K links and S links point to
136 the same script in <filename class="directory">/etc/rc.d/init.d</filename>.
137 This is because the scripts can be called with different parameters like
138 <parameter>start</parameter>, <parameter>stop</parameter>,
139 <parameter>restart</parameter>, <parameter>reload</parameter>, and
140 <parameter>status</parameter>. When a K link is encountered, the appropriate
141 script is run with the <parameter>stop</parameter> argument. When an S link
142 is encountered, the appropriate script is run with the
143 <parameter>start</parameter> argument.</para>
144
145 <para>There is one exception to this explanation. Links that start
146 with an <emphasis>S</emphasis> in the <filename
147 class="directory">rc0.d</filename> and <filename
148 class="directory">rc6.d</filename> directories will not cause anything
149 to be started. They will be called with the parameter
150 <parameter>stop</parameter> to stop something. The logic behind this
151 is that when a user is going to reboot or halt the system, nothing
152 needs to be started. The system only needs to be stopped.</para>
153
154 <para>These are descriptions of what the arguments make the scripts
155 do:</para>
156
157 <variablelist>
158
159 <varlistentry>
160 <term><parameter>start</parameter></term>
161 <listitem>
162 <para>The service is started.</para>
163 </listitem>
164 </varlistentry>
165
166 <varlistentry>
167 <term><parameter>stop</parameter></term>
168 <listitem>
169 <para>The service is stopped.</para>
170 </listitem>
171 </varlistentry>
172
173 <varlistentry>
174 <term><parameter>restart</parameter></term>
175 <listitem>
176 <para>The service is stopped and then started again.</para>
177 </listitem>
178 </varlistentry>
179
180 <varlistentry>
181 <term><parameter>reload</parameter></term>
182 <listitem>
183 <para>The configuration of the service is updated.
184 This is used after the configuration file of a service was modified, when
185 the service does not need to be restarted.</para>
186 </listitem>
187 </varlistentry>
188
189 <varlistentry>
190 <term><parameter>status</parameter></term>
191 <listitem>
192 <para>Tells if the service is running and with which PIDs.</para>
193 </listitem>
194 </varlistentry>
195
196 </variablelist>
197
198 <para>Feel free to modify the way the boot process works (after all,
199 it is your own LFS system). The files given here are an example of how
200 it can be done.</para>
201
202 </sect2>
203
204</sect1>
Note: See TracBrowser for help on using the repository browser.