Linux系统启动流程

一直以来对于电脑的开机过程概念还停留在按下开机键,然后等待自动开启。但是对于开启的这一过程几乎一无所知,包括它如何能够通电后自己启动包括内部的一系列的过程。

目前也只是对Linux系统的启动流程有了一个浅显的认识,但它启动的过程也想以自己的理解来分享一下。

一般Linux系统的开机过程有这么几个步骤:

按下电源键
BIOS自检
系统引导
Linux内核启动
初始化系统
登录系统

其中每个过程中又可细分为很多的子过程。按下电源键这一步自不必多说,我们从BIOS自检说起。

BIOS自检

BIOS自检的可分为两个阶段

第一阶段:POST(Power-on-self test),主要检测主机硬件设备如:CPU、内存、硬盘、显卡等是否正常;

第二阶段:在第一阶段完成后会按BIOS中设置的系统启动顺序来搜索可启动的磁盘设备。如:光盘、硬盘、U盘等;搜到第一个可启动的设备后就读取该设备的第一个扇区的内容并执行。到此为止BIOS的任务就完成了。

系统引导:

要了解系统引导首先我们得了解什么是MBR(Master Boot Record)。硬盘的0柱面、0磁头、1扇区称为主引导扇区。它由三个部分组成,主引导程序(Bootloader)、硬盘分区表DPT(Disk Partition table)和硬盘有效标志(55AA)其结构如下图:

其中Bootloader为引导加载程序,它的主要功能为:

1、  提供菜单,允许用户选择要启动的系统或不同的内核版本;

2、  加载选定的内核到内存中,解压、展开,而后把系统的控制权交给内核;

目前Linux中最常用的Bootloader 为GRUB;

GRUB引导主要有三个阶段:

stage1:作用很简单就是把第一个扇区读取到内存中,但注意stage1是没有识别文件系统的能力的。

stage1.5:作为stage1和stage2的中间桥梁,stage1.5是有识别文件系统的能力的,此后grub才能去访问/boot/grub目录下的stage2文件,并将stage2载入内存中执行。

stage2:被载入内存执行时,它首先会去解析grub的配置文件/boot/grub/grub.conf,然后加载内核镜像到内存中,并将控制权转交给内核。而内核会立即初始化系统中各设备并做相关的配置工作,其中包括CPU、I/O、存储设备等。

Linux内核启动:

上一步中内核被加载到内存中并且取得了系统的控制权,在取得控制权后内核会立即初始化系统中的设备,包括CPU、I/O、存储等;

关于Linux的设备驱动程序的加载,可能会需要initrd(ramdisk)。因为有一步分驱动程序会被直接编译进内核文件中,另一部分会被以模块的形式放在initrd中;

在初始化硬件及加载各硬件驱动程序后,内核会以只读的方式挂载根文件系统,并且运行第一个程序/sbin/init。此后系统的控制权就交给了/sbin/init进程了。

系统初始化

/sbin/init进程是系统第一个启动的程序,它是其他所有进程的父进程。当它接管了系统的控制权先之后,它首先会去读取/etc/inittab文件来执行相应的脚本进行系统初始化,如设置键盘、字体,装载模块,设置网络等。

在niittab中有一个很重要的设置选项runlevel。根据runlevel的不同启动不同的服务,让Linux的使用环境不同。基本上runlevel分为0-6 ,7个等级:

0:关机,shutdown

1:单用户模式(sigle user),root用户,无须认证;维护模式;

2:多用户模式(multi user),会启动网络功能,但不会启动NFS;维护模式;

3:多用户模式(multi user),完全功能模式;文本界面;

4:预留级别:目前无特别使用目的,但习惯同3级别使用;

5:多用户模式(multi user),完全功能模式,图形界面;

6:重启模式,

系统初始化的过程主要是执行一些脚本配置文件来完成的:

1、执行系统初始化脚本(/etc/rc.d/rc.sysinit),对系统进行基本的配置,以读写方式挂载根文件系统及其它文件系统,到此系统算是基本运行起来了,后面需要进行运行级别的确定及相应服务的启动。

2、执行/etc/rc.d/rc脚本。该文件定义了服务启动的顺序是先K后S,而具体的每个运行级别的服务状态是放在/etc/rc.d/rc*.d(*=0~6)目录下,所有的文件均是指向/etc/init.d下相应文件的符号链接。rc.sysinit通过分析/etc/inittab文件来确定系统的启动级别,然后才去执行/etc/rc.d/rc*.d下的文件。

3、执行用户自定义引导程序/etc/rc.d/rc.local

完成了系统所有的启动任务后,linux会启动终端或X-Window来等待用户登录。

最后一步输入用户名及密码就可以登入系统了。

以上就是Linux系统启动的过程。其中一些步骤并不是很详细,只是为了能让大家对Linux启动过程有一个初步的认识。如果想了解更详细的步骤可自行拓展。

下面是一张转载的系统引导流程图,方便大家梳理一下整个流程

时间: 2024-10-09 15:59:38

Linux系统启动流程的相关文章

Linux系统启动流程分析与关机流程

Linux 系统启动流程分析 Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端. 用户登录系统. init程序的类型: SysV: init, CentOS 5之前, 配置文件: /etc/inittab. Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf. Systemd: systemd, CentOS 7,配置文件: /usr/lib/

Linux系统启动流程与内管管理(上)

在讲linux系统启动流程之前,来讲讲linux的组成,这样能能帮助我们深入了解系统的启动流程,废话不多说直接上系统启动流程图 linux组成 linux:kernel+rootfs kenrel的作用:进程管理.内存管理.网络管理.驱动程序.文件系统.安全管理等 rootfs:程序和glibc 库:函数结合,function,调用接口(头文件负责传输) 过程调用:procedure,无返回值 函数调用:function 程序:二进制执行文件 内核设计流派 单内核:把所有功能集成与一个程序 如:

Linux系统管理(二):Linux系统启动流程

Linux系统启动流程 从11月底报名马哥的Linux培训班,12月初真正开始学习,已经过去一个多月的时间了,从学习Linux的发展史开始.跟着学习命令行.文件系统挂载与管理.目录.Bash Shell的基本特性等等,Linux真的是博大精深,今天以CentOS 5,CentOS 6的启动过程进行一下简单的总结.由于才疏学浅,知识所限,有些地方分析不妥之处还请各位高手不吝赐教. 系统启动过程主要经过以下几个流程: POST>BootSequence(BIOS)>Bootloader(MBR)&

linux系统启动流程一览

加载BIOS的硬件信息并进行自检,然后根据设置取得第一个可启动的设备: 读取并执行第一个启动设备内MBR(master boot record,主引导分区)的boot loader: 依据bootloader的设置加载kernel,kernel开始检测硬件和加载驱动程序: 在硬件驱动成功后,kernel会调用init进程,init进程会取得run-level信息: init执行/etc/rc.d/sysinit文件来准备软件执行的操作环境: init执行run-level的各个服务: init执

【转载】Linux系统启动流程

原文:Linux系统启动流程 POST(Power On Self Test/上电自检)-->BootLoader(MBR)-->Kernel(硬件探测.加载驱动.挂载根文件系统./sbin/init) -->init(/etc/inittab:设定默认级别.系统初始化脚本.启动及关闭对应级别的服务.启动终端) 第1步 计算机电源接通后,CPU默认执行 0ffffh:0000h 处的指令(8086是这样,386应该类似),而此内存地址应该存放的就是 BIOS ROM .系统将有一个对内部

Linux系统启动流程、内核及模块管理

Linux系统启动流程.内核及模块管理 Linux系统的组成部分组成:内核+根文件系统(kernel+rootfs)内核(kernel): 进程管理(创建.调度.销毁等).内存管理.网络管理(网络协议栈).驱动程序.文件系统.安全功能IPC:Inter Process Communication机制本地进程间通信机制:消息队列.semerphor.shm(共享内存)跨主机进程间通信机制:socket等运行中的系统环境可分为两层:内核空间.用户空间内核空间(模式):内核代码(特权级操作-->系统调

linux基础-附件1 linux系统启动流程

附件1 linux系统启动流程 最初始阶段当我们打开计算机电源,计算机会自动从主板的BIOS(Basic Input/Output System)读取其中所存储的程序.这一程序通常知道一些直接连接在主板上的硬件(硬盘,网络接口,键盘,串口,并口).现在大部分的BIOS允许你从软盘.光盘或者硬盘中选择一个来启动计算机.下一步,计算机将从你所选择的存储设备中读取起始的512 bytes(比如光盘一开是的512 bytes,如果我们从光盘启动的话).这512 bytes叫做主引导记录MBR (mast

Linux系统启动流程及grub重建(1)

日志系统 Linux系统启动流程 PC: OS(Linux) POST-->BIOS(Boot Sequence)-->MBR(bootloader,446)-->Kernel-->initrd-->(ROOTFS)/sbin/init(/etc/inittab) 启动的服务不同:    运行级别:0-6        0:halt        1: single user mode, 直接以管理员身份切入, s,S,single        2:multi user m

Linux系统启动流程(4)制作自定义linux之一

Linux系统启动流程(4)制作自定义linux之一 平时使用的服务器类型的linux系统一般都会装载各种软件与服务,而在某些情况下,并不能一直直接使用公司管理的系统,一是可能会出现故障,二是在处理一些小问题下可能无需如此庞大的linux.于是根据前几篇所讲的linux中的Centos6版本的系统启动流程,可以对其仿制一个微型的linux系统,里面只添加以下需要的工具即可. 以CentOS6为模板为例: 1.准备环境:VM的操作 这里以VM虚拟机模拟,所有直接对安装了CentOS的虚拟机添加一个