X86平台系统启动流程 (Blog 9)

POST –> BootSeqence(BIOS) –> Bootloader(MBR) –> Kernel(initrd) –> init(/etc/inittab)

适用环境:MBR类的X86PC兼容架构;不适用于其它架构或UEFI的PC架构;

系统组成:
Mage1

内核功能
文件系统、进程管理、网络协议栈、内存管理、驱动、安全加密
内核功能实现通过内核模块;装载模块就有此功能,不装载就没有此功能;

内核特点
支持模块化
支持动态装载或卸载
使用缓冲和缓存来加速对磁盘上的文件访问

操作系统的组成

运行中的内核
Kernel + 根文件系统
内核空间 + 用户空间

从磁盘的视角
内核只是一个静态文件;

如何将一个静态的内核启动起来?
启动:将内核加载至内存中,运行起来;
没有那么契机,没有唐僧揭去压猴石条,猴子是蹦不出来的;

内核通过根文件系统的驱动关联根文件系统;文件系统驱动在根上;
内核需要自带驱动:
如果是自己使用:仅编译进一个硬盘的驱动;

如果是所有人都使用这个内核:就要将所有的硬盘的驱动全部编译进内核;缺点:内核体积大。
为了解决这个问题:通过ramdisk一个临时的根文件系统,仅有当前系统独有的驱动,在操作系统安装后动态生成;

注意:ramdisk并非是必须的,完全可以将驱动编译进内核供自己使用;

内核的组成:
内核文件: /boot/vmlinuz-VERION-release
根文件系统: 遵循FHS层级结构标准,内核启动后关联的分区;有bin, sbin, lib, lib64, etc, proc, sys, var, usr等目录
内核模块:/lib/modules/VERSION-release/ 目录下有各种驱动,为实现内核功能,例如:文件系统模块;网络协议栈;安全加密;内核管理;等;
磁盘映像:/boot/initrd-VERSION-release.img 或 /boot/initramfs-VERSION-release.img

ramdisk:基于内存中的磁盘映像
CentOS5: initrd
CentOS6,7: initramfs

区别:
initrd: 基于内存中的磁盘映像
initramfs: 基于内存中的文件系统

内核特性之一:使用缓冲和缓存来加速对磁盘上的文件访问
所有initrd本身在内存中,仍需要缓冲一次;
initramfs:本身是文件系统不需要再缓冲;

完整的系统启动流程
内核空间 –> 用户空间

CentOS 系统启动流程

LILO启动次序:POST –> bootloader –> kernel(ramdisk) –> init(/etc/inittab)
GRUB启动次序:POST –> bootloader(1st) –> grub(2nd) –> kernel(ramdisk) –> init(/etc/inittab)

POST(Power On SafeTesting)
ROM芯片中COMS提供的BIOS指令完成加电自检;
内核运行在硬件之上,硬件是提供计算能力的最基础的保证;

Boot Seqence
BIOS从启动次序中查找第一个可引导设备(MBR),即为本次要启动的设备

Bootloader
MBR前446Bytes是Bootloader;
Bootloader功能:提供一个菜单,允许用户选择要启动的系统或不同内核版本;把用户选定的内核装载到RAM中的特定空间中,解压、展开,而后把系统控制权移交给内核;
安装在U盘、光盘、硬盘中第0磁盘的第0扇区

MBR组成:
446Bytes: bootloader
64Bytes: fat
4Bytes: 磁盘有效标识

Bootloader分类:
Windows:ntloader
Linux:
LILO: 用446Bytes(ASCII码;一个1Bytes对应一个字符)写bootloader程序是极困难的;
GRUB: 通过驱动完成加载磁盘,实现更多的功能;
GRUB 0.x: grub legacy
GRUB 1.x:grub2

Kernel
被加载至内存的内存,自解压展开;内核初始化,即内核空间;
内核初始化:
(1) 探测可识别的所有硬件设备;
(2) 加载硬件驱动程序;有可能借助于ramdisk加载驱动;
(3) 以只读方式挂载根文件系统;
(4) 运行用户空间的第一个程序/sbin/init
注意:加载init后,内核只会参与发生中断后运行内核空间代码的过程

init(/etc/inittab文件)
init被创建,即用户空间;人间的一切事务均由其代理完成;
设定默认运行级别
初始化
(1) 主机名
(2) 欢迎信息
(3) 激活udev和selinux
(4) 挂载/etc/fstab中定义的所有文件系统
(5) 检测根文件系统,重新挂载根
(6) 设备系统时间
(7) 根据/etc/sysctl.conf设置内核参数
(8) 激活lvm及软RAID
(9) 激活swap设备
(10) 加载额外驱动
(11) 清理临时文件,初始化过程中生成的临时文件;
关闭和启动服务
打印登陆提示符

本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/89053

(0)
逆神阳逆神阳
上一篇 2017-11-27 23:14
下一篇 2017-11-27 23:25

相关推荐

  • 第二周的作业

    1、Linux上的文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 命令:ls NAME:用于列出目录的内容; SYNOPSIS:ls [OPTION]… [FILE]… FILE: 如果FILE是个文件的话,则显示文件名; 如果FILE是个目录的话,则列出目录的内容; OPTION: -l:显示长格式的信息,一共包含了7个…

    Linux干货 2016-11-23
  • lvs基础知识

    简介  Cluster是什么?    Cluster其实就是组织多个主机构建高实现性能、高可靠、多并发、大容量的同一功能的系统。  常见的集群类型:   (1) Load Balancing: 负载均衡集群   (2) High Avaiability: 高可用集群   (3) …

    Linux干货 2015-06-23
  • 生产环境日志审计

         日志审计,就是记录所有系统和相关用户行为的信息,并且可以自动分析,处理。在中小企业环境中,一般都是在单个服务器上记录日志,而大型企业的生产环境当中,会有专门的日志服务器乃至集群。本文通过sudo配合centos自带的rsyslog(syslog)服务,进行日志审计。    &nb…

    Linux干货 2016-10-20
  • 文本三剑客 grep sed awk

    模式,选项。常用用法。

    2017-12-03
  • shell脚本编程基础(1)

    一.位置变量相关知识     1.位置变量定义:在脚本代码中调用通过命令行传递给脚本的的参数     2.位置变量种类:              &…

    Linux干货 2016-08-15
  • 编辑器之神VS神之编辑器

      在linux下有两款非常棒的处理器,它们的功能异常的强大,在普通使用者手中,我们或许仅仅把它们当做文本处理器,但在官方文档中,它们不仅仅被定义为开发工具。正如在windows下,office在我们手中仅仅是文本,表格,PPT等文件的处理工具,而在大神手中,Excel是可以用来作画的!PowerPoint 还可以用来播放视频!  &nb…

    Linux干货 2017-08-05