Linux基础--系统启动流程

基本上Linux的启动过程如图所示,不同版本之间可能有一些细微的差别,后面再做介绍,但总体上就是这样一个流程。

  • 从机器上电开始,首先直接将ROM芯片中的BIOS程序加载到内存中运行。BIOS程序首先进行POST(Power On Self Test),即硬件自检,自检通过则按照BIOS中Boot Sequence中定义启动顺序去找相应设备上的0号扇区,尝试寻找其中的BootLoader程序。
  • 如果找到了BootLoader程序则将其加载到内存中,将系统控制权交给BootLoader。而BootLoader则会根据其配置文件进行工作,加载内核和伪根文件系统至内存中,同时告诉内核启动时哪个程序作为系统初始化程序。
  • 这个时候BootLoader也完成了它的使命,将系统控制权交给内核。内核首先使用伪根文件系统,加载其中的真正的根文件系统的驱动程序。
  • 内核以只读方式挂载真正的根文件系统,防止误操作损坏真正的根文件系统。
  • 切换至真正的根文件系统,并以读写方式重新挂载根文件系统。
  • 启动系统初始化程序,之后的启动工作全部交由系统初始化程序完成,内核退居幕后。只有在需要使用核心系统调用时,才交由内核完成。

这里有几点需要注意的:

1. UEFI作为新一代的标准规范,很好地适应的现代计算机的发展趋势,正在慢慢普及,未来会取代BIOS,但它们的作用本质上是一样的。

2. BootLoader是用来引导操作系统的程序,存在于磁盘0号扇区MBR(主引导记录,512字节)的前446字节中。

  1. 其实这样描述也不准确,因为446字节的空间对于一个完备的现代操作系统引导程序来说实在是有限,所以现在的BootLoader一般都分为N段式,不过第一段还是存在于这446字节内的。
  2. MBR由于其空间限制,也难以适应现代计算机标配大容量硬盘的趋势,会逐渐被GPT所取代。不过GPT考虑了兼容性,仍然保留了MBR的那块空间没有改变。
  3. BootLoader程序有很多。常见有windows的NTLoder,不过它只能用来引导windows;还有LILO,这是早期Linux中非常流行的引导程序;以及现在多数发行版Linux上使用GRUB,它有两个版本:一个是0.x,叫做legacy Grub;另一个是1.x,叫做Grub2,并不是在原来版本上改进来的,而是完全重写的。

3. 伪根文件系统的主要作用是提供真正根文件系统所需的驱动程序。在CentOS-5中的伪根文件系统使用的是ramdisk来实现的,即将一部分内存当做磁盘来用,这存在一个双缓存的问题。因为磁盘在跟内存交换数据时,因为磁盘速率远低于内存,所以磁盘上会划出一部分区域作为缓存,提高IO效率。但ramdisk中如果再划出缓存区域就会使得速度变慢而不是变快了。因此到CentOS-6后就改为了ramfs机制,即在一部分内存中建立文件系统。

4. 最后是系统初始化程序,在CentOS-5中是sysvinit,在CentOS-6中是upstart,在CentOS-7中是systemd。这部分内容就不写了,还是直接看IBM文档库中的权威文章吧。

浅析 Linux 初始化 init 系统,第 1 部分: sysvinit

浅析 Linux 初始化 init 系统,第 2 部分: UpStart

浅析 Linux 初始化 init 系统,第 3 部分: Systemd

时间: 2024-12-29 07:59:16

Linux基础--系统启动流程的相关文章

linux操作系统启动流程和光盘镜像制作

1.简述linux操作系统启动流程 POST (加电自检):自检主要硬件设备如:CPU.内存.硬盘是否正常,以及输入输出设备是否存在问题等. BIOS(Boot Sequence):BIOS(基本的输入输出系统)装载在硬件芯片CMOS之上,自检时会启动这个程序,并根据CMOS上的配置信息去读取其他的硬件信息,检测正常之后进行硬件设备的初始化. 读取MBR:引导加载程序,在MBR(主引导记录)中,主要功能是识别,加载系统的核心文件,并提交到内存中运行来启动对应的系统. Kernel运行:Kerne

Linux操作系统启动流程

一般来说,所有的操作系统的启动流程基本就是: 总的来说,linux系统启动流程可以简单总结为以下几步:1)开机BIOS自检,加载硬盘.2)读取MBR,进行MBR引导.3)grub引导菜单(Boot Loader).4)加载内核kernel.5)启动init进程,依据inittab文件设定运行级别6)init进程,执行rc.sysinit文件.7)启动内核模块,执行不同级别的脚本程序.8)执行/etc/rc.d/rc.local9)启动mingetty,进入系统登陆界面. linux系统安装时,如

Linux基础--系统启动中grub功能

本文主要讲解grub原理和系统启动过程中grub的作用过程. grub是多数Linux发行版中使用的boot loader系统引导程序, 其主要作用是计算机从boot sequence中选取指定设备之后, 由grub找到系统内核kernel文件并加载内核文件的作用. grub执行过程 grub作用过程中主要分为三个阶段的作用, 如下图所示: stage1: 启动grub程序, 位于MBR的前446Byte中; stage1.5: 识别内核所在分区的文件系统类型, 位于内核文件所在分区的boot

linux开机系统启动流程

启动流程 1,按下电源 2,bios自检:主要检测主机硬件设备如:cpu,内存.硬盘等显卡设备是否正常,在测试完成后,会按照bios的系统设置顺序来启动. 3,系统引导 MBR:硬盘的0柱面,0磁头,一扇区称为主引导扇区.它由三部分组成,主引导程序(Bootloader),硬盘的分区表(Disk Partition table)和硬盘有效标志(55AA) 4,linux内核启动 bootloader 为引导加载程序,它的主要功能为 1,提供菜单,允许用户选择启动的系统或不同的内核版本 2,加载选

Linux操作系统启动流程浅析

启动BIOS程序 当电源键按下之后,BIOS(Basic nput Output System)就会由主板上的闪存来运行.BIOS程序会把自己解压缩到系统的内存之中,然后读取CMOS(Complementary Metal Oxide Semiconductor)内存储的信息(例如系统时间,启动设备顺序等)来对系统进行配置.同时进行自检(POST:Power-On Self Test).检测系统的硬件是否存在问题,自检通过之后,BIOS会加载第一启动设备的MBR(Master Boot Reco

linux 笔记--系统启动流程

POST(开机自检)-->BIOS(boot seqvence)-->MBR(boot loader)-->kernel-->initrd-->sbin/init 内核设计:    单内核:linux  轻量级线程    微内核:windows 支持多线程内核位置:/lib/modules 以版本号命名的目录 ldd 路径:显示共享库的依赖关系(which查看命令的绝对路径) 启动的服务不同,运行的级别也不相同:     0 halt 关机    6 reboot 重启  

总结:Linux系统启动流程

知识储备:Bootloader是嵌入式系统在加电后执行的第一段代码,在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行 在专用的嵌入式板子运行GNU/Linux系统已经变得越来越流行.一个嵌入式Linux系统从软件的角度看通常可以分为四个层次:1. 引导加载程序.包括固化在固件(firmware)中的boot代码(可选),和BootLoader两大部分.2.Linux内核.特定于嵌入式板子的定制内核以及内核的启动

linux基础学习第十九天-系统启动流程(cenots6)以及配置系统服务(chkconfig)

内容:   CentOS 的启动流程   服务管理(chkconfig)   手动制定系统开机服务脚本 一.centos6系统启动流程 综述过程: POST-->BIOS(Boot Sequence)-->MBR(grub,446)-->Kernel-->initramfs(虚根文件)-->(ROOTFS)/sbin/init(/etc/inittab) 步骤详解: 1.POST: POST:Power-On-Self-Test,加电自检,是BIOS功能的一个主要部分.负责完

linux基础之CentOS系统启动流程

CentOS系统启动流程 Linux系统的组成部分:内核+根文件系统 内核:进程管理.内存管理.网络协议栈.文件系统.驱动程序.安全功能 IPC:Inter Process Communication 消息队列.semerphor.shm socket 运行中的系统环境可分为两层:内核空间.用户空间 用户空间:应用程序(进程或线程) 内核空间:内核代码(系统调用) 内核设计流派: 单内核设计:把所有功能集成于同一个程序: Linux 微内核设计:每种功能使用一个单独的子系统实现: Windows