鸟哥的Linux私房菜-基础学习篇10

59.Linux启动流程

1)加载bios的硬件信息,并获取第一个启动设备的代号

2)读取第一个启动设备的MBR的引导加载程序(即lilo、grub、spfdisk等)的启动信息

3)加载核心操作系统的核心信息,核心开始解压缩,并且尝试驱动所有硬件设备

4)核心执行init程序并获取运行信息

5)init执行/etc/rc.d/rc.sysinit文件

6)启动核心的外挂模块(/etc/modprobe.conf)

7)init执行运行的各个批处理文件(Scripts)

8)init执行/etc/rc.d/rc.local文件

9)执行/bin/login程序,等待用户登陆

10)登录之后开始以shell控制主机

60.引导加载程序与核心载入

整个主机在启动的时候,第一个读取的地方,就是BIOS(Basic Input Output System,基本输入输出系统),BIOS里记录了主机板的芯片集与相关的设置,如CPU与接口设备的通信频率、启动设备的搜索顺序、硬盘的大小与类型、系统时间、中断等信息,系统要顺利启动,首先要读取BIOS的相关设置值,获得BIOS设置值之后,系统会根据BIOS的数据,进行加电自检(Power on Self Test POST),然后初始化硬件检测,并设置PnP设备,确定可启动的设备后,开始读取启动设备的数据(MBR相关的任务开始)

每个硬盘的第一个记录称为MBR

在加载核心的过程中,系统只会“载入根命令”,而且是以只读方式载入的

61.第一个程序init及设置文件/etc/inittab与runlevel

整个Linux系统中,第一个执行的程序就是/sbin/init,init程序所做的工作相当多,除了利用设置文件/etc/inittab来获取运行等级(Run level)之外,还会通过运行等级的设置值启动不同的服务项目

Linux的7个运行等级

0-halt(系统直接关机)

1-single user mode(单用户维护模式,用于系统出问题时进行维护)

2-Multi-user,without NFS

3-Full Multi-user mode(完整的含有网络功能的纯文本模式)

4-unused

5-X11

6-reboot

vi /etc/inittab

#设置系统启动默认的运行等级设置项目

id:3:initdefault:

#开始启动运行等级的服务前,使用检测与初始化系统环境的设置文件

si::sysinit:/etc/rc.d/rc.sysinit

#7个不同运行等级需要启动的服务的脚本放置路径

10:0:wait:/etc/rc.d/rc 0

11:1:wait:/etc/rc.d/rc 1

12:2:wait:/etc/rc.d/rc 2

13:3:wait:/etc/rc.d/rc 3

14:4:wait:/etc/rc.d/rc 4

15:5:wait:/etc/rc.d/rc 5

16:6:wait:/etc/rc.d/rc 6

62.init处理系统初始化流程(/etc/rc.d/rc.sysinit)

/etc/inittab中有si::sysinit:/etc/rc.d/rc.sysinit,表示开始加载各项系统服务之前,先做好整个系统环境,主要使用/etc/rc.d/rc.sysinit这个shell脚本来设置系统环境

/etc/rc.d/rc.sysinit的主要工作有:

1)获取网络环境与主机类型

读取网络设置文件/etc/sysconfig/network,获取主机名称与默认网关(gateway)等网络环境

2)测试与载入内存设备/proc即USB设备/sys

3)决定是否启动SELinux

4)接口设备的检测与即插即用(PnP)参数的测试

5)用户自定义模块的加载

用户可以在/etc/sysconfig/modules/*.modules加入自定义的模块,此时会加载到系统中

6)加载核心的相关设置

主动读取/etc/sysctl.conf文件的设置值,使核心功能符合我们的要求

7)设置系统时间clock

8)设置终端控制台的字形console

9)设置RAID与LVM等硬盘功能

10)以fsck检验硬盘文件系统

11)进行磁盘配额quota的转换

12)重新以可读写模式载入系统硬盘

13)启动quota功能

14)启动系统随机数设备

15)清除启动过程中的临时文件

16)将启动相关信息加载到/var/log/dmesg文件中

相关推荐