Linux系统启动流程

BIOS -> MBR  -> BootLoader -> Kernel -> init

1.打开电源后,计算机从主板的BIOS中读取其中存储的程序。这些程序通常包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。BIOS允许用户在U盘,硬盘,光盘等介质中选择一个来启动计算机。在BIOS将系统的控制权交给用户选择存储介质第一个扇区之后,就开始由Linux来控制系统了。

2.计算机起始的512 Byte,即第0磁道的第一个扇区叫做“主引导记录”,即“MBR(Master Boot Record)”。MBR的512字节存放了预启动信息和分区表信息。可分为两部分:第一部分为引导区(PRE-BOOT),占了446个字节;第二部分为分区表(PARTITION PABLE),共有64个字节,记录硬盘的分区信息。最后的两个字节是结束的标志位。MBR会告诉计算机从该设备的某一个分区来装载引导加载程序,即BootLoader。

3.BootLoader就是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。通常,BootLoader:是严重地依赖于硬件而实现的,不同体系结构的系统存在着不同的BootLoader。

  Linux的引导扇区内容是采用汇编语言编写的程序,其源代码在arch/i386/boot中(不同体系的CPU有其各自的boot目录),有4个程序文件:

  bootsect.S,引导扇区的主程序,汇编后的代码不超过512字节,即一个扇区的大小

  setup.S,引导辅助程序

  edd.S,辅助程序的一部分,用于支持BIOS增强磁盘设备服务

  video.S,辅助程序的另一部分,用于引导时的屏幕显示

  BootLoader有若干种,其中Grub、Lilo和spfdisk是常见的BootLoader。

  系统读取内存中的BootLoader配置信息,并依照此配置信息来启动不同的操作系统。

4.根据BootLoader的信息,系统会读取内核映像并解压缩,在进行初始化后,Kernel会首先预留出自己运行所需要的空间,然后通过驱动程序(Driver)检测计算机可用的硬件。随后,kernel会启动/sbin/init,该程序是系统的第一个程序,它会读取/etc/inittab文件,并依据此文件来进行初始化工作。到此Kernel的工作结束。

5.init读取/etc/inittab最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。

Linux的运行等级设定如下:

  0:关机

  1:单用户模式

  2:无网络支持的多用户模式

  3:有网络支持的多用户模式(我们常用的命令行界面)

  4:保留,未使用

  5:有网络支持有X-Window支持的多用户模式(图形界面)

  6:重新引导系统,即重启

之后init会执行一系列的脚本,有设置计算机名称、失去,检测文件系统,挂载硬盘,清空临时文件,设置网络等功能。至此,操作系统准备就绪。

Linux菜鸟起飞之路【九】系统启动流程的更多相关文章

  1. Linux菜鸟起飞之路【二】Linux基本常识

    一.Unix操作系统基本常识 1.什么是Unix? Unix是一个计算机操作系统,是一个用来协调.管理和控制计算机硬件与软件资源的控制程序. 2.Unix操作系统的特点? 多用户与多任务.多用户表示在 ...

  2. Linux菜鸟起飞之路【一】基本知识与Linux的安装

    一.操作系统基本常识 1.操作系统的定义:操作系统是用来协调.管理和控制计算机硬件与软件资源的系统程序,介于硬件与应用程序之间. 2.操作系统内核的定义:操作系统内核是一个管理和控制程序,负责管理计算 ...

  3. Linux菜鸟起飞之路【八】文本编辑器

    在Linux中,文本编辑器有两个,VI和VIM.这两个编辑器用法差不多,但vim是vi的升级版,所以功能更强大一些. vim编辑器一共有三种模式,命令行模式.编辑模式和扩展模式. 进入vim界面,首先 ...

  4. Linux菜鸟起飞之路【六】权限管理(二)

    一.权限信息详解   ls -l 文件 //查看文件权限写法1 ll 文件 //查看文件权限写法2 ls -dl 目录 //查看目录权限写法1 ll -d 目录 //查看目录权限写法2 文件权限格式: ...

  5. Linux菜鸟起飞之路【五】权限管理(一)

    一.与用户相关的几个文件 1./etc/passwd 储存用户名,格式为 用户名:密码(用密码代位符X代替):UID:GID:用户描述信息:家目录:shell 用户名(login_name):是代表用 ...

  6. Linux菜鸟起飞之路【四】绝对路径、相对路径及常用目录

    一.绝对路径与相对路径 Linux操作系统中存在着两种路径:绝对路径和相对路径.我们在访问文件或文件夹的时候,其实都是通过路径来操作的.两种路径在实际操作中能起到同等的作用. 在开始具体介绍之前,我们 ...

  7. Linux菜鸟起飞之路【三】Linux常用命令

    一.Linux命令的基本格式 命令 [选项] [参数] a)命令:就是告诉操作系统要做什么 b)选项:说明命令的运行方式,有的会改变命令的功能,选项通常以“-”开始 c)参数:说明命令的操作对象,如文 ...

  8. Linux菜鸟起飞之路【十】进程管理

    一.基本概念 进程:程序的一次动态执行 守护进程:在后台运行并提供系统服务的进程 僵尸进程:完成了生命周期但却依然留在进程表中的进程,我们称之为 “僵尸进程” 父进程:指已创建一个或多个子进程的进程. ...

  9. Linux菜鸟起飞之路【七】文件合并、归档和压缩

    一.文件合并操作 1.覆盖符号与追加符号 a)“>”代表将左边文件的内容覆盖右边文件的内容,如果右边文件不存在则创建这个文件 b)“>>”代表将左边文件的内容追加到右边文件中,如果右 ...

随机推荐

  1. Django (十三) 项目部署 3

    阿里云项目部署 部署Django项目   1, 配置nginx 1.1 进入:cd /var/www, 将外面压缩好的AXF项目拖入xshell中,并解压 1.2 配置nginx.conf: 将htt ...

  2. Codeforces Round #561 (Div. 2) C. A Tale of Two Lands

    链接:https://codeforces.com/contest/1166/problem/C 题意: The legend of the foundation of Vectorland talk ...

  3. 关于Nginx对于PHP支持的问题

    因为使用的mediawiki是用php写的,所以就遇上了一个问题,怎么让Nginx支持php,记得当时使用apache2的时候是安装了一个叫 “ libapache2-mod-php5 ”的mod , ...

  4. 物体检测丨从R-CNN到Mask R-CNN

    这篇blog是我刚入目标检测方向,导师发给我的文献导读,深入浅出总结了object detection two-stage流派Faster R-CNN的发展史,读起来非常有趣.我一直想翻译这篇博客,在 ...

  5. kindeditor 修改上传图片的路径的方法

    默认情况下kindeditor上传的图片在编辑器的根目录/attached/目录下.以日期建一个目录,然后保存文件.有些时候大概我们并不想这样.考虑到更新编辑器,或更换编辑器不太方便.比如我现在想把上 ...

  6. zuul的本地跳转

  7. Hbase region查找过程

    HBase的table是该region切分的,client操作一个row的时候,如何知道这个row对应的region是在哪台Region server上呢?这里有个region location过程. ...

  8. 桉树IAAS云架构(转载)

    您可在 IaaS 云中建立和管理混合多虚拟机集群环境,并将现有 vSphere™. ESX™.ESXi™.KVM 和 XEN 虚拟环境作为 AWS 兼容 Eucalyptus桉树混合云管理.现在 Eu ...

  9. Android 开发干货,键盘状态

    地址:http://www.imooc.com/article/4711 [A]stateUnspecified:软键盘的状态并没有指定,系统将选择一个合适的状态或依赖于主题的设置 [B]stateU ...

  10. 【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即时聊天系统:2.技术简介之MinaFilter(1)

    欢迎阅读我的开源项目<迷你微信>服务器与<迷你微信>客户端 Filter filter:过滤器?(不知道是不是这么翻译,算了知道意思就好了╮(╯▽╰)╭),这种东西在很多语言中 ...