Linux的2种启动过程

Linux启动过程分为2种,init方式和systeamd方式。

先说init启动过程:

1.首先,启动电源。

2.启动POST(Power on self test),加电自检程序,检查主板硬件上有无短路等等,如果正常,会“滴”的响一声,这是很多人熟知的开机“滴”声。(上面那篇文章没写到。)

3.然后处理器会在系统存储中找到BIOS(Basic Input Output System)。

(注:BIOS一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序。)

4.BIOS找到第一个引导设备。(一般是硬盘 ,装系统的时候可能是USB可能是CD,装过系统的童鞋知道可以进BIOS设置启动顺序。 )

5.查找硬盘的的主引导记录MBR(Master Boot Record),磁盘的第一扇区第一磁道,并将其加载到内存中,以后的启动过程就由MBR程序引导。前面是BIOS在引导。

(注:MBR描述了逻辑分区的信息,包含文件系统以及组织方式。此外,MBR还包含计算机在启动的第二阶段加载操作系统的可执行代码或连接每个分区的引导记录VBR。)

6.MBR初始化引导程序(Grub或LILO,前者居多,用Grub为例)Grub。

7.Grub程序加载内核kernel。

8.内核kernel会去查找/sbin下的init程序,并且执行该程序。init便是Linux的父进程,是所有进程的父进程,PID为1。

9.init读取/etc/inttab,确定此次运行的级别runlevel。

10.init读取/etc/fstab,根据文件信息挂载分区。

11.init读取/etc/init.d,开启对应启动级别(第9步确认)的脚本和服务。

12.进入Shell(这是第11步启动出来的。)

至此,开机成功!

我们再来说说systemd方式启动:

1.前面7步与init方式相同。

8.内核kernel将加载systemd作为引导管理程序。(使用systemd还是init取决于Grub里的配置。)

9.加载default.target,实际上default.target是指向graphical.target的软链接,文件的内容是需要加载的target文件。

10.启动multi-user.target,为多用户设定系统环境,开起防火墙服务。

11.加载basic.target,开启普通服务特别是图形服务。(它通过/etc/systemd/system/basic.target.wants目录来决定哪些服务会被启动)

12.加载sysinit.targe,开启重要服务,例如挂载等。

13.加载local-fs.target,来处理底层核心服务。

14.进入Shell(这是第11步启动出来的。)

至此,开机成功!

时间: 2024-08-07 18:10:57

Linux的2种启动过程的相关文章

Linux系统开机和启动过程

提起操作系统这个词,想必大家并不陌生,有电脑端操作系统和手机端操作系统.电脑端操作系统较为熟悉的就是微软开发的windows操作系统,还有一种就是大家稍微陌生的linux操作系统,而手机端的操作系统分别为iOS操作系统,Android操作系统.而今天小编就给大家着重讲讲Linux系统开机和启动过程. 内核引导 当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动. 操作系统接管硬件以后,首先读入 /boot 目录下的内核文件. 运行init init 进程

Linux(RHEL6)启动过程详解

Linux(红帽RHEL6)启动过程详解: RHEL的一个重要和强大的方面是它是开源的,并且系统的启动过程是用户可配置的.用户可以自由的配置启动过程的许多方面,包括可以指定启动时运行的程序.同样的,系统关机时所要终止的进程也是可以进行组织和配置的,即使这个过程的自定义很少被需要. 理解系统的启动和关机过程是如何实现的不仅可以允许自定义,而且也可以更容易的处理与系统的启动或者关机相关的故障.  1.启动过程  以下是启动过程的几个基本阶段:   ① 系统加载并允许boot loader.此过程的细

linux内核结构和启动过程

(以下内容来自教学课件) 一.Linux内核结构 arch 与体系结构相关的代码.对应于每个支持的体系结构,有一个相应的子目录如x86.arm等与之对应,相应目录下有对应的芯片与之对应 drivers 设备驱动代码,占整个内核代码量的一半以上,里面的每个子目录对应一类驱动程序,如:char:字符设备.block:块设备.net:网络设备等 fs 文件系统代码,每个支持的文件系统有相应的子目录,如cramfs,yaffs,jffs2等 include 这里包括编译内核所需的大部分头文件 与平台无关

Linux移植之内核启动过程引导阶段分析

在Linux移植之make uImage编译过程分析中已经提到了uImage是一个压缩的包并且内含压缩程序,可以进行自解压.自解压完成之后内核代码从物理地址为0x30008000处开始运行.下面分析在进入C之前内核做的一些工作,以下是内核启动过程中打印出来的信息,其中Uncompressing Linux就是在自解压代码.make uImage编译的最后也给出了链接脚本arch/arm/kernel/vmlinux.lds,以及链接的顺序arch/arm/kernel/head.o 是第一个.

java项目部署Linux服务器几种启动方式总结经验

一:两种部署包: 部署之前先说下两种包,java项目部署到服务器一般有用war包的,也有用jar包的,微服务spring-cloud普及后大部分打包都是jar,部署之前先搞清楚自己要打war包还是jar包,下面小介绍两种包的区别: spring boot既可以打成war发布,也可以找成jar包发布.说一下区别: jar包:直接通过内置tomcat运行,不需要额外安装tomcat.如需修改内置tomcat的配置,只需要在spring boot的配置文件中配置.内置tomcat没有自己的日志输出,全

linux开机启动过程,很多人说的不太清楚的看看。

面试中经常遇到说,请简要回答一下Linux系统的开机启动过程? 加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init依据inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了 作为一名linux开发人员,这是必

[中英对照]Booting Process in Linux RHEL 7 | Linux RHEL 7启动过程

Booting Process in Linux RHEL 7 | Linux RHEL 7启动过程 In this post, I will guide you booting process in linux RHEL 7, it is very important to know the linux booting process to troubleshoot and fix boot issues. Redhat 7 replaced the init process (/sbin/i

ubuntu开启启动过程&&开启自动启动 &&chkconfig

ubuntu开启启动过程&&开启自动启动 &&chkconfig 摘要:很多情况下,我们需要让某些服务开机自动运行:apache.mysql等.或者,在其他时候,我们需要开机即设置某些环境变量的值,修改runlevel等:这个时候,我们需要弄明白系统的开机启动过程. 1.ubuntu开启启动过程: 一般的linux系统,开机启动过程如下: boot>> loader >>kernel >>init >> inittab >

跟踪内核启动过程CONFIG_DEBUG_LL【转自】

转自:http://bbs.chinaunix.net/thread-3642079-1-1.html 最近在调试Linux内核,跟踪启动过程.发现在没有turn on mmu之前,可以使用物理地址,通过向串口Fifo丢数据的方式输出调试信息.但是代码一旦运行到开启mmu,在汇编阶段,mmu只做了物理内存的映射,并没有映射io,所以就无法访问串口了. 此时应该通过串口输出的数据都保存在串口缓冲池里,直到在c语言阶段,建立io映射并初始化控制台后才进行输出. 但是,如果我想实时跟踪内核启动过程,应