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