zoukankan      html  css  js  c++  java
  • Linux引导流程

    最近学习了linux引导流程,简单总结下。

    我下面写的内容告诉了大家我们启动linux系统,从按下电源的那刻起计算机都做了什么,当然本文是针对linux系统而言的

    第一步:

    固件firmware(CMOS/BIOS)POST (power on self test),加电自检过程,这是基于PC的就是说不依赖操作系统的,不管是linux还是windows这个步骤都是一样要进行下去的,就算我们有一台裸机也是一样,这个阶段firmware对硬件进行检测,检测硬件是否正常,比如线是否插好等等,这是在硬件层面就是物理层面上来检测的。之所以把CMOS/BIOS称之为固件是因为我们不能把它简单的称为软件,因为它是固化在主板上的一段程序,但我们又不能把它称为硬件,因为它是软件控制程序,在国际上就把它称作固件fireware。

    第二步:

    加电自检没问题以后,计算机就会读取MBR,下面我解释下什么是MBR,MBR就是Master Boot Record,主引导记录,是计算启动时读取硬盘上数据的第一个位置。我们知道其实硬盘是由不同的盘片组成的,每个盘片上都有一个读写磁头,编号0,1,2,3......,跟盘片相关的还有两个概念,就是柱面和扇区。MBR就位于0柱面0磁头1扇区。MBR里面写有自举程序BootLoader,和磁盘分区表Partition Tab以及结束字。读取MBR后紧接着会载入自举程序BootLoader,在目前的大对数linux操作系统中这个自举程序叫做GRUB,载入GRUB之后系统后续的启动过程就交给了GRUB,GRUB中最重要的内容有三行,一个是指定GRUB的根目录boot,一个是指定linux Kernel内核位置,还有一个就是一些必要的镜像文件。GURB启动之后做的最重要的一件事就是载入Kernel,至此GRUB使命就算完成了,系统后续的启动过程继续交给Kernel处理。

    第三步:

    载入Kernel之后,Kernel做了两个比较重要的事情,一个是驱动硬件,一个是启动init进程。解释下驱动硬件,这里的驱动硬件跟第一步所说的硬件检测是不一样的,这一步是在操作系统层面即软件层面上检测硬件是否可用,说白了就是这个硬件是否能被操作系统识别。内核启动init进程,init进程的PID恒唯1,但它也必须向一个更高级的功能负责即内核调度器(PID恒为0),它用于获取CPU时间,分配CPU时间,处理分时任务。

    第四步:

    init启动后,会读取inittab文件,inittab文件中定义了一些系统的配置和默认缺省运行级别等等,那么由inittab继续完成系统后续的所有引导过程。

    至此linux启动完毕。

  • 相关阅读:
    P1092 虫食算
    P1040 加分二叉树
    cfER76 abcd
    cf599 div2 a/b1/b2/c
    AtCoder Contest 144 DE
    Round G 2019
    luogu3084 Photo 单调队列优化DP
    luogu4234 最小差值生成树
    luogu1373 小a和uim之大逃离
    luogu1070 道路游戏 单调队列
  • 原文地址:https://www.cnblogs.com/anhuizhiye/p/3514453.html
Copyright © 2011-2022 走看看