本帖最后由 110654 于 2020-5-28 18:07 编辑
5月25日,下载了最新版ubuntu2004,安装到surfacr pro7 上测试 居然能过 安全验证 第3方签名验证,那证明方式有签名验证的grub2 都能在苏菲机器上启动,至于我之前采用http://bbs.wuyou.net/forum.php?mod=viewthread&tid=375848&extra=page%3D1这个帖子模板 启动不了,
百度了一下发现:
转VM虚拟机官方的解释:
UEFI 安全引导是一种安全标准,有助于确保您的 PC 仅使用该 PC 制造商信任的软件进行引导。对于某些虚拟机硬件版本和操作系统,您可以完全按照对物理计算机启用安全引导的方式来启用安全引导。
在支持 UEFI 安全引导的操作系统中,引导软件的每个部分都会进行签名,包括引导加载程序、操作系统内核以及操作系统驱动程序。虚拟机的默认配置包括多个代码签名证书。- 一个仅用于引导 Windows 的 Microsoft 证书。
- 一个用于 Microsoft 签名的第三方代码(例如 Linux 引导加载程序)的 Microsoft 证书。
- 一个仅用于在虚拟机内部引导 ESXi 的 VMware 证书。
虚拟机的默认配置包括一个用于在虚拟机内部对修改安全引导配置(包括安全引导撤消列表)的请求进行身份验证的证书,该证书是一个 Microsoft KEK(密钥交换密钥)证书。
当然有的已经开始做生意了,例如:
转:简单来说,所谓安全启动,就是主板厂商在 UEFI 的 ROM 中内置了一个公钥,操作系统发行方用对应的私钥,去给系统的内核,或者引导器签名。
这样,系统启动的时候,UEFI 会用 ROM 中内置的对应公钥,去验证这个内核,或者引导器是否为发行方提供的。如果是,那么验证通过,可以正常启动;如果不是,那么启动就会被终止。
如果能现在能理解安全启动的概念,那么就来解答你的几个疑惑:
Linux 能否使用安全启动?
当然可以。
不过需要替换 UEFI 中内置的密钥。
为什么主板内置了 Windows 的密钥?因为 Windows 用户基数大,最重要的是, 微软有钱,开源世界没钱。
不过主板厂商通常是允许替换掉内置的密钥的,这个时候可以生成一对密钥,用公钥替换掉主板内置的密钥,用私钥给 Linux 内核或引导器签名,这样就可以实现 Linux 的安全启动了。具体的教程可以参考:
https://wiki.archlinux.org/index.php/Unified_Extensible_Firmware_Interface/Secure_Boot
上面链接中 Linux 实现安全启动的方式大概分为以下几种:
1、使用 HashTool.efi 或添加内核或其他引导器的 Hash 到 UEFI 的 NVRAM 中,再通过微软预签名的引导器 PreLoader.efi 绕过来安全启动,进行下一步引导。
2、Shim 的原理和 PreLoader + HashTool 相似,而且还添加了 KeyTool ,这样看来,Shim 更像是一种安全启动的代理,用来绕过不可替换的主板密钥。
3、使用自己生成的密钥,这种是最自由的了,还可以混合从主板中读取的微软密钥,这样自签名内核和微软签名内核都能引导。
转:简单的说,Linux 世界确实不需要注意签名了。上面提到的两套方案完全是够用的。
Preloader 是我一直在使用的那个方案。通过一个具有签名的 Preloader 来启动通过了注册的 efi 程序文件。HashTool 是用来注册可信 efi 程序文件的工具。第一次启动时用 HashTool 注册一下 bootloader 或者 kernel,之后就再也不用担心安全启动了。
亲测这样在微软的 Surface 系列下可以在开启安全启动时正常启动 Linux。
作者:知乎用户
链接: https://www.zhihu.com/question/392260941/answer/1202931383
来源:知乎
这就需要大佬出面研究一下了,我等只有坐等。。。
回题:
经过初步测试 ,下面链接这套目前位,efi模式grub2过第三方验证(如果你的主板有这种设置的话,关闭验证就会显红),测试结果测试能过,surface pro7 设备折腾记录为,EFI固件中安全模式有3个选项。1,下载了grub2。04版本 做成U盘版,开微软验证=失败,开第三方验证=失败,关闭验证=通过。
2,下载论坛某大佬的批处理制作U盘版(grub2.04),微软验证=失败,第三方验证=失败,关闭验证=通过。
3.下载ubuntu20.04安装到硬盘上,提取grub2的引导,微软验证=失败,第三方验证=通过,关闭验证=通过。
因为ubuntu在安装过程发现了另一个分区的windows存在,所以他在efi目录下面创建了ubuntu目录存放用于引导ubuntu的问题,并添加grub2作为主引导,菜单中自动添加了windows引导,提取了grub2的引导加以修改,制作了一个采用ubuntu20 的grub2 EFI模式专用硬盘/U盘 版套装,需要的拿去套用。
链接: https://pan.baidu.com/s/1g2P2whSEx67z8bzECp1AOQ 提取码: cy5x
具体是什么情况,知识有限,具体不知道,只能通过乱七八糟测试寻找结果。我也无法解答具体引导过程失败的原因或者成功的原因,可以下载上面的套装研究下,反正我看不懂ubuntu 这个是如何能过第三方验证的。
初步结论是 微软签名 依旧是微软签名,主板的安全验证 分为证书类 钥匙类 有些主板 可手动添加 没有手动添加的选项并不表示 不可以添加例如你在菜单上加入
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {
fwsetup
}
就会进入BIOS, 而在测试安装UBUNTU过程中发现,grub2 2.04版本 目前最新版 ,也是ubuntu20 04版自带的 ,他会在启动过程给主板Bios创建一条或者添加一条efi引导记录 ,类似于你在windows安装软件EasyUEFI 也可以到达创建 (编辑主板的efi引导项目,当然主板自带的功能选项是是能看到,但不能编辑的),
除了微软签名验证 还有第三方厂家的验证 例如grub2 也算一个第三方,当然有的大神在制作过程中或者漏掉了这个签名,至于他是怎么签名的,(我猜&手动滑稽,应该是内置到了efi文件 里面了)。微软也有一个类似winsipolicy.p7b 的文件 在efi\Microsoft\Boot中,有的主板可以手动导入,当然大多数时候 根本用不上,至于ubuntu这套grub2 (目前这套 是修改了的,稍后上传原版未修改的套装)是如何在启动时候创建一条EFI记录到主板的 ,目前不知道,微软也会,给你创建一个windows boot mandddr EFI记录引导项。
最后就是关闭验证,
之前所说为何能启动到菜单 却不能启动PE 错误acpi那种。目前除了换了ubuntu套装 ,菜单小改动,其他没变,就能成功了。
改动情况如:
该变前:(使用论坛 http://bbs.wuyou.net/forum.php?mod=viewthread&tid=375848&extra=page%3D1 套装)
menuentry "启动UEFI Windows PE菜单" --class windows --class os {
echo "正在启动UEFI Windows PE菜单..."
set root='(hd0,msdos1)'
insmod part_gpt
insmod ntfs
insmod fat
insmod search_fs_file
insmod chain
search --no-floppy --set=root -f /efi/pe/bootmgfw.efi
chainloader (${root})/efi/pe/bootmgfw.efi
}
改变后:(使用ubuntu grub2套装2.04版)
menuentry "启动UEFI Windows PE菜单" --class windows --class os {
echo "正在启动UEFI Windows PE菜单..."
insmod gzio
if [ x$grub_platform = xxen ]; then insmod xzio; insmod lzopio; fi
insmod part_gpt
insmod ext2
search --no-floppy --set=root -f /efi/pe/bootmgfw.efi
chainloader (${root})/efi/pe/bootmgfw.efi
}
帖子说http://bbs.wuyou.net/forum.php?mod=viewthread&tid=385327&page=1
99美元微软安全启动签名验证,
我有几个疑问,关于安全启动这块,还是蒙圈状态,请教各路大神帮助解答一下
1.EFI是一个组织,微软也是成员,按理说,市场上大部分设备都有关闭验证这个功能用于维护,但是微软自家出品的设备如surface pro这种设备,他的安全验证不按常理出牌,我目前测试grub2板块类的方式,去过验证,均失败了.关闭验证,用grub2,启动都是错误,类似acpi那种错误.然而这个grub2启动在其他台式机,笔记本,服务器类大多数设备都能启动,偏偏surface不行,然而用windows系统中的模版,也就是windows启动器,过验证都行.那有没有什么方法免费获得微软的签名验证呢?? 测试内容有,BIOS中可以设置有微软验证,第三方验证,关闭验证3种方式,第一种启动错误提示类似验证签名不对,第2种黑屏一直没动,第3种等一会跳Bios设置界面去了.
疑问:微软EFI启动bcd菜单添加一个grub2启动项目行不行呢? 如何添加呢?
2.有一点头铁,我想测试一下市面上还有那个EFI启动管理器或者模板能过这种设备的启动呢?
难道说https://blog.csdn.net/cherish152/article/details/96287234 这个是假的? PRO6 可以PRO7 是2020年3月份左右出品的? 新改变 ?
恰好有机会,发来我测试下吧,看那个启动器或者模板能搞定,
根据帖子中,我用工具直接刷镜像到U盘 查看EFI分区中都没有bootx64.efi文件, 能启动个撒? 于是我换了一个I5-7代台式机机器测试 依旧不行,或许四叶草引导需要手动改变什么,正在研究中,
3.grub2区中那个过安全验证的已经能过很多设备的验证了.但微软设备过不了(猜想),大家赶紧使用吧
http://bbs.wuyou.net/forum.php?m ... 8674&extra=page%3D1
帖子已经说得很明白了
对于整合需求的 ,可以下载原帖的.改一下grub.cfg路径就行了.如:
rmmod chain
insmod /boot/grub/chain.mod
chainloader /EFI/BOOT/grubx64.efi (这个efi文件指向你目前的bootx64.efi即可,把你目前的bootx64.efi改名,修改指向路径就行了)
boot
原帖地址
http://bbs.wuyou.net/forum.php?m ... 4015&extra=page%3D1
经过初步测试 这个过安全 大部分台式机 笔记本都能过,
如果能过微软设备安全这个坎.....我感觉难了.... BIOS有关闭这个按钮,按理说 不应该啊,为什么还是不行启动呢,都能启动到菜单界面了,各种尝试菜单写法依旧是ACPI........很长一横,错误.(具体) 记不住了...
命令中ls -l 设备都能看到
ls文件夹都能看到... chainloader启动 efi 就会错误...或许是需要什么特殊mod 模块什么的
|