解析Linux系统启动的引导流程

合集下载

【Linux系统教程】Linux的引导过程及原理

【Linux系统教程】Linux的引导过程及原理

Linux的引导过程及原理1.1:Linux计算机的启动顺序打开电脑并使其操作系统被加载的过程叫引导。

当PC引导后,BIOS做一些测试保证一切正常,然后开始真正的引导。

启动过程中电脑首先加载了一小段叫 bootstrap loader 的程序,它依次加载和启动操作系统。

bootstrap loader 通常存储在硬盘或软盘的固定位置。

这两步过程的理由是操作系统大而复杂,而电脑加载的第一段代码很小(几百字节),以免使固件不必要地复杂化。

不同电脑的bootstrap也不同,对于PC电脑(它的BIOS)读软盘或硬盘的第一个扇区(叫引导扇区),bootstrap loader包含在这个扇区中,它加载位于(和其他磁盘)其他地方的操作系统。

它选择一个磁盘(通常是第一个软驱,如果无软盘的话,就是第一个硬盘,顺序是可设置的)。

然后读第一个扇区,这叫引导扇区;对于硬盘,也叫主引导记录,因为硬盘可以包含多个分区,每个分区都有自己的引导扇区。

引导扇区包含一个小程序(小到可以存入一个扇区),它的责任是从磁盘读入真正的操作系统并启动它。

1.2:Linux启动方式 可以从软盘或硬盘引导Linux。

从软盘启动Linux时,引导扇区包含的代码只读前数百个数据块(当然,依赖于内核的大小)到预定的内存位置。

Linux引导软盘上,没有系统,内核存在连续的扇区中,因为这样简化了引导过程。

Linux加载后,它初始化硬件和设备驱动程序,然后运行init。

init可启动其他进程以允许用户登录并做其他事情。

这部分的细节在下面讨论。

为了关闭一个Linux系统,首先所有进程被告知结束(这使他们关闭所有文件,完成必要的其他事情,使之整齐地结束),然后unmount 文件系统和交换分区,最后打印可以关掉电源的信息到控制台。

如果没有遵循正确的过程,可怕的事情可能发生。

最重要的文件系统缓冲Cache可能没有回写,这意味着其中的所有资料将丢失,磁盘文件系统不完整,并可能不可用。

Linux操作系统之一:简述Linux系统开机引导和启动过程

Linux操作系统之一:简述Linux系统开机引导和启动过程

Linux操作系统之一:简述Linux系统开机引导和启动过程操作系统的启动分为两个阶段:•引导boot•启动startup引导阶段开始于打开电源开关,结束于内核初始化完成和systemd 进程成功运行。

启动阶段接管了剩余工作,直到操作系统进入可操作状态。

总体来说,Linux 的开机引导和启动过程是相当容易理解,下文将分节对于不同步骤进行详细说明。

•BIOS 上电自检(POST)•引导装载程序 (GRUB2)•内核初始化•启动 systemd,其是所有进程之父。

注意,本文以 GRUB2 和 systemd 为载体讲述操作系统的开机引导和启动过程,是因为这二者是目前主流的 linux 发行版本所使用的引导装载程序和初始化软件。

当然另外一些过去使用的相关软件仍然在一些 Linux 发行版本中使用。

引导过程引导过程能以两种方式之一初始化。

•其一,如果系统处于关机状态,那么打开电源按钮将开启系统引导过程•其二,如果操作系统已经运行在一个本地用户(该用户可以是root 或其他非特权用户),那么用户可以借助图形界面或命令行界面通过编程方式发起一个重启操作,从而触发系统引导过程。

重启包括了一个关机和重新开始的操作。

BIOS 上电自检(POST)上电自检过程中其实Linux 没有什么也没做,上电自检主要由硬件的部分来完成,这对于所有操作系统都一样。

当电脑接通电源,电脑开始执行BIOS(基本输入输出系统Basic I/O System)的POST (上电自检Power On Self Test)过程。

BIOS 上电自检确认硬件的基本功能正常,然后产生一个 BIOS 中断INT 13H,该中断指向某个接入的可引导设备的引导扇区。

它所找到的包含有效的引导记录的第一个引导扇区将被装载到内存中,并且控制权也将从引导扇区转移到此段代码。

引导扇区是引导加载器真正的第一阶段。

大多数Linux 发行版本使用的引导加载器有三种:GRUB、GRUB2 和 LILO。

linux系统的流程

linux系统的流程

Linux系统的启动流程可以大致分为以下几个步骤:1.开机自检(BIOS):服务器主机开机以后,将根据主板BIOS中的设置对cpu、内存、显卡、键盘等设备进行初步检测,检测成功后根据预设的启动顺序移交系统控制权,大多时候会移交给本机硬盘。

2.MBR引导:当从本机硬盘中启动系统时,首先根据硬盘第一个扇区中MBR(主引导记录)的设置,将系统控制权传递给包含操作系统引导文件的分区;或者直接根据MBR记录的引导信息调用启动菜单(如GRUB)。

3.GRUB菜单:对于Linux操作系统来说,GRUB (统一启动加载器)是使用最为广泛的多系统引导器程序。

系统控制权传递给GRUB以后,将会显示启动菜单给用户选择,并根据所选项(或采用默认值)加载Linux内核文件,然后将系统控制权转交给内核。

4.内核加载:内核是操作系统最基本的部分,负责管理系统的硬件和软件资源。

当GRUB将系统控制权转交给内核时,内核开始运行并加载必要的驱动程序和模块。

5.用户层init依据inittab文件设定运行等级:内核加载之后,第一个运行的程序是/sbin/init,该程序会读取/etc/inittab文件来设定系统的运行等级。

运行等级决定了系统的运行方式和提供的服务。

6.执行rc.sysinit:在设定运行等级之后,/etc/rc.d/rc.sysinit脚本被执行,用于进行系统初始化工作,如设置PATH环境变量、网络配置、分区挂载等。

7.启动内核模块和执行不同级别的脚本程序:根据不同的运行等级,系统会加载相应的内核模块,并执行不同级别的脚本程序,以启动或停止相应的服务。

8.进入系统登陆界面:最后,系统进入登录界面,用户可以输入用户名和密码进行登录,开始使用Linux系统。

以上步骤是一般的Linux系统启动流程,具体细节可能因不同的Linux发行版和配置而有所不同。

Linux操作系统的启动过程详解

Linux操作系统的启动过程详解

Linux操作系统的启动过程详解对于刚学习Linux或者刚上手的新手来说,了解Linux操作系统的启动流程是最基本的内容。

下面由小编为大家整理了Linux操作系统的启动过程详解的相关知识,希望对大家有帮助!linux启动时我们会看到许多启动信息。

Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段:Linux操作系统的启动过程详解1、内核的引导2、运行init。

3、系统初始化。

4、建立终端。

5、用户登录系统。

init程序的类型:SysV: init, CentOS 5之前, 配置文件:/etc/inittab。

Upstart: init,CentOS 6, 配置文件:/etc/inittab, /etc/init/*.conf。

Systemd:systemd, CentOS 7,配置文件:/usr/lib/systemd/system、/etc/systemd/system。

Linux操作系统的启动过程详解1、内核引导当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

操作系统接管硬件以后,首先读入/boot 目录下的内核文件。

Linux操作系统的启动过程详解2、运行initinit 进程是系统所有进程的起点,你可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

init 程序首先是需要读取配置文件/etc/inittab。

运行级别许多程序需要开机启动。

它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。

init进程的一大任务,就是去运行这些开机启动的程序。

但是,不同的场合需要启动不同的程序,比如用作服务器时,需要启动Apache,用作桌面就不需要。

Linux允许为不同的场合,分配不同的开机启动程序,这就叫做"运行级别"(runlevel)。

linux系统启动的具体流程

linux系统启动的具体流程

Linux系统的启动过程可以分为以下五个阶段:
内核引导:当计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。

操作系统接管硬件以后,首先读入/boot目录下的内核文件。

运行init:init进程是系统所有进程的起点,可以把它比拟成系统所有进程的老祖宗,没有这个进程,系统中任何进程都不会启动。

init程序首先需要读取配置文件/etc/inittab。

系统初始化:在init的配置文件中有这么一行:si::sysinit:/etc/rc.d/rc.sysinit,它调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell的脚本,它主要是完成一些系统初始化的工作,rc.sysinit是每一个运行级别都要首先运行的重要脚本。

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

建立终端:rc执行完毕后,返回init。

这时基本系统环境已经设置好了,各种守护进程也已经启动了。

init接下来会打开6个终端,以便用户登录系统。

用户登录系统:命令行登录、ssh登录、图形界面登录3种方式。

Linux启动引导流程

Linux启动引导流程

Linux启动引导流程一、启动过程:固件firmware(CMOS/BIOS) → POST 加电自检↓自举程序BootLoader(GRUB) →载入内核↓载入内核Kernel →驱动硬件↓启动进程init↓读取执行配置文件/etc/inittab二、主要步骤:1、固件(firmware)的加电自检POST CMOS/BIOS(引导介质,软硬件时钟)2、读取硬盘的第一个位置主引导记录MBR(存放自举程序bootloader)3、Linux下的常用是grub,作用是载入内核(kernel)和镜像文件加载内核4、内核做两件事情驱动硬件和启动init进程Init进程5、Init进程启动后读取/etc/inittab配置文件6、/etc/inittab是一个shell脚本完成后续的系统引导7、首先判断系统的缺省的运行级别/etc/initdefault查看运行级别级别加载脚本8、执行/etc/rd.d/rc.sysinit系统服务启动脚本不管系统在任何运行级别都会运行来进行基本服务的加载9、/etc/rc.d/rc会根据系统的运行级别运行相应的/etc/rc.d/rcN.d (N(0-6)对应运行级别) 这个目录下有两种运行脚本分别以S和K 开头的,S表示开启的服务,K表示关闭的服务服务脚本10、到username、password界面三、启动信息查询dmesg查询系统启动过程里面所有的信息最重要的是内核驱动硬件的信息,可以查看所添加的硬件是否被系统所识别日志文件/var/logBoot.log启动日志,一般是空的Messages 查看某一个服务的启动日志文件,如果某个服务启动的时候出现问题也会记录下来。

linux的启动过程简单描述

linux的启动过程简单描述
1.BIOS自检:在计算机开机时,BIOS首先会进行自检。

它会检查计算机硬件是否能够正常运行,并确定启动设备的顺序。

2. 引导加载程序:BIOS会从硬盘或其他存储设备中找到引导加载程序,并将其加载到内存中。

引导加载程序通常是Grub或Lilo。

3. 内核加载:引导加载程序会加载Linux内核,将其放入内存中,并启动它。

内核负责管理计算机的硬件和软件资源,并为其他程序提供服务。

4. 初始化进程:内核启动后,会启动一个称为init的进程。

它是Linux系统中的第一个用户级进程,负责初始化系统。

init会读取/etc/inittab文件,并根据其中的配置启动其他进程。

5. 运行级别:Linux系统有七个运行级别,每个级别具有不同的功能和服务。

init根据/etc/inittab文件中的设置,选择一个运行级别,并启动相应的进程和服务。

6. 系统服务:在选择的运行级别下,init会启动各种系统服务,例如网络服务、文件系统服务和远程登录服务等。

7. 登录:最后,init会提供一个登录提示符,用户可以输入用户名和密码登录系统。

以上是Linux的启动过程简单描述,这些步骤确保了系统能够顺利地启动,并为用户提供各种服务和功能。

- 1 -。

linux启动流程

linux启动流程Linux启动流程。

Linux操作系统的启动流程是一个非常复杂的过程,涉及到多个环节和组件的协同工作。

在本文中,我们将介绍Linux系统的启动流程,以帮助读者更好地理解Linux系统的启动过程。

首先,当计算机开机时,BIOS(基本输入/输出系统)将被激活。

BIOS是一个位于计算机主板上的固件,其作用是初始化硬件设备,并加载引导程序。

接着,BIOS将在预定义的设备上搜索引导扇区,通常是硬盘或固态硬盘。

一旦找到引导扇区,BIOS将把控制权交给引导扇区上的引导加载程序(boot loader)。

引导加载程序的作用是加载操作系统内核,并将控制权交给内核。

在Linux系统中,最常用的引导加载程序是GRUB(GRand Unified Bootloader)。

GRUB具有丰富的功能和灵活的配置选项,可以加载多个操作系统,并支持在系统启动时进行参数设置。

一旦内核被加载,它将开始初始化系统硬件,并启动用户空间进程。

内核首先会进行一系列的自检和硬件初始化,确保系统硬件处于正常工作状态。

接着,内核将加载并挂载根文件系统,这是系统中所有其他文件系统的起点。

一旦根文件系统被挂载,内核将启动用户空间进程。

用户空间进程是系统中的所有应用程序和服务的运行环境,包括init进程和其他系统进程。

init进程是Linux系统中的第一个用户空间进程,它负责启动系统中的所有其他进程,并提供系统初始化和管理功能。

在init进程启动后,它将根据配置文件启动系统中的各种服务和应用程序。

这些配置文件通常位于/etc/init.d/目录下,包括了系统启动时需要运行的各种服务和应用程序。

init进程将按照这些配置文件的要求,逐个启动系统中的各项服务和应用程序。

最后,在所有必要的服务和应用程序都被启动后,系统将进入用户登录界面,等待用户输入用户名和密码。

一旦用户成功登录,系统将启动用户的默认shell,并提供给用户一个可操作的命令行界面或图形界面。

linux启动流程总结

linux启动流程总结下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. BIOS 自检计算机开机后,首先会执行 BIOS(基本输入输出系统)的自检程序。

linux启动流程

linux启动流程Linux启动流程是指在计算机启动时,操作系统的加载和初始化的一系列过程。

具体的启动流程可以分为以下几个步骤。

1. BIOS(Basic Input/Output System)自检:当计算机启动时,首先会运行内置的基本输入/输出系统(BIOS)进行自检。

BIOS会检测计算机中的硬件设备,并初始化这些设备。

2. 主引导记录(MBR)加载:接着,计算机会加载位于硬盘的主引导记录(MBR)。

MBR是位于硬盘的第一个扇区,其中包含了引导加载程序(Bootloader)的信息。

3. 引导加载程序运行:MBR加载完成后,引导加载程序就开始运行。

常用的引导加载程序有GRUB(GRand Unified Bootloader)和LILO(Linux Loader)等。

引导加载程序会读取硬盘上的操作系统及其内核的位置,并将控制权转移到操作系统的加载程序。

4. 内核加载:引导加载程序会读取操作系统的内核,并加载到内存中。

内核是操作系统的核心部分,负责管理计算机的硬件资源和进程管理。

5. 初始化ramdisk:操作系统内核加载完成后,会解压缩和初始化ramdisk。

ramdisk是虚拟的磁盘,用于提供操作系统初始化所需的文件和目录结构。

6. 初始化系统:操作系统内核会运行init进程,这是系统的第一个用户级进程。

init进程根据指定的运行级别,初始化各个系统服务和进程。

运行级别定义了系统启动时要运行的服务和进程的类型。

7. 启动系统服务:在指定的运行级别下,init进程会依次启动各个系统服务,如网络服务、打印服务、文件系统服务等。

这些服务的启动是根据配置文件中的设置进行的。

8. 用户登录:系统服务启动完成后,操作系统进入用户登录界面。

用户可以输入用户名和密码进行登录。

9. 初始化用户环境:当用户成功登录后,系统会初始化用户的环境,包括创建用户的进程、加载用户的配置文件等。

10. 启动默认图形界面:如果系统启动时设置了默认的图形界面(如GNOME、KDE等),则系统会自动启动默认的图形界面,并将控制权交给图形界面管理器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

解析Linux系统启动的引导流程
LINUX是自由开源软件,在LINUX里一切都是文件,不管是命令,操作等等都是以文件形式保存,这篇博客来记录LINUX启动时的引导流程是通过哪写文件来完成的.
使用的LINUX版本是CentOS5,CentOS和Ubuntu都是自己联系使用时的较理想版本.
下面以CentOS5.5版本为例,介绍LINUX的引导流程,具体流程如下:
下面详细介绍每一步:
1)第一步firmware固件自检,主要是进行CMOS/BIOS对硬件进行POST加电自检,在物理层次上对硬件进行检测是否正常。

例如检查硬盘是否插好等。

2)第二步读取硬盘中MBR的BootLoader,自启动程序,Linux下常用的自启动程序是GRUB。

这一步主要的功能是载入内核。

内核存放在/boot目录下
3)第三步就是载入的内核Kernel的过程,
主要功能是:1、驱动硬件,Kernel中含有大量驱动程序。

2、启动init进程。

4)init进程,主要是读取/etc/inittab文件,执行缺省运行级别,从而继续引导。

需要注意的是init京城的PID恒为1,是所有进程的父进程,而init进程的负景程是0,为内核调度器Kernel scheduler。

5)/etc/inittab 定义了初始化的操作。

命令主要格式是:id: runlevels : action : process
其中,如上图红框中所示
1、run-levels运行级别有7个,0—6分别如下:
0 —— halt 关机
1 —— Single user mode 单用户模式
2 —— Multiuser,withoutNFS 多用户模式但不带网络(text模式)
3 —— Full multiuser mode 完整功能的多用户模式(text模式)
4 —— unused 预留
5 —— X11 图形化多用户模式
6 —— reboot 重启
可以根据这7个运行级别来进行切换
命令为:查看当前运行级别 #runlevel、切换运行级别 #init[0 |1 |2 |3 |4 |5 |6]
2、而acion中也有几个比较重要的取值:
1 initdefault:指定系统缺省启动的运行级别,如上图中标出,通常用于修复,比如我们要进入单用户模式,则可以将其设置为1,不可将默认设置为0或6,否则无法启动.
2sysinit:系统启动执行process中指定的命令
由inittab文件内容可以看出,没有设置运行级别,即为无论是哪个运行级别,都会执行/etc/rc.d/rc.sysinit
6)initdefault,如第五步所说到的,主要是读取/etc/inittab中的信息,判断缺省的运行级别是什么。

7)/etc/rc.d/rc.sysinit
在inittab文件中运行到第21行,变是启动这个脚本。

完成系统服务程序的启动,如系统环境变量的设置、设置系统时钟、加载字体、检查加载文件系统、生成系统启动信息日志文件等。

由于是基础服务,因为其run-level设
置为空::即任何级别,action设置为sysinit。

即该脚本在任何运行级别下都要启动,以完成基础服务的启动
8)基础服务启动后,会执行/etc/rc.d/rc这个脚本
加载完基础服务后,就要根据不同的运行级别去启动相对应的下的目录,它的工作原理是先去判断系统的默认运行级别即第6步中的东西,然后再执行相应的rcN.d目录下的服务启动脚本如图
9)执行/etc/rc.d/rcN.d目录下的服务启动脚本
看下该目录下的内容:
其中S表示要启动的脚本,K表示要关闭的脚本
数字表示启动顺序,数值小的优先.主要是对一些服务的管理
在这一步里,需要说明一下/etc/rc.d/init.d这个目录,这个目录里放的脚本是真正的脚本,而rcN.d里放置的都是init.d目录里的软连接,也就是说所有rcN.d里的文件最终都需要来init.d里找真正的脚本
看一下具体细节:
执行到这一步,界面就会提示输入用户名和密码了,也就是说系统已经起来了,输入用户名和密码的过程后面再说,这次的引导流程就结束了
最后需要说明的是,LINUX的引导流程的思想大致相同,但细节因为版本的问题,在配置文件的名字或者是位置都不尽相同,此次我用的是CentOS版本,而Ubuntu版本是没有inittab文件和grup.conf文件的,所以如果有兴趣,大家可以按照这种思路去探索探索.
PS:关于GRUB
GNU GRUB(简称“GRUB”)是一个来自GNU项目的启动引导程序。

GRUB是多启动规范的实现,它允许用户可以在计算机内同时拥有多个操作系统,并在计算机启动时选择希望运行的操作系统。

GRUB可用于选择操作系统分区上的不同内核,也可用于向这些内核传递启动参数。

GNU GRUB的前身为Grand Unified Bootloader。

它主要用于类Unix系统;同大多Linux发行版一样,GNU系统也采用GNU GRUB作为它的启动器。

Solaris 从10 1/06版开始在x86系统上也采用GNU GRUB作为启动器。

GRUB可动态配置;它在启动时加载配置信息,并允许在启动时修改,如选择不同的内核和initrd。

为此目的,GRUB提供了一个简单的类似Bash的命令行界面,它允许用户编写新的启动顺序。

GRUB非常轻便。

它支持多种可执行格式;它除了可适用于支持多启动的操作系统外,还通过链式启动功能支持诸如Windows和OS/2之类的不支持多启动的操作系统。

GRUB支持所有的Unix文件系统,也支持Windows适用的FAT和NTFS 文件系统,还支持LBA模式。

GRUB允许用户查看它支持的文件系统里文件的内容。

GRUB具有多种用户界面。

多数Linux发行版利用GRUB对图形界面的支持,提供了定制的带有背景图案的启动菜单,有时也支持鼠标。

通过对GRUB的文字界面的设定,可以通过串口实现远程终端启动。

GRUB可以从网络上下载操作系统镜像,因此可以支持无盘系统。

GRUB支持在启动操作系统前解压它的镜像。

与其它启动器不同,GRUB可以通过GRUB提示符直接与用户进行交互。

载入操作系统前,在GRUB文本模式屏幕下键入c键可以进入GRUB命令行。

在没有作业系统或者有作业系统而没有"menu.lst"文件的系统上,同样可以进入GRUB提示符。

通过类似bash的命令,GRUB提示符允许用户手工启动任何操作系统。

把合适的命令记录在"menu.lst"文件里,可以自动启动一个操作系统。

GRUB拥有丰富的终端命令,在命令行下使用这些命令,用户可以查看硬盘分区的细节,修改分区设置,临时重新映射磁盘顺序,从任何用户定义的配置文件启动,以及查看GRUB所支持的文件系统上的其它启动器的配置。

因此,即便不知道一台电脑上安装了什么,也可以从外部设备启动一个操作系统。

GRUB采用滚动屏幕选择想要启动的操作系统。

通过向"menu.lst"文件中添加相关信息,GRUB可以控制150或者更多的启动选项,在启动时用方向键进行选择。

通过链式启动,一个启动器可以启动另一个启动器。

GRUB通过2到3行的命令就可以从DOS、Windows、Linux、BSD和Solaris系统启动。

尽管GRUB为类Unix系统进行了编译和打包,但也有供DOS和Windows使用的GRUB。

GRUB也可以不附带任何操作系统而作为孤立系统安装。

从CD上启动时运用GRUB需要1个文件,而从软盘、硬盘和USB设备上启动时需要2个文件。

这些文件可以在任何支持GRUB的Linux CD上找到,用户可以很容易的找到它们。

相关文档
最新文档