引导_引导程序 - CSDN
精华内容
参与话题
  • 操作系统(一)引导程序

    千次阅读 2019-02-21 00:45:15
    操作系统(一)引导程序序原理操作系统的启动过程FAT12文件系统BIOS内存分布代码编译BIOS中断代码分析 序 在自学操作系统的过程中,试图自己实现。参考了一些文献(《30天自制操作系统》、《现代操作系统》等),...

    在自学操作系统的过程中,试图自己实现。参考了一些文献(《30天自制操作系统》、《现代操作系统》等),决定将零散的信息进行一下整理,梳理一下思路。并一点点的开始实现自己的操作系统。我将已经实现的部分上传到了我的GitHub,代码中不足之处还请路过的大神们指点。(希望我能写完)

    原理

    操作系统的启动过程

    具体的信息在计算机是如何启动的——阮一峰博客的文章中记录的非常详细,在这里仅简单列举一下相关内容

    1. BIOS硬件自检
    2. 加载引导程序
      • BIOS首先读取存储设备的第一个扇区(引导扇区),如果这个扇区的最后两个字节是0x55和0xAA则视作可以启动。
      • 将引导扇区的引导程序加载至系统内存的0x7c00位置,执行。
      • 引导程序进行初始化等一系列处理。
    3. 载入系统内核,BIOS引退

    FAT12文件系统

    在《30天自制操作系统》中,作者使用了一个自制的软件以生成img镜像,实际上就是作者实现的一个简单的FAT12文件系统生成的程序。有关于FAT12文件系统的具体内容可以参考FAT12文件系统

    在这里需要了解的包括:
    FAT12软盘的存储情况分布
    由上图可知,在第一个扇区即引导扇区中存储着软盘的相关内容,根目录区(存放着文件名称、大小、修改日期等)开始于第19个扇区(0x2600)。根目录区每个条目的大小为32个字节,所以根目录区的长度为:BPB_RootEntCnt*32(字节)。这样就可以确定出数据区的开始扇区。按默认情况计算开始的地址为(0x8200)。
    引导扇区中参数说明
    上图为引导扇区中的参数。

    按照以上FAT12的原理,我也实现了一个“极简版的FAT12文件生成程序”,内有彩(bug)蛋,详见GitHub ExtUtils/createImg。

    BIOS内存分布

    在开机时,系统会进入实模式,这个时候系统只用1M空间可以使用。具体分配情况如下:

    • 0x00000—0x003ff中断向量表。
    • 0x00400—0x004ff BIOS数据区。
    • 0x00500—0x9ffff 自由内存区。
    • 0xA0000—0xbffff作为显存使用。
    • 0xc0000—0xc7fff 显卡BIOS。
    • 0xc8000—0xcbfff ide控制器BIOS使用。
    • 0xf0000—0xfffff 系统bios使用。

    在开机时,会自动将引导程序加载至0x7c00处。

    代码编译

    按照常规使用汇编+C作为编写语言。采用nasm和gcc对代码进行编译。首先将代码编译为二进制文件,再写入“软盘”中。
    编译指令为:

    nasm -f bin filename.s -o filename.bin
    

    BIOS中断

    BIOS中断内容较多,可以查阅BIOS中断大全

    代码分析

    以下代码已上传至GitHub。

        CYLS EQU 10
        ORG     0x7C00          ;起始地址
        JMP     start           ;短转移
        DB      0x90            ;无意义
        DB      "MY OS   "      ; BS_OEMName
        DW      512             ; BPB_BytesPerSec
        DB      1               ; BPB_SecPerClus
        DW      1               ; BPB_ResvdSecCnt
        DB      2               ; BPB_NumFATs
        DW      224             ; BPB_RootEntCnt
        DW      2880            ; BPB_TotSec16
        DB      0xF0            ; BPB_Media
        DW      9               ; BPB_FATSz16
        DW      18              ; BPB_SecPerTrk
        DW      2               ; BPB_NumHeads
        DD      0               ; BPB_HiddSec
        DD      2880            ; BPB_TotSec32
        DB      0,0,0x29        ; BS_DrvNum
        DD      0xffffffff      ; BS_VolID
        DB      "HELLO-OS   "   ; BS_VolLab
        DB      "FAT12   "      ; BS_FileSysType
        RESB    18              ; 无意义
    
    ; 以上部分为引导扇区的描述,均按照默认设置。
    ; 下面开始引导程序
    
    start:
        MOV AX, 0
        MOV SS, AX
        MOV SP, 0x7C00
        MOV DS, AX
       
        MOV AX, 0x0820
        MOV ES, AX
        ; 以上初始化堆栈、数据、附加段寄存器。
        MOV CH, 0   ; 柱面
        MOV DH, 0   ; 磁头
        MOV CL, 2   ; 扇区
    ; 开始将软盘中的启动程序读入系统内存中
    read:
        MOV SI, 0
    retry:
        MOV AL, 1
        MOV AH, 0x02
        MOV BX, 0
        MOV DL, 0x00
        INT 0x13
        ; 依次读入每个扇区的内容;若读入失败超过5次,则转至错误处理
        JNC next
        INC SI
        CMP SI, 5
        JAE error
        MOV AH, 0x00
        MOV DL, 0x00
        INT 0x13
        JMP retry
    next:
        MOV AX, ES
        ADD AX, 0x0020
        MOV ES, AX
        INC CL
        CMP CL, 18
        JBE read
        MOV CL, 1
        INC DH
        CMP DH, 2
        JB read
        MOV DH, 0
        INC CH
        CMP CH, CYLS ; 共读取CYLS个扇区
        JB read
        
        ;JMP error ;用来判断是否跳出循环
    
        MOV [0x0FF0], CH
        JMP 0xC200
        ; 转至后续执行程序
        ; 0x7c00 + 0x8000 = 0xc200
        
    final:
        HLT
        JMP final
    
    ; 显示错误信息
    error:
        MOV SI, msg
    ; 逐字符打印错误信息
    print:
        MOV AL, [SI]
        INC SI
        CMP AL, 0
        JE final
        MOV AH, 0x0E
        MOV BX, 15
        INT 0x10
        JMP print
    
    msg:
        DB 0x0a, 0x0a
        DB "load error"
        DB 0x0a
        DB 0
    
        RESB 510 - ($ - $$) ; 空余补0
        DB 0x55, 0xaa
    

    PS:不用debug调试汇编程序真累心。少写了一条指令检查了一整天。

    展开全文
  • 引导式线上培训

    2020-09-30 10:40:38
    引导式线上培训需要一些形式上的互动设计来抓住学员的注意力,也需要在内容呈现和语言表达方面提升体验。当然了,这些Tips行之有效的前提是,内容为王。只有交付真正有价值的内容,再由富有同理心的引导者加以引导,...

    引导式线上培训需要一些形式上的互动设计来抓住学员的注意力,也需要在内容呈现和语言表达方面提升体验。当然了,这些Tips行之有效的前提是,内容为王。只有交付真正有价值的内容,再由富有同理心的引导者加以引导,辅之活泼轻松的互动设计,才能够在线上这种极为松散的条件下交付出色的培训效果。

    基于众所周知的原因,线上会议和培训正在如火如荼的进行。各种主题五花八门,培训效果喜忧参半。本文总结了一些线上培训的实用建议,供需要的朋友们酌情参考。

    首先,本文标题《引导式线上培训》,划重点“引导式”。何为引导式?即以引导的方式来组织线上培训。这需要一位引导者,他可以是会议主持人,也可以是培训讲师,他需要在整个培训过程中引导受众,给大家营造良好的交互氛围和学习体验,使得整个线上培训进展得更加顺畅。

    身临其境:线上分享的困境

    在介绍如何引导线上培训之前,我们先来玩儿一把身临其境:设想我要参加一场这样的线上培训,整个培训时长两个小时,讲师的演讲能力很强,从头到尾一气呵成,逻辑顺畅内容丰富,他所讲的也正是我想听的内容。不知道想到这里大家是什么感受,是不是就两个字,“完美”?但是,请注意转折来了,这个场景很像我们平时见到的线上Session,朴实无华,且枯燥。

    让我来带大家还原一下真实场景。

    开始时我会卡点进Zoom,有可能错过了前面的一两分钟(也许更多)我不知道是什么的内容;前半小时,聚精会神认真仔细,甚至拿着小本记着笔记。

    半小时后,客户微信来了,需要第一时间响应;十分钟后邮件弹窗了,迅速瞄一眼标题,“什么是SEO”?好像还蛮有趣,先mark为敬,下来仔细研读;哎坏了讲到哪了?迅速跟过来,继续听讲。

    一个小时过去了,口干舌燥,好像过去的一个小时是我讲的一样,拿起杯子一饮而尽,心里得意一下,看吧,我就说杯子得随时放手边,位置也有讲究,不能太远,得随手能够到,也不能太近,省得碰倒浇了手机和电脑;哎怎么都翻页了,刚才那页是啥内容?算了,下来要个PPT和录屏。

    又半个小时过去了,怎么还没结束,刚才水喝多了;答疑环节,PM电话来了,重要又紧急,算了答疑不重要,先下了……

    看到这段有小伙伴可能会说,我比你听讲可认真多了。OK,那么问题来了,能保证两个小时从头到尾听下来、没有拿起手机划开锁屏的小伙伴请举手。举手的朋友请收下我的膝盖。不用怀疑,这不是我们的问题,一定是线上培训的打开方式不对。

    那么怎样才能避免上面这些情况的产生呢?没法避免,我们不知道听众会遇到哪些突发情况,电话来了、娃来了、猫狗来了,水洒了、网断了、人有三急了……我们能做的只是在大家还有兴趣听的时候尽量抓住注意力,让大家自觉自愿的留在线上完成培训。

    这时候你就需要引导式线上培训了,本文不会长篇大论介绍理论,而是提供简单有效的Tips,让大家马上就能使用起来。

    引导式培训的形式设计:凤头猪肚豹尾

    一般来说,一次持续的线上培训时长最好不超过1.5小时,1小时左右比较适宜,不会长到大家失去耐心,也没有短到讲不清楚一件事。如果大家的主题真的没法1小时讲完,可以酌情分段开展,中间留够休息时间,线上也是需要茶歇的好伐~

    在1小时左右的线上分享中,同样是需要控场的,请设置明确的 Check-in 和 Check-out 环节。Check-in 指的是在正式开始分享内容之前的互动环节,形式应该是可以活跃气氛的、能迅速吸引大家注意力的,有点像线下的破冰环节。Check-in 结束后请明确告诉大家,“现在我们开始今天正式的学习内容分享”,让大家有一个调整感。这有点像催眠师,“现在你感受到全身放松,开始逐渐入睡……”,然后就可以开始进入正题了,正题部分我们下段再议。

    正题结束后,需要有个 Check-out 环节,也要明确告诉大家,“现在正文结束,开始答疑(或胡扯)”,同样的可以类比催眠师的那句“我数到3你就会睁眼醒来,1,2,3……”。然后结束正题进入Check-out,可以是Q&A、总结梳理、甚至不相关的其他内容。分享两页我设计的 Check-in 和 Check-out 环节。

    Check-in:打开摄像头进行线上破冰,主持人可以介绍一下培训公约,在整个培训过程中需要大家注意的规则,以及过程中可能需要大家参与的环节等。

    Check-in环节

    Check-in / Check-out:课程开始前或结束后,可以让大家进行一些轻松愉快的小游戏,或者让大家随意涂画,写写反馈等。

    游戏环节

    有了 Check-in 和 Check-out,就好比写文章有了凤头豹尾,现在我们就要填充猪肚部分了。不光在开始和结束时需要引导,在过程中更需要引导。在过程中的引导更强调互动性,所以在内容呈现形式上,我们还应该定期的设计互动小环节。请注意一定要结合内容来互动,过程中就不宜加入内容不相关的互动了,否则容易让大家出戏,把好不容易聚集起来的精神散没了。

    结合内容来互动的形式比较简单:可以是问题,让大家打弹幕回复;可以是选择题、填空题、连线题;也可以玩大家来找茬……互动出现的频率应适宜,可以是讲完一个概念来验证大家的掌握程度,也可以是让大家发散脑洞然后再帮助收敛。分享两页结合内容的交互引导,设计来自《敏捷需求基础技能练功房》。

    判断题:方便大家快速在屏幕上勾画,实时获得知识点反馈。

    判断题

    归类题:适合在介绍完相近的、或大家经常有误区的概念后使用。

    归类题

    有了过程中的互动设计,就可以在讲述内容的同时引导大家沉浸式参与,让大家的状态跟随着引导者的步伐起起伏伏,从而达到更好的课堂效果。

    在内容和表达上提升体验

    介绍完引导相关的互动设计,我们再来聊一下怎样在阐述内容时给人以良好的体验。

    先聊内容的设计。每页PPT的讲解时间不宜过长,5分钟左右比较合适。因为线上不比线下,受众长时间盯着没有变化的屏幕很容易疲惫和走神。每页PPT呈现的内容尽量简洁,不宜堆砌过多内容,应让学员在没有指引的情况下也能清楚的知道讲到哪儿了。再有就是如果需要中英文混用,要保证英文单词在PPT上可以找到。

    在声音和语言表达方面,也有一些需要注意的点。比如,要注意环境噪音,以及可能影响音效的习惯性动作,如缕耳机线、敲键盘、点鼠标等;在讲解过程中应吐字清晰,语速得当;另外,常用的口头禅需要控制,如“然后、即、就是说、这个嘛、你看……”,为什么这么说呢,因为频繁的口头禅很容易让人Focus在你的口头禅上,而非你要讲的内容上;此外,PPT翻页和逐步演示的时机要掌握好,保证整体的逻辑通顺,衔接自然;在讲述过程中要做到及时回顾,帮助大家形成内容段落感,也方便一时走神的小伙伴快速跟上大部队。

    语言方面,多考虑学员感受,一样话百样说,哪怕是在发难,也最好使用令人更容易接受的方式,如:

    “不知道我有没有回答你的问题?”,代替“回答明白了吗?”;

    “我讲清楚了吗?”,代替“你听懂了吗?”;

    “关于这一点,大家还有什么疑问?”,代替“还有哪儿不明白?”;

    “我们来一起看看咱们的作业”,代替“看看你们的作业”;

    “时间投入方面需要我们一起克服一下困难呢”,代替“时间的问题自己协调解决”。

    ……

    在整个过程中,应保持同理心:如果你是学员,你不想听到什么就不要说什么,不想看到什么就不要做什么。如果遇到冲突和矛盾,不要预设立场,要冷静下来,先问是不是,再问为什么。

    总结:时刻关注“人”的状态

    好,我们总结一下本文:引导式线上培训需要一些形式上的互动设计来抓住学员的注意力,也需要在内容呈现和语言表达方面提升体验。当然了,这些Tips行之有效的前提是,内容为王。只有交付真正有价值的内容,再由富有同理心的引导者加以引导,辅之活泼轻松的互动设计,才能够在线上这种极为松散的条件下交付出色的培训效果。

    结尾点题:引导式线上培训,需要我们时刻关注“人”的状态。毕竟,我们工作和生活的一切都与人有关。让我们为给他人营造美好的体验而努力吧,共勉2020。

    附:疯狂emoji答案,惺惺相惜、一心一意、一气呵成、望闻问切、八面玲珑、马到成功。

    文/ThoughtWorks于晓南

    展开全文
  • UEFI下Windows引导过程

    万次阅读 2016-11-27 17:32:02
    引导文件 在UEFI安装完操作系统后,Windows至少使用两个分区,一个叫做ESP分区(EFI SYSTEM PARTITION),用于存放启动文件,另一个则是BIOS下正常的系统分区,不同的是,BIOS下引导文件是winload.exe,UEFI下引导...

    引导文件
    在UEFI安装完操作系统后,Windows至少使用两个分区,一个叫做ESP分区(EFI SYSTEM PARTITION),用于存放启动文件,另一个则是BIOS下正常的系统分区,不同的是,BIOS下引导文件是winload.exe,UEFI下引导文件式winload.efi,两者都是pecoff格式的,但UEFI用的是各种固件接口,而BIOS使用的是中断。有时还会有一个MSR分区,不过这个分区并不重要,实验可以删除。
    安装完成后,Windows还会将自己的启动管理器的信息写入固件的优先启动项中,这样在BDS阶段,固件会默认引导Windows启动管理器。默认情况下,UEFI固件加载的启动文件式EFI\BOOT\bootx64.efi(bootia32.efi),而Windows强制写入的启动项则会加载EFI\MICROSOFT\BOOT\bootmgfw.efi,这两个文件其实是一模一样的文件。
    注册表项
    系统安装完成后,安装程序会将引导信息保存在ESP中的BCD文件中,路径为EFI\microsoft\boot\BCD,BCD文件是一个注册表巢文件,反应到注册表里就是LOCAL_MACHINE下的BCD00000000,一般情况下hivelist是不导入这个文件的,我们可以在regedit中手工导入这个文件来查看。现在可以通过BOOTICE和REGEDIT一起看来理解这个文件。在Object下面是所有的启动ENTRY,每个ENTRY用一个GUID值标识。
    BCD00000000
    每个ENTRY下有一个Description和Elements,其中Description就是这个ENTRY的描述信息,而Elements则是一系列键值对,其中键用一个数字表示,比如12000004就是引导名称,而1100001则是引导位置信息,这个键值对在BOOTICE中就表现位右边那一栏。
    所有Entry
    这里写图片描述
    引导定位
    现在分析这个1100001,选择完要启动的操作系统后,启动管理器就是从这个键值对来确定加载哪个分区的winload.efi。打开DiskGenius,点击系统分区,看它的分区GUID,可以看出0x20处的16字节是分区GUID,而0X38开始的16字节则是硬盘GUID。
    在UEFI系统中,各种设备使用设备路径来标识,比如分区的路径可能就是pcicontroller()/pci(0,1)/sata(0,0,0)/hd(2,分区GUID,起始地址,结束地址)。
    这里写图片描述
    而对于Windows的loader来说,它只需要一个满足这样条件的设备路径就可以从那个设备启动:倒数第二个设备安装有EFI_BLOCK_IO_PROTOCOL,这样它就可以读取磁盘GUID来和0x38处的值进行比较,而倒数第一个设备是个分区设备(MSG_DP_TYPE),loader会通过这个设备的GUID和注册表中的进行比较来确定启动分区,这两个都匹配,那么Windows便会加载一个小型的NTFS文件系统,然后尝试着从那个分区设备中加载12000002也就是BOOTICE中ApplicationPath指定的引导文件。
    启动过程
    启动管理器(bootxxx.efi)会首先加载BCD文件,从BCD中读取所有启动项,如果有多个启动项并且没有默认启动项就会有一个菜单来显示,当用户选中其中某个启动项后,启动管理器就会从对应的分区(通过分区GUID)中读取winload.efi,如果这时找不到winload.efi,或者winload.efi签名校验失败,就会蓝屏0xc000000e,即找不到引导文件,加载完winload.efi后,控制权就正式交给winload.efi。
    Winload.efi做的第一件事就是通过BootService的GetMemoryMap提供的物理内存信息来构造页表以及PFN数据库,然后将ntoskrnl,hal以及SYSTEM\Service下的所有Boot型驱动以及他们需要的导入库读取加载到内存中,因为此时还是保护模式下,所以需要页表中建立这些文件的映射信息。(在IA32e下的UEFI开机后是会默认开启分页的,但是虚拟内存和物理内存是1:1映射的,所以进了Windows内核后不可能还用原来的地址)读取完成后,会对这些文件进行签名校验,如果校验失败,那么会蓝屏INACCESSIBLE_BOOT_DEVICE,即启动设备无效。这一步完成后,Windows会进一步初始化GDT和IDT,然后在页表中分配内核堆栈,初始化SystemPTE。最后调用ExitBootService退出引导阶段,调用SetVirtualAddress将EFI部分固件内存映射到虚拟内存,然后把页表基址载入CR3寄存器,开启分页并跳转到ntoskrnl的KiSytemStartup进入内核。

    展开全文
  • 本章将详细介绍操作系统引导,来为后面的操作系统安装学习奠定基础,不过这也是十分枯燥的一章,涉及的所有都是理论知识,掌握了这些理论知识,你能更好的玩好操作系统 一.BIOS及UEFI引导概念 BIOS: BIOS是英文&...

        本章将详细介绍操作系统引导,来为后面的操作系统安装学习奠定基础,不过这也是十分枯燥的一章,涉及的所有都是理论知识,掌握了这些理论知识,你能更好的玩好操作系统

        一.BIOS及UEFI引导概念

        BIOS:

          BIOS是英文"Basic Input Output System"的缩略词,直译过来后中文名称就是"基本输入输出系统"。在IBM PC兼容系统上,是一种业界标准的固件接口BIOS这个字眼是在1975年第一次由CP/M操作系统中出现。BIOS是个人电脑启动时加载的第一个软件。

           其实,它是一组固化到计算机内主板上一个ROM芯片上的程序,它保存着计算机最重要的基本输入输出的程序、开机后自检程序和系统自启动程序,它可从CMOS中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。此外,BIOS还向作业系统提供一些系统参数。系统硬件的变化是由BIOS隐藏,程序使用BIOS功能而不是直接控制硬件。现代作业系统会忽略BIOS提供的抽象层并直接控制硬件组件。

           当今,此系统已成为一些病毒木马的目标。一旦此系统被破坏,其后果不堪设想。(百度百科)

           现在,BIOS已经被全新的UEFI所淘汰,从Windows8开始,微软操作系统已经普遍采用UEFI引导,下面将主要讲解UEFI

        EFI:

           EFI,可扩展固件接口英文名Extensible Firmware Interface 的缩写,是英特尔,一个主导个人电脑技术研发的公司推出的一种在未来的类PC的电脑系统中替代BIOS的升级方案

           注:EFI是以小型磁盘分区的形式存放在硬盘上的,并非在BIOS的FLASH里面

        UEFI:

            UEFI(统一可扩展固件接口)由 UEFI 论坛统一管理,UEFI 论坛是由芯片组供应商、硬件供应商、系统供应商、固件供应商和操作系统供应商联合组建的一个组织。该论坛负责维护可跨多种 UEFI PC 使用的规范、测试工具和参考实现。Microsoft 是该论坛的董事会成员,该论坛对所有个人和公司开放,加入该论坛无需支付任何费用。
    UEFI 为个人计算机定义了下一代固件接口。基本输入和输出系统 (BIOS) 固件最初采用汇编语言进行编程,并使用中断来执行输入/输出操作,在出现之初即确定了 PC 生态系统的基本框架,但是随着计算技术的发展,“现代固件”定义应运而生,以满足下一代平板电脑和设备的需求。
    UEFI 旨在定义一种标准通信方式,规范启动过程中操作系统与平台固件之间的通信。在 UEFI 出现之前,在启动过程中主要利用软件中断机制与硬件进行通信。现代 PC 可以在硬件和软件之间更快速、更高效地执行块输入/输出操作,在设计中使用 UEFI 可以发挥硬件的全部潜能。

    UEFI 支持模块化固件设计,硬件设计师和系统设计师在为要求更高的现代计算环境设计固件时,具有更高的灵活性。由于输入/输出受到软件中断的限制,UEFI 提出了基于事件的概念,并采用不依赖于体系结构的编码标准。

        UEFI与EFI的区别:

            UEFI的全称是Unified Extensible Firmware Interface,中文名字是统一的可扩展固件接口。它定义了一种在操作系统和平台固件之间的接口标准,这种接口是用于使操作系统从预启动的操作环境(如:在系统启动之后,但是操作系统开始运作之前),加载到一种操作系统上,这类操作系统可以是Windows,或者是Linux。UEFI将提供一个明确的在操作系统与开机时启动固定于硬件中的软件平台之间的接口规范。

      尽管UEFI与EFI(Extensible Firmware Interface)的叫法不同,但是UEFI却不是EFI的全面改革,而是它的发展和完善。自从2000年12月12日正式发布EFI1.02之后,EFI一直作为代替传统的Bios固件接口的先进标准而存在。英特尔公司一直拥有EFI的版权,直到2007年,英特尔公司将EFI标准的改进和完善工作全权交给UEFI论坛(一个非营利性的合作贸易组织,其委员会的委员包括AMD,美国安迈,苹果,戴尔,惠普,IBM,超微,因特尔,联想,微软,凤凰科技十一个公司)管理。为了强调这一点,才将EFI改名为UEFI,以此来区别这个固件接口标准是由UEFI论坛发布的,而不是英特尔公司。既然UEFI是EFI的改良版,理所当然的,它跟EFI肯定存在不同之处。在UEFI论坛的成员公司的大力支持和促进下,UEFI针对EFI中的UGA协议,SCSI传输,USB主件控制还有I/O设备方面都作出了改进。而且还添加了网络应用程序接口,X64绑定,服务绑定等新的内容。更重要的一点,由于UEFI是由UEFI论坛的所有成员公司共同商讨确定的,所以它能兼容更多的硬件,具有更广泛的通用性。

        二.MBR与GPT

        MBR:

            MBR的意思是“主引导记录”,是IBM公司早年间提出的。它是存在于磁盘驱动器开始部分的一个特殊的启动扇区。这个扇区包含了已安装的操作系统系统信息,并用一小段代码来启动系统。如果你安装了Windows,其启动信息就放在这一段代码中——如果MBR的信息损坏或误删就不能正常启动Windows,这时候你就需要找一个引导修复软件工具来修复它就可以了。Linux系统中MBR通常会是GRUB加载器。MBR。当一台电脑启动时,它会先启动主板自带的BIOS系统,bios加载MBR,MBR再启动Windows,这就是mbr的启动过程。

        GPT:

           GPT的意思是GUID Partition Table,即“全局唯一标识磁盘分区表”。他是另外一种更加先进新颖的磁盘组织方式,一种使用UEFI启动的磁盘组织方式。最开始是为了更好的兼容性,后来因为其更大的支持内存(mbr分区最多支持2T的磁盘),更多的兼容而被广泛使用,特别是苹果的MAC系统全部使用gpt分区。gpt不在有分区的概念,所有CDEF盘都在一段信息中存储。可以简单的理解为更先进但是使用不够广泛的技术。因为兼容问题,gpt其实在引导的最开始部分也有一段mbr引导,也叫做“保护引导”,为了防止设备不支持uefi

        两者比较:

            mbr最多支持2T,而gpt理论上是无限制的。mbr最多支持四个主分区,gpt没有限制。如果你想跑多系统,mbr最多4个而gpt没有限制。

        MSR分区:

            MSR分区即 Microsoft 保留 (MSR) 分区。是每个 GUID 分区表 (GPT) 磁盘都要求的分区。
            系统组件可以将 MSR 分区的部分分配到新的分区以供它们使用。例如,将基本 GPT 磁盘转换为动态磁盘后,系统分配的 MSR 分区将被用作“逻辑磁盘管理器”(LDM) 元数据分区。
           MSR 分区的大小会因 GPT 磁盘的大小不同而发生变化。对于小于 16 GB 的磁盘,MSR 分区为 32 MB。对于大于 16 GB 的磁盘,MSR 分区为 128 MB。MSR 分区在“磁盘管理”中不可见,用户也无法在 MSR 分区上存储或删除数据。

          用WIN8系统安装版分区时,系统自动划分出“分区1、2、3”,它们是Win8的特有分区。其中300MB为恢复区,100MB为系统分区,128MB为MSR分区。

        三.BIOS和UEFI的引导方式

        传统BIOS引导:开机-->BIOS启动MBR-->MBR启动激活分区PBR-->启动bootmgr-->读取BCD-->启动对应的系统

        详细解释:①电脑开机,BIOS找到第一个硬盘 ②MBR在硬盘开头几百k以内,BIOS启动到硬盘上的MBR(主引导记录) ③PBR在分区开头的几百k以内,MBR启动当前磁盘激活分区的PBR(分区引导记录) ④VISTA以上的PBR启动当前分区上的BOOTMGR,找不到则启动NTLDR ⑤读取当前分区根目录下\boot\BCD文件 ⑥启动BCD里对应菜单的系统。

                 

        UEFI引导:开机-->BIOS启动FAT分区上的启动文件-->读取BCD-->启动对应的系统

        详细解释:①电脑开机,BIOS找到第一个硬盘 ②BIOS搜索到FAT/FAT32分区上的\EFI\BOOT\BOOTx64.efi(计算机默认引导)\efi\Microsoft\boot\bootmgrfw.efi(Windows默认引导),BIOS内会有个EFPROM,如果有多个efi文件,会记录efi文件的启动顺序。这个顺序可以在BIOS里修改,也可以用工具修改,EFI文件一般在ESP分区下,分区格式只能是FAT16或FAT32 ③读取\efi\Microsoft\boot\BCD ④启动BCD里对应菜单的系统


         四.传统BIOS引导中MBR和PBR作用

         MBR(Master Boot Record 主引导记录):磁盘开头几kb数据,一般只有0.5kb,主要内容是分区表以及一小段引导程序。特别的,对于Windows引导程序的作用,就是找到第一个激活分区,启动它的PBR。

         PBR(Partition Boot Record 分区引导记录):每个分区都有,分区开头几kb数据,一般也是0.5kb,内容一般是分区参数以及一小段引导程序。特别的,对于Windows nt6的分区引导记录,程序核心内容就是搜索当前分区下bootmgr,如果没有,则搜索ntldr,然后启动它。

    以上就是本次教程全部的内容,下期的博客将为大家讲解CSM模块对Windows系统安装的影响。谢谢!     


    展开全文
  • Linux 开机引导和启动过程详解

    万次阅读 2017-08-27 23:06:38
    编译自:https://opensource.com/article/17/2/linux-boot-and-startup作者: David Both 原创:LCTT https://linux.cn/article-8807-1.html 译者: penghuster ... 你是否曾经对操作系统为何能够执
  • Linux:开机引导和系统启动【详细】

    千次阅读 2019-08-30 22:16:58
    **操作系统的启动分为两个阶段:引导boot和启动startup** **引导阶段开始于打开电源开关,结束于内核初始化完成和 systemd 进程成功运行。启动阶段接管了剩余工作,直到操作系统进入可操作状态。** 本文以 ...
  • 在OpenCore引导菜单添加Windows引导

    万次阅读 2020-02-11 00:20:51
    {% note class_name info%} 在OpenCore引导菜单添加Windows引导项 {% endnote %} OpenCore配置文件修改 在Misc-HideSelf去掉勾选 在Misc-Entries添加\EFI\Microsoft\Boot\bootmgfw.efi,如下图: 添加Windows启动...
  • 【Linux】解决Deepin+ Win10双系统引导

    万次阅读 2016-03-13 10:44:47
    介绍了Deepin+win10双系统引导修复的步骤
  • deepin修改引导时间和默认的引导

    万次阅读 2020-05-26 17:29:24
    打开终端,快捷键ctrl + alt+ t 切换成root身份 su 如果root没有设置密码则sudo passwd root设置密码,然后换成root身份操作 输入 vim /boot/grub/grub.cfg 然后输入:wq!...强制退出,接着重启即可
  • centos7 修复win10引导

    万次阅读 2018-02-03 22:35:23
    通过grub2的实现windows引导 #编译安装 ntfs-3g tar zxvf ntfs-3g-2011.1.15.tgz cd ntfs-3g-2011.1.15 ./configure make make install 打开终端,在root用户下执行下面的命令 grub2-mkco
  • pe下修复引导不成功的话,造成系统进不去就会影响到大家使用电脑,很多人都选择重新安装系统,有些人则会选择另寻方法修复系统,下面快启动小编为大家分享详细的如何使用bootice工具修复引导,大家一起来瞧瞧吧。
  • 修复windows系统引导

    万次阅读 2018-06-28 16:21:08
    使用winPE中带的bootice扇区引导管理 2.点击“目标磁盘”进行磁盘选择,选择“主引导记录”。 3.在弹跳出的窗口中,我们选择“windows NT5.x/6.x MBR”,并点击下方的“安装/配置”。 4.在“主引导记录”页面中,...
  • 如何用快启动pe修复win10系统引导?

    万次阅读 2017-06-08 18:26:53
    如何用快启动pe修复win10系统引导?多数小伙伴在重装系统之后出现引导损坏故障,慌乱之下不知道该怎么办才好,一直盲目的在网上找了工具,最后也没能解决困扰。今天快启动小编为大家介绍用快启动pe修复win10系统引导...
  • 由于电脑上装的是双系统Deepin和windows,自从上手Deepin系统后平时很少再进windows操作系统,我个人比较喜欢新鲜的内容,新系统,新版本都想去试试。嘿嘿,我相信很多小伙伴应该和我有一样的同感,喜欢安装最新的...
  • ubuntu和windows双系统,安装启动引导器的设备应该选择默认的整块硬盘,否则会不能创建引导,无法进入ubuntu
  • 经常安装hackintosh的同学会发现,安装完macOS后,需要做的第一件事情就要将EFI移进机器自带的磁盘中,同时添加CLOVER引导项到UEFI中以实现CLOVER引导加载macOS。通常的作法是进Windows/PE工具里,使用类似EASY UEFI...
  • 解决安装Ubuntu后无引导的方法

    万次阅读 2017-01-04 11:23:06
    1、安装链接 2、使用ubuntu特有的傻瓜型修复引导工具解决ubuntu开机无引导问题 3、使用命令:sudo update-grub2,重启系统,增加windows引导
  • GPT硬盘:用能够自动修复引导的工具sgi或cgi进行还原镜像,或使用BIOS+UEFI引导修复工具,输入系统盘符(C),EPS分区盘符进行修复引导。 高级教程: 在efi分区上放好win7x64的efi版引导文件,和重新写一个正确的...
  • 在装完双系统之后,有的小伙伴觉得开机的时候要手动选择比较麻烦,而默认启动还得登上几秒,因此决定删除其中一个系统。而我则是因为之前制作了启动盘,电脑启动时,启动选项中多了个“U大侠一键急救系统”这个选项...
  • 多数小伙伴经常遇到电脑黑屏引导丢失的情况,但是大家会清楚的指导MBR格式下的硬盘引导损坏的修复方法,却不懂GUID格式的硬盘引导损坏要怎么修复,给生活带来极大的困扰,接下来快启动小编为大家分享详细的电脑GUID...
1 2 3 4 5 ... 20
收藏数 451,972
精华内容 180,788
关键字:

引导