CentOS系统启动流程和系统初始化
CentOS系统启动流程和系统初始化
一 Linux系统启动流程
1
2
3
4
|
POST --> BIOS (Boot Sequence) --> MBR(bootloader)
-> Kernel (CentOS5: initrd, CentOS6: initramfs)
-> /sbin/init (CentOS5: /etc/inittab , CentOS6:
/etc/inittab , /etc/init/ *.conf)
|
二 启动详解
(1)POST自检
1
2
3
4
5
6
|
POST自检:第一步就是CPU加电然后寻址,而CPU寻址所需的代码指令
来自于ROM->硬件厂商制作(内存分为ROM+RAM),关于CPU如何找到
指令代码的?硬件的设计的思想就是:CPU懂的去特定的位置去寻找
代码,而代码得存贮者ROM就应该在特定的位置。与此同时POST自检
还会检测内存,主板,显卡,声卡,网卡等I /O 设备,等一切没有
问题POST自检完成!将工作移交给BIOS去处理
|
(2)BIOS
1
2
3
|
BIOS:(Boot Sequence)加载可选择的启动设备->固件厂商制造
Bios中存放着各种I/O设备的信息参数、系统时间、启动寻找顺序
所以必须要检测Bios是否正常。之后会去加载第一个硬盘设备
|
(3)MBR
1
2
3
|
MBR:硬盘的主引导记录,存在于 0 磁道第 0 扇区,共 512 字节。其中Bootloader占据
446 字节,分区表占据 64 字节,magic num占据 2 字节。MBR将加载Bootloader去开始
后边的工作
|
(4)Bootloader
1
2
3
4
5
6
7
8
9
|
Bootloader(内核加载器)位于第0磁道第0扇区的446字节是最前边
的446字节哦!Bootloader的工作机制:bootloader可以访问文件系
统,而内核则作为文件而存在。所以bootloader可以访问内核文件,
深入的说bootloader访问内核文件时,是将内核文件Vmlinz所在的
整个分区当作根去访问的,如访问 /Vmlinz 而根 "/" 本身的存在位置
是由内核文件自己决定。(因为每个文件必须要有一个自己的起始路径)
能理解这种逻辑吗?
现代我们常用的内核加载器是grub(Grand Unified Bootloader)
以此grub来加载内核。加载内核之前grub所做的工作
|
第一步 1) grub将内核文件Vmlinz 和 grub自己加载到了/boot上,
同时也在/boot上存放了所有模块的驱动程序xxx.img文件
用ll /boot 查看
2) 接下来让我们查看grub目录中存放的是什么
grub目录中存放着grub.conf自身配置文件,device.map磁盘映射图(映射分区/boot和/根分区)
你会看到有stage1 stage2 还有各种stage1.5
1
2
3
4
5
6
7
|
1st stage: 位于MBR中,为了引导2nd stage
1.5 stage: 位于boot基本磁盘分区中,为识别
内核文件所在的文件系统提供文件系统识别扩展(因为我们上边
提到过grub只能识别基本的文件系统,而内核文件不可能没有高
级的文件系统,所以需要赋予grub能识别内核高级文件系统的扩
展功能)
2nd stage: 位于boot基本磁盘分区中,GRUB的引导程序
|
3)查看grub.conf文件内容和 device.map文件内容
第二步 1) 上边我们已经提到grub目录中存放着device.map磁盘映射分区,接下来我们去查看
映射的根分区/(内核真正挂载的分区)中的各种模块所在的路径
2)接下来查看路径下的各个模块.ko文件
(5)Kernerl
1
2
3
|
Linux属于单核系统:Kernel+各种外围模块组成
通过grub加载内核后,内核开始自我解压并工作
通过虚拟根文件系统initrfs 调用init工作
|
(6)/sbin/init 以CentOS6为例
1
2
3
|
/sbin/init 程序被内核第一个所调用,所以init的PID号为1
init调用其配置文件 /etc/inittable 和启动脚本 /etc/init/rcS .conf
从而启动各个子进程
|
/etc/inittable
/etc/rc.d 目录中存放着123456运行级别的目录
以rc3.d为例,目录中存放着进程, 进程运行级别 ,进程状态(K为开启、S为关闭)——>
init就是控制进程是K还是S得总管 (当系统在1 2 3 4 5 6 之间切换时由父进程fork而来的
子进程就会在K与S之间切换状态)
PS:以上为个人理解的Linix启动和初始化流程,如果有问题请各位大神细心指点
CentOS系统启动流程和系统初始化相关推荐
- CentOS系统启动流程
CentOS系统启动流程 POST-->Boot Sequence(BIOS) -->bootloader(MBR)-->Kernel-->rootfs(readonly)-- ...
- CentOS系统启动流程及GRUB文件说明
CentOS系统启动流程及GRUB文件说明 时间:2013-10-24 01:33来源:"过程就是为了实现结果" 博客 作者:本站 举报 点击:1114次 id="ifr ...
- CentOS系统启动流程你懂否
一.Linux内核的组成 相关概念: Linux系统的组成部分:内核+根文件系统 内核:进程管理.内存管理.网络协议栈.文件系统.驱动程序. IPC(Inter-Process Communicati ...
- 学习笔记之centos系统启动流程
CentOS 系统的启动流程: 简介: (内核级别)POST -读取-> BootSequence(在BIOS中) --> BootLoader(在MBR中)--> Kernel( ...
- 图解CentOS系统启动流程
当我们按下开机键后,系统背后的秘密我们是否了解呢?这里,我带大家探索一下linux系统开机背后的秘密. 1.加电自检 主板在接通电源后,系统首先由POST程序来对内部各个设备进行检查,自检中如发现有错 ...
- CentOS 6系统启动流程细微解读,不可忽略引导扇区的1.5阶段。
一.Linux内核的组成 Linux系统的组成部分:内核+根文件系统 内核:进程管理.内存管理.网络协议栈.文件系统.驱动程序.安全功能(selinux) IPC(Inter-Process Comm ...
- Linux的系统启动流程
Linux的系统启动流程 一.systemd进程介绍 1.systemd服务介绍 2.systemd功能 3.服务单元 3.查看以激活状态的服务单元 4.查看服务之间的依赖关系 二.Linux的运行级 ...
- CentOS 6系统启动流程详解
第一步:POST 加电自检(Powered On Self-Test) 通过主板上集成RAM中的BIOS程序实现POST 主板上的ROM:CMOS:主板上的一块可读写的并行或串行FLASH芯片,是用来 ...
- 【Android 系统开发】 Android 系统启动流程简介
作者 : 万境绝尘 (octopus_truth@163.com) 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/3889548 ...
最新文章
- (1)Adapter适配器(ArrayAdapter、SimpleAdapter、BaseAdapter)
- Kanzi常用操作2
- easyui tabs 使用iframe 出现两个垂直滚动条 解决方法
- 八十七、CSS水平垂直居中的布局方式
- Web开发编程实用手册
- $@ $# $2 $0 $* Linux 参数使用
- 原生H5 select自动提示搜索
- 矢量归一化_7. 从矢量观测到姿态观测
- httplistener java_Java监听器Listener使用详解
- 语音识别软件哪个好?好用的语音识别软件盘点
- 扫描仪没有linux 驱动怎么安装,扫描仪驱动安装不上怎么办_扫描仪驱动安装方法 - 驱动管家...
- 线性代数之行列式(1) ——行列式的定义以及二阶行列式
- 2020-04-08
- ES(四)ES使用(基本查询、聚合查询)
- python中的取整
- 全网首创Python某短视频平台百叶窗短视频卡点自动混剪第1版
- Callable 接口实现java 的多线程
- ExtJS6图表简单demo(折线图,散点图,柱状图)
- 520送男朋友的礼物送什么比较适合?2022年男生礼物清单
- Unity如何判断屏幕被点击