4-计算机os启动流程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4-计算机os启动流程
计算机os启动流程
主板通电,⽴刻找bios程序启动,可以按F2或esc等,停在bios界⾯。
1:装好os后往往hdd优先级设置最⾼,bios到硬盘第⼀个扇区(512bytes)找bootloader。
512bytes=446bytes BootLoader(grub是bootloader其中⼀种)+64位是分区信息+2bytes是结束标志。
但是这512byte存的只是grub主程序,还有其他的要加载,例如grub的配置⽂件/boot/grub/grub.conf在其他mbr中
2: grub去加载内核(操作硬件的程序集合)到内存当中。
grub是最流⾏的bootloader。
提供⼀个界⾯让⽤户选择启动哪个os,例如装了双系统的主机,⽤户选择后,或者时间到选择默认选项,(linux提供修复模式的系统后⾯说)。
选择好之后,读取grub的配置⽂件/boot/grub/grub.conf加载对应的内核,grub将控制权移交给kernel。
3:kernel获得控制权后
a.解压缩⾃⼰并安装相应驱动
b.初始化与⽂件系统相关的虚拟设备,LVM或RAID、初始化内存管理,检测内存⼤⼩、初始化系统的进⾏见通信等等与硬件平台相关的初始化⼯作。
4:装载根⽂件系统,挂在根⽬录下⾯,即装载os接⼝等⽂件信息,还有在os接⼝之上的解释器程序⽂件。
根⽂件系统⾄少包括以下⽬录:
/etc/ :存储重要的配置⽂件。
/bin/ :存储常⽤且开机时必须⽤到的执⾏⽂件。
/sbin/ :存储着开机过程中所需的系统执⾏⽂件。
/lib/ :存储/bin/及/sbin/的执⾏⽂件所需的链接库,以及Linux的内核模块。
/dev/ :存储设备⽂件。
注:五⼤⽬录必须存储在根⽂件系统上,缺⼀不可。
以只读的⽅式挂载根⽂件系统,之所以采⽤只读的⽅式挂载根⽂件系统是因为:此时Linux内核仍在启动阶段,还不是很稳定,如果采⽤可读可写的⽅式挂载根⽂件系统,万⼀Linux
不⼩⼼宕机了,⼀来可能破坏根⽂件系统上的数据,再者Linux下次开机时得花上很长的时间来检查并修复根⽂件系统。
挂载根⽂件系统的⽽⽬的有两个:⼀是安装适当的内核模块,以便驱动某些硬件设备或启⽤某些功能;⼆是启动存储于⽂件系统中的init 服务,以便让 init服务接⼿后续的启动⼯作。
5:启动第⼀个进程 init (centos7启动第⼀个进程systemd),init祖宗进程启动标志着kernel顺利启动完成,下⾯就是初始化os使⽤环境了。
先从⽂件系统中找到init服务启动,读取运⾏级别
init服务会读取/etc/inittab⽂件,根据/etc/inittab中的设置数据进⾏初始化系统环境的⼯作。
/etc/inittab定义 init 服务在 linux启动过程中必须依序执⾏以下⼏个脚本⽂件: /etc/rc.d/rc.sysinit
/etc/rc.d/rc
/etc/rc.d/rc.local
/etc/rc.d/rc.sysinit
主要的功能是设置系统的基本环境,例如图形界⾯。
1 (1)启动udev
2
3 (2)设置内核参数
4
5 执⾏sysctl –p ,以便从 /etc/sysctl.conf 设置内核参数
6
7 (3)设置系统时间
8
9 将硬件时间设置为系统时间
10
11 (4)启⽤交换内存空间
12
13 执⾏ swpaon –a –e,以便根据/etc/fstab的设置启⽤所有的交换内存空间。
14
15 (5)检查并挂载所有⽂件系统
16
17 检查所有需要挂载的⽂件系统,以确保这些⽂件系统的完整性。
检查完毕后以可读可写的⽅式挂载⽂件系统。
18
19 (6)初始化硬件设备
20
21 Linux除了在启动内核时以静态驱动程序驱动部分的硬件外,在执⾏rc.sysinit 时,也会试着驱动剩余的硬件设备。
r c.sysinit 驱动的硬件设备包含以下⼏项:
22
23 a)定义在/etc/modprobe.conf 的模块
24
25 b) ISA PnP的硬件设备
26
27 c) USB设备
28
29 (7)初始化串⾏端⼝设备
30
31 Init服务会管理所有的串⾏端⼝设备,⽐如调制解调器、不断电系统、串⾏端⼝控制台等。
Init 服务则通过rc.sysinit来初始化linux 的串⾏端⼝设备。
当rc.sysinit 发现 linux 才能在这 /etc/rc.serial 时,才会执⾏
32
33 (8)清除过期的锁定⽂件与IPC⽂件
34
35 (9)建⽴⽤户接⼝
36
37 在执⾏完3个主要的 RC Script 后, init服务的最后⼀个⼯作,就是建⽴linux的⽤户界⾯,好让⽤户可以使⽤ linux 。
此时init 服务会执⾏以下两项⼯作:
38
39 (10)建⽴虚拟控制台
40
41 Init 会在若⼲个虚拟控制台中执⾏ /bin/login,以便⽤户可以从虚拟控制台登陆 linux 。
linux 默认在前6个虚拟控制台,也就是 tty1~tty6 ,执⾏ /bin/logi 登陆程序。
当所有的初始化⼯作结束后,cpu_idle()函数
View Code。