系统启动流程
简单版
linux启动过程
第一进行加电自检 主要是检查系统的软硬件是否正【细节CMOS】
dier通过bois中设置启动次序 去指定的磁盘上找第一个扇区,这个扇区就是MBR
第三通过MBR中的bootloader去指定的设备上找grub.conf【细节:MBR】
第四,通过grub.conf找到内核文件 vmlinuxz initramfs
第五,将vmliuxz initramfs加载到内存中【细节:为何需要两个,如何工作】
第六,将根从内存切换到磁盘文件系统 【第一次启动为只读,第二次启动为读写】
第七,启动id为1的进程【细节:centos5、centos6,centos7他们init有什么区别】
第八,将设置为开机启动的程序启动起来【6为例 /etc/rc.d/rc3.dz S k】
第九,去执行/etc/rc.d/rc.load文件命令指定
全部的
1) 按开机按钮
2) POST(powner On Self Test):加电自检(开机自检)
·CMOS芯片中有一段程序,这就是BOIS程序,开机的是CPU读取这段程序完成加电自检
·开机CPU从CMOS中读取程序完成自检
3)BIOS(Basic Input Output System):基本输入输出系统
·完成加电自检
·通过BIOS设置启动次序【开机的时候去哪个硬盘上找操作】
4)boot sequence
·根据预先设置的启动次序,在找指定的硬盘上的第一个扇区
5)MBR (Main Boot Record):主引导记录
·512字节
·前446字节:存储的一段程序,BootLoader,他的功能是去磁盘的指定位置上找系统内核文件
·中64字节:分区表,表示当前这个磁盘
16字节表示一个分区,
·最后2字节:magic number,标识MBR看哪个激活的
6)grub.conf
(5和6 /boot/grub/grub.conf)
·通过grub.conf可以找到内核文件,vmlinuz、initramfs
·内核文件不需要依赖驱动
7)vmlinuz、initramfs
·首先将initramfs在内存中展开,展开以后会生成linux基本的文件目录: /etc /boot /prov /sys
·临时将一段内存空间当做磁盘使用,完成系统的第一次启动
·启动以后,内核就可以使用initramfs中的驱动程序来使用底层硬盘和硬盘中的文件系统
8)将根目录切换到磁盘的文件系统中
·这里是完成系统的第二次启动
·此时系统运行在磁盘上
·本次启动为了防止文件被破坏,系统处于只读状态
·如果系统检测正常,会重新挂载根目录为可读可写,这就是第三次启动
9)启动系统中id为1的进程
·系统中所有子进程都是父进程fork自己活着复制自己产生的
内核运行id为1的进程
(centos5系统使用init运行id为1的进程)
·开启自启动服务,会依次顺序启动
(centos6的init被改写了,改写后叫upstart,系统通过upstart产生id为1的进程【upstart完全兼容init】)
·开机自启动服务,会并行启动
(centos7的init被完全重写,改写了systemd,)
·开机自启动服务,会进行服务的延迟启动
10)启动那些设置为开机自启动的服务【以级别3为例】
·去/etc/rc.d/rc3.d/找以S为开头的程序,将这些程序启动起来
·去/etc/rc.d/rc3.d/找以K为开头的程序,将这些程序关闭掉
11)去读取/etc/rc.d/rc.local
·将定义在这个文件中的命令依次执行
RAM: Read Access Memory 读写内存
·内存中的书库是可读可写的
·断电/掉电内存数据全部清空
·平时说的电脑内存
ROM: Read Only Memory 只读内存
·断电/掉电内存数据不丢失
·手机操作系统
·主板的CMOS芯片
存储
外部:外存,U盘,硬盘
内部:内存
RAM: Read Access Memory 读写内存
·内存中的书库是可读可写的
·断电/掉电内存数据全部清空
·平时说的电脑内存
ROM: Read Only Memory 只读内存
·断电/掉电内存数据不丢失
·手机操作系统
·主板的CMOS芯片
CPU --->内存(读取程序)--->