zoukankan      html  css  js  c++  java
  • Centos 6.x开机启动流程

    Centos 6.x开机启动流程

    BIOS(COMS)检查

    加载Bios,bios包含所有硬件信息(CPU,内存,硬盘,时钟,鼠标键盘等等)

    读MBR

    硬盘上第0磁道第一个扇区被称为MBR(master boot recoder,主引导记录),它的大小问512字节,可存放了预加载启动信息,分区表信息。
    系统找到bios所指定的硬盘的MBR后,就会将其复制到0x7c00地址所在的物理内存中。其实被复制到物理内存的内容就是boot loader,而具体到电脑,那就是lilo或者grub了。

    boot loader

    boot loader 就是在操作系统运行之前执行一段小程序。通过这段小程序。我们可以初始化硬件信息、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核做好一切准备。
    boot loader有若干种,其中grub是最常见的loader
    系统读取内存中的grub配置信息(menu.lst或者grub.lst),并依照此配置来启动不同的操作系统

    kernel load

    根据grub设定的内核映像所在的路径,系统读取内存映像,并进行解压操作。此时,屏幕一般会输出“Uncompressing Linux”的提示。当解压缩内核完成后,屏幕输出“OK, booting the kernel”。
    系统将解压后的内核放置在内存中,并调用start_kernel()函数来启动一系列的初始化函数并初始化各种设备,完成Linux核心环境的建立。

    用户层init依据inittab文件设定运行级别

    内核加载完成后,第一个运行的程序是/sbin/init,该程序会读取/etc/inittab文件,并依据此文件夹进行初始化工作。
    Linux的运行级别:
    0 关机
    1 当用户模式
    2 不带网络的多用户模式
    3 带网络的多用户模式
    4 预留,没使用
    5 带网络,有支持x-windows的多用户模式
    6 重启

    init执行rc.sysinit

    系统执行的第一个用户层程序是/etc/rc.d/rc.sysinit脚本程序。
    它做的工作:设定PATH、设定网络配置、启动swap分区、设定/proc等等

    加载内核库

    具体依据/etc/modules.conf文件及/etc/modules.d目录下的文件来加载内核模块

    执行不同级别的脚本程序

    根据运行级别不同,系统会运行rc0.d到rc6.d中相应的脚本程序,来完成相应的初始化工作和启动相应的服务

    /etc/rc.d/rc.local

    rc.load是在一切初始化工作后,留给用户进行个性化的地方

    /bin/login

    系统已经进入到了等待用户输入username和password的时候了



    作者:我是李小胖
    链接:https://www.jianshu.com/p/82f21850df6a
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    一入挨踢深似海,奈何已是梦中人。
  • 相关阅读:
    Linux内核学习第五周 系统调用
    Linux内核学习第三周 Linux启动过程分析
    WebStorm快捷键大全
    PAT乙级-1056. 组合数的和(15)
    PAT乙级-1043. 输出PATest(20)
    PAT乙级-1021.个位数统计(15)
    PAT乙级-1036.跟奥巴马一起编程(15)
    学习笔记-C++ STL iterator与对指针的理解-20170618
    学习笔记-Little Tips_day20170615-" " and ' '
    HTML5离线存储和本地缓存
  • 原文地址:https://www.cnblogs.com/azu883/p/11953152.html
Copyright © 2011-2022 走看看