EDK II之Secure Boot简述】的更多相关文章

密钥对:公钥分发,私钥自留.常见的公钥格式:cer/der,常见的私钥格式:pfx. BIOS中Secure Boot的原理:把公钥包在code里面,当使用gBS->LoadImage()去加载模块(UEFI Image)的时候会用BIOS里面的公钥去验证Image有没有正确签名,验证通过则Image成功被加载(签名实例:signtoolx64.exe sign -f 私钥.pfx -fd sha256 shell.efi).         Secure Boot举例: 当我们在BIOS里面把…
上一篇随笔中提到了如何在secure boot下安装Nvidia显卡驱动 >>上一篇随笔 如果不需要安装Nvidia显卡驱动,而且要生成密钥,可以参考>> 这篇文章 这里假设生成的密钥放在/usr/share/nvidia/下,分别是nvidia*.der(私钥),nvidia*.key(公钥) 这里以Virtualbox的内核模块为例. Virtualbox安装完成后,执行 #/etc/init.d/vboxdrv setup 后会提示编译成功,但是无法加载模块.同样是由于模块没…
开启Secure boot情况下,在Fedora 21下安装Nvidia 显卡驱动的方法. Nvidia显卡驱动可以从官网上下载最新版>> 点击进入 下载后添加可执行权限: #chmod +x NVIDIA-Linux*.run 注意,安装Nvidia显卡需要满足的两个条件是 1. nouveau(默认的显卡驱动)驱动程序必须禁用 2. Xserver(图形界面) 要停止运行 以上两个问题的解决方法如下: 首先按Ctrl + Alt + F2进入终端 输入root的帐号和密码后执行以下操作 .…
在ubuntu下安装cuda的时候,一直装不好,cuda-7.5.run已经装好了,但是编译cuda的例程时失败,提示cuda的库链接不上. 初步判断是secure boot的问题,因为在开启X的情况下重新运行cuda-7.5.run提示说要把secure boot关掉.需要按照提示输入两次密码,然后重启,再输入密码(至少8位) 重启时候输入密码比较坑.是一个蓝色的小框,选择change secure boot state,然后按照提示的位输入密码,比如提示第7位,那就输入先前设定的密码中的第7…
感谢HQSQ的投递一.自由软件基金会的呼吁上周,2012年将近结束的时候,自由软件基金会(FSF)发出呼吁,要求人们继续支持反Secure Boot垄断,希望签名者能达到5万人(目前是4万).我觉得,这个呼吁很重要.如果我们不支持,未来就无法自由地使用硬件.安装自己想要的软件. 这绝非危言耸听.而且,由于这个事件直接与Windows 8操作系统有关,因此意味着一切已经迫在眉睫了. 下面,我根据自己的理解,谈谈这到底怎么回事.如果你是一个Linux爱好者,或者喜欢自己安装操作系统,下面的内容与你直…
As promised, here is the Linux Foundation UEFI secure boot system.  This was actually released to us by Microsoft on Wednesday 6 February, but with travel, conferences and meetings I didn’t really get time to validate it all until today.  The files a…
关闭Secure Boot的步骤: 一.关闭 "快速启动" 功能 1.右键-开始菜单- 电源选项,进入后 点击"选择电源按钮的功能". 2.进入电源选项设置后,点击"更改当前不可用的设置",再把"启用快速启动(推荐)"前边的勾去掉 (若没有该选择则不需要操作,直接略过进行第二步). 二.重启电脑,进入BIOS 1.台式机:重启电脑后不断地按键盘右下角的"Del"键即可进入. 2.笔记本:重启电脑后不断地按&…
这次操作的笔记本电脑是   华硕R414U 大家如果遇到类似问题的话也可以参考这个方法,但是必须搞清楚电脑的型号,型号不同操作起来有差别的 我这里选择的重装系统的方法是最简单粗暴的硬盘安装方法,怎么硬盘安装系统我这里不多说了. 无非就是几个步骤: 1.到网上系统之家下载一个win7 64位的镜像. 2.把这个镜像在自己电脑本地磁盘里使用压缩加压工具直接解压.(注意这个目录不要有中文的,这样做比较保险) 3.直接一键安装系统. 下面说这次遇到的问题,当你完成了这个系统的拷贝过程的时候,这个时候需要…
  从Windows 8操作系统时代开始,安装操作系统的方法也有了很大的改变,Windows 8采用了Secure Boot引导启动的方式,而不是过去Win XP和Win 7的Legacy启动方式,从而导致的问题是所有预装Windows 8/8.1系统的笔记本要安装Win7的话必须修改BIOS,给很多想更换操作系统的用户增加了一点小难度. 那么什么是Secure Boot呢?它和Windows 8还有UEFI启动有什么关系呢!接下来我们就来介绍下Secure Boot.UEFI.BIOS相关知识…
转自:https://blog.csdn.net/espressif/article/details/79362094 Secure Boot 功能概述 方案概述 Secure Boot 的目的是保证芯片只运行用户指定的程序,芯片每次启动时都会验证从 flash 中加载的 partition table 和 app images 是否是用户指定的 Secure Boot 中采用 ECDSA 签名算法对 partition table 和 app images 进行签名和验证,ECDSA 签名算法…
最初安装vmware时就报错  Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so:cannot open shared object file: No such file or directory  Gtk-Message: Failed to load module "pk-gtk-module": libpk-gtk-module.so: can…
Setting up a EDK II build environment on Windows and Linux:搭建Windows和Linux开发环境[2.2] 2015-07   北京海淀区  张俊浩 2. Setting Up EDKII Development Environment(EDKII开发环境的搭建) ->2.1The General Procedure Of Setting Up EDKII Development Environment(搭建EDKII项目的通用流程)…
Tools:Installing and using the Required Tools for downloading and Building EDK II工具篇:安装/使用EDKII源代码获取/编译工具[2.3] 2015-07   北京海淀区  张俊浩 2. Setting Up EDKII Development Environment(EDKII开发环境的搭建) ->2.1 The General Procedure Of Setting Up EDKII Development …
UEFI中通过Device Path来描述设备的路径,一个完整的路径由多个Device Path Nodes组成. 下面通过输入设备的路径作为例子: PNP0A03 – PCI Host BridgePNP0303 – PC Keyboard ControllerConIn: The device path of the default input console. 下图是在系统不接任何外设的情况下:系统中只有一个输入设备:PS2 KB 下图在上图的基础上外接了一个USB的键盘:可以看到,除了一…
本文旨在简单介绍一下UEFI中驱动程序的加载方式(这里涉及的模块指的是符合UEFI Driver Model的模块): 在UEFI中,当一个驱动模块被加载时,在模块入口点只会安装EFI_DRIVER_BINDING_PROTOCOL等,而不会去执行驱动程序的初始化(这一点与Linux中不同,在Linux中,当我们在驱动模块的入口点调用driver_register()来注册驱动的时候,会在driver_register()的里面调用总线的match(),驱动与设备匹配成功之后紧接着就会调用驱动程…
EFI_STATUS Status = EFI_SUCCESS; EFI_GUID OemOSTypeGuid = {0xd06a0bc7, 0x9feb, 0x4cbb, 0xbd, 0x78, 0xbb, 0xdc, 0xe7, 0x70, 0xef, 0xd3}; UINT32 Attributes = ; UINTN DataSize = sizeof (OEM_OS_TYPE2); OEM_OS_TYPE2 SaveOSType2; Status = pRS->GetVariable…
SMM:System Managerment Mode SMM有自己的smm core以及dispatcher(可以简单的把smm core跟dxe core看成是平行的存在),smm有自己的运行空间,有自己的smm driver. 在模块的inf文件里面的MODULE_TYPE来指定MODULE的类型: smi: 1. smi有很多种比如sw, sx, power_button等: 2. 通过下面的sw smi的例子可以看出来,sw smi能够实现在OS下调用BIOS的code: 3. 当我们…
adb shell下 运行./system/bin/r address 其中address对应各个flag参数的地址,具体如下: 无法打开/dev/mem节点(没有该节点),这时只需在内核配置中选上CONFIG_DEVMEM,重新编译内核重烧即可.…
本文简单介绍一下UEFI中的事件管理: UEFI是不支持多进程的,但是UEFI支持多事件分发机制.UEFI只支持时钟中断,并基于时钟中断实现事件分发.类似于OS中基于时钟中断来实现基于时间片的多任务调度. 下图是DXE内核管理事件的结构: 1. UEFI把事件分成32个优先级,当我们创建一个事件的时候,我们会把他添加到链表gEventSignalQueue中. 2. 当我们触发(sign)一个事件时,我们会把他添加到他对应的优先级的链表&gEventQueue[Event->NotifyTp…
本文简单介绍一下USB设备的驱动程序是如何匹配设备以及被加载的: 上文(UDK中USB总线驱动的实现框架)提到USB总线枚举设备的最后一步是调用gBS->ConnectController()去查找device的驱动并加载. 1.查找驱动: 首先UEFI中所有符合UEFI Driver Model的驱动在模块的入口点,都会去安装EFI_DRIVER_BINDING_PROTOCOL:gBS->ConnectController()会去遍历系统中所有的EFI_DRIVER_BINDING_PRO…
本文简单介绍一下UEFI中USB驱动的实现框架: 下图是USBD向上层驱动提供的接口: 1.从图中我们可以看出,USBDI的实现主要通过调用HCDI实现 和 访问USB_INTERFACE结构体(该结构体在总线枚举过程中存放了device的相关信息): (这里为什么是从interface获取呢?一个device可以包含多个configuration,一个configuration可以包含多个interface,我们可以把device看成一个物理设备,而把interface看成逻辑设备,就是说in…
本文简要介绍一下UEFI中EHCI驱动的代码实现框架: 下图是HCDI: 上图是Host驱动程序向上层驱动提供的接口图: 1.大部分接口的最后动作都是去操作主控制器寄存器,ECHI的spec:<ehci-specification-for-usb.pdf>: 2.寄存器PORTSC用来获取/设置端口的状态(这里表示root hub的端口),root hub有几个port,这里就会有几个对应的寄存器(根据硬件厂商自己的实现): 3.图中出现的2个链表是由硬件自己维护的,链表位于内存的地址由相关寄…
本文旨在简单介绍一下 UEFI中USB协议栈的代码框架: 主要包括: USB主控制器驱动(HCDI:EFI_USB2_HC_PROTOCOL) USB总线驱动(USBDI:EFI_USB_IO_PROTOCOL) USB Mass Storage驱动(EFI_BLOCK_IO_PROTOCOL) 下图是USB协议栈的代码框架: 上图出自:<UEFI与EDKII源代码分析> 下图是USB Host Controller(EHCI)驱动初始化的流程(代码位于:\MdeModulePkg\Bus\P…
本文旨在简单的介绍一下DXE阶段的工作原理: UDK2015的开源代码下载:https://github.com/tianocore/tianocore.github.io/wiki/EDK-II DXE阶段是UEFI系统的最主要的组成部分, 1.DXE阶段主要由两部分组成:DXE内核 + 模块: 2.DXE内核提供了最基本的一些功能,比如Protocol的管理,事件的管理等等(DXE内核提供的基本功能称为服务): 3.通过加载各种模块扩展其他的功能: 4.DXE阶段的核心概念:Service.…
在重装系统的时候,很多时候都是先进入bios设置成U盘启动项,然后进行安装,如果年代久远一点的,就设置成光驱启动,再进行:随着时间的推行,光驱已经开始淘汰了,也怀念以前的光驱装机的时光!-:) 开始进入正题:很奇怪的一个问题,在一些预装了windows8.1的机器上,且硬盘格式为GPT格式,bios里面居然没有u盘的启动项可以选择,剩下windows boot manager的选项.可能出现这样的原因是windows8.1的安装,会导致写入到bios中,而且我设置的机器是方正的大客户品牌机. 解…
CPU上电后,此时SP指针指向0x0000_0000,从这个地址取第一条指令.但此时:PLL没有启动,CPU工作频率为外部输入晶振频率,非常低(S5PV210中晶振在CPU旁边,两颗24MHz,一颗27MHz):CPU的工作模式.中断设置等不确定:存储空间的各个BANK(包括内存)都没有驱动,内存不能使用.在这种情况下必须在第一条指令处做一些初始化工作,这段初始化程序与操作系统独立分开,称之为Bootloader.下面以S5PV210用的U-BOOT为例: 友善之臂Smart210 SDK2用的…
    1.开机点击F1进入到bios界面 2.进入Security—Secure Boot—Disabled 如果不修改Secure boot选项为Disabled,在光驱引导时可能会出现报错 3.进入Startup—UEFI/Legacy Boot选项,以下有两种选择 (1)UEFI/Legacy Boot选项选择成Both…
Q: Hyper-V VM Generation 2 - Can not  boot from .ISO (Hyper-V Gen 2不能從DVD啓動 ISO ) A: Disable secure boot in the VM menu, that'll fix it.…
原文地址:https://www.happyassassin.net/2014/01/25/uefi-boot-how-does-that-actually-work-then/ 翻译:https://i.cnblogs.com/EditPosts.aspx?opt=1 It’s AdamW Essay Time again! If you’re looking for something short and snappy, look elsewhere. Kamil Paral kindly…
https://linuxtoy.org/archives.html Archives 在 Android 系统上安装 Debian Linux 与 R (2015-07-14) Pinos:实现摄像头共享 (2015-07-06) Firefox 40 Beta (2015-07-04) BookDrop: 通过 Dropbox 接收 Kindle 电子书 (2015-06-24) Linux Kernel 4.1 (2015-06-23) b2gdroid:在 Android 手机上一键切换…