zoukankan      html  css  js  c++  java
  • linux启动序列(转)

    linux启动序列

    1、CPU初始化
       CPU自身初始化,从某个固定位置(0xfffffff0)取指令并执行,该指令为跳转指令,跳转到BIOS代码的首部。

    2、装载BIOS
       BIOS被固化在主板上的一个ROM中,它首先进行自检(POST),随后加载内核引导程序。
       POST阶段进行系统硬件的检测,包括内存检测,系统总线检测等。

    3、读取MBR
       POST之后,BIOS会读取启动设备的第一个扇区(MBR),即512字节的信息,MBR保存了内核引导程序的开始部分,BIOS将其加载到内存并且执行。
       MBR中的主引导程序,包含了446字节的程序代码和64字节的分区表。

    4、加载系统内核
       执行MBR中的主引导程序程序中,会扫描分区表,寻找活动分区,活动分区的引导记录存在次引导程序,这次引导程序被加载到内存并执行,它负责加载linux内核镜像,并将控制权交给内核。
       内核镜像以压缩的形式存储,并不能执行,它加载到内存后首先进行自解压。

    5、内核初始化
       内核启动第一个程序,init,init进程是系统所有进程的起源,进程编号始终为1. init进程产生getty进程,getty进程产生login进程,登陆成功后,login进程产生shell进程,我们使用shell,产生其他进程。init的工作根据文件/etc/inittab文件来完成。

    6、执行/etc/rc.d/rc.sysinit 脚本
       /etc/rc.d/rc.sysinit 是init执行的第一个脚本,它的作用是初始化linux系统,包括环境变量,网络配置,检查文件系统等等。

    7、执行run-level脚本
       在/etc/inittab 中已经确定了系统的run-level, 执行相应的命令脚本/etc/rc.d/rcx.d 。

    8、启动其它模块
       比如内存管理、硬盘管理等等。

    9、执行 /etc/rc.d/rc.local脚本
       /etc/rc.d/rc.local 为系统初始化的最后一个脚本,用户可以在这里添加系统启动时服务,比如httpd。

    10、执行 /bin/login
       此程序提示用户输入用户名和密码,正确后然将控制权交给shell进程。

    11、shell 启动

    http://www.lookyilook.info/blog/linux%E5%90%AF%E5%8A%A8%E5%BA%8F%E5%88%97

  • 相关阅读:
    linux中解压.tgz, .tar.gz ,zip ,gz, .tar文件
    hook(v16.7测试)?
    React优点?
    Overload和Override的区别。Overloaded的方法是否可以改变返回值的类型?
    说说数据库连接池工作原理和实现方案?
    short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
    Oracle的数据优化(经常被问到)?
    存储过程和函数的区别?
    Collection 和 Collections的区别?
    说说数据库连接池工作原理和实现方案?
  • 原文地址:https://www.cnblogs.com/bizhu/p/2634157.html
Copyright © 2011-2022 走看看