系统启动与Linux的初始化

Posted ant_colonies

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了系统启动与Linux的初始化相关的知识,希望对你有一定的参考价值。

boot 的起源:

the term bootstrap refers to a person who tries to stand up by pulling her own boots. (Understanding The Linux Kernel)

     西方谚语:  拽着自己的鞋带站起来  (类似于我们说的:用手拽着自己的头发把自个拎起来)。

对于系统的启动犹如上面的谚语:即用自己的引导程序把自己启动起来。引导程序在硬盘分区中,引导程序必须加载到内存中才能被CPU

执行并完成后续内核的初始化过程,而只有内核才能完成加载工作,这就产生了矛盾。

 

第一阶段:Bios载入内存

以下过程解决了类似“鸡生蛋,还是蛋生鸡的过程

      计算机在加电的瞬间,操作系统尚未启动,RAM芯片(内存)包含的是无用的随机数据;在启动时,有一个特殊的硬件电路在CPU的一个

针脚上产生一个RESET逻辑值,之后(芯片)就把处理器的一些寄存器(包括CS=FFFFH和EIP=0000FFF0H)设置成默认值,接着

执行物理地址CS:EIP即OxFFFFFFF0~OxFFFFFFFF(为“影子内存”中的系统BIOS拷贝,共16byte)。

      :RESET的过程参考:

                 《IA-32 Intel Architecture Software Developer\'s Manual_Volume 3_Sysytem Programming Guide

                              9.1.1 Processor Stat After Reset

      BISO启动过程执行的四个步骤:

           1) 加电自检(POST,Power-On Self-Test):对计算机硬件执行一系列的测试,检测目前有哪些设备和这些设备是否工作正常,

               会显示诸如BIOS版本号的一些信息;

           2) 初始化硬件设备,会显示系统中所安装的所有PCI设备的一个列表;

           3) 根据用户在BIOS上预定义的访问次序,搜索操作系统MBR用于启动,BIOS设置的启动可能是硬盘、CD-ROM或软盘等的

                第一个扇区(第0扇区,即系统MBR所在);

           4) 一旦在以上设备中找到一个有效的设备,即刻将第一扇区的内容(MBR)拷贝到RAM的起始物理地址为Ox00007c00的地方,

               然后指针跳转至Ox00007c00处,执行该段拷贝来的代码。

 

第二阶段:引导装入程序(Boot Loader

MBR:主引导记录(512bytes)
    Master Boot Record
    Main Boot Record
        组成结构:
        446bytes: BootLoader(程序,引导加载器)
        64bytes:
            其中每16bytes:标记一个分区(即分区表)
        2bytes: Magic Number
            标记MBR是否有效 

 

第三阶段:从磁盘启动Linux

 

第四阶段:操作系统(内核启动)

 

以上阶段另见: http://www.cnblogs.com/ant-colonies/p/6443838.html

 

以上是关于系统启动与Linux的初始化的主要内容,如果未能解决你的问题,请参考以下文章

Linux系统文件与启动流程

Linux系统启动流程及服务控制

Android系统启动概要

linux系统启动流程,linux系统启动不了,启动出错怎么办?

Linux系统启动及定制过程

Linux系统启动流程