小c学Linux(11)--开机系统启动流程
2018-04-01 15:41
453 查看
计算机开机后,是怎么一步一步的初始化,然后将系统启动起来,提供一个界面然我们能够操作应用程序,或者是操作shell跟内核进行交互呢?
计算机任何操作都是由CPU执行指令完成的
而CPU是一堆硬件,想让它跑起来进行自检,得给他指令,这个指令在ROM中
CPU必须能够找到存放在ROM中的指令
谁给CPU一个指令:“去ROM中某某位置加载开机自检指令“呢?
CPU生产商生产时就指定了这个去ROM的特定位置找开机自检的指令
ROM生产商根据CPU默认设置的特定地址,默认在生产ROM时给此特定位置存储开机自检指令
所以,整个POST加电自检过程就是:
当加电自检完成后,就要加载内核了,加载内核了再由内核完成整个操作系统的加载。
从哪儿找内核?从外部设备,比如硬盘。
硬盘是设备,貌似要驱动
但是驱动硬件设备是靠内核完成的呢,我们还没有加载内核,怎么驱动硬盘设备?
所以,硬盘不需要内核驱动,硬盘在硬件平台上就能够被找到,能够直接访问
直接读取硬盘的第0扇区上的主引导记录MBR
446: bootloader 一段引导程序
64:分区表
2:5A
内核以文件的形式存储在某个分区上,bootloader必须能够正确加载它
内核以文件的形式存储在分区上,那该分区必须有文件系统,但是操作系统还没启动,bootloader怎么识别这个文件系统
bootloader在系统装到磁盘上时就能够识别vmlinuz所在分区
通过BIOS里的boot sequence启动顺序可以正确加载我们想要的内核
任何程序都必须放在内存中执行,内核文件必须存储在基本磁盘分区,不能存储在
4000
raid或lvm上,因为bootloader只能识别基本磁盘分区
这时候,bootloader能够把内核加载到内存了,内核能够自解压,加载到内存之前进行压缩,加载之后进行解压。
bootloader完成任务后,后面交由内核继续完成操作系统的初始化
要执行/sbin/init,内核必须要识别/根分区,找到/sbin目录
这时候内核要依靠initrd这个文件系统来完成。它是什么东西?它把硬盘模拟成了磁盘,包含了/根、/bin、/sbin等分区,是在安装操作系统时指定和内核vmlinuz一起存储在基本分区上的。
内核通过initrd能够将/根分区正确挂载到硬盘上
最后通过执行/sbin/init配置系统初始化环境
最后总结整个操作系统的启动过程就是:POST->BIOS->MBR->kernel->/sbin/init
POST(Power On Self Test)
post加电自检:计算机任何操作都是由CPU执行指令完成的
而CPU是一堆硬件,想让它跑起来进行自检,得给他指令,这个指令在ROM中
CPU必须能够找到存放在ROM中的指令
谁给CPU一个指令:“去ROM中某某位置加载开机自检指令“呢?
CPU生产商生产时就指定了这个去ROM的特定位置找开机自检的指令
ROM生产商根据CPU默认设置的特定地址,默认在生产ROM时给此特定位置存储开机自检指令
所以,整个POST加电自检过程就是:
计算机开机一通电,就自寻ROM特定位置加载开机自检指令,而后对电脑硬件设备进行自检。
BIOS(Basic Input Output System)
基本输入输出系统bios,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。如果磁盘分区1,2,3,4分别有1,2,3,4个操作系统,默认加载磁盘1,2,3,4的bootloader.如果1坏了,则必须调整为2,1,3,4让2为第一个boot sequence。MBR(Main Boot Record)
主引导记录mbr,是位于磁盘最前边的一段引导(Loader)代码,磁盘的第0扇区。它负责磁盘操作系统(DOS)对磁盘进行读写时分区合法性的判别、分区引导信息的定位,它由磁盘操作系统(DOS)在对硬盘进行初始化时产生的。当加电自检完成后,就要加载内核了,加载内核了再由内核完成整个操作系统的加载。
从哪儿找内核?从外部设备,比如硬盘。
硬盘是设备,貌似要驱动
但是驱动硬件设备是靠内核完成的呢,我们还没有加载内核,怎么驱动硬盘设备?
所以,硬盘不需要内核驱动,硬盘在硬件平台上就能够被找到,能够直接访问
直接读取硬盘的第0扇区上的主引导记录MBR
446: bootloader 一段引导程序
64:分区表
2:5A
内核以文件的形式存储在某个分区上,bootloader必须能够正确加载它
内核以文件的形式存储在分区上,那该分区必须有文件系统,但是操作系统还没启动,bootloader怎么识别这个文件系统
bootloader在系统装到磁盘上时就能够识别vmlinuz所在分区
通过BIOS里的boot sequence启动顺序可以正确加载我们想要的内核
任何程序都必须放在内存中执行,内核文件必须存储在基本磁盘分区,不能存储在
4000
raid或lvm上,因为bootloader只能识别基本磁盘分区
这时候,bootloader能够把内核加载到内存了,内核能够自解压,加载到内存之前进行压缩,加载之后进行解压。
bootloader完成任务后,后面交由内核继续完成操作系统的初始化
/sbin/init
操作系统初始化的操作进程,/etc/inittab 和 /etc/init/*.conf是其配置文件
要执行/sbin/init,内核必须要识别/根分区,找到/sbin目录
这时候内核要依靠initrd这个文件系统来完成。它是什么东西?它把硬盘模拟成了磁盘,包含了/根、/bin、/sbin等分区,是在安装操作系统时指定和内核vmlinuz一起存储在基本分区上的。
内核通过initrd能够将/根分区正确挂载到硬盘上
最后通过执行/sbin/init配置系统初始化环境
最后总结整个操作系统的启动过程就是:POST->BIOS->MBR->kernel->/sbin/init
相关文章推荐
- linux系统开机启动流程之初学乍练
- 转载:linux 系统开机启动流程
- Linux系统从开机到正常提供服务的详细开机启动流程
- linux系统的开机引导、启动流程
- linux开机系统启动流程
- Linux系统开机启动流程介绍
- 介绍Linux系统如何初始化和启动系统服务的(Linux的开机流程)
- 介绍Linux系统如何初始化和启动系统服务的(Linux的开机流程)
- linux系统开机启动流程
- 介绍Linux系统如何初始化和启动系统服务的(Linux的开机流程)
- 如何顺利实现LINUX系统开机自动启动指定的脚本程序
- Linux系统启动的标准流程
- Linux 开机启动流程
- 简要描述Linux开机启动流程
- linux系统启动流程
- 初学Linux对开机启动流程的相关实验
- Linux系统开机启动过程分析
- Linux系统启动流程
- Linux开机启动流程
- Linux系统开机启动过程分析