linux启动序列

1、CPU初始化

   CPU自身初始化。从某个固定位置(0xfffffff0)取指令并运行,该指令为跳转指令。跳转到BIOS代码的首部。

2、装载BIOS

   BIOS被固化在主板上的一个ROM中,它首先进行自检(POST),随后载入内核引导程序。

   POST阶段进行系统硬件的检測。包含内存检測,系统总线检測等。

3、读取MBR

   POST之后。BIOS会读取启动设备的第一个扇区(MBR),即512字节的信息。MBR保存了内核引导程序的開始部分。BIOS将其载入到内存而且运行。

MBR中的主引导程序。包括了446字节的程序代码和64字节的分区表。

4、载入系统内核

   运行MBR中的主引导程序程序中。会扫描分区表。寻找活动分区,活动分区的引导记录存在次引导程序,这次引导程序被载入到内存并运行,它负责载入linux内核镜像,并将控制权交给内核。

   内核镜像以压缩的形式存储,并不能运行,它载入到内存后首先进行自解压。

5、内核初始化

   内核启动第一个程序。init,init进程是系统全部进程的起源,进程编号始终为1. init进程产生getty进程,getty进程产生login进程,登陆成功后。login进程产生shell进程。我们使用shell,产生其它进程。init的工作依据文件/etc/inittab文件来完毕。

6、运行/etc/rc.d/rc.sysinit 脚本

   /etc/rc.d/rc.sysinit 是init运行的第一个脚本。它的作用是初始化linux系统,包含环境变量。网络配置,检查文件系统等等。

7、运行run-level脚本

   在/etc/inittab 中已经确定了系统的run-level, 运行对应的命令脚本/etc/rc.d/rcx.d 。

8、启动其他模块

   比方内存管理、硬盘管理等等。

9、运行 /etc/rc.d/rc.local脚本

   /etc/rc.d/rc.local 为系统初始化的最后一个脚本。用户能够在这里加入系统启动时服务,比方httpd。

10、运行 /bin/login

   此程序提示用户输入username和password,正确后然将控制权交给shell进程。

11、shell 启动

linux启动基本流程的更多相关文章

  1. Linux启动的流程

    2017年1月10日, 星期二 Linux启动的流程   null

  2. linux 启动引导流程

    课程大纲: Linux引导流程 Linux运行级别 Linux启动服务管理 GRUB配置与应用 启动故障分析与解决 系统引导流程 1.固件firmware(CMOS(固化在硬件上的程序与硬件统称)/B ...

  3. linux启动init流程(转)

    当系统启动时,首先启动内核,内核调用init来完成引导进程.init启动时,它会在/etc/inittab内查找默认的运行级别:如id:2:initdefault:运行/etc/rc.d/init.d ...

  4. linux启动流程及自定义gurb

    linux 启动流程 POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----> MBR(bootloader) 提供内核列表 -------& ...

  5. linux启动流程

    看了深入理解linux内核一书的最后对linux启动流程的介绍,下面就把我能理解的写一下吧: bios(硬件加电自检POST,寻找第一个启动设备) the boot loader(可以从硬盘启动也可以 ...

  6. Linux启动流程详解

    在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...

  7. Linux启动流程详解【转载】

    在BIOS阶段,计算机的行为基本上被写死了,可以做的事情并不多:一般就是通电.BIOS.主引导记录.操作系统这四步.所以我们一般认为加载内核是linux启动流程的第一步. 第一步.加载内核 操作系统接 ...

  8. linux文件系统启动流程、启动脚本

    linux文件系统启动流程.启动脚本 下面是一张Linux启动流程图: 在了解启动流程之前,我们应该先知道系统的几个重要脚本和配置文件,他们对应的路径为: 1. /sbin/init 2. /etc/ ...

  9. Linux启动流程与模块管理(15)

    系统的启动其实是一项非常复杂的过程,因为内核得要检测硬件并加载适当的驱动程序,接下来则必须要调用程序来准备好系统运行的环境,以让用户能够顺利的操作整台主机系统,如果你能够理解系统启动的原理,那么将有助 ...

随机推荐

  1. A7. JVM 垃圾回收收集器(GC 收集器)

    [概述] 如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现.Java 虚拟机规范中对垃圾收集器应该如何实现没有任何规定,因此不同的厂商.不同版本的虚拟机所提供的垃圾处理器都可能会 ...

  2. pycharm debug后会出现 step over /step into/step into my code /force step into /step out 分别表示

    1.debug,全部打印 2.打断点debug,出现单步调试等按钮,只运行断点前 3.setup over 调试一行代码 4.setup out 运行断点后面所有代码 5.debug窗口显示调试按钮 ...

  3. Beam Search

    Q: 什么是Beam Search? 它在NLP中的什么场景里会⽤到? 传统的广度优先策略能够找到最优的路径,但是在搜索空间非常大的情况下,内存占用是指数级增长,很容易造成内存溢出,因此提出了beam ...

  4. [Python3网络爬虫开发实战] 3.1-使用urllib

    在Python 2中,有urllib和urllib2两个库来实现请求的发送.而在Python 3中,已经不存在urllib2这个库了,统一为urllib,其官方文档链接为:https://docs.p ...

  5. virtualBox+centos使用mount -t vboxsf挂载

    1.先确保virtualBox安装目录下有对应的文件VBoxGuestAdditions.iso 2.点击设备下的“安装增强功能”,之后再centos可视化界面一步一步点击即可 3.virtualBo ...

  6. 实现基于pam认证的vsftpd

    1 需求 使用指定虚拟用户Allen与Barry登录ftp,认证的源是mysql服务器: Allen可以上传文件,Barry不可以上传文件: 2 环境 [root@centos7 ~]# cat /e ...

  7. leetcode-169求众数

    求众数 思路: 记录每个元素出现的次数,然后查找到众数 代码: class Solution: def majorityElement(self, nums: List[int]) -> int ...

  8. 空循环导致CPU使用率很高

    业务背景 业务背景就是需要将多张业务表中的数据增量同步到一张大宽表中,后台系统基于这张大宽表开展业务,所以就开发了一个数据同步工具,由中间件采集binlog消息到kafka里,然后我去消费,实现增量同 ...

  9. Blend 混合

    Shader 中的混合 Blend Off  :不混合 Blend SrcFactor DstFactor  :SrcFactor 是源系数,DstFactor是目标系数,源系数是由片段着色器计算出来 ...

  10. Jackson入门

    Jackson 框架,轻易转换JSON Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json.xml转换成Java对象. 前面有介绍过json-lib这个框架,在 ...