问题描述
我正在开发应该与网络配合使用的 efi 应用程序。
为了方便起见,我将 EFI\Boot\bootx64.efi
文件更改为 efi shell,以便在系统启动时默认启动 efi shell。
当 shell 启动时,我运行命令 ifconfig -l
来查看可用的网络接口设置。
我遇到了以下行为。
当系统默认引导我的 shell (EFI\Boot\bootx64.efi
) 时,我看不到任何网络接口,运行命令 ifconfig -l
。但。
如果我使用(在 HP 笔记本电脑上测试)“启动菜单/从文件启动”手动启动相同的文件 (EFI\Boot\bootx64.efi
),shell 将启动并且 ifconfig -l
显示网络接口 eth0
。
因此,使用默认系统启动或从启动菜单手动加载相同的 efi 文件会给我不同的网络可用性结果。
我决定比较这两种情况下加载的驱动程序列表和。
我注意到,当系统以默认模式启动时(不是通过从启动菜单手动指定设备)驱动程序 Realtek UEFI UNDI Driver
不存在。当我从文件 (EFI\Boot\bootx64.efi
) 手动启动时,它已加载。
我认为缺少这个驱动程序'Realtek UEFI UNDI 驱动程序'是原因。为了检查这一点,我做了以下测试:
- 从网络下载 Realtek UNDI 驱动程序 (
RtkUndiDxe.efi
) - 将其复制到 efi 启动文件夹 (
EFI\Boot\
) - 通过系统默认启动进入shell并通过命令
load 'RtkUndiDxe.efi
手动加载Realter UNDI驱动程序 结果,出现了网络接口。
谁能解释一下,为什么默认情况下系统启动 Realtek UEFI UNDI 驱动程序 未加载?或者我如何让系统从我自己的 efi 应用程序/驱动程序加载它自己的 Realtek UEFI UNDI Driver
?
解决方法
某些驱动程序未在 BIOS 的“快速启动”选项中加载。当我关闭它时,现在加载了网络驱动程序和其他一些驱动程序。