UEFI开发学习 29 – 为 UEFI 固件添加 NTFS 读写支持
NTFS 是 Windows 支持的分区格式,但 UEFI 默认支持的文件系统格式是 FAT 系列,所以 UEFI 固件想要支持 NTFS,必须要自己实现。当然,这对非专业人士来说是比较困难的,商用的代码 IBV 一般会提供代码支持,不过大多也只支持读而不可写。
幸运的是,UEFI 下 NTFS 的支持,是有开源库支持的,作为学习,可以直接拿来使用,比如此项目:https://github.com/pbatard/EfiFs,支持多种文件系统,如 ntfs, exfat, ext2 等,也提供了各种架构编译 efi 文件的支持。
除此之外,作者还移植了支持读写的 NTFS-3G 源码并也开源了,地址:https://github.com/pbatard/ntfs-3g,下面演示如何将其移植到 EDK2 的 OVMF 固件中。
下载代码:
git clone https://github.com/pbatard/ntfs-3g.git
如果网络有问题,可用加速地址:
git clone https://ghproxy.net/https://github.com/pbatard/ntfs-3g.git
下载完后将其命名为 Ntfs3gPkg,并将其复制到 EDK2 代码中,做以下修改:
-> Ntfs3gPkguefi-driveruefi_driver.inf
将 [Packages] 下的 uefi-driver.dec 改为 Ntfs3gPkg/uefi-driver.dec
-> OvmfPkgOvmfPkgX64.dsc
在文件末添加编译 ntfs 模块,并引用依赖库
Ntfs3gPkg/uefi-driver/uefi_driver.inf {
NULL|Ntfs3gPkg/.vs/CompilerIntrinsicsLib/CompilerIntrinsicsLib.inf
}
-> OvmfPkgOvmfPkgX64.fdf
在 [FV.DXEFV] 的末尾添加 ntfs 模块到 fv 中
INF Ntfs3gPkg/uefi-driver/uefi_driver.inf
最后编译 ovmf 固件,将编译好的固件用 QEMU 启动并附带一个NTFS的虚拟磁盘文件,使用mkdir 可直接在分区创建文件夹,用 LS 命令可列出文件夹,这样NTFS的支持便添加完毕了。
版权声明:
作者:bin
链接:https://ay123.net/mystudy/1897/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。

共有 0 条评论