File: init-process.html

package info (click to toggle)
sysadmin-guide 0.9-1
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd, lenny, squeeze, wheezy
  • size: 944 kB
  • ctags: 1
  • sloc: makefile: 5
file content (286 lines) | stat: -rw-r--r-- 4,937 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML
><HEAD
><TITLE
>init comes first</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
REL="HOME"
TITLE="Linux System Administrators Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="init"
HREF="init-intro.html"><LINK
REL="PREVIOUS"
TITLE="init"
HREF="init-intro.html"><LINK
REL="NEXT"
TITLE="Configuring init to start 
getty: the 
/etc/inittab file"
HREF="config-init.html"></HEAD
><BODY
CLASS="SECT1"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>Linux System Administrators Guide: </TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="init-intro.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 9. <B
CLASS="COMMAND"
>init</B
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="config-init.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="SECT1"
><H1
CLASS="SECT1"
><A
NAME="INIT-PROCESS"
></A
>9.1. <B
CLASS="COMMAND"
>init</B
> comes first</H1
><P
><B
CLASS="COMMAND"
>init</B
> is one of those programs that
	are absolutely essential to the operation of a Linux system,
	but that you still can mostly ignore. A good Linux distribution
	will come with a configuration for <B
CLASS="COMMAND"
>init</B
>
	that will work for most systems, and on these systems there is
	nothing you need to do about <B
CLASS="COMMAND"
>init</B
>. Usually,
	you only need to worry about <B
CLASS="COMMAND"
>init</B
> if you hook
	up serial terminals, dial-in (not dial-out) modems, or if you
	want to change the default run level.</P
><P
>When the kernel has started itself (has been loaded
	into memory, has started running, and has initialized all
	device drivers and data structures and such), it finishes its
	own part of the boot process by starting a user level program,
	<B
CLASS="COMMAND"
>init</B
>. Thus, <B
CLASS="COMMAND"
>init</B
> is always
	the first process (its process number is always 1).</P
><P
>The kernel looks for <B
CLASS="COMMAND"
>init</B
>
	in a few locations that have been historically used
	for it, but the proper location for it (on a Linux
	system) is <TT
CLASS="FILENAME"
>/sbin/init</TT
>. If the
	kernel can't find <B
CLASS="COMMAND"
>init</B
>, it tries to run
	<TT
CLASS="FILENAME"
>/bin/sh</TT
>, and if that also fails, the startup
	of the system fails.</P
><P
>When <B
CLASS="COMMAND"
>init</B
> starts, it finishes the
	boot process by doing a number of administrative tasks, such
	as checking filesystems, cleaning up <TT
CLASS="FILENAME"
>/tmp</TT
>,
	starting various services, and starting a <B
CLASS="COMMAND"
>getty</B
>
	for each terminal and virtual console where users should be able
	to log in (see <A
HREF="log-in-and-out.html"
>Chapter 10</A
>).</P
><P
>After the system is properly up, <B
CLASS="COMMAND"
>init</B
>
	restarts <B
CLASS="COMMAND"
>getty</B
> for each terminal
	after a user has logged out (so that the next user can log
	in). <B
CLASS="COMMAND"
>init</B
> also adopts orphan processes: when
	a process starts a child process and dies before its child, the
	child immediately becomes a child of <B
CLASS="COMMAND"
>init</B
>.
	This is important for various technical reasons, but it is good
	to know it, since it makes it easier to understand process lists
	and process tree graphs.
	There are a few variants of <B
CLASS="COMMAND"
>init</B
>
	available. Most Linux distributions
	use <B
CLASS="COMMAND"
>sysvinit</B
> (written by Miquel
	van Smoorenburg), which is based on the System V
	<B
CLASS="COMMAND"
>init</B
> design.  The BSD versions of Unix have
	a different <B
CLASS="COMMAND"
>init</B
>. The primary difference
	is run levels: System V has them, BSD does not (at least
	traditionally). This difference is not essential.  We'll look
	at <B
CLASS="COMMAND"
>sysvinit</B
> only.  </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="init-intro.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="config-init.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><B
CLASS="COMMAND"
>init</B
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="init-intro.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Configuring <B
CLASS="COMMAND"
>init</B
> to start 
<B
CLASS="COMMAND"
>getty</B
>: the 
<TT
CLASS="FILENAME"
>/etc/inittab</TT
> file</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>