zoukankan      html  css  js  c++  java
  • Linux操作系统的开机流程

    1.加载BIOS

    • 当开机自检完成后,计算机会首先加载BIOS信息,BIOS信息是如此的重要,以至于计算机必须在最开始就找到它。
    • 因为BIOS中包含了CPU的相关信息、设备启动顺序信息、硬盘信息、内存信息、时钟信息、PnP特性等等。

    2.读取MBR

    • 硬盘上第0磁道第一个扇区被称为MBR,也就是Master Boot Record,即主引导记录,它的大小是512字节,别看地方不大,可里面却存放了预启动信息、分区表信息。
    • 系统找到BIOS所指定的硬盘的MBR后,就会将其复制到0×7c00地址所在的物理内存中。其实被复制到物理内存的内容就是Boot Loader,而具体到你的电脑,那就是lilo或者grub了。

    MBR中存在如下内容:

    • Boot Loader 占用446字节,存储有操作系统(OS)相关信息,如操作系统名称,操作系统内核位置等,它的主要功能是加载内核到内存中运行。
    • Partition Table 分区表,占用64字节,每个主分区占用16字节(这就是为什么一块硬盘只能有4个主分区)
    • 分区表有效性标记占用2字节 
      CPU将MBR读取至内存,运行GRUB(Boot Loader常用的有GRUB和LILO两种,现在常用的是GRUB),GRUB会把内核加载到内存去执行。

    3.GRUB菜单

    • GRUB菜单,也就是操作系统引导菜单

    4.加载内核

    • 根据grub设定的内核映像所在路径,系统读取内存映像,并进行解压缩操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
    • 系统将解压后的内核放置在内存之中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。至此,Linux内核已经建立起来了,基于Linux的程序应该可以正常运行了。
    • 也就是启动操作系统的核心

    5.用户层init依据inittab文件来设定运行等级

    • 内核被加载后,第一个运行的程序便是/sbin/init,该文件会读取/etc/inittab文件,并依据此文件来进行初始化工作。
    • 其实/etc/inittab文件最主要的作用就是设定Linux的运行等级,其设定形式是“:id:5:initdefault:”,这就表明Linux需要运行在等级5上。Linux的运行等级设定如下:
    • 0:关机
    • 1:单用户模式
    • 2:无网络支持的多用户模式
    • 3:有网络支持的多用户模式
    • 4:保留,未使用
    • 5:有网络支持有X-Window支持的多用户模式
    • 6:重新引导系统,即重启

    6.读取/etc/inittab配置文件

    • 也就是linux开机时默认的启动模式。在/etc/inittab这给配置文件下可以修改开机默认启动选项

     7. 执行/etc/rc.d/rc.sysinit初始化脚本。

         也就是init进程的初始化用来执行kernel的任务

    8.执行不同运行级别的脚本程序

    • 根据运行级别的不同,系统会运行rc0.d到rc6.d中的相应的脚本程序,来完成相应的初始化工作和启动相应的服务。
    • 执行/etc/rc.d/rc脚本,通过执行脚本找出默认启动模式选项要启动的进程

    9.执行/etc/rc.d/rc.local个人配置脚本

               也就是用户想要开机自启动的命令或者进程都放在这个脚本文件内,这样设置开机自启方式比较安全。开机时这给脚本文件内的所有命令全部执行一遍

    • rc.local就是在一切初始化工作后,Linux留给用户进行个性化的地方。你可以把你想设置和启动的东西放到这里。

    10.启动mingetty进程

    • 此时,系统已经进入到了等待用户输入username和password的时候了,你已经可以用自己的帐号登入系统了。
  • 相关阅读:
    《你必须知道的495个C语言问题》读书笔记之第15-20章:浮点数、风格、杂项
    《你必须知道的495个C语言问题》读书笔记之第8-10章:字符串、布尔类型和预处理器
    《你必须知道的495个C语言问题》读书笔记之第4-7章:指针
    《你必须知道的495个C语言问题》读书笔记之第3章:表达式
    《你必须知道的495个C语言问题》读书笔记之第1-2章:声明和初始化
    bzoj4361 isn(树状数组优化dp+容斥)
    bzoj4665 小w的喜糖(dp+容斥)
    P4859 已经没有什么好害怕的了(dp+二项式反演)
    bzoj4710 [Jsoi2011]分特产(容斥)
    bzoj2839 集合计数(容斥)
  • 原文地址:https://www.cnblogs.com/changtianwei/p/9845333.html
Copyright © 2011-2022 走看看