In this bog posting, I will present a boot sequence that works for all Linux-based operating systems – from switching on the power to the login screen.
7 steps
There are 7 steps for Linux startup:
Power on
Obviously, first of all, you have to switch on your computer, then:
- Each sub process will execute the following one
- It is the same process for all Linux distributions
- Close to BSD and Unix style from which it derives
- Same as Microsoft’s procedure until MBR stage
BIOS (Basic Inpout Output System)
- First firmware executed at startup
- Inits motherboard hardware components
- Performs some system integrity checks (i. e. memory)
- Abstraction layer between hardware and software
- Searches and executes the boot loader program from MBR disk
MBR (Master Boot Record), bootlader stage 1
- Located on the first sector of booted disk (512 bytes)
- Contains location and data about 2nd bootloader stage, inside bootloader code section
- Partition table (MS DOS limited to 4 primary partitions)
- Signature helps BIOS to identify from which disk it executes the bootloader code
Bootloader, stage 2
- Located on a disk partition
- Loads operating system kernel and options
You can choose several bootloader software:
- Grub, GRand Universal Bootloader
- Lilo, LInux LOader
- …
Grub configuration (< v1.0) :
Grub version < v1.0 uses a singe configuration file, in which all operating systems and kernel options have to be written by hand.
[root@oel-test ~]# cat /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title Oracle Linux Server-uek (2.6.39-200.24.1.el6uek.i686)
root (hd0,0)
kernel /vmlinuz-2.6.39-200.24.1.el6uek.i686
…
…
Grub 2 configuration (> v1.0) :
Grub version > v1.0 (Grub 2) allows to use automatic search and configuration mechanism that updates the menu.lst file:
[root@oel-test ~]# grub-mkconfig
[root@oel-test ~]# upgrade-grub2
Moreover, if needed, we can add customization during these processes:
[root@oel-test ~]# vim /etc/default/grub # common configuration file for all Operating systems
[root@oel-test ~]# ls /etc/grub.d/* # search and configuration scripts location
[root@oel-test ~]# upgrade-grub2
#> upgrade-grub2
will overvrite /boot/grub/menu.lst
Kernel
- Located on a disk partition
- Contains drivers for hardware support
- Lowest Operating System software layer
- Enables multi-task support (scheduler)
- Mounts root file system
- Executes init program
- Usually, an “initrd”, INITial RamDisk (filesystem mounted temporarely in RAM memory), is needed
Init process
The Init process comes first in the operating system startup and defines the running state (Runlevel):
0 – Halt
1 – Single user mode
2 – Multiuser, without NFS
3 – Full multiuser mode
4 – Unused
5 – Full multiuser and graphical mode
6 – Reboot
Default configuration file location:
[root@oel-test ~]# cat /etc/inittab
id:5:initdefault:
Runlevel service script organization:
Runlevel scripts are organized acoording to a strict naming convention, allowing their execution order and purpose:
It is possible to invoke a manual action related to a service:
[root@oel-test ~]# /etc/init.d/service_name start|stop|restart|status|reload
Starting service : [ OK ]
[root@oel-test ~]# service service_name start|stop|restart|status|reload
Runlevel service script configuration
It is possible to manage service execution scripts using more high-level commands:
chkconfig [–level levels ] service_nqme on|off|reset
[root@oel-test ~]# chkconfig –level 2345 ntpd on
[root@oel-test ~]# chkconfig –list ntpd
ntpd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
It is also possible to use a graphical tool:
[root@oel-test ~]# ntsysv –level 5
That’s it!