目录

Life in Flow

知不知,尚矣;不知知,病矣。
不知不知,殆矣。

X

CentOS系统启动流程

Linux 系统的组成部分


Linux 系统主要由内核、根文件系统组成。

# 内核的功能
进程管理、内存管理、网络协议栈、文件系统、驱动程序、安全功能

运行中的系统环境可分为两层

  • 用户空间:应用程序(进程或线程)
  • 内核空间:内核代码(系统调用)

内核设计流派

  • 单内核设计:把所有功能集成于同一个程序。Linux
  • 微内核设计:每种功能使用一个单独的子系统实现。Windows、Solaris

内核的组成部分

  • 核心文件:/boot/vmlinuz-3.10.0-957.21.3.el7.x86_64
  • ramdisk:临时根文件系统。/boot/initramfs-3.10.0-957.21.3.el7.x86_64.img
  • 模块文件:/lib/modules/3.10.0-957.21.3.el7.x86_64/*
    .*

Filesystem Hierarchy Standard

文件系统层级结构标准
 所有 Linux 发行版遵循的根文件系统结构的标准规范,明确规范了根下所有目录的命名规范与职能。

系统分区规划的意义

系统分区规划

  • BIOS Boot (标准分区):Boot Loader 位于 LBA0(Logical Block Address),因此只有 446bytes,如果用使用 GRUB2 这种功能丰富 Boot Loader 引导程序空间是不够的,所以需要额外分出一个[BIOS Boos]的分区用来存放引导程序。
LBA是用来统一管理不同大小的扇区的逻辑单元。 默认是512byes。目前已经有4K的扇区设计出现!为了兼容所有磁盘,出现了LBA。
  • /boot (标准分区):用于存放内核的核心文件,1G 足以,单是必须明确设备类型为标准分区,因为 ramdisk 是安装系统时候自动探测硬件设备,在 CentOS7 表示形式为自动创建 initramfs 的一个临时根文件系统,其中仅包含了基本的当前设备的基本驱动,不支持 LVM 特性。
  • / (LVM):根文件系统的入口,10G。
  • /home (LVM):多用户加目录的大小,5G。
  • /swap (LVM):当物理内存容器不够时,此处可以存放内中教授被使用的程序项目,1G。

CentOS 系统启动流程

  • POST:加载固化在 CMOS 中的代码。
  • Boot Sequence:按次序查找各引导设备,第一个有引导程序(Boot Loader)的设备即为本次启动要用到的设备。读取第一个扇区,主要作用是检查分区表是否正确,并且在系统硬件完成自检以后将控制权交给磁盘上的引导程序(如 GNU,GRUB),由 Boot Loader 负责装载内核。
# Boot Loader功能
* 提供一个菜单,允许用户选择要启动的系统或不同的内核版本。
* 把用户指定的内核装载到RAM中的特定空间中,解压、展开、而后把系统控制权移交给内核。

# Boot Loader分类
Windows:ntloader
Linux:GRUB、LILO
	CentOS6.x		GRUB 0.X		Grub Legacy
	CentOS7.x		GRUB 1.X		Grub2

# Boot Loader位置
* MBR:512bytes
	446bytes	bootloader
	64bytes	fat
	2bytes	0x55AA
* GRUB:
	bootloader:1st stage (主要目的不是加载内核、而加载第二阶段)
	Partition: filesystem driver; 1.5 stage 
	Partition:/boot/grub;	2nd stage(磁盘空间不受限制,提供一个功能丰富的接口,并且加载内核文件。)
  • 内核阶段
# 自身初始化
* 探测可识别到的所有硬件设备
* 加载硬件驱动程序(有可能会借助ramdisk加载驱动,ramdisk是安装系统时候自动探测硬件设备,在CentOS7表示形式自动创建initramfs。)
* 以只读方式挂载根文件系统
* 运行用户空间的第一个程序: /sbin/init

# init程序类型
CentOS5 : SysV init
	配置文件:/etc/inittab

CentOS6 : Upstart
	配置文件:/etc/inittab
			/etc/init/*.conf

CentOS7 : Systemd
	配置文件:  /user/lib/systemd/system/*.*
			/etc/systemd/system/ *.*

系统初始化流程(内核级别)

  1. POST
  2. BootSequence(BIOS)
  3. BootLoader(MBR)
  4. Kernel(ramdisk)
  5. rootfs(ready only)
  6. /sbin/init()

作者:Soulboy