Upload
amin-hashemi
View
1.217
Download
3
Tags:
Embed Size (px)
DESCRIPTION
this presentation is about linux startup and describe the 6 high level stages of a typical Linux boot process.
Citation preview
Linux StartupBy: Amin Hashemi AmirKabir University of technologyComputer Engineering & Information Technology Department
Contents System startup Services Controlling boot services References
System startup
System startup- BIOS BIOS stands for Basic Input/output System Performs some system integrity checks Searches, loads, and executes the boot loader program. It looks for boot loader in floppy, CD-ROM, or hard drive. You
can press a key (typically F12 of F2, but it depends on your system) during the BIOS startup to change the boot sequence.
Once the boot loader program is detected and loaded into the memory, BIOS gives the control to it.
So, in simple terms BIOS loads and executes the MBR boot loader.
System startup- MBR MBR stands for Master Boot Record. It is located in the 1st sector of the bootable disk. Typically
/dev/hda, or /dev/sda MBR is less than 512 bytes in size. This has three
components: 1) primary boot loader info in 1st 446 bytes 2) partition table info in next 64 bytes 3) MBR validation check in last 2 bytes.
It contains information about GRUB (or LILO in old systems). So, in simple terms MBR loads and executes the GRUB boot
loader.
System startup- GRUB GRUB stands for Grand Unified Bootloader. If you have multiple kernel images installed on your system,
you can choose which one to be executed. GRUB displays a splash screen, waits for few seconds, if
you don’t enter anything, it loads the default kernel image as specified in the GRUB configuration file.
GRUB has the knowledge of the filesystem (the older Linux loader LILO didn’t understand filesystem).
System startup- Kernel Mounts the root file system as specified in the “root=” in
grub.conf Kernel executes the /usr/src/linux/init/main.c program Since init was the 1st program to be executed by Linux
Kernel, it has the process id (PID) of 1. Do a ‘ps -ef | grep init’ and check the pid.
initrd stands for Initial RAM Disk. initrd is used by kernel as temporary root file system until
kernel is booted and the real root file system is mounted. It also contains necessary drivers compiled inside, which helps it to access the hard drive partitions, and other hardware.
System startup- Kernel (cont.)Details about the specific sequence of events or
what happens when the Linux kernel is loaded. Recognize, set up and initialize the CPU(s). Set up kernel memory and process handling. Initialize configured system devices. Start memory handling (paging, …). Set up and mount the file system. Start the init command.
System startup- init After the kernel has detected computer’s hardware and load
the correct device driver, init is started. The last step of kernel booting.
It s the parent of all processes. PID = 1
init role: The primary role of init is to create processes from a script stored
in /etc/inittab. Running scripts in /etc/rc.d.
System startup- init- /etc/inittab This file describes how the init process should setup the
system in a certain run level. /etc/inittab format:
Id:run-level:action:process Id: a unique 1-4 character which identifies an entry in inittab. Run-level: run level number. Action: which action should be taken (wait, boot, initdefault, …) Process: the process to be executed.
System startup- init- /etc/rc.d rc
Performs master control of which scripts to execute.
rc.sysinit The system initialization script
rc.local Used for local initialization
/etc/rc.d/inid.d/ A number of scripts used to start and stop services
/etc/rc.d/rc*.d/ (* : 0–6) Each file is merely a soft link to a script under init.d
System startup- init- rc.sysinit This file is interpreted by init once at boot time. It contains bash shell script logic to perform some the
following: Sets the system hostname Reads in network configuration data Prints welcome banner for login Configures the kernel Sets up the system time Sets the console and keyboard mapping …
System startup- Run levels A run-level is a software configuration of the system which
allows only a selected group of processes to exist. When the Linux system is booting up, you might see various
services getting started. For example, it might say “starting sendmail …. OK”. Those are the runlevel programs, executed from the run level directory as defined by your run level.
System startup- Run levels (cont.) Depending on your default init level setting, the system will execute the
programs from one of the following directories: Run level 0 – halt (/etc/rc.d/rc0.d/) : Shuts down the system. Run level 1 – single user mode (/etc/rc.d/rc1.d/) :Mode for administrative tasks. Run level 2 – multiuser, without NFS (/etc/rc.d/rc2.d/) :Does not configure
network interfaces and does not export networks services. Run level 3 – full multiuser mode (/etc/rc.d/rc3.d/) : Starts the system normally. Run level 4 – unused (/etc/rc.d/rc4.d/) :For special purposes. Run level 5 – Multi-User mode, with display manager as well as console
logins(X11) (/etc/rc.d/rc5.d/) :As runlevel 3 + display manager. Run level 6 – reboot (/etc/rc.d/rc6.d/) :Reboots the system.
Services /etc/rc.d/init.d/
A number of scripts used to start and stop services
Run Level and Services The scripts (in /etc/rc.d/rc*.d/) are actually symbolic links to system
service scripts under the /etc/rc.d/init.d/ directory. So, /etc/rc0.d is linked to /etc/rc.d/rc0.d.
Under the /etc/rc.d/rc*.d/ directories, you would see programs that start with S and K.
Programs starts with S are used during startup. S for Startup. Programs starts with K are used during shutdown. K for kill. There are numbers right next to S and K in the program names. Those
are the sequence number in which the programs should be started or killed.
Example: K12mysql S12syslog S10network S80sendmail
Controlling Boot Services Manually rename Scripts
Rename K to S and vice versa Change the number followed by K/S
Manually start and stop services {start | stop | restart | status} /etc/rc.d/init.d/network start service network start
Through graphical tool ntsysv
Controlling Boot Services Changing Run Levels
The telinit command is used to change run-levels on-the-fly on a running Linux system. telinit 5
References http://www.thegeekstuff.com/2011/02/linux-boot-process/ https://
www.linux.com/news/enterprise/systems-management/8116-an-introduction-to-services-runlevels-and-rcd-scripts
http://en.wikipedia.org/wiki/Linux_startup_process http://en.wikipedia.org/wiki/Runlevel Mr. Hamed Janzadeh’s slides about linux startup
Website: Http://www.AminHashemi.com E-mail: Amin [at] aminhashemi [dot] com
Thank you