EfiFs
v1.11
这是基于GRUB 2.0只读驱动程序的独立EFI文件系统驱动程序的GPLV3+实现。
有关其他信息以及预编译驱动程序,请参见https://efi.akeo.ie
git submodule init和git submodule update获取git子模型。git克隆目录时才有效。0001-GRUB-fixes.patch应用于grub subdirectory。这应用了成功编译GRUB所需的更改。F5以编译并调试默认驱动程序。make 。如果需要,您还可以发出诸如make ARCH=<arch> CROSS_COMPILE=<tuple>之类的内容,其中<arch>是ia32 , x64 , arm , aa64 , riscv64或loongarch64 (官方的uefi asbreviations for /efi/boot/boot[ARCH].efi efi/boot/boot/boot/boot/boot for ancromp)和<tuple> for for for ancomple, arm-linux-gnueabi-或aarch64-linux-gnu- 。例如, make ARCH=aa64 CROSS_COMPILE=aarch64-linux-gnu-EfiFsPkg的符号链接,以供EFIFS源。在Windows上,从高架提示中,您可以运行mklink /D EfiFsPkg C:efifs和Linux ln -s ../efifs EfiFsPkg之类的东西。set_grub_cpu.cmd <arch>./set_grub_cpu.sh <arch><arch>是ia32 , x64 , arm , aarch64 , riscv64或loongarch64之一。请注意,您必须每次切换目标时调用set_grub_cpu脚本。edksetup.bat (Windows)或edksetup.sh (Linux)之后,运行类似: build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc
<toolchain>是VS2022 (Windows)或GCC5 (Linux)之类的东西。 build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc -m EfiFsPkg/EfiFsPkg/Ntfs.inf
edk2_build_drivers.cmd 。 如果安装了QEMU,Visual Studio解决方案将使用QEMU设置并测试驱动程序(也通过为每个目标文件系统下载示例图像)。但是请注意,VS调试期望在C:Program Filesqemu (您可以在此处下载)中安装64位版本的QEMU。如果不是这种情况,则应相应地编辑.msvcdebug.vbs 。
要在Visual Studio之外进行测试,请确保使用目标文件系统至少具有一个带有目标分区的磁盘,而其他EFI文件系统驱动程序则无法处理。然后引导到EFI外壳中并运行以下内容:
load fs0:<fs_name>_<arch>.efi或驾驶员被复制的任何地方map -r这应该使新的fs#可用,例如fs2:FS_LOGGING Shell变量设置为1或更多drivers命令,然后使用驱动程序ID unload 请注意,要在Visual Studio 2022中启用ARM/ARM64汇编支持,您必须转到设置应用程序中的单个组件屏幕,然后选择那里的ARM编译器和库,因为它们不会出现在默认工作负载屏幕中:
这是EFI驱动程序的纯GPLV3+实现。非常注意不要使用非GPLV3兼容来源中的任何代码,例如Refind的fsw_efi (仅GPLV2)或Intel的Fat drougr(需要额外的版权通知)。
但是请注意,在./src/ +而不是GPLV3+下,某些文件(非grub_####来源)已许可,就像GPLV3+源一样,我们非常照顾我们完全遵守任何许可或重新启动或依赖的问题,以便他们可以合法地将其重新使用Gplvv2+ Worts。
sudo apt install nasm uuid-dev gcc-multilib gcc-aarch64-linux-gnu gcc-arm-linux-gnueabi gcc-riscv64-linux-gnu
git clone --recurse-submodules https://github.com/tianocore/edk2.git
cd edk2
make -C BaseTools
git clone --recurse-submodules https://github.com/pbatard/EfiFs.git EfiFsPkg
cd EfiFsPkg/grub
git apply ../0001-GRUB-fixes.patch
cd -
export GCC5_ARM_PREFIX=arm-linux-gnueabi-
export GCC5_AARCH64_PREFIX=aarch64-linux-gnu-
export GCC5_RISCV64_PREFIX=riscv64-linux-gnu-
source edksetup.sh --reconfig
./EfiFsPkg/set_grub_cpu.sh X64
build -a X64 -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
./EfiFsPkg/set_grub_cpu.sh IA32
build -a IA32 -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
./EfiFsPkg/set_grub_cpu.sh AARCH64
build -a AARCH64 -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
./EfiFsPkg/set_grub_cpu.sh ARM
build -a ARM -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc
./EfiFsPkg/set_grub_cpu.sh RISCV64
build -a RISCV64 -b RELEASE -t GCC5 -p EfiFsPkg/EfiFsPkg.dsc