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的初始化_1的更多相关文章

  1. linux文件系统 - 初始化(二)

    加载initrd(上) 一.目的 本文主要讲述linux3.10文件系统初始化过程的第二阶段:加载initrd. initrd是一个临时文件系统,由bootload负责加载到内存中,里面包含了基本的可 ...

  2. linux文件系统 - 初始化(一)

    术语表: struct task:进程 struct mnt_namespace:命名空间 struct mount:挂载点 struct vfsmount:挂载项 struct file:文件 st ...

  3. linux文件系统初始化过程(5)---加载initrd(下)

    一.目的 linux把文件分为常规文件.目录文件.软链接文件.硬链接文件.特殊文件(设备文件.管道文件.socket文件等)几种类型,分别对应不同的新建函数sys_open().sys_mkdir() ...

  4. linux文件系统初始化过程(2)---挂载rootfs文件系统

    一.目的 本文主要讲述linux3.10文件系统初始化过程的第一阶段:挂载rootfs文件系统. rootfs是基于内存的文件系统,所有操作都在内存中完成:也没有实际的存储设备,所以不需要设备驱动程序 ...

  5. linux文件系统初始化过程(1)---概述

    术语表: struct task:进程 struct mnt_namespace:命名空间 struct mount:挂载点 struct vfsmount:挂载项 struct file:文件 st ...

  6. linux系统初始化——文件系统初始化步骤

    linux文件系统初始化步骤 System V init启动过程 概括地讲,Linux/Unix系统一般有两种不同的初始化启动方式. 1) BSD system init 2) System V in ...

  7. Linux启动初始化配置文件

    Linux启动初始化配置文件(1)/etc/profile 登录时,会执行. 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. (2)/ect/bashrc Ubuntu没有此文件,与之对应的 ...

  8. Linux内存初始化

    start_kernel -> setup_arch 在这个函数中我们主要看这几个函数. machine_specific_memory_setup max_low_pfn = setup_me ...

  9. 系统启动 之 Linux系统启动概述(2)

    博客:http://blog.csdn.net/younger_china/article/details/51615916 Linu系统启动是一个"冗长乏味"的过程,那么我们现就 ...

随机推荐

  1. java代码GUI简单的。。。

    总结:觉得 package com.da; import java.awt.*; //逆向思维:important //创建一个String对象的数组,然后执行读取文本,把文本每一行存入数组,它将读取 ...

  2. JS---星星评分

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  3. BackgroundWorker 控件

    BackgroundWorker是.net里用来执行多线程任务的控件,它允许编程者在一个单独的线程上执行一些操作.耗时的操作(如下载和数据库事务)在长时间运行时可能会导致用户界面 (UI) 始终处于停 ...

  4. python操作sql server2008 pyodbc

    使用Python通过PyODBC连接数据的注意事项 今天使者用PyODBC连接数据库,试了很久才出来,现把一些心得体会和大家分享! 一.PyODBC的下载地址: http://code.google. ...

  5. js提交数据时需判断是点击事件还是回车键

    使用回车键实质还是点击事件==回车时将焦点聚居在某个标签上. Html代码: <div id="btlogin" class="btlogin">& ...

  6. shell入门-grep-3-egrep

    grep -E == egrep [root@wangshaojun ~]# grep --color 'r\?o' 1.txt == egrep --color 'r?o' 1.txt ^C[roo ...

  7. Linux Screen超简明教程

    1.安装Screen 大多数情况下,系统已经安装好了screen.如果没有,可以用下面的命令来安装: CentOS系统中执行:yum install screen Debian/Ubuntu系统执行: ...

  8. 人工智能: 自动寻路算法实现(三、A*算法)

    博客转载自:https://blog.csdn.net/kwame211/article/details/78139506 本篇文章是机器人自动寻路算法实现的第三章.我们要讨论的是一个在一个M×N的格 ...

  9. 6、RNA-Seq Analysis Pipeline

    Created by Dhivya Arasappan, last modified by Dennis C Wylie on Nov 08, 2015 This pipeline uses an a ...

  10. 13.Weblogic任意文件上传漏洞(CVE-2018-2894)复现

    Weblogic任意文件上传漏洞(CVE-2018-2894)复现 漏洞背景 WebLogic管理端未授权的两个页面存在任意上传getshell漏洞,可直接获取权限.两个页面分别为/ws_utc/be ...