当前位置:首页 » 《关注互联网》 » 正文

win10 为什么可以秒开机?(附实战源码,真机操作)_lyndon

16 人参与  2021年08月06日 14:23  分类 : 《关注互联网》  评论

点击全文阅读


BIOS 没落

BIOS 是长期以来 PC 上最具有代表性的固件,而近年来,BIOS 已经被标准化的 UEFI 取代。
相对于新式的 UEFI, 传统的 BIOS 被称为 Legacy 方式。
现在 PC 的默认启动方式基本都是 UEFI,但为了兼容,也保留了对 Legacy 的支持。
在这里插入图片描述

开机流程

BIOS 方式:
BIOS 是主板上固化的一块 flash 芯片,它在 PC 上电后最先启动,然后根据里面固化的程序,按步骤把主要硬件挨个检查一遍,接着去硬盘找引导程序,把引导权交给它,随后就进入系统了。

UEFI 方式:
可以理解为,UEFI 方式在启动流程上,省略了上述自检过程,直接将控制权交给引导程序。

自检

但是,UEFI 并不是不进行自检,而是弱化了自检的概念,强化了自检的功能。简单讲就是,BIOS 其实也只能进行一些简单的自检,随着技术的发展,这些简单的自检已经没有必要了,而复杂的自检,BIOS 又做不到。所以,UEFI 提供了框架,对复杂的设备可以单独自检,或者干脆等到 OS 加载时由 OS 来进行。

取消自检流程确实缩短了启动时间,这也是 win10 开机快的原因之一。

UEFI 优势

作为 Legacy BIOS 的继任者,UEFI 拥有前辈所不具备的诸多功能,比如图形化界面、多种多样的操作方式、允许植入硬件驱动等等。这些特性让 UEFI 更加易用、更多功能、更加方便。
加上UEFI本身的开发语言已经从汇编转变成 C 语言,高级语言的加入让厂商深度开发UEFI变为可能。

Legacy BIOS 在读取磁盘时,每次只能读 64KB,非常低效,而 UEFI 每次可读 1MB,载入更快,此外,win8/win10
更是进一步优化了 UEFI 的支持,号称可以实现瞬时开机。

UEFI 和 BIOS 的区别

BIOS 方式在启动操作系统前,必须从硬盘上指定扇区读取系统启动代码(包含在主引导记录中),然后从活动分区中引导操作系统。

而 UEFI 已经具备文件系统的支持,能够直接读取 FAT 分区中的文件。

对扇区的操作远比不上对分区中文件的操作更直观更简单。

实战

光说不练假把式,下面我们就来实战一把,感受下 UEFI 的启动方式。

大致流程是,我们把 PC 设置为 UEFI 启动方式,优先从 U 盘启动,而 U 盘又被我们事先格式化为 FAT32 格式,里面存放有我们的 UEFI 应用程序。
最终就是 UEFI 固件,将我们编写的 UEFI 应用程序给启动起来。
在这里插入图片描述

源码

main.c

struct EFI_SYSTEM_TABLE {
    char _buf[60];
    struct EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL {
        unsigned long long _buf;
        unsigned long long (*OutputString)(
            struct EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This,
            unsigned short *String);
        unsigned long long _buf2[4];
        unsigned long long (*ClearScreen)(
             struct EFI_SIMPLE_TEXT_OUTPUT_PROTOCOL *This);
    } *ConOut;
};
  
void efi_main(void *ImageHandle __attribute__ ((unused)),
    struct EFI_SYSTEM_TABLE *SystemTable)
{
    SystemTable->ConOut->ClearScreen(SystemTable->ConOut);
    SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello UEFI!\n");
    while (1);
}

编译

$ x86_64-w64-mingw32-gcc -Wall -Wextra -e efi_main -nostdinc -nostdlib -fno-builtin -Wl,--subsystem,10 -o main.efi main.c

制作启动盘

  1. 把 U 盘格式化为 FAT32 格式
  2. 将 main.efi 存放到 U 盘的 EFI/BOOT/ 文件夹中,并重命名为 BOOTX64.EFI

启动

关闭计算机,插入刚刚制作好的 U 盘启动盘,确认 BIOS 中使用的是 UEFI 引导方式,并设置系统为 U 盘优先启动,且要关闭 Secure Boot 选项。

保存,开机
在这里插入图片描述
特写
在这里插入图片描述
可以看到,上电后先是显示开机画面(UEFI 固件阶段),接着立马在屏幕上显示 Hello UEFI!,正是下面这两句代码的作用。

SystemTable->ConOut->ClearScreen(SystemTable->ConOut); // 清屏
SystemTable->ConOut->OutputString(SystemTable->ConOut, L"Hello UEFI!\n"); // 打印 Hello UEFI!

点击全文阅读


本文链接:http://m.zhangshiyu.com/post/24742.html

自检  启动  方式  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 山海不相逢内容精选(温逸尘沈衿)_山海不相逢内容精选(温逸尘沈衿)
  • (番外)+(全书)霍沉洲沈青禾此去经年人未还(霍沉洲沈青禾)_(霍沉洲沈青禾此去经年人未还)列表_笔趣阁(霍沉洲沈青禾)
  • (番外)+(全书)霍沉洲沈青禾(此去经年人未还霍沉洲沈青禾)完结_(霍沉洲沈青禾)列表_笔趣阁(此去经年人未还霍沉洲沈青禾)
  • 「重回八零,拒绝替嫁冲喜」章节彩蛋限时释出‌_卫东玉兰苏夏人气小说未删减节选
  • 重生七零祁同伟不再是农民儿子结局+番外纯净版全书免费重生七零祁同伟不再是农民儿子结局+番外纯净版全书免费
  • 傅雅宁的神女老婆,却在背地承欢作乐顾尘傅雅宁全书在线
  • 全文神女老婆,却在背地承欢作乐全局(顾尘傅雅宁)列表_全文神女老婆,却在背地承欢作乐全局
  • (番外)+(全书)此去经年人未还全书+番外+后续免费下载_(沈青禾霍沉洲)此去经年人未还全书+番外+后续列表_笔趣阁(沈青禾霍沉洲)
  • 完结文毁容的姐姐和瞎眼的我离开后,姜家两兄弟悔哭了+后续列表_完结文毁容的姐姐和瞎眼的我离开后,姜家两兄弟悔哭了+后续(林梦婉)
  • 妻子辱我爸受贿自杀,我掏出一等军功章节选推荐_[陈素云辰朋友]小说精彩章节分享
  • 全书浏览苔藓爬满旧日诺言新上(顾砚廷慕晚夏)_苔藓爬满旧日诺言新上(顾砚廷慕晚夏)全书结局
  • 顾尘傅雅宁(神女老婆,却在背地承欢作乐+后续+结局)结局_(顾尘傅雅宁神女老婆,却在背地承欢作乐+后续+结局全书结局)结局列表_笔趣阁(顾尘傅雅宁)

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1