如果我们想通过EFI shell中的AHCI访问(读/写)SATA驱动器,是否有用于此目的的读/写接口?
那就是,EFI shell应用程序是否需要实现AHCI规范才能访问驱动器? (构建命令,发出命令并处理命令完成...)
或者应用程序只调用特定的"读/写"接口(如Windows中的SCSI_PATH_THROUGH)和 " EFI ahci驱动程序" 将这些转换为低级访问例程?
答案 0 :(得分:1)
如果UEFI中有可用于SATA驱动器的驱动程序,并且支持您要访问的文件系统,则通过简单(ish)协议调用来读取/写入文件。
我能想到的最好的例子是Linux内核存根加载器(它将Linux内核转换为能够加载自身的EFI应用程序)。请确保使用当前3.15 rc或更高版本,因为早期代码中存在错误。 https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/firmware/efi/efi-stub-helper.c?id=refs/tags/v3.15-rc5使用https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/boot/compressed/eboot.c?id=refs/tags/v3.15-rc5中定义的函数进行文件系统访问。
或者,应用程序可以像GRUB一样使用方法进行原始块设备访问 - 使应用程序能够访问UEFI本身不支持的文件系统。
此外,一些应用程序(如rEFInd)通过在运行时加载协议(随rEFInd的安装提供)在UEFI中启用了额外的文件系统支持。