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启动流程的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核启动流程

linux启动流程梳理

Linux启动流程讲解

Linux启动流程概述

linux系统启动流程,linux系统启动不了,启动出错怎么办?

linux --> Linux 的启动流程