3. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
Runlevels
3
Runlevels define what tasks are accomplished in the current state (runlevel) of a Linux
system.
Every Linux system supports 3 basic runlevels, plus 1 or more runlevels for normal operation.
Basic Linux runlevels
Level Purpose
0 Shut down (or halt) the system
1 Single-user mode; usually aliased as s or S
6 Reboot the system
Common Linux runlevels
Level Purpose
2 Multiuser mode without networking
3 Multiuser mode with networking
5 Multiuser mode with networking and the X Window System
- Slackware uses runlevel 4 for full system running X Window system.
- Debian and Ubuntu, use a single runlevel for any multiuser mode, (runlevel 2)
consult documentation for the distribution
12. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
Clean shutdown
12
Preferred method to shut down or reboot the system is the shutdown command
Process:
1.Sends warning message to all logged-in users and blocks any further logins.
2.Signals init to switch runlevels.
3. init process then sends all running processes a SIGTERM signal, giving them chance to save data and
terminate properly.
4.After 5 sec, or another delay specified, init sends a SIGKILL signal to forcibly end each remaining process.
By default, shutdown switches to runlevel 1 (single-user mode).
Specify -h option to halt system, -r option to reboot.
Standard message is issued in addition to any message you specify
Shutdown time may be:
Absolute in hh:mm format, Relative time in n (n=number minutes until shutdown) +0= Now
Cancel delayed shutdown: press Ctrl-c or command shutdown -c.
13. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
Clean shutdown
13
Ex: yourname@yourcomp~# shutdown 5 File system recovery needed
Broadcast message from root (pts/1) (Tue Jan 4 08:05:24 2011):
File system recovery needed
The system is going DOWN to maintenance mode in 5 minutes!
^C
Shutdown cancelled.
yourname@yourcomp~# shutdown -r 10 Reloading updated kernel&
[1] 18784
[yourname@yourcomp~#
Broadcast message from root (pts/1) (Tue Jan 4 08:05:53 2011):
Reloading updated kernel
The system is going DOWN for reboot in 10 minutes!
yourname@yourcomp~# fg
shutdown -r 10 Reloading updated kernel
^C
Shutdown cancelled.
yourname@yourcomp~# shutdown -h 23:59&
[1] 18788
[root@pinguino ~]# shutdown –c
Shutdown cancelled.
[1]+ Done shutdown -h 23:59
16. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
inittab
16
When /sbin/init is started by kernel, it reads /etc/inittab for the startup sequence.
The lines in /etc/inittab determine the startup behaviour of your system.
Common inittab Actions
Respawn Restart process whenever it terminates. Usually used for getty processes, that monitors logins.
Wait Start process once when specified runlevel is entered and wait for its termination before init proceeds.
once Start the process once when the specified runlevel is entered.
Initdefault Specifies the runlevel to enter after system boot.
ctrlaltdel Execute associated process when init receives the SIGINT signal.
example: when someone on the system console presses CTRL-ALT-DEL.
Common initab Format [id:runlevels:action:process]
Id: unique identifier of one to four characters. Older versions limited to two characters.
runlevels: lists runlevels for which action for this id should be taken. If no runlevels are listed, do action for
all runlevels.
action: describes which of several possible actions should be taken.
process tells which process, if any, should be run when action on this line is performed.
17. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
inittab
17
Ex:
Part 1
##
inittab This file describes how the INIT process should set up
# the system in a certain run-level.
##
Author: Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified for RHS Linux by Marc Ewing and Donnie Barnes
#
# Default runlevel. The runlevels used by RHS are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
Before thinking runlevels, init runs the sysinit script.
# System initialization.
si::sysinit:/etc/rc.d/rc.sysinit
18. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
inittab
18
Ex:
Part 2 l0:0:wait:/etc/rc.d/rc 0
l1:1:wait:/etc/rc.d/rc 1
l2:2:wait:/etc/rc.d/rc 2
l3:3:wait:/etc/rc.d/rc 3
l4:4:wait:/etc/rc.d/rc 4
l5:5:wait:/etc/rc.d/rc 5
l6:6:wait:/etc/rc.d/rc 6
For actual runlevel chosen (before in id:5:initdefault), a script is run – in this case /etc/rc.d/rc 5.
Trap CTRL-ALT-DELETE
ca::ctrlaltdel:/sbin/shutdown -t3 -r now
Trapping Ctrl-Alt-Delete for keyboard system reboot.
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
# Run xdm in runlevel 5
x:5:respawn:/etc/X11/prefdm -nodaemon
In runlevel 2 ,3 , 4, 5, init verifies if the /etc/inittab as the following programs running:
(mingetty handles terminal login, and mgetty handles modem dialin access)
21. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
Init scripts
21
Ex: yourname@yourcomp~# find /etc -path "*rc[0-9]*.d/???au*"
/etc/rc.d/rc2.d/S27auditd
/etc/rc.d/rc2.d/K72autofs
/etc/rc.d/rc4.d/S27auditd
/etc/rc.d/rc4.d/S28autofs
/etc/rc.d/rc5.d/S27auditd
/etc/rc.d/rc5.d/S28autofs
/etc/rc.d/rc0.d/K72autofs
/etc/rc.d/rc0.d/K73auditd
/etc/rc.d/rc6.d/K72autofs
/etc/rc.d/rc6.d/K73auditd
/etc/rc.d/rc1.d/K72autofs
/etc/rc.d/rc1.d/K73auditd
/etc/rc.d/rc3.d/S27auditd
/etc/rc.d/rc3.d/S28autofs
yourname@yourcomp~# cd /etc/rc.d/rc5.d
yourname@yourcomp rc5.d# ls -l ???a*
lrwxrwxrwx 1 root root 16 2008-04-07 11:29 S27auditd -> ../init.d/auditd
lrwxrwxrwx 1 root root 16 2008-04-01 07:51 S28autofs -> ../init.d/autofs
lrwxrwxrwx 1 root root 15 2008-04-01 14:03 S44acpid -> ../init.d/acpid
lrwxrwxrwx 1 root root 13 2008-04-01 07:50 S95atd -> ../init.d/atd
lrwxrwxrwx 1 root root 22 2008-04-01 07:54 S96avahi-daemon -> ../init.d/avahi-daemon
lrwxrwxrwx 1 root root 17 2008-11-17 13:40 S99anacron -> ../init.d/anacron
The links have: K (stopped) or S (Started); two-digit number (priority), name of service
Here audit and autofs services have Knn entries in all runlevels and Snn entries for runlevels 3 and 5.
S indicates that the service is started when that runlevel is entered, K indicates that it should be stopped.
nn component of link name indicates priority order in which the service should be started or stopped.
In example, audit is started before autofs, and it is stopped later.
22. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
Init vs. Upstart
22
Traditional method of booting a Linux system is based on UNIX System V init process.
For systems where everything is known and connected when the system starts it works well
1st
Involves loading initial RAM disk (initrd)
2nd
passing control to a program called init (init program is installed as part of sysvinit package)
3rd
init program runs a series of scripts in a predefined order to bring up the system.
If something that is expected is not available, the init process typically waits for it.
Modern systems with hot-pluggable devices, network file systems, present new challenges.
waiting for hardware that may come available later, is not desirable.
An alternative initialization process was first introduced in Ubuntu 6.10 ("Edgy Eft") in 2006.
It’s called upstart
Has supplanted the init process in Ubuntu, Fedora, and others, with vestiges of init remaining and still in use
http://upstart.ubuntu.com/
23. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
Upstart
23
In contrast to the static init scripts the upstart system is driven by events.
Events triggered by hardware changes, started or stoped tasks, by processes on the system.
Example:
connecting a USB drive might cause udev service to send a block-device-added event,
which would cause a defined task to check /etc/fstab and mount the drive.
upstart initialization program replaces /sbin/init.
•Upstart jobs are defined in /etc/init directory and subdirectories.
•upstart system will process /etc/inittab and System V init scripts.
New RHL-Fedora /etc/inittab contains only id entry for initdefault;
New Ubuntu does not have /etc/inittab (must create one to specify a default runlevel).
Events are used to trigger tasks or services (known as jobs).
25. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
Upstart
25
RHEL 6 marks Red Hat’s departure from old style SystemV initialization framework.
Time to [mostly] forget about inittab!
RHEL 6 now uses Upstart to handle startup, shutdown and service management.
http://upstart.ubuntu.com
The only configuration /etc/inittab provides is what default runlevel should be,
as Upstart supports notion of runlevels to ease transition from SysV style
initialization to Upstart.
Configuration files for Upstart are under: /etc/init
Files in this directory detail configuration for certain global events, like ctrl-alt-
delete, as well as maintaining TTY gettys, handling runlevels and more.
A runlevel defines what services are running...
28. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
init scripts
28
What is actually running in a runlevel is defined by init scripts for that level.
Standard location for the init scripts is: /etc/rcX.d
Where X corresponds to the runlevel
Example: /etc/rc5.d contains all of the init scripts that, combined, provide runlevel 5 service
Files in rc directories start with either an S or K:
•S means to start the service, ie run the command with “start” as an argument
•K means to kill the service, ie run the command with “stop” as an argument
After S or K, there is two digit number used for ordering the execution of the scripts
So when init process “enters” a runlevel, the steps are:
1.Run all of the Kill scripts, in order, with “stop” as an argument
2.Run all of the Start scripts, in order, with “start” as anargument
29. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
init scripts
29
If you look closely, you will see that /etc/rcX.d actually holds a collection of symbolic
links
The actual script files are stored in /etc/init.d
The main reason for this is so that there is only one copy of each init script,
reducing the chance that a script change won’t be reflected in all runlevels.
You can run scripts directly, or use service command to start/stop various
components of OS.
You can manage links to init scripts manually, or you can use the chkconfig cmd:
chkconfig --list
List all processes and display their default status in eachrun-level.
chkconfig [--level levels] name <on|off|reset>
will modify chkconfig configuration for a particular service, setting it on/off for the given runlevels.
30. CoreLinuxforRedHatandFedoralearningunderGNUFreeDocumentationLicense-Copyleft(c)AcácioOliveira2012
Everyoneispermittedtocopyanddistributeverbatimcopiesofthislicensedocument,changingisallowed
Runlevels , shutdown, and reboot
Upstart
30
Upstart has command initctl
Gives interaction with upstart init daemon.
(start or stop jobs, list jobs, get status of jobs, emit events, restart init process)
Ex: yourname@yourcomp~# initctl list
rc stop/waiting
tty (/dev/tty3) start/running, process 1486
tty (/dev/tty2) start/running, process 1484
tty (/dev/tty6) start/running, process 1492
tty (/dev/tty5) start/running, process 1490
tty (/dev/tty4) start/running, process 1488
plymouth-shutdown stop/waiting
control-alt-delete stop/waiting
system-setup-keyboard start/running, process 1000
readahead-collector stop/waiting
vpnc-cleanup stop/waiting
quit-plymouth stop/waiting
rcS stop/waiting
prefdm start/running, process 1479
init-system-dbus stop/waiting
ck-log-system-restart stop/waiting
readahead stop/waiting
ck-log-system-start stop/waiting
start-ttys stop/waiting
readahead-disable-services stop/waiting
ck-log-system-stop stop/waiting
rcS-sulogin stop/waiting
serial stop/waiting