Linux的启动流程

启动流程

 POST:

Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分。负责完成对CPU、主板、内存、硬盘子系统、显示子系统、 串并行接口、键盘、 CD-ROM光驱等硬件情况的检测。

ROM: BIOS, Basic Input and Output System,保存着有关计算机系统最重要的基本输入输出程序,系统信息设置、 开机加电自检程序和系统启动自举程序等。

RAM: CMOS互补金属氧化物半导体,保存各项参数的设定

按次序查找引导设备,第一个有引导程序的设备为本次启动设备

 bootloader: 引导加载器,引导程序(因系统而异)

windows: ntloader,仅是启动OS

Linux:功能丰富,提供菜单,允许用户选择要启动系统或不同的内核版本;把用户选定的内核装载到内存中的特定空间中,解压、展开,并把

系统控制权移交给内核

LILO: LInux LOader

GRUB: GRand Unified Bootloader(centos5之后)

GRUB 0.X: GRUB Legacy, GRUB2

磁盘:

 MBR:

446: bootloader(446字节可寻找到bootloader所在位置), 64: 分区表, 2: 55AA

Linux的启动流程blob.png

 GRUB:

primary boot loader : 1st stage(加载bootloader,磁盘第1个512字节中), 1.5 stage(boot文件系统,磁盘中第2个512字节中)

secondary boot loader : 2nd stage,分区文件

Linux的启动流程blob.png

 kernel:

自身初始化:

探测可识别到的所有硬件设备

加载硬件驱动程序(可能借助于ramdisk加载驱动)

以只读方式挂载根文件系统

运行用户空间的第一个应用程序: /sbin/init

 init程序的类型:

 SysV: init, CentOS 5之前(全部按顺序启动)

配置文件: /etc/inittab(定义需要加载的驱动,脚本)

 Upstart: init,CentOS 6(无依赖同时启动,有依赖按顺序启动)

配置文件: /etc/inittab(定义默认的启动模式常用的位字符界面或者图像界面), /etc/init/*.conf(定义需要加载的驱动,脚本)

Linux的启动流程

blob.pngblob.png

 Systemd: systemd, CentOS 7(全部同时启动,当用户使用服务时才检查依赖的文件有没有启动)

配置文件: /usr/lib/systemd/system(定义需要加载的驱动,脚本)

/etc/systemd/system(定义需要加载的驱动,脚本)

 ramdisk:

 内核中的特性之一:使用缓冲和缓存来加速对磁盘上的文件访问

ramdisk –> ramfs 提高速度

CentOS 5: initrd(内存模拟磁盘设备), 工具程序: mkinitrd

CentOS 6: initramfs(内存模拟的文件系统), 工具程序: mkinitrd, dracut

 系统初始化:

POST –> BootSequence (BIOS) –>

Bootloader(MBR) –> kernel(ramdisk(加载根)) –> rootfs(只读) —

> init( systemd)

 /sbin/init CentOS6 之前

 运行级别:为系统运行或维护等目的而设定; 0-6: 7个级别

0:关机

1:单用户模式(root自动登录), single, 维护模式

2: 多用户模式,启动网络功能,但不会启动NFS;维护模式

3:多用户模式,正常模式;文本界面

4:预留级别;可同3级别

5:多用户模式,正常模式;图形界面

6:重启

 默认级别: 3, 5

 切换级别: init #

 查看级别: runlevel ; who -r

init初始化

init读取其初始化文件: /etc/inittab

初始运行级别(RUN LEVEL)

系统初始化脚本

对应运行级别的脚本目录

捕获某个关键字顺序

定义UPS电源终端/恢复脚本

在虚拟控制台生成getty

在运行级别5初始化X

CentOS 5的inittab文件

 配置文件: /etc/inittab

 每一行定义一种action以及与之对应的process

id:runlevel:action:process

action:

wait: 切换至此级别运行一次

respawn:此process终止,就重新启动之

initdefault:设定默认运行级别; process省略

sysinit:设定系统初始化方式,此处一般为指定

/etc/rc.d/rc.sysinit

ca::ctrlaltdel:/sbin/shutdown -t3 -r now

id:3:initdefault:

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

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

l1:1:wait:/etc/rc.d/rc 1…

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

CentOS 6 /etc/inittab和相关文件

 /etc/inittab

设置系统默认的运行级别

id:3:initdefault:

centos5的是时候,一下配置是放在/etc/inittab文件中定义的,但是从centos6开始,就单独放在一下路径的配置文件中

 /etc/init/control-alt-delete.conf

 /etc/init/tty.conf

 /etc/init/start-ttys.conf

 /etc/init/rc.conf

 /etc/init/prefdm.conf

blob.pngLinux的启动流程

上图为redhat5

blob.pngLinux的启动流程

上图为centos6

 /etc/rc.d/rc.sysinit: 系统初始化脚本

(1) 设置主机名

(2) 设置欢迎信息

(3) 激活udev和selinux

(4) 挂载/etc/fstab文件中定义的文件系统

(5) 检测根文件系统,并以读写方式重新挂载根文件系统

(6) 设置系统时钟

(7) 激活swap设备

(8) 根据/etc/sysctl.conf文件设置内核参数

(9) 激活lvm及software raid设备

(10) 加载额外设备的驱动程序

(11) 清理操作

/etc/rc.d/rcN.d/  文件说明

 说明: rc N –> 意味着读取/etc/rc.d/rcN.d/

K*: K##*: ##运行次序;数字越小,越先运行;数字越小的服务,通常为依赖到别的服务

S*: S##*: ##运行次序;数字越小,越先运行;数字越小的服务,通常为被依赖到的服务

详细可看/etc/rc.d/rc 文件

for srv in /etc/rc.d/rcN.d/K*; do

$srv stop

done

for srv in /etc/rc.d/rcN.d/S*; do

$srv start

done

blob.png

总结:

Linux的启动过程个文件程序间环环相扣,缺一不可。以centos6为例,假设没有了boot文件夹里的其中一个文件,就无法正常启动,视损坏程度,有可能在启动过程中手动添加配置信息,或者要进入光盘的救援模式进行修复。

Linux的启动流程

原创文章,作者:hunter,如若转载,请注明出处:http://www.178linux.com/46121

(0)
hunterhunter
上一篇 2016-09-13 15:32
下一篇 2016-09-13 16:29

相关推荐

  • 用shell脚本打等腰三角新

       *   ***  ***** *******   预览图形 发现图形由三个变量组成 行数n 每行的空格数a 和每行的符号数b 关系是    a=n-当前行数    b=2xn-1   并且空格都在符号前 根据关系编写脚本 #!/bin/bash read…

    Linux干货 2016-08-22
  • SELinux——有趣的标签

    SELinux ·SELinux: Secure Enhanced linux,工作与Linux内核中 ·DAC:Discretionary Access Control 自由访问控制 ·MAC:Mandatory Access Control  强制访问控制        &n…

    Linux干货 2016-09-18
  • 文件系统的创建和管理

    作业:文件系统的创建和管理 思路:管理通常就是增删改查[*代表某一数值,测试机centos6使用的就是ext4,不要问我为什么了,马哥告诉我的,你问他吧!];   事情准备检查系统支持和使用的文件系统格式:         #lsmod  &nbsp…

    Linux干货 2016-01-19
  • Iptables基础

       Firewall:防火墙,工作于主机或网络的边缘处,对于进出本主机或网络的报文根据事先定义好的检查规则左匹配检测,对于能够被规则所匹配到的报文进行相应的处理的组件。   防火墙可分为:硬件防火墙,在硬件级别实现部分功能的防火墙;软件防火墙,应用软件处理逻辑运行于通用硬件平台之上的防火墙;主机防火墙,服务范围为当前主机;网络…

    2017-06-19
  • Linux安全和openssl、gpg加密

                     Linux安全和openssl、gpg加密 本章内容: 安全机制 对称加密 不对称加密 散列算法 PKI和CA openssl 证书管理 gpg   加密需要: 不加密的流量易受攻击性 密码/数据嗅探 数据操作 验证操作 相当…

    系统运维 2016-10-09
  • 系统管理中的三大利刃(htop glances dstat)

    工欲善事情,必先利其器,生产环境中的服务器在处理请求并生成回应数据的时间主要消耗在服务器端,包括了众多的环节,如何全面了解我们linux服务器的CPU使用率、使用时间、内存占用比例、磁盘IO数据、网络相关数据等等众多指标,保证我们的linux服务器顺利完成每一个请求,怎能没有几个趁手的利刃,而今天就让我们见识一下系统管理中三大利刃。 相传一把三尺长的软剑,叫…

    Linux干货 2015-11-18