Linux开机启动过程

原创 2017年01月05日 13:09:52

使用电脑这么长时间了,很多人可能跟我一样都不太清楚电脑是怎样启动的,所谓的电脑原本只是一堆破铜烂铁废塑料,接通电源之后,竟拥有强大的计算能力的,为我们提供服务。我们所需要做的仅仅是按下开机按钮,然后等待开机完成即可,我们来试着探究一下电脑开机背后的故事。

一、 整体流程

总体来说,计算机的开机过程是按照如下的程序循序渐进的:

Created with Raphaël 2.1.0按下开机按钮开机按下开机按钮BIOS加电自检MBR加载引导程序加载内核初始化init登录提供服务 关机End关机

从上面的简易流程图可以看出,对于我们用户透明的开机过程竟然经历了这么多的步骤。
下面我们针对其中的每一个进行详细讲解。

二、过程分解

1. BIOS加电自检

当我们打开电源的时候,电脑会自动从主板的BIOS(Basic Input/Output System)中读取其中所存储的程序,这里的代码是专门针对当前计算机的主板的,当主板厂商对外销售主板的时候,这些代码就已经存在里面了。这里的程序会知道一些直接连接在主板上的硬件,比如硬盘,键盘,网卡等等。所谓的加电自检主要是BIOS检查这些硬件设备的工作状态是否正常。

自检完成后,BIOS会根据你设定的开机启动顺序,按次序找到可以正确引导的选项。现在大部分BIOS允许我们从多种设备中来启动电脑,比如硬盘,光盘,U盘等。假设当前的引导选项顺序为硬盘->可移动设备->U盘 ,那么当第一个选项硬盘可以被正确引导时,后续的两个选项将忽略,除非排在前面的引导选项都无法正常引导,才会考虑当前的引导选项。这也就是为什么当我们选择用U盘装系统的时候,需要先把引导选项可移动设备移到最前面的原因了。

2. MBR

加电自检完成之后,BIOS 找到一个可以成功引导的选项,比如我们成功的找到了一个引导选项:硬盘,那么电脑会从硬盘的前512 byte的存储空间中读取数据。这里的512 byte就是我们所说的主引导记录MBR(Master Boot Record)。 MBR会告诉电脑从当前硬盘的哪一个分区来装载引导程序(boot loader). Boot loader存储有操作系统相关的信息,比如系统的名称,操作系统的内核所在的位置等等。目前常用的boot loader有GRUB 和 LILO。

3. 加载内核

从上面分析可以看出,MBR是用来找到并加载boot loader的,而boot loader的主要功能则是用来加载操作系统内核(kernel)的。内核实际上是一个用来操作计算机的程序,主要的任务就是管理计算机的硬件资源,充当软件和硬件的接口,同时提供其他的管理功能:比如文件系统,网络管理等。用户的应用程序是不能直接操作硬件的,所有的操作必须通过中断传递给内核,由内核传达给硬件。不同的操作系统有不同的内核,比如典型的操作系统window 和 GNU/Linux 它们有着各自的内核。(对于GNU/Linux 的操作系统,大家可能都有耳闻,但是要是说到GNU/Linux内核之父,想必很多人都不知道,因为这个人实在太低调了,他就是影响全球的Linus Torvalds)。

实际上,我们的硬盘通常是被划分成多个分区的,因此我们可以在多个分区上都安装boot loader,每个boot loader可以加载对应的不同操作系统,在读取MBR的时候,选择我们想要启动的引导加载程序即可,这就是我们常说的多操作系统的原理。

比如我们当前加载的GNU/Linux 内核,那么Linux内核就开始工作了。内核首先会在内存中预留自身运行所需要的内存空间,然后通过驱动程序去检测计算机的硬件,检测完成后,内核就知道了有哪些硬盘可以使用。

4. 初始化init

内核加载完成之后,内核会启动一个init进程,这个进程就是被称为“天字一号”的1号进程。接下来的初始化工作都是借给init来管理的。 init 会运行一系列的初始化脚本,完成计算机的设置和服务的准备工作,比如设置计算机的名称,设置网络,挂载硬盘等等以及一些开机自启动的服务。

5. 登录

初始化完成之后,就会出现我们期待已久的欢迎标语和登录提示符了,如果系统中有一个合法的用户比如jacknichao,那么我们可以输入用户名jacknichao 然后操作系统会提示输入密码,待我们输入了正确的密码之后,就成功的进入了系统,取得了与操作系统内核交互的接口,称之为shell,后面根据我们的权限便可以访问操作系统提供给我们的合法资源了。

三、总结

通过前文的分析,我们发现开机启动的过程也是比较复杂的,尽管对于我们普通用户而言不需要知道这些详细的过程,但是了解其背后的操作流程还是挺有意思的不是嘛!同时,清楚了这些过程之后,对我们以后重装操作系统,修复一些开机过程中的错误问题也是非常有裨益的。
(ps:本人能力有限,如有描述错误请各位看官批评指正,感激不尽☺)

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

连续最长的数字串(好未来2017秋招笔试)

题目: 读入一个字符串 str,输出字符串 str 中的连续最长的数字串 输入描述: 测试输入包含 1 个测试用例,一个字符串 str,长度不超过 255。 ...

屏蔽JS错误

在上网时,偶尔会遇到“网页上有错误”的提示,这种情况大部分都是js错误引起的,但是一些初级用户看见这样的错误提示会感觉你的网页不安全,还是快快离开为妙。其实作为网页设计人员,理应作出无误的网页,但是有...

《Inittab重要文件讲解及Linux开机启动过程介绍》

1.通过ps -ef|grep init查看第一个默认启动的进程: 2.默认开机启动级别: 3.在登陆后执行的脚本所在地(profile.d)新建you.sh文件 4.给you.s...

linux开机启动过程

觉得每个总结一下,linux的开机整个流程。   · 1: 启动电源后,主机第一步先做的就是查询BIOS(全称:basic input/output system 基本输入输出系统)信息。了解整个系...
  • scottly
  • scottly
  • 2014年04月11日 16:36
  • 381

Linux开机启动过程分析十步

Linux开机启动过程分析十步 开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。 启动第...

开机到登录的 Linux 启动全过程

本文以Redhat 6.0 Linux 2.2.19 for Alpha/AXP为平台,描述了从开机到登录的 Linux 启动全过程。该文对i386平台同样适用 在Alpha/AXP平台上引...

Linux开机启动过程详细分析

开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。 启动第一步--加载BIOS 当你打开计...

在登录Linux时要执行文件的过程(可设置开机启动)

在登录Linux时要执行文件的过程如下: 在刚登录Linux时,首先启动 /etc/profile 文件,然后再启动用户目录下的 ~/.bash_profile、 ~/.bash_login或 ~/...

Linux系统开机启动过程

今天突然很想知道linux系统启动的过程,于是乎百度之,比较懒,直接贴别人的文章了。 --------------------------------------------------------...
  • wwdlk
  • wwdlk
  • 2013年05月11日 17:26
  • 923

Linux开机启动过程分析

开机过程指的是从打开计算机电源直到LINUX显示用户登录画面的全过程。分析LINUX开机过程也是深入了解LINUX核心工作原理的一个很好的途径。 启动第一步--加载BIOS 当你打开计...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Linux开机启动过程
举报原因:
原因补充:

(最多只允许输入30个字)