Linux启动流程
Posted wanao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux启动流程相关的知识,希望对你有一定的参考价值。
RHEL 6 开机启动流程
runlevel执行等级
Linux通过设置runlevel来规定系统使用不同的服务来启动,让Linux的启动环境不同。依据有无网络或有无X Window将runlevel划分为七个等级:
runlevel等级
- /etc/inittab:系统默认级别设置在配置文件中
- /etc/rc.d/rc.local:系统在开机之前读取该文件,启动其中文件(需要系统启动运行的工作将运行命令放入该文件即可)
基本启动过程:
- 加电,加载Bios信息,BIOS进行自我检测;
- 加载启动引导程序(boot loader)—Grub;
- 启动引导程序grub加载系统内核;
- 加载内核后启动引导程序grub加载inittramfs——启动一些必备驱动程序,有部分必备驱动放在模块中,inittramfs中放置的就是该类必备驱动;
- 系统内核重新自检,并加载硬件驱动(驱动分为直接写入内核的驱动、以模块方式放在硬盘中的驱动);
- 由内核启动系统第一个进程/sbin/init;
- 由/sbin/init进程调用/etc/init/rcS.conf,进行系统初始化配置(例如硬件信息等);
- 由/etc/init/rcS.conf调用/etc/inittab,确定系统的默认运行级别;
- 确认默认级别后,调用/etc/init/rc.conf配置文件;
- 运行相应的运行级别后,调用/etc/rc[0-6].d/中的脚本;
- 在启动登陆界面之前,执行/etc/rc.d/rc.local中的程序。
RHEL 7 开机启动流程
systemd初始化进程服务没有运行级别的概念,Linux系统在启动时大量的初始化工作如启动各类进程服务、挂载文件系统等都可以看作是一个一个的unit,systemd通过目标(target)来代替init中的运行级别。
基本启动过程:
- 加电,加载BIOS信息,BIOS进行自我检测;
- 加载启动引导程序(boot loader)—Grub2;
- 启动引导程序grub2加载系统内核;
- 加载内核后启动引导程序grub2加载inittramfs(虚拟文件系统);
- 内核启动系统的第一个进程——systemd;
- systemd调用默认单元组(default.target),并按照默认单元组开始运行子单元组(并发执行):
- systemd调用sysinit.target单元组,初始化系统;
- systemd调用basic.target单元组,准备操作系统;
- systemd调用multi-user.target单元组,启动字符界面所需程序;
- systemd调用multi-user.target单元组中的/etc/rc.d/rc.local文件,执行文件中的命令;
- systemd调用multi-user.target单元组中的getty.target单元组,初始化本地终端tty及登陆界面,如果是字符界面,到此启动完成。
以上是关于Linux启动流程的主要内容,如果未能解决你的问题,请参考以下文章