
如今,越来越多的高级用户和专业人士需要与设备的固件进行交互,尤其是在维护、故障排除或操作系统安装期间。在此背景下,UEFI(统一可扩展固件接口)shell脱颖而出,成为一款强大的工具,它提供了对一系列基本命令和实用程序的直接灵活访问,用于管理、配置和诊断计算机的启动环境。
然而,尽管 UEFI shell 非常重要,但人们对它的使用以及哪些命令在 UEFI shell 中真正有用仍存在一些困惑。如果您觉得这个话题晦涩难懂,或者您已经有一些经验并想深入了解,那么这里有一份详尽的指南,它基于官方文档和最佳可用资源,汇总了最完整、最新的信息。
UEFI shell 到底是什么?
UEFI shell 的作用类似于其他命令解释器(例如旧的 DOS 或Linux终端),但它直接位于主板的固件环境中。在这里,您可以执行命令来管理EFI 分区、访问文件系统、加载驱动程序、启动 .efi 应用程序、编辑配置文件,甚至使用脚本自动执行一系列操作。除此之外,它还提供强大的诊断和修复功能,使其成为管理员和硬件爱好者的必备工具。
为什么要使用 UEFI shell?
当您需要修改启动顺序、安装自定义启动管理器、诊断硬件、排除启动故障或直接操作固件变量和文件时,访问UEFI shell至关重要。此外,在许多专业系统、服务器甚至 Hackintosh 安装中,此控制台是执行某些高级配置的唯一途径。
UEFI shell 中的命令类型
UEFI环境提供了种类繁多的命令和实用程序。根据用途,这些命令和实用程序可以分为不同的类别。下面,我们将分析最常用和最有用的命令和实用程序,并按使用领域进行分类:
探索和管理驱动器和文件的命令
- FSX: 在不同的已识别分区之间切换,其中 X 代表分配的号码(例如: fs0: 访问第一个 FAT16 分区或 FAT32 识别)。它对于从 shell 在设备和文件系统之间导航至关重要。
- cd: 允许您更改当前目录并在活动分区的文件结构内移动。
- ls: 显示当前或指定目录中的文件和文件夹列表,对于探索 EFI 的内容非常有用。
- cp 目标文件: 复制文件或文件夹(使用 -r 用于递归目录复制)。
- MV: 移动或重命名文件和文件夹。
- rm 文件/目录: 删除文件和目录。
- mkdir 目录: 在指定路径中创建新目录。
- 文件类型: 以文本格式显示文件的内容。
- 编辑文件名: 打开一个简单的文本编辑器,直接从 shell 创建或修改文件。
设备映射和管理命令
- 地图: 列出 UEFI 可访问的所有设备和分区,并分配名称,例如 fs0: 对于文件系统或 黑体0: 用于块设备。这对于识别 EFI 磁盘和分区的位置至关重要。例如,您可能会看到如下输出:
fs0:VenHw(未知设备:00)/HD(Part1,Sig00000000)blk0:VenHw(未知设备:00)
fsX:指可访问的 FAT16/FAT32 文件系统,而blkX:指固件检测到的块设备。
- 挂载BlkDevice: 如果需要,将块设备安装为具有别名的文件系统。
- 去黑: 执行块设备的十六进制转储,对于低级检查很有用。
- 开发树: 它显示了可用设备树,对于了解硬件拓扑非常有趣。
启动管理和 EFI 变量
- bcfg: 此命令是管理 EFI NVRAM 中启动选项的关键。它允许您添加、删除或列出启动项和驱动程序项。例如,要添加自定义引导加载程序(例如 Clover),您可以使用:
bcfg boot add 0 fs1:\EFI\CLOVER\CLOVERX64.efi "Clover"
其中,0为优先级,fs1 为.efi 文件所在的分区,最后一个参数为启动菜单中的条目名称。要管理 EFI 变量,您还可以参考[相关文档链接]。
- 数据存储库: 转储 EFI 变量存储的内容,以便轻松查看或编辑当前值。
- 重置 : 执行系统冷重启,在修改关键设置后很有用。
驱动程序、协议和维护
- 连接句柄#: 将 EFI 驱动程序与设备关联并启动它。
- 断开设备句柄#]: 断开设备与控制器的连接,这在操作驱动程序或诊断不兼容性时很重要。
- 驱动程序 : 显示系统上加载的驱动程序。
- drvcfg,drvdiag: 它们调用控制器的配置和诊断协议,对于在复杂环境中进行调试很有用。
- loadpcirom,加载驱动程序名称: 它们加载 PCI 选项 ROM 或附加驱动程序,从而允许扩展固件功能。
- 启动维护: 启动引导维护管理器,这是一个用于在 shell 中修改引导选项的可视化实用程序。
内存管理和数据转储
- dmem: 允许您显示内存位置的内容,非常适合高级调试。
- 内存: 转储分配的内存或 I/O。
- 内存映射: 显示系统内存映射,提供已用内存和可用内存的概览。
- mm 地址: 允许您修改内存区域,无论是物理内存区域还是 MMIO 内存区域。通常由技术人员和开发人员使用。
与日期、时间和环境相关的命令
- 日期 : 显示或设置系统日期。
- 时间 : 检查或调整时间。
- 版本: 显示 UEFI shell 的当前版本。
- cls: 清洁终端屏幕,非常适合在控制台上长时间工作时保持整洁。
- 模式: 设置或查询 shell 中的当前图形模式。
脚本和自动化命令
- 回声| ]: 在屏幕上显示文本并控制 .nsh 脚本中的命令回显。
- if、else、endif、for、endfor、goto 标签、暂停: 自动化脚本的基本控制结构,有助于在 UEFI 环境中实现常规或复杂任务的自动化。
高级诊断和硬件测试
某些 UEFI 环境(例如 Oracle 实现的或企业平台上的 UEFI 环境)包含诊断 CLI,其中包含用于检查系统硬件的特定命令。最相关的命令包括:
- cfgtbl: 显示所有已安装的 UEFI 表,对于理解固件结构至关重要。
- cpu { cpuid | 信息 | 型号 | 速度 | simd | 顶部 | sysregs | idt | memcfg }: 运行测试并显示有关 CPU 的详细信息。
- 浮点运算单元(FPU): 运行浮点单元测试。
- 图形: 显示可用的图形模式或对其执行测试。
- 内存 { 测试 | 信息 }: 测试并显示有关 RAM 及其设置的信息。
- 网络: 查看以太网接口或运行连接测试。
- 实时时钟: 以 24 小时格式检查当前日期和时间。
- 存储 { 信息 | mst | rrt | srt | rwv }: 分析和测试设备 存储.
- 系统 { acpi | 信息 | 库存 | symbios | cpuestockets | pelink }: 显示一般系统信息,在服务器上非常有用。
- TPM: 显示有关安全模块 (TPM) 和访问日志的详细信息。
- USB: 列出有关 USB 设备和集线器的信息。
使用 UEFI shell 时需要注意的事项
在采取行动之前需要考虑的一些基本问题:
- UEFI Shell 除特殊情况外,通常仅适用于 FAT16 或 FAT32 格式的分区。如果您磁盘的文件系统是 NTFS、exFAT 或任何其他格式, 此环境将无法访问它.
- 要查找您的 UEFI shell 版本中可用的所有命令,您可以使用命令 或 ,具体取决于语言和特定固件。
实际使用示例:添加自定义引导加载程序
使用 UEFI shell 最常见的原因之一是修改启动顺序以加载自定义引导加载程序(例如,Hackintosh 上的 Clover 或 OpenCore,或自定义 Linux 安装)。基本流程如下:
- 使用以下命令切换到适当的 EFI 分区 FSX:
- 检查内容 ls o DIR.
- 运行命令 bcfg 启动添加 ,例如:
bcfg boot add 0 fs1:\EFI\CLOVER\CLOVERX64.efi "Clover" - 检查条目是否已正确创建,然后重新启动计算机以验证更改。
UEFI Shell 是一款功能极其强大且用途广泛的工具。掌握它的命令和实用程序不仅可以简化维护和故障排除任务,还能让您完全掌控系统的启动过程。在受控环境中进行实践和实验是熟悉其操作并充分利用其功能的最佳方法。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。