zoukankan      html  css  js  c++  java
  • Linux菜鸟起飞之路【九】系统启动流程

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

    个人简介:安久殇,曾经学习影视艺术,现在是一个喜欢电影的软件专业在读小说写手,坚信科学与艺术的相通性,希望能和大家一起开心的成长。QQ:55083581,有事请骚扰~
  • 相关阅读:
    js中的call和apply方法
    前端Cookie与Session的区别
    js中的this
    Python基础语法
    Python基础安装
    Python基础字符串、列表、元组、字典
    java回调
    java内存分配与溢出
    “眉毛导航”——SiteMapPath控件的使用(ASP.NET)
    Photoshop制作雪碧图技巧
  • 原文地址:https://www.cnblogs.com/Xsing/p/9472155.html
Copyright © 2011-2022 走看看