系统启动流程
本章学习的要点:
*运行级别:
0 关机
1 不开启任何服务,只允许root用户登陆,单用户模式。用于系统维护。
2 不开启网络服务,开启部分服务,多用户模式
3 开启所有网络服务,完整的多用户模式,也叫字符模式
4 自定义模式
5 跟3运行级别类似,多一个图形系统
6 重新启动
*破密码
加载BIOS的硬件信息与进行自我测试,并依据设置取得第一个可启动的设备
(第一个扇区)
,驱动硬件设备
硬件驱动成功后,kernel会主动调用系统第一个进程—init进程
init执行/etc/
init执行run-level的各个服务的启动
init执行/etc/
init执行终端机模拟程序mingetty来启动login进程,等待用户登录
初始化BIOS
检测所有外置设备
寻找操作系统内核(BIOS中的设置,去磁盘的第1块磁盘的1磁道/柱面的第1个扇区或者去标记为启动分区的第一个扇区中寻找操作系统内核)
启动加载器(boot loader)
存放位置:MBR(master boot record)或partition中的boot sector
作用: 提供启动菜单
加载内核文件
转交控制权至其他loader
上图为grub启动加载器执行画面
加载操作系统内核和虚拟文件系统,驱动硬件设备
Linux内核会向BIOS查询硬件信息,并接手这些硬件设备的管理
必然需要驱动程序,驱动程序是以模块的形式存放在磁盘上,但此时内核尚未挂载也无法直接挂载磁盘,故无法驱动硬件设备
initrd—RAM disk(虚拟文件系统),提供disk、usb设备的驱动程序,且由grub直接加载
*注:硬件驱动程序分为静态驱动程序和动态驱动程序。静态驱动程序被编译在内核镜像文件中;动态驱动程序存放在磁盘上。而要驱动其他硬件设备需要先驱动磁盘~这就是为什么需要initrd的原因!
Linux尝试去挂在根文件系统(/etc/、/bin/、/sbin/、/lib、/dev)
这五个目录中存放着系统开机所需要的各种配置文件、命令执行文件、执行文件所需的链接库文件和设备文件。所以这五个目录一定要在根文件系统中
!
注:为什么要以只读的方式挂载?
启动过程中运行不太稳定,如果是以可读写的
:
安装适当的内核模块,以驱动其他硬件设备
启动存放在根文件系统中的init程序,以让init程序接手后面的启动工作
启动init服务
寻找init服务顺序:
先找/sbin/
然后/etc/init
再/bin/init
如果都找不到,如下图,最后执行/bin/sh
内核调用第一个进程àini
a系统启动流程 来自淘豆网m.daumloan.com转载请标明出处.