华硕主板禁用UEFI安全启动(Disable Secure Boot for ASUS Motherboard)

本文介绍了解决Ubuntu系统中显卡驱动安装失败的方法,通过禁用UEFI安全启动来确保第三方驱动程序的正确安装。
新人第一次写博客,算是搬运google的答案吧,因为百度了两三个小时一直没解决问题,google了一次出来一个youtube视频便解决了,有种说不出来的郁闷( ̄﹏ ̄;)。

先介绍下背景,最近配了台新电脑准备搞DeepLearning, 华硕B150 + i5 6500 + GTX1060,按照百度的大多数教程一步步操作,虽有些坑不过问题不大,大多数问题都通过百度一一解决了。

但分辨率设不了1920*1080一直没找到好的方法,后来发现原来有个步骤一直被忽略了,就是ubuntu安装时如果勾选第三方驱动会让你输入一个密码,边上有个解释的按钮点开可以看到详细的原因,大概意思就是主板设置了uefi安全启动与ubuntu安装的的第三方驱动会冲突,输入这个密码ubuntu会帮助你禁用uefi的secure boot,开机时输入这个密码确认是本人操作,但我开机后从来没输过这个密码,安装玩重启时(或者后来自己安装第三方驱动如显卡网卡驱动重启时)倒是比正常开机流程多了一个界面,让你....干嘛的也没在意 每次都enter过去了。

所以肯定就是这个原因导致我的显卡驱动一直安装不成功,那就把主板的UEFI安全启动禁用呗,然后问题就来了,因为百度禁用uefi secure boot倒是有很多答案,不过都是笔记本的,还是使用bios的年代,年代也比较久远,最近一两年的几乎没有,更别说台式机的和华硕主板的,然后打电话给华硕客服,但他们下班了。

然后折腾了两三个小时实在找不到任何线索,就试着FQ搜一下吧,然后。。感觉好尴尬,,ԾㅂԾ,,。。。第一页搜出来的网页全都是相关的解决方法,排在第四的是个youtube视频,点进去看了下,方法超级简单,立马试了下成功解决了问题。

视频地址在这 https://www.youtube.com/watch?v=tnOHi0w77bU(需要FQ)

主要方法:

BIOS's Secure Boot menu should show Secure Boot state as "enabled" and Platform Key (PK) state as "loaded"

uefi-secure-boot

 

How to disable the UEFI secure boot:

  1. Make sure the "OS Type" is "Windows UEFI"
  2. Enter "Key Management"
  3. Select "Clear Secure Boot keys" (You will have the option "Install default Secure Boot keys" to restore the default keys after you cleared the Secure Boot Keys)

clear-secure-boot-keys

After you cleared the Secure Boot Keys, Secure Boot will be automatically disabled. You can set the OS Type to Other OS now.

disabled-uefi-secure-boot-state

 我使用这个方法后如下图:

所以其实这个问题很简单,比起搭建整个caffe框架来说更是不值一提,但是却因为搜索工具的选择给自己加大了难度,作为科研新人,这一次是迫不得已使用google,不过有了这次的教训以后肯定直接使用google了。

<think>好的,我现在需要帮助用户了解在嵌入式Linux系统中实现UEFI安全启动Secure Boot)的方法和步骤。根据用户提供的引用内容和之前的对话历史,我需要整合相关信息,确保回答结构清晰且符合用户需求。 首先,回顾之前的回答,用户已经了解了如何制作EFI单文件启动,现在转向Secure Boot的实现。用户提供的引用内容提到Secure Boot的基本概念、开源实现方案以及镜像加密的方法。需要将这些信息融入到步骤中,同时结合UEFI Secure Boot的标准流程。 用户的问题是关于嵌入式Linux下的UEFI Secure Boot,所以需要明确步骤中的关键点,比如密钥管理、镜像签名、固件配置等。同时,引用中提到的镜像加密(如使用SSK)虽然用户可能用到,但可以作为可步骤提到,以增加全面性。 接下来,我需要确保回答的结构符合用户之前的要求:分步骤、代码示例(如签名命令)、注意事项,以及相关问题。同时,要引用用户提供的引用标记[^1][^2][^3],但需要检查这些引用是否与当前主题相关。例如,引用[3]提到镜像加密,虽然在Secure Boot常用,但可以作为可方案提及。 需要注意用户可能混淆Secure Boot和镜像加密,因此需要明确区分两者的步骤,先完成Secure Boot的基础配置,再考虑是否添加加密。此外,嵌入式系统的特殊性,如硬件密钥存储(efuse)、定制化固件等,也需要强调。 最后,验证部分需要指导用户如何测试Secure Boot是否生效,比如通过启动日志或故意篡改镜像来观察是否被拒绝。同时,常见问题如密钥丢失、签名失败的处理方法也需要提及,以帮助用户应对实际问题。 总结步骤大致如下: 1. 准备密钥基础设施 2. 配置UEFI固件 3. 签名引导组件 4. 部署到嵌入式设备 5. 可镜像加密 6. 验证与测试 7. 维护管理 需要确保每个步骤都有具体命令或配置示例,如openssl生成密钥,sbsign签名内核,以及如何在UEFI界面导入密钥。同时,引用相关参考文献,如[^2]关于UEFI Secure Boot的简介,以及[^3]关于镜像加密的实现。 需要避免过于技术化的术语,保持解释清晰,同时确保步骤可操作。可能的问题点包括密钥管理的安全性,嵌入式设备efuse的写入方法,以及如何确保各引导阶段的组件都被正确签名。这些都需要在回答中给出提示或解决方案。</think>以下是嵌入式Linux系统实现UEFI安全启动Secure Boot)的详细方法和步骤,结合了UEFI安全启动规范与嵌入式系统特性: --- ### **1. 安全启动核心原理** UEFI Secure Boot通过密码学验证固件和操作系统加载器的完整性,其核心流程为: 1. 硬件厂商预置平台密钥(PK)到固件 2. 用密钥分层结构(PK → KEK → DB)管理签名授权 3. 逐级验证引导组件(Bootloader → Kernel → Initramfs)的数字签名 4. 拒绝未经验证或篡改的代码执行[^2] --- ### **2. 实现步骤详解** #### **步骤1:构建密钥体系** - **生成密钥对**(推荐使用openssl) ```bash # 生成平台根密钥(Platform Key) openssl req -newkey rsa:4096 -nodes -keyout PK.key -x509 -out PK.crt -days 3650 # 生成密钥交换密钥(Key Exchange Key) openssl req -newkey rsa:4096 -nodes -keyout KEK.key -x509 -out KEK.crt -days 3650 # 生成签名数据库密钥(Signature Database) openssl req -newkey rsa:4096 -nodes -keyout DB.key -x509 -out DB.crt -days 3650 ``` - **密钥格式转换** ```bash cert-to-efi-sig-list PK.crt PK.esl sign-efi-sig-list -k PK.key -c PK.crt PK PK.esl PK.auth ``` #### **步骤2:配置UEFI固件** 1. 进入嵌入式设备UEFI设置界面,启用Secure Boot模式 2. **清空默认密钥**(针对开发阶段): ```bash efi-updatevar -e -f PK.auth PK efi-updatevar -e -f KEK.esl KEK efi-updatevar -e -f DB.esl db ``` 3. 将生成的`.auth`文件通过UEFI Shell或厂商工具写入设备 #### **步骤3:签名引导组件** - **签名内核与Initramfs** ```bash sbsign --key DB.key --cert DB.crt --output vmlinux.signed vmlinux pesign -s -i initramfs.img -o initramfs.signed -c "My Embedded Cert" ``` - **GRUB引导程序签名** ```bash grub-mkstandalone -O x86_64-efi -o grubx64.efi sbsign --key DB.key --cert DB.crt --output grubx64.signed.efi grubx64.efi ``` #### **步骤4:部署到嵌入式设备** 1. 在ESP分区创建安全启动目录结构: ```bash /EFI/BOOT/BOOTX64.EFI # 已签名的GRUB /EFI/linux/vmlinux.signed /EFI/linux/initramfs.signed ``` 2. 更新启动菜单(grub.cfg)指向签名后的内核: ```conf menuentry 'Secure Linux' { chainloader /EFI/linux/vmlinux.signed initrd /EFI/linux/initramfs.signed } ``` #### **步骤5:可镜像加密(参考设计)[^3]** 1. 生成AES-256对称密钥: ```bash openssl rand -hex 32 > ssk.bin ``` 2. 加密内核镜像: ```bash openssl enc -aes-256-cbc -in vmlinux -out vmlinux.enc -pass file:ssk.bin ``` 3. 将SSK烧录到设备efuse: ```bash flash_efuse --offset 0x1000 --file ssk.bin ``` --- ### **3. 验证与调试** - **启动日志检查** 在内核命令行添加`efi=debug`查看详细验证过程: ```text [ 0.382154] Loaded cert 'My Embedded Cert: XYZ123' [ 0.384211] Processed certificate list (len=4096) ``` - **强制触发验证失败** 测试篡改镜像后的拒绝启动行为: ```bash dd if=/dev/urandom of=/EFI/linux/vmlinux.signed bs=1 count=100 conv=notrunc ``` - **安全状态查询** 通过UEFI Shell命令验证: ```bash dmpstore -all # 显示当前密钥库状态 ``` --- ### **4. 维护与管理** - **密钥轮换策略** ```bash efi-updatevar -f NewDB.esl -o OldDB.esl db # 追加新签名证书 ``` - **吊销证书处理** ```bash efi-updatevar -f revoked.esl -t dbx # 更新吊销列表 ``` --- ### **关键注意事项** 1. **生产环境密钥保护** 开发阶段可使用自签名证书,量产时应替换为HSM(硬件安全模块)生成的密钥 2. **嵌入式硬件适配** 确认SoC的Secure Boot支持级别(如ARM TrustZone与UEFI的集成) 3. **最小化信任链** 建议禁用第三方CA证书(`MokListRT`),仅保留设备专属签名 --- ### **常见问题解决** - **错误`SECURITY VIOLATION`** 检查签名证书是否完整包含在DB密钥库中 - **无法加载initramfs** 确认initramfs包含`uefi-lib`和`efivarfs`模块 - **efuse写入失败** 部分嵌入式设备需在BL1/BL2阶段通过JTAG写入密钥 ---
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值