linux开机启动流程
流程图
centos7和centos8的开机启动流程图:
过程
第一步:power on,通电
第二步:开机自检(post),检查硬件是否正常.由主板上的BIOS程序完成。
其工作原理如下:
服务器通电之后,会自动进入BIOS(是固化在主板上一个 ROM(只读存储器)芯片上的程序,主要保存计算机的基本输入/输出信息、系统设置信息、开机自检程和系统自启动程序,用来为 计算机提供最底层和最直接的硬件设置与控制)
BIOS会去读取COMS芯片(是一个RAM芯片,存储硬件的配置参数信息,在主板上有一块电池,特地用来给CMOS芯片供电)。
BIOS是个人电脑启动后的第一个软件/程序
BIOS 的初始化主要完成以下 3 项工作:
第一次检查计算机硬件和外围设备,例如 CPU、内存、风扇灯。当 BIOS 一启动,就会做一个自我检测的工作,整个自检过程也被称为 POST(Power On Self Test)自检。
如果自检没有问题,BIOS 开始对硬件进行初始化,并规定当前可启动设备的先后顺序,选择开机的设备。
选择好开启设备后,就会从该设备的 MBR(主引导目录)中读取 Boot Loader(启动引导程序)并执行。启动引导程序用于引导操作系统启动,Linux 系统中默认使用的启动引导程序是 GRUB。
当 MBR 被加载到 RAM 之后,BIOS 就会将控制权交给 MBR,进入系统引导的第二阶段。
第三步:BIOS根据开机启动顺序,依次进行检查。知道读取到镜像文件为止。
如果磁盘里面已经有加载的系统了,则可以将硬盘(hard driver)设为第一启动顺序,也可以算是一个开机启动的优化策略了
第四步:BIOS读取位于硬盘第一个扇区的MBR
第五步:根据MBR内的grub2程序进行引导工作
第六步:从该设备的 MBR(主引导目录)中读取 Boot Loader(启动引导程序)并执行。启动引导程序用于引导操作系统启动。
会产生一个临时的根目录
即加载boot Loader里面的内核文件,其中有两个重要的文件:
1.initramfs-4.18.0-193.el8.x86_64.img
initramfs-4.18.0-193.el8.x86_64.img:是给内核程序提供一个初始化内存文件系统的镜像文件。可以理解成一个临时的根文件系统
2.vmlinuz-4.18.0-193.el8.x86_64
vmlinuz-4.18.0-193.el8.x86_64:是内核程序文件,具有可执行权限
可用该命令去查看文件的描述信息
file vmlinuz-4.18.0-193.el8.x86_64
第七步:运行系统的第一个真正的进程–systemd,pid号为1。注意:在centos6中的第一个进程是init
第八步:由systemd进程去启动系统对应的运行级别下开机自启的服务程序,并且运行/etc/rc.local开机自启文件和/etc/fstab文件
运行/etc/rc.local文件,挂载 /etc/fstab文件,此时就有真正的根文件系统了
其中
/etc/systemd/system/multi-user.target.wants是存放多用户运行级别的环境下,开机启动的服务
设置服务开机自启:
systemctl enable nginx
第九步:用户登录,登录成功,则运行家目录下面的".bashrc,.bash_profile,/etc/bashrc,/etc/bashprofile
第十步:给用户创建一个bash进程,用于操作系统和用户之间的通信
/var/log/boot.log是存放开机启动的日志文件。