LinuxBootSequence

advertisement
The Linux Kernel
• About 6 million lines of code
• Controls memory and process management.
The Linux Kernel
Linux & the Kernel
Kernel Version Numbering:
2.6.38.8
•
•
•
•
•
A.B.C.D
A is the version
B is the major revision
C is the minor revision
D are security and bug fixes
2.6.39 was the last minor revision before 3.0 is
released.
Linux Boot Sequence
• After the BIOS/UEFI instructions are given
to start the OS,
– A compressed version of the kernel is loaded
into the first megabyte of ram.
– The complete kernel is expanded and loaded
– The kernel starts
Kernel Startup
• Checks memory
• Probes for hardware
Kernel Hardware Probe
• Some drivers are compiled into the kernel
other drivers are loaded when the kernel
starts.
• Everything recognized by the os has a file
node associated with it. The kernel will
establish nodes for each required device.
Starting the kernel
• Find and set up swap (virtual memory)
• A hardware probe is done to determine what
drivers should be initialized.
• Read /etc/fstab to mount the root file
system.
• Mount other devices
• Start a program called init.
• Kernel passes control to init.
Kernel startup
• Create tables for memory management.
Kernel Startup
• Dummy processes are started. These
processes do not have PIDs, and cannot be
killed:
–
–
–
–
Swap
Paging virtual memory
IO activity
Other (example: managing threads)
Dummy processes
• Swapper
• vhand, kflushd, kpiod, mdrecoveryd
Kernel Startup
• Find and mount the other partitions starting
with the swap partition space.
– The /etc/fstab
/etc/fstab
• /dev/root
• /proc –A virtual file-system (in memory)
used for managing processes. This allows
loadable runtime modules to be inserted and
removed as needed.
• /dev/pts – A VFS used for managing
devices
init
• The first non-dummy process, PID = 1.
• First process to run and is always running.
• The kernel passes process management to
init.
• Init reads its configuration file: /etc/inittab
• Directly or indirectly spawns all other
processes until shutdown.
init: Processes
• The basis of all Linux systems.
• Run perpetually in the background waiting
for input.
–
–
–
–
Services
Daemons
Shells
utilities
init:Services & Daemons
•
•
•
•
•
•
Examples:
login prompt
X-Window server
keyboard input functionality
firewall
and all classic server programs; e-mail,
DNS, FTP, telnet, ssh, etc.
init
the runlevel is determined by inittab:
0. Halt the system
1. Enter single-user mode (no networking)
2. Multiuser mode, without NFS.
3. Full multiuser mode
4. Unused
5. Same as runlevel 3 but with X-windows.
6. Reboot.
/etc/inittab
• Additional programs and services are
started when init reads the contents of
inittab.
inittab
• Each line has the same syntax:
Id:runlevels:action:process
• Id A unique sequence of 1-4 characters to
identify the line in the file (a macro).
• Runlevels are any combination of numbers
from 0-6. If blank it implies all run levels.
• Action- what should happen.
• Process – the actual process to run.
Action
•
•
•
•
•
Respawn – restart whenever it terminates.
Wait – don’t continue until it completes.
Once – will not wait for completion.
boot – run at boot time.
Bootwait – start at boot time and wait for
completion before continuing.
• ondemand, initdefault, sysinit, powerwait,
powerfail, powerkwait, ctrlaltdel.
•
•
•
•
•
Read /etc/fstab
Read /etc/inittab
Run /etc/rc.sysinit
Run /etc/rc
Run the K* and S* startup scripts.
inittab and sysinit
• The file rc.sysinit is a script run once at
boot time to set up services specific to the
computer system:
– Hostname
– Networking
– Etc.
rc Scripts
• They keep track of the large number of
services to be managed.
• The main rc script is /etc/rc.d/rc
/etc/rc.d/rc
• Responsible for calling the appropriate
scripts in the correct order for each run
level.
/etc/rc.d/rc[0-6].d
• There is an additional directory for each
different runlevel: 0-6.
• Each directory has the scripts needed to run
the specified boot level.
• The files in these subdirectories have two
classifications: kill and start.
Kill and Start Services.
• The letter K is the prefix to all services to
be killed.
• The letter S is the prefix to all the services
to be Started.
• The K & S prefixed names are links to the
actual service scripts located in
/etc/rc.d/init.d
Order of services
• A number follows the S or K prefix.
• The number determines the order of
execution.
• The rc file accesses the correct run-level
directory and executes the files in numerical
order.
• K files are first, then S files.
K and S scripts
• Every script in the /etc/rc.d/init.d directory
is run with one of two options:
– stop if the prefix is K
– start if the prefix is S
/etc/rc.d/init.d/xfs start
/etc/rc/d/init.d/sound stop
Adding services
• If a service need be installed at boot time,
you can edit the /etc/rc.d/rc.local file.
• Or add functionality by adding a script to
the /etc/rc.d/init.d directory.
Contents of Custom RC script
• A description of the scripts purpose.
• Verify the program really exists before
attempting to start it.
• Parse for start and stop command line
options.
• Put your script in the /etc/rc.d/init.d
directory.
Link the New RC script
• Add new service script to the /etc/rc.d/init.d
directory.
• cd to the correct run level directories,
cd /etc/rc.d/rc5.d
• Add the link
ln –s ../init.d/mynewservice S98mynewservice
/etc/rc.d/rc.local
• You can also add a service by modifying
the /etc/rc.d/rc.local file.
• /etc/rc.d/rc[0-6].d/[K,S]99local
Core Services
• init – process id 1.
• inetd – Traditional Unix service.
• xinetd – Linux version of inetd. Used to
manage some services: xinetd.org/faq.html
• syslogd – logs system messages to /var
• cron – used to start utilities at a predescribed time.
Review: init
• The parent process of all processes.
• Started by the kernel at boot time.
• If a process dies before all of its children
complete, then the children inherit init as
the parent (PPID = 1).
• Controls the run level with /etc/inittab.
inetd & xinetd
• Daemons – independent background
processes that poll for events.
• Events sent to the daemons determine how
the daemon behaves at any given time.
inetd
• Pre-Linux tool.
• The supervisor of network server-related
processes.
• Rather than running many daemons taking
up memory, initd polls for daemon requests.
When a particular daemon gets an event,
initd will activate the appropriate daemon.
xinetd
• Linux implementation of inetd.
• A list of the services currently offered by
xinetd are in /etc/xinetd.d directory.
syslogd daemon
• With programs/services disconnected from
a terminal, where does their standard output
go?
• Syslogd routes the output of services to text
files.
• Most log files are in /var/log
• Works in a heterogeneous environment.
syslogd
• /sbin/syslogd
• /etc/syslogd.conf
• man syslogd
/etc/syslog.conf
• Syntax of file involves
– Facility: mail, kern, daemon, lpr, other services
– Priority: emerg, alert, warning, err, notice, etc.
– Log file
*.emerg @loghost,childrja,root
Emergency messages are sent to machine loghost
and to the console session of childrja and root.
cron
• Used to schedule programs to run.
• Cron wakes up once every minute and
checks all the crontab files on the system.
• If an entry in one of the crontab files
matches the date and time, then the
designated process is run.
crontab
•
•
•
•
/etc/cron.allow
/etc/cron.deny
Crontab file syntax:
Min Hr Day Month DayofWk command
Download