zoukankan      html  css  js  c++  java
  • Linux操作系统启动过程

    在做开发的过程中,突然发现,要对系统做一些有意义的改变,必须要对操作系统的启动过程有一定的了解,不然就是修改你都不知道从哪里下手啊,然后就是找来资料看,去网上看别人的博客,有了前一周一些基本的经验,理解起来就快很多了。但是,别人的东西终究还是不适合自己,遂自己来总结一遍典型的Linux操作系统的启动过程,中间若有错误还请批评指正!

    1、加电并且启动BIOS

    加电也就是把电源按钮按下去,主板通电后会启动BIOS,都知道BIOS是写在单独的芯片中的,这个时候还只是BIOS来控制整个系统。

    2BIOS到要引导的存储设备

    BIOS启动之后会先进行POST(short for Power On Self Test),在无误通过之后,BIOS会按照用户设定的顺序依次检索存储设备,寻找引导块,如果第一顺位引导硬盘的话那就是MBR(Master Boot Record),而后,BIOS会将控制权交给MBR

    3GRUB或者LILO的启动

    如果是单操作系统的启动,那这一步就可以跳过了,可以直接由MBR来引导起来操作系统。但是,由于MBR只能引导一个操作系统,所以我们需要MBR来进行多系统的引导。这时候,MBR的作用是引导GRUB的运行。

    4、加载内核

    GRUB启动之后,会由它来引导内核的运行,也就是GRUB将配置中制定的内核映像拷贝到内存之中,并且会引导它的运行。但是,在这之前,还会有一个例程(这个没搞清楚是哪一个,还需要改天做实验)先运行起来,它会解压内核镜像,而好由解压好的内核来引导系统。

    5、执行init进程

    当内核完成核内引导之后就会开始加载init进程,从这里开始才是每台机子独一无二的操作,之前的大家都是一样的(除了自己编译过的内核),但是这里几乎就是每台机子都不一样了。

    6、系统初始化

    执行init进程后,还需要依赖于根目录下init/init.d来初始化整个系统,还有rc*.d目录下的各个链接,来对系统和各程序进行初始化。

    7Login程序

    在完成系统的初始化之后,就可以看到登录的画面了,这个时候就算完成了真个操作系统的启动。

  • 相关阅读:
    react中React.createRef()的使用
    react中this指向问题
    react中对props进行限制
    react中this问题
    react 中this问题
    类中方法的this
    类中方法的this
    react中render函数里面的this指向?
    Android一对一直播系统源码开发,仿朋友圈发布动态的实现
    Android游戏陪玩源码开发中,阴影效果的实现
  • 原文地址:https://www.cnblogs.com/spinsoft/p/2612079.html
Copyright © 2011-2022 走看看