[Feedback on issues] 安装失败,这是啥问题啊?求大神指导
Tofloor
poster avatar
air917
deepin
14 hours ago
Author

a3ffd5145730dcee034c44f14809401.jpg18b75b65a89d4e7377d2ca1fca09515.jpg

Reply Favorite View the author
All Replies
raspbian
deepin
2 hours ago
#1

这个错误信息 SGX disabled or unsupported by bios 表示你的 Linux 系统在启动过程中检测到英特尔的 Software Guard Extensions (SGX) 技术处于禁用状态或者不被主板的 BIOS/UEFI 支持

SGX 解释:

Intel Software Guard Extensions (SGX) 是一种安全技术,允许应用程序在内存中创建被称为“飞地”(enclaves)的私有区域。这些飞地可以保护敏感代码和数据,即使操作系统或其他特权软件受到威胁。它通常用于需要高度数据机密性的场景,比如数字版权管理 (DRM)、区块链应用、机密计算服务等。

错误原因分析:

这个错误直接指向了你的硬件和主板固件 (BIOS/UEFI):

  1. SGX 在 BIOS/UEFI 中被禁用: 这是最常见的原因。主板设置里有关闭 SGX 功能的选项,并且当前它被关闭了。
  2. 你的 CPU 或主板根本不支持 SGX: 并非所有英特尔处理器和主板都支持 SGX。如果硬件不支持,即使在 BIOS 中找不到相关选项或选项是灰色的,系统试图启用它时也会报告不支持。

为什么 Linux 会报告这个错误?

有几个可能的原因:

  • Linux 内核本身包含对 SGX 的支持模块 (intel_sgxisgx),在启动时会尝试初始化或检测 SGX 状态,并在找不到或禁用时发出警告。
  • 某个安装的驱动程序、服务(Service)或应用程序在启动时依赖或检测 SGX,并在其不可用时报告错误。

这个错误通常是致命的吗?

通常情况下,这个错误并不是致命的,不会阻止你的 Linux 系统正常启动和运行。它更多的是一个警告信息,告诉你某个特定的硬件安全功能没有启用或不可用。

然而,如果某个关键的应用程序或服务(你在使用)强制要求 SGX 才能运行,那么那个特定的应用程序或服务可能会启动失败。但对于大多数日常使用,这个错误可以忽略,或者通过下面的方法处理掉。

如何排查和解决问题:

根据错误信息,主要处理方向是检查和修改 BIOS/UEFI 设置。

  1. 进入 BIOS/UEFI 设置:

    • 重新启动你的电脑。
    • 在开机初期,留意屏幕上提示进入 BIOS/UEFI 设置的按键。这个键通常是 F2, Delete, F10, F12, 或者 Esc。不同品牌和型号的主板、笔记本电脑可能不一样。
    • 快速按下相应的键进入 BIOS/UEFI 设置界面。
  2. 查找 SGX 相关设置:

    • 在 BIOS/UEFI 菜单中,导航到跟 安全 (Security)高级 (Advanced)CPU Configuration (CPU 配置)系统代理 (System Agent) 相关的选项。
    • 寻找包含以下词语的设置:
      • Intel SGX
      • Software Guard Extensions
      • SGX
      • Enclave
    • 这个设置可能有几种状态,例如:
      • Disabled (or Off):禁用
      • Enabled (or On):启用
      • Software Controlled:由操作系统或软件控制启用/禁用
  3. 处理 SGX 设置:

    • 如果你需要使用依赖 SGX 的应用程序: 将设置改为 EnabledSoftware Controlled。然后保存并退出 BIOS/UEFI。系统重启后,SGX 就应该启用了,错误信息可能消失。
    • 如果你不需要 SGX 功能,想消除错误信息(或者你的硬件不支持): 如果找不到 SGX 选项,或者选项是灰色的且显示不支持,说明硬件不支持。如果选项存在且当前是 Disabled,你可以保持 Disabled 状态。
    • 如果硬件不支持,或者你不想启用 SGX 但想隐藏错误信息: 你可能需要识别是哪个模块或服务在报错,然后禁用它。
      • 查看启动日志: 使用 dmesgjournalctl 查看详细的启动日志。

        dmesg | grep -i sgx
        

        journalctl -k | grep -i sgx
        

        或者查看上一次启动的日志:

        journalctl -b -1 | grep -i sgx
        

        这将帮助你确定是哪个内核模块(如 intel_sgxisgx)或用户空间服务在报告这个错误。

      • 禁用内核模块 (如果错误来自它): 如果错误来自 intel_sgxisgx 内核模块,你可以考虑禁用它(黑名单)。在 /etc/modprobe.d/ 目录下创建一个新的 .conf 文件,例如 no-sgx.conf,内容如下:

        blacklist intel_sgx
        blacklist isgx
        

        保存文件,然后执行 sudo update-initramfs -u (Debian/Ubuntu) 或 sudo dracut -f (Fedora/CentOS/RHEL) 来更新 initramfs。重启系统。

      • 禁用相关服务 (如果错误来自服务): 如果日志表明错误是某个用户空间服务引起的,你可以使用 systemctl status service_name 来检查该服务,并使用 systemctl disable service_name 来禁用它。请谨慎操作,确保你知道禁用的服务不会影响系统正常功能。

  4. 保存并退出 BIOS/UEFI: 修改设置后,务必导航到 "Exit" 或 "Save & Exit" 选项,选择 "Save Changes and Exit" (保存更改并退出)。

通过以上步骤,你应该能够解决或至少理解并忽略这个 SGX disabled or unsupported by bios 的启动错误。最常见的解决方法是进入 BIOS 启用 SGX,如果确实需要该功能;或者如果是良性警告,可以考虑忽略或禁用相关的内核模块。

Reply View the author