精华内容
下载资源
问答
  • dev_social_network 使用Django构建的全栈社交网络应用程序,包括用户身份验证,权限和更多内容的引导程序...
  • 这是用于理解引导程序引导程序示例 这是谷歌电子表格链接
  • 微型计算机中的引导程序可将用户通过键盘打入的程序及数据引导输入到随机存储器中。简介引导程序(英语:boot loader)位于电脑或其他计算机应用上,是指引导操作系统的程序。引导程序启动方式及程序视应用机型种类而...

    引导是计算机开始输入时常采用的一种手段。计算机启动后,由设备来实现少量指令和数据的输入,然后由它们再输入其他程序,这种过程称为引导。微型计算机中的引导程序可将用户通过键盘打入的程序及数据引导输入到随机存储器中。

    简介引导程序(英语:boot loader)位于电脑或其他计算机应用上,是指引导操作系统的程序。引导程序启动方式及程序视应用机型种类而不同。例如在普通的个人电脑上,引导程序通常分为两部分:第一阶段引导程序位于主引导记录(MBR),用以引导位于某个分区上的第二阶段引导程序,如NTLDR、BOOTMGR和GNU GRUB等。

    BIOS引导完成后,boot loader就接手初始化硬件设备、创建存储器空间的映射,以便为操作系统内核准备好正确的软硬件环境。

    简单的boot loader的虚拟汇编码,如其后的八个指令:

    第一:将P寄存器的值设为8

    第二:检查纸带(paper tape)读取器,是否已经可以进行读取

    第三:如果还不能进行读取,跳至1

    第四:从纸带读取器,读取一byte至累加器

    第五:如为带子结尾,跳至8

    第六:将寄存器的值,存储至P寄存器中的数值所指定的地址

    第七:增加P寄存器的值

    第八:跳至1

    但是随着计算机操作系统越来越复杂,位于主引导记录的空间已经放不下引导操作系统的代码,于是就有了第二阶段的引导程序,而MBR中代码的功能也从直接引导操作系统变为了引导第二阶段的引导程序。对于UEFI系统,已由EFI应用程序(即EFI分区中的.efi文件)取代MBR和PBR,UEFI会加载引导程序的.efi文件,再由引导程序加载操作系统。MBR和PBR程序通常是用汇编语言编写的,会调用BIOS中断调用;而.efi文件则是PE格式的文件,可用C语言编写。

    在计算机中, 引导或者引导程序是计算控制系统的一个初始化过程。引导过程可以使“硬引导”,如:开机通电后硬件诊断;也可以使“软引导”,此时会跳过开机自启。一些系统中软启动过程中,RAM可以不清零。软启动和硬启动都可以通过硬件发起,如按下电源开关;也可以通过软件命令来进行。当正常、有效的运行环境达到后,启动完成。引导装载程序是计算机开机自检完成后装载操作系统或者其他系统软件的计算机程序。自检完成后运行引导装载程序,然后再加载并运行软件。引导装载程序可以从永存体(硬盘)装载到主内存中。一些老计算机中,引导装载程序可以从打孔卡、穿孔纸带、或者磁带中加载到主内存中。启动装载程序加载且执行完成启动的程序。和POST程序相似,启动装置代码可以存储在永久存储体位置中,也可以为硬连线的形式。 当代通用计算机中,启动过程通常包含开机自检、定位以及初始化外围设备、然后找到、加载、并开始一个操作系统。睡眠和休眠过程不包含启动。一些嵌入式系统不要求可察的启动序列,可以直接运行存储在ROM中的可运行程序。所有计算机系统都是状态机,只有重启才可能返回到初始状态。 引导在英文中为"boot",是bootstrap的缩写,源自于短语"pull oneself up by one's bootstraps",即"靠自己振作起来"。如果大部分软件需要通过其他已运行的程序加载到计算机中,则必须存在一个将初始软件加载到计算机中的机制。 各种类型的只读内存可以解决此类的矛盾体——允许计算机带有可被擦除的启动程序。随着ROM容量的变大,更加精细的启动程序得以实现。1

    第一台商业计算机早期可编程商业计算机,如UNIVAC I和IBM 701,会包含执行完整的输入输出操作的指令。相同的硬件逻辑可以被用来加载穿孔卡片的内容,或者其他输入媒体,如磁鼓或者磁带,这些引导程序可以通过按键启动。IBM701 计算机拥有一个 "Load" 按钮,此按钮可以将打孔卡片的前 36个bit字读入到主存中。左18-bit 半字被视为指令而执行,通常用来将额外的字读入到内存中。随后被加载的引导程序被执行,反过来无需更多地人为操作从媒介中加载更大的程序到内存中。随后计算机跳转到内存位置001,读取存储的第一个指令。第一条指令一般是相同的:将前80个内存位置的信息移到一个汇集区域(打孔卡片2,3,4...)。一旦信息被移动到这些区域后,机器跳转到080位置(读取一个卡片),然后下一个卡片将被读取,并处理相关信息。 同期的其他IBM计算机有着相似的特性。IBM1401系统使用读卡器从打孔卡片中加载一个程序。打孔卡片中存储的80个字符被读入到内存地址001~080。2

    个人电脑启动设备启动设备(英语:boot device)是指操作系统可被从其上加载的设备。现代计算机的UEFI和BIOS都支持从多种设备中启动,如:硬盘(装有MBR或者GPT引导)、光驱、USB大容量存储设备(U盘、SD卡等),或者从网卡启动(使用PXE)。

    通常,固件(UEFI 和 BIOS)都会允许用户设置启动顺序(英语:boot order)。如果将启动顺序设为“第一:DVD 驱动器;第二:硬盘驱动器”,固件会先尝试从 DVD 驱动器启动,如果失败(比如驱动器中没有 DVD)则会再尝试从本地的硬盘驱动器启动。

    假设有一台 PC,硬盘上装有Windows 10,用户可以设置启动顺序为上述顺序,然后插入LinuxLive CD,这样就可以直接试用Linux。这样的过程就是一种双重引导,即计算机加电自检(POST)后允许用户选择所用的操作系统。这个例子中用户是通过 CD 的插入、移除来选择操作系统的,更常见的情况是直接使用键盘从BIOS或UEFI的引导菜单(英语:boot menu)中选择,引导菜单通常可以通过在 POST 时按Delete或F11进入。2

    智能手机现代的智能手机具备操作系统,系统在启动之前需要通过boot loader启动,手机启动的时候基带执行初始化,然后引导系统内核,直到系统启动。智能手机生产厂商通常在出厂时锁定了手机的boot loader,以防止用户误操作损坏了系统文件造成手机功能异常,部分厂商会给开发者或普通用户发放boot loader解锁码,这通常需要步骤众多的申请,锁定boot loader能部分有效阻止恶意程序对手机造成的破坏,部分用户或开发者会通过解锁boot oader以获得更多的功能和权限,这通常会带来使用风险。2

    本词条内容贡献者为:

    何星 - 副教授 - 上海交通大学

    展开全文
  • 引导程序 包含使用引导程序的html源代码
  • 引导程序

    2017-01-20 14:27:00
    引导程序(bootstrap)是一种实用程序。计算机启动后,系统自行输入的一个简短的程序,由它来完成引导过程。[1] 引导是计算机开始输入时,常采用的一种手段。计算机启动后,由设备来实现少量指令和数据的输入,然后...
      引导程序(bootstrap)是一种实用程序。计算机启动后,系统自行输入的一个简短的程序,由它来完成引导过程。[1]   
    引导是计算机开始输入时,常采用的一种手段。计算机启动后,由设备来实现少量指令和数据的输入,然后由它们再输入其他程序,这种过程称为引导。微型计算机中的引导程序可将用户通过键盘打入的程序及数据,引导输入到随机存储器中。
     
    //----------------百度知道

      计算机的存储器分为大容量存储器(通常为硬盘)和主存储器(即内存),操作系统(如windows、UNIX、Linux、Mac OS)安装在大容量存储器上,而主存储器又分为两部分:能够永久保存数据的ROM(Read Only Memory)和易失性存储器部分(即在关机后数据全部丢失)。
      在ROM部分,有两个程序,引导(boot strapping,简称boot)和BIOS(基本输入输出程序)。
    特征:
      在计算机开机时,boot被自动执行,指引CPU把操作系统从大容量存储器中传送到主存储器的易失区[1] 。一旦操作系统放到了主存储器中,boot要求CPU执行一条转移指令,转到这个存储区域,在这个时候,操作系统接管并且开始控制整个机器的活动。
      在操作系统变成可用之前,boot可以执行BIOS,完成基本的输入输出活动。
    1、开机执行BIOS(基本输入输出系统)引导程序,这个过程叫做系统自检,标识和配置所有的即插即用设备,并配置DMA通道;完成加电自检,测试内存,端口,键盘,视频适配器,磁盘驱动器等基本设备,以及CD-ROM驱动器;对引导驱动器可引导分区定位:在CMOS(complementary metal oxide semiconductor,互补金属氧化物半导体)中,可以自行设置引导顺序,一般顺序是软驱,磁盘,光驱;加载主引导记录以及引导驱动器的分区表,执行主引导记录MBR,主引导记录在硬盘上找到可引导分区,将其分区引导记录装入内存,并将控制权交给分区引导记录,由分区引导记录定位根目录,然后装入操作系统。

    //-----------------------------

    分8步
    1.执行第一条指令。
    2.进入POST(Power On Self Test,加电自检)自检。
    3.初始化显卡。
    4.测试CPU和内存。
    5.检测标准设备。
    6.检测即插即用设备。
    7.更新ESCD系统BIOS将更新ESCD(Extend System Configuration Data,扩展系统数据配置)。
    8.按指定的顺序启动磁盘。

    //---------------------------------------

    系统引导程序的工作原理

      单片机控制系统中,由于程序规模不大,它完全可以存储于程序可寻址的ROM片上(Read Only Memory:只读存储器,它的种类很多,这里不做过多解释)。

    当程序运行时,不需要移动程序位置,便可直接通过PC(Programming Counter:程序计数器,它总是指向CPU下一条要执行的程序指令)指针指向,加载到CPU当中并解释执行。

      目标系统规模比较庞大的嵌入式系统,需要使用规模很大的系统软件与应用软件来实现控制功能。那么,这些软件直接存储在片上可直接寻址的ROM中,是不可能的(CPU的位宽,决定了可直接寻址的物理地址范围不够大)。所以,它们只能存放于容量较大的外部存储设备当中,而外部存储设备的内部空间(类似于某单位的库房内部货架,外部人员无法直接使用,只能通过库房管理员完成出库入库操作)往往不能被PC直接寻址访问!那么,如果要运行程序,必须要将它加载到CPU可寻址的RAM当中。

     

    谁来做

      系统引导程序(BootLoader)。嵌入式系统中的控制核心SOC(System On A Chip)芯片,在设计伊始,就预留了一部分PC可直接寻址的ROM空间,这部分空间,用户可存放一小段代码,当系统复位时,CPU直接指向这里,并执行它。这是非常重要的特性,针对不同的SOC,其实现方式可能完全不同,但原理相通。

    如何做之第一

    简单的初始化硬件设备(戏说“类似于抢滩登陆当中的先锋部队,规模很小,任务很明确:抢占滩头,并开辟一块安全的登陆区域,供后续抢滩部队安全登陆”),比如:初始化内存,设置堆栈,调整配置CPU工作模式,初始化中断控制系统,驱动存放系统软件的外部存储设备等;

     

     

    如何做之第二

    加载系统引导程序自身到RAM中(戏说“后续抢滩部队登陆在先锋部队的引导下登陆”)。因为系统引导程序的规模也比较大,它的代码存储范围也会超出PC可直接指向的范围,所以,必须要加载完整的系统引导程序到RAM中;

     

    如何做之第三

    系统引导程序驱动并初始化后续所有被使用到的硬件设备(戏说“抢滩部队开辟大范围的安全的登陆场,足够后续的主力作战部队登陆并展开”),比如:检测内存、LCD屏、声音输出设备、简单的通讯设备、存储设备等等;

     

    如何做之第四

    从外部存储设备中加载操作系统内核,同时为内核设定启动参数,并将系统的控制权交给操作系统(戏说“抢滩部队引导主力作战部队在指定的安全区域登陆,然后讲当前的战场形态以信息的形式通知给主力作战部队,最后将战场的控制权交给主力作战部队,完成任务”),结束使命。

     

    结束语

    系统引导程序,是嵌入式系统当中必不可少的软件。没有系统引导程序,操作系统自身不能被加载并正确运行。当前在嵌入式系统当中使用最多的系统引导程序是U-Boot,它开源、免费,并且支持绝大部分的嵌入式SOC芯片。同时它还支持很多常用的外部硬件设备,因为它的硬件设备驱动来源于Linux操作系统。所以,对嵌入式系统设计者来说,选择U-Boot绝对是不二的选择!

     

    号外

    如果您有什么问题,请关注“嵌入式系统开发者之家”给本公众号留言,我们会在第一时间回复您的问题!

    //-----------------------------------------------------------------------------------------------------------

    磁盘引导程序原理及简介

    一、介绍

    • 系统开机或者重启
      1. BIOS 加电自检 ( Power On Self Test -- POST )。BIOS执行内存地址为 FFFF:0000H 处的跳转指令,跳转到固化在ROM中的自检程序处,对系统硬件(包括内存)进行检查。
      2. 读取主引导记录(MBR)。当BIOS检查到硬件正常并与 CMOS 中的设置相符后,按照 CMOS 中对启动设备的设置顺序检测可用的启动设备。BIOS将相应启动设备的第一个扇区(也就是MBR扇区)读入内存地址为0000:7C00H 处。
      3. 检查0000:7DFEH-0000:7DFFH(MBR的结束标志位)是否等于55AAH,若不等于则转去尝试其他启动设备,如果没有启动设备满足要求则显示"NO ROM BASIC"然后死机。
      4. 当检测到有启动设备满足要求后,BIOS将控制权交给相应启动设备。启动设备的MBR将自己复制到0000:0600H处, 然后继续执行。
      5. 根据MBR中的引导代码启动引导程序。

    二、几个问题

    • 为什么需要磁盘引导程序


    为什么需要磁盘引导程序而不是直接载入操作系统?或许是因为历史原因,BIOS最初是为最原始的8位PC所创,8位的PC磁盘很小,所以BIOS只能先载入磁盘引导程序然后通过磁盘引导程序导入操作系统。

    • 磁盘引导程序为什么要从1扇区,0磁头,0磁道加载到7c00H处


    “引导程序加载器--int19”。由于BIOS加载磁盘引导程序时需要调用系统中断int19来加载引导程序,而这个中断指定了将磁盘1扇区,0磁头,0磁道加载到7c00H处。

    • 磁盘引导程序为什么最大只能是512字节


    “A bootstrap must be exactly512 bytes long because of the two byte check and the one sector limitation.”
    “一个引导程序必须为512字节,因为他的大小有一个扇区的限制,最后两个字节需要设置为'0xAA55'。”

    • 磁盘引导程序为什么是16位


    因为DOS系统是16位,X86系统都向后兼容引导时的16位模式。

     

    //----------------------------------

    Windows7的开机引导

    由bios启动,然后查找硬盘的mbr,mbr指向当前活动分区根目录的bootmgr引导器,bootmgr读取当前活动分区boot文件夹中的bcd数据配置文件,来生成菜单和载入设置用户选择后,控制权转交给winload.exe[windows内核载入程序]载入程序自动载入注册表和驱动文件之后就是你看见的登陆界面了,要是没有密码就直接进桌面了

    //-----------------------------------

     

     

     

     

     

     

     

    转载于:https://www.cnblogs.com/Tpf386/p/6322769.html

    展开全文
  • Windows引导过程

    2020-12-23 18:22:25
    Windows引导过程 1 内核加载 在Intel x86系统上,Windows操作系统获得控制首先从硬盘的主引导记录(MBR,Master Boot Record)开始。MBR包含代码和数据,其代码称为引导代码,在系统引导时首先获得控制;MBR的数据...

    Windows引导过程

    1  内核加载

    在Intel x86系统上,Windows操作系统获得控制首先从硬盘的主引导记录(MBR,Master Boot Record)开始。MBR包含代码和数据,其代码称为引导代码,在系统引导时首先获得控制;MBR的数据时一张分区表,指定了每个分区在磁盘上的位置和大小,以及分区的类型。当MBR的引导代码被执行时,它检查并找到可引导的分区(引导分区),将引导分区的第一扇区(引导扇区)读到内存中。然后MBR的代码将控制权交给引导扇区的代码。

    引导扇区的代码给Windows提供有关该硬盘上卷的结构和格式方面的信息,并且从该卷的根目录读入Windows的加载程序,即ntldr文件;然后将控制权交给ntldr的入口函数。

    Ntldr 文件由两部分组成:第一部分时实模式代码,即首先获得控制的代码区;第二部分时一个可执行文件,即os loader。

    Ntldr 的实模式代码首先获得控制,并完成16位模式下执行的初始化工作。然后为切换到保护模式做好基本的环境准备,之后将处理器切换到保护模式下。最后将控制权交给os loader 。

    Os loader 获得控制后,首先管理物理内存,用一个内存描述符(memory descriptor)数组把每一段内存的大小和用途记录下来,然后构造页目录和页表,设置好页目录寄存器,并打开页面映射机制。之后执行包括I/O设备的初始化工作。

    Os loader 从系统分区(即引导分区)的根目录读入boot.ini文件。从该文件中读取启动设置信息,如果有多个启动选项,则会根据规则或者显示出启动菜单让用户选择启动。

    然后,os loader 加载内核模块映射文件,默认为ntoskrnl.exe ,以及HAL映射文件,默认为hal.dll。在加载SYSTEM储巢,即\WINDOWS\system32\config\system文件。通过SYSTEM储巢的设置信息,加载”引导-启动”(SERVICE_BOOT_START)的设备驱动程序。然后加载”引导-启动”的设备驱动程序,以及必需的文件系统驱动程序。Os loader 在此加载过程中构造了一个参数块,记录了这次引导过程中加载器所获得的各种参数信息。参数块LOADER_PARAMETER_BLOCK 结构定义如下:

    typedef struct _LOADER_PARAMETER_BLOCK {

        LIST_ENTRY LoadOrderListHead;                   //加载的模块链表,每个元素都为KLDR_DATA_TABLE_ENTRY

        LIST_ENTRY MemoryDescriptorListHead;            //内存描述符表,每个元素都为MEMORY_ALLOCATION_DESCRIPTOR

        LIST_ENTRY BootDriverListHead;                  //引导驱动程序链表,每个元素都为BOOT_DRIVER_LIST_ENTRY

        ULONG_PTR KernelStack;                          //内核栈顶

        ULONG_PTR Prcb;                                 //进程环境,指向一个进程控制块

        ULONG_PTR Process;                              //初始进程,EPROCESS

        ULONG_PTR Thread;                               //初始线程,ETHREAD

        ULONG RegistryLength;                           //系统储巢的长度

        PVOID RegistryBase;                             //系统储巢的基地址

        PCONFIGURATION_COMPONENT_DATA ConfigurationRoot;//配置书,包含ISA、磁盘和ACPI的配置数据

        PCHAR ArcBootDeviceName;                        //引导分区的ARC名称

        PCHAR ArcHalDeviceName;                         //系统分区的ARC名称

        PCHAR NtBootPathName;                           //OS 目录的路径名称,比如"\windows"

        PCHAR NtHalPathName;                            //OS 加载器的路径名称,比如“\”

        PCHAR LoadOptions;                              //引导选项,来自boot.ini

        PNLS_DATA_BLOCK NlsData;                        //包含ANSI、OEM 代码页和UNICODE码表

        PARC_DISK_INFORMATION ArcDiskInformation;       //所有磁盘的签名结构

        PVOID OemFontFile;                              //OEM 字体文件

        struct _SETUP_LOADER_BLOCK *SetupLoaderBlock;   //网络引导或文字模式按照引导

        PLOADER_PARAMETER_EXTENSION Extension;          //扩展部分

     

    typedef struct _I386_LOADER_BLOCK {

        PVOID CommonDataArea;

        ULONG MachineType;      // Temporary only

        ULONG VirtualBias;      //当前内核及地址相对于2GB的偏移量

    } I386_LOADER_BLOCK, *PI386_LOADER_BLOCK;

     

        union {

            I386_LOADER_BLOCK I386;

            // ALPHA_LOADER_BLOCK Alpha;

            // IA64_LOADER_BLOCK Ia64;

        } u;

    } LOADER_PARAMETER_BLOCK, *PLOADER_PARAMETER_BLOCK;

    引导扇区和系统加载器的引导执行过程,如图:

    最后,os loader 将控制权交给内核模块的入口函数,该函数将不在返回。

    2  内核初始化

    os loader 将控制权交给内核即ntoskrnl.exe ,内核初始化开始。Ntoskrnl.exe的入口函数是KiSystemStartup。由于模块间耦合的关系,内核初始化没有办法线性执行。而是将过程分为两个阶段。阶段0和阶段1,启动模块靠着一个标识位来确定当前启动是处于阶段0还是阶段1。

    多处理器系统的内核初始化过程,如图:

    阶段0:初始化阶段1要用到的数据,在该阶段,中断被禁止。KiSystemStartup首先初始化处理器状态,包括IDT、TSS(Task State Segment)、PCR,然后调用HalInitializeProcess为当前处理器初始化其HAL中的PCR和处理器间中断向量,接着调用kiinitialineKernel初始化内核,完成之后即变为空闲。在阶段0初始化的时候,进程管理器PCR创建一个进程对象idle,创建system.exe进程。

    kiInitializeKernel返回后,kiSystemStartup启动中断。开始允许新线程的创建。

    到此时,阶段0启动完毕。阶段1开始启动。初始化函数phase1Initialization,间接调用KeStartAllProcess启动其它的处理器。其它的处理器启动的过程和主处理器相似,但少了很多初始化的过程。

    在阶段1的初始化过程中,在屏幕上开始显示windows图标和进度。

    过程如下:

    1. 设置InitializationPhase为1,表示阶段1开始。

    2. HalInitSystem,执行HAL的阶段1初始化。

    3. 初始化图形引导驱动。

    4. 调用PoInitSystem完成电源初始化。

    5. 调用HalQueryRealTimeClock,完成时间的初始化;  调用keSetSystemTime设置时间。

    6. KeStartAllProcessers,启动并初始化所有的处理器。

    7. 调用ObInitSystem,完成对象管理器的阶段1初始化;调用ExInitSystem,完成执行体组件的阶段1初始化,调用KeInitSystem,完成微内核的初始化;调用KdInitSystem,完成内核调试器的阶段1初始化,调用SeInitSystem,完成安全子系统的阶段1初始化。

    8. InbvUpdateProgressBar,更新进度10%

    9. 创建“\SystemRoot”符号链接

    10. 调用MmInitSystem,完成内存管理器初始化。

    11. 将国家语言支持(NLS)表映射到系统空间中,然后重置翻译表。

    12. CcInitializeCacheManager,初始化缓存管理器。

    13. CmInitSystem1,初始化配置管理器。

    14. CcPfInitializePrefetcher,初始化内核中的预取器(prefetcher)。

    15. 更新进度15%

    16. FsRtlInitSystem,初始化文件系统支持库。

    17. KdDebuggerInitialize1,初始化调试器(kdcom.dll)

    18. PpInitSystem,初始化即插即用设备。

    19. 更新进度20%

    20. LpcInitSystem,初始化LPC子系统

    21. ExInitSystemPhase2, 初始化执行本地组件。

    22. 更新进度25~75%

    23. 调用IoInitSystem函数来初始化I/O子系统。初始化I/O子系统中的状态变量,创建驱动程序对象和设备对象。加载“引导-启动”类型驱动。加载“系统-启动”类型驱动。

    24. 恢复进度0~100%

    25. MmInitSystem,将当前已加载内核模块中的PAGE段标记为”可换页”。

    26. 更新进度80%

    27. PoInitSystem,完成电源管理器的阶段1初始化。

    28. PsInitSystem ,完成进程管理器的阶段1初始化。

    29. 更新进度85%

    30.SeRmInitPhase1,完成安全引用监视器(SRM)的阶段1初始化。

    31. 更新进度90%

    32. 创建会话管理器(smss.exe)进程。

    25、更新进度100%。

    26、启动ZwWaitForSigltObject等待smss.exe进程五秒钟,五秒钟内smss退出则系统崩溃。(注意:会话管理器虽然为系统进程,但是在系统中并没有做内核守护,平时结束了smss.exe,是不会引起系统崩溃的,原因就在这里。)

    内核初始化完毕。用户登录会话开始。

    3  建立用户登录会话

    smss.exe获得控制权,用户登录会话开始。

    首先,初始化注册表内容。(内核启动阶段1仅仅启动了注册表管理器和system储巢)。。

    smss.exe要启动的东西在注册表中的位置:

    HKLM\SYSTEM\CurrentControlSet\Control\Session Manager

    主要键值按启动顺序排列介绍如下:

    BootExecute  运行在启动时执行的程序。自动校验程序。

    FileRenameOperation  启动时文件删除重命名。

    \KnownDlls  打开已知dll(系统,全局共享)

    \Memory Management\PagingFiles  创建页面文件,也就是虚拟内存。

    Environment  全局环境变量。

    \SabSystems\kmode  windows子系统的内核模块。

    \subSystems\Windows  启动windows子系统进程(csrss.exe)

    创建LPC端口对象为启动lsass做好准备。

    启动winlogon.exe,初始化登录窗体和默认桌面。

    内核ZwWaitForSigleObject来等待winlogon.exe和csrss.exe进程,有一个结束则系统崩溃。

    启动Services.exe,启动自启动的服务和设备。

    启动本地权威子系统lsass.exe进程,建立LPC连接。

    Winlogon获得用户名和口令后,首先调用lsass.exe的lsaLookupAuthenticationPackage函数以获得认证包,然后由lsass来验证。

    Winlogon检查UseInit的值,启动进程(默认为UseInit.exe)。

    UserInit.exe检查Shell的值(默认为explore.exe),启动explore。

    UserInit退出。

    Windows会话创建和用户登录过程,如图:

     

     

     

    展开全文
  • MBR分区表在Windows操作系统下最多支持4个主分区(只允许有一个分区是活动的)或3个主分区+1个扩展分区(包含多个逻辑分区),扩展分区必须划分为逻辑分区才能使用,1个扩展分区可以划分多个逻辑分区。GPT分区表...

    目前个人电脑主要的系统引导方式有两种:传统的Legacy BIOS和新型的UEFI BIOS。

    要了解引导方式首先要了解一下磁盘分区表格式,一般来说,磁盘分区表有两种格式:MBR和GPT。MBR分区表在Windows操作系统下最多支持4个主分区(只允许有一个分区是活动的)或3个主分区+1个扩展分区(包含多个逻辑分区),扩展分区必须划分为逻辑分区才能使用,1个扩展分区可以划分多个逻辑分区。GPT分区表对分区数量没有限制,但在Windows系统上最多可以支持128个主分区。

    传统的Legacy BIOS无法识别GPT分区表格式,所以也就没有LegacyBIOS+GPT的组合方式,也就是说传统Legacy BIOS引导系统的时候只能通过MBR来引导。MBR位于硬盘的0柱面、0磁头、1扇区,占用512个字节。MBR不属于任何一个操作系统,是所有系统公用的,它先于所有的操作系统被调入内存并发挥作用,然后才将控制权交给活动主分区内的操作系统。安装操作系统的时候安装程序会在MBR中写入引导程序,电脑开机以后MBR中的引导程序会自动在活动分区中搜寻相应的启动程序并执行:

    如果MBR中是MS-Dos 6.22的引导程序,那么该引导程序会执行io.sys,io.sys进一步加载msdos.sys。

    如果MBR中是Grub引导程序,那么该引导程序会执行grldr,grldr读取menu.lst显示启动菜单或直接进入系统。

    如果MBR中是WinNT/2k/XP的引导程序,那么该引导程序会执行ntldr,ntldr读取boot.ini显示启动菜单或直接进入系统。

    如果MBR中是Vista以后的引导程序,那么该引导程序会执行bootmgr,bootmgr读取\Boot\BCD显示启动菜单或直接进入系统。

    以上menu.lst和boot.ini都是文本文件,可以直接用文本编辑器来进行编辑,\Boot\BCD文件只能通过EasyBCD工具来查看和编辑。

    使用传统Legacy BIOS引导Windows10系统的过程如下:

    LegacyBIOS→MBR→活动分区根目录下的bootmgr→\Boot\BCD→C:\Windows\system32\winload.exe

    UEFI BIOS可同时识别MBR分区和GPT分区,所以UEFI下,MBR和GPT磁盘都可用于启动操作系统。不过由于微软限制,UEFI下使用Windows安装程序安装操作系统是只能将系统安装在GPT磁盘中。GPT分区下的磁盘没有MBR记录,所以电脑的引导程序不再写入到MBR中,而是直接写入到EFI分区里面。EFI分区实际上是一个FAT格式的分区,不一定要是第一个分区,GPT磁盘下任何一个FAT文件格式的分区都可以用来放EFI引导程序。Windows系统的EFI分区有时候也叫ESP分区。

    电脑使用UEFI方式启动时,UEFI BIOS会根据BIOS中的设置来找到用于启动的EFI分区,然后执行这个启动分区下的\EFI\boot\bootx64.efi(或者bootia32.efi)文件,这个文件实际上是一个可执行程序。我们在安装Windows系统时候,安装程序会自动建立\EFI\boot\bootx64.efi,这个程序在加载之后会默认读取\EFI\microsoft\boot\BCD(此文件可以用BOOTICE这个软件来查看和编辑)来显示启动菜单或直接进入系统,有些主板的BIOS甚至可以直接设置启动文件为\EFI\Microsoft\Boot\bootmgfw.efi,实际上这个文件跟\EFI\boot\bootx64.efi是完全一样的。

    使用新型的UEFI BIOS引导Windows10系统的过程如下:

    UEFIBIOS→EFI分区→\EFI\boot\bootx64.efi→\EFI\microsoft\boot\BCD→HD0\Partition2\Windows\system32\winload.efi。

    如果你的电脑安装了第三方的引导软件,比如说Clover,那么它会将你的\EFI\boot\bootx64.efi替换为clover的启动程序CLOVERX64.efi,替换之后的\EFI\boot\bootx64.efi不再会默认读取\EFI\microsoft\boot\BCD,而是读取\EFI\CLOVER\config.plist的配置来显示启动菜单。

    展开全文
  • 内核引导过程

    千次阅读 2016-05-23 17:00:21
    BROM引导 ARM CPU刚上电时,它的PC寄存器指针指向IC内嵌的一片ROM的起始位置处,这片ROM称之为BROM(boot rom),系统就是...BROM中会存储上电引导程序,这段程序也一般会包括以下几个内容:1. CPU上电初始化操作。 2.
  • 简介:引导 Linux® 系统的过程包括很多阶段。不管您是引导一个标准的 x86 桌面系统,还是引导一台嵌入式的 PowerPC® 机器,很多流程都惊人地相似。本文将探索 Linux 的引导过程,从最初的引导到启动第一个用户空间...
  • Linux的引导过程

    2018-10-17 20:22:43
    Linux的引导过程 了解Linux的引导过程我们需要通过以下一个方面: 1.什么是引导? 打开计算机并加载操作系统的过程称为引导。...计算机引导需要执行一段程序:Bootstrap Loader。Bootstrap Loader位于引导扇...
  • OmriOS:操作系统,包括一个微型引导程序
  • Linux引导过程

    2016-10-21 13:39:00
    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行...
  • 这是一个引导加载程序和模块加载程序python脚本,可用于使用预引导功能来引导程序! (可能包括壳元素) 下载 转到downlad文件夹,您可以使用未编译或已编译的文件! 然后使game_boot成为运行您的游戏的程序,并运行...
  • Linux引导过程九个步骤通样沏异涕抬若远略乖延巧懒握堵臼届赣讼舆赞巍襟感拆鼓宗境闷糯湛陕篮添嗣琵韶劝献从垂镁待零窿不轴藤芭铅肚锈几颓安栗积翅丫股癣踞几胞遥蹬抓裤岭膀海斯前坐扦毋栋府爆喀硅毗保愿饶梗寄缝姜...
  • 石墨-泰坦 使用 Titan 的 Graphity 实现,包括引导程序
  • 引导是计算机开始输入时常采用的一种手段。...中文名引导程序外文名boot loader领域计算机性质程序引导程序简介编辑语音引导程序(英语:boot loader)位于电脑或其他计算机应用上,是指引导操作系统的程序。引...
  • Linux 引导过程内幕

    千次阅读 2016-02-17 17:38:20
    早期时,启动一台计算机意味着要给计算机喂一条包含引导程序的纸带,或者手工使用前端面板地址/数据/控制开关来加载引导程序。尽管目前的计算机已经装备了很多工具来简化引导过程,但是这一切并没有对整个过程进行...
  • 引导过程和服务过程

    2021-04-22 16:12:52
    引导过程和服务过程Linux引导过程init进程systemd运行级别所对应的systemd目标修复MBR扇区故障修复GRUB引导故障系统服务控制控制类型查看运行级别临时切换运行级别查看系统服务的启动状态 Linux引导过程 1.开机...
  • raspbootin, 树莓派的简单引导通过串行引导程序 raspbootin用于 树莓派的简单boot-over-serial引导程序Raspbootin知识库包含 2个组件: Raspbootin和 Raspbootcom 。 Raspbootin:Raspbootin是你在SD卡上
  • Linux的引导加载程序

    2019-11-14 15:31:20
    主引导记录包括两部分内容:部分引导程序以及分区表。 由于BIOS只能访问很少的数据,所以大部分引导加载程序分两个阶段进行引导。第一阶段BIOS引导一部分引导程序(IPL,initial program loader)(称为主引导程序,...
  • 引导 Linux® 系统的过程包括很多阶段。不管您是引导一个标准的 x86 桌面系统,还是引导一台嵌入式的 PowerPC® 机器,很多流程都惊人地相似。本文将探索 Linux 的引导过程,从最初的引导到启动第一个用户空间应用...
  • 文章目录十七、Linux系统引导过程引导修复系统引导过程介绍 十七、Linux系统引导过程引导修复 系统引导过程介绍
  • Mac引导程序

    2012-11-05 20:30:31
    里面包含了HJMAC.ISO darwin.iso亲测可用 建议直接在电脑刻录到光盘使用.
  • 文章目录一、Linux操作系统引导过程(一)、引导过程总览(二)、Linux操作系统的引导过程详细解读:1、...手动输入引导命令(笨拙繁琐,不建议使用)方法二:进入急救模式,恢复GRUB引导程序(仅适用于前466字节被破坏
  • Linux操作系统的引导过程一般包括以下几个阶段:开机自检、MBR引导、GRUB菜单、加载Linux内核、init进程初始化 开机自检 服务器主机开机以后,将根据主板BIOS中的设置对CPU(Central Processing Unit,中央处理器)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 279,897
精华内容 111,958
关键字:

引导程序包括