Dies ist eine GPLV3+ -implementierung von eigenständigen Treibern für eigenständige EFI-Dateisysteme, die auf den schreibgeschützten GRUB 2.0-Treibern basiert.
Weitere Informationen sowie vorberechtigte Treiber finden Sie unter https://efi.akeo.ie
git submodule init und git submodule update .git geklont haben.0001-GRUB-fixes.patch auf das grub subditionory an. Dies wendet die Änderungen an, die für eine erfolgreiche Zusammenstellung von GRUB erforderlich sind.F5 , um den Standardtreiber zu kompilieren und zu debuggen.make im oberen Verzeichnis. Bei Bedarf können Sie auch etwas wie make ARCH=<arch> CROSS_COMPILE=<tuple> ausstellen, wobei <arch> einer von ia32 , x64 , arm , aa64 , riscv64 oder loongarch64 ist (der offizielle UEFI-Abkürzungen für einen Arch, wie in /efi/boot/boot[ARCH].efi <tuple> /Arch. arm-linux-gnueabi- oder aarch64-linux-gnu- . zB make ARCH=aa64 CROSS_COMPILE=aarch64-linux-gnu-EfiFsPkg in Ihrem EDK2 -Verzeichnis mit der EFIFS -Quelle. Unter Windows können Sie von einer erhöhten Eingabeaufforderung so etwas wie mklink /D EfiFsPkg C:efifs und unter Linux ln -s ../efifs EfiFsPkg ausführen.set_grub_cpu.cmd <arch>./set_grub_cpu.sh <arch><arch> einer von ia32 , x64 , arm , aarch64 , riscv64 oder loongarch64 ist. Beachten Sie, dass Sie jedes Mal, wenn Sie das Ziel wechseln, das Skript set_grub_cpu aufrufen müssen .edksetup.bat (Windows) oder edksetup.sh (Linux) aufgerufen haben, führen Sie so etwas wie: build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc
<toolchain> so etwas wie VS2022 (Windows) oder GCC5 (Linux) ist. build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc -m EfiFsPkg/EfiFsPkg/Ntfs.inf
edk2_build_drivers.cmd bereitgestellt. Wenn QEMU installiert ist, wird die Visual Studio -Lösung die Treiber mit QEMU eingerichtet und testet (indem auch ein Beispielbild für jedes Zieldateisystem heruntergeladen wird). Beachten Sie jedoch, dass VS Debugging erwartet, dass eine 64-Bit-Version von QEMU in C:Program Filesqemu installiert wird (die Sie hier herunterladen können). Wenn dies nicht der Fall ist, sollten Sie .msvcdebug.vbs entsprechend bearbeiten.
Stellen Sie zum Testen außerhalb von Visual Studio sicher, dass Sie über mindestens eine Festplatte mit einer Zielpartition mit dem Zieldateisystem verfügen, das nicht von anderen EFI -Dateisystemtreibern behandelt wird. Starten Sie dann in die EFI -Shell und führen Sie Folgendes aus:
load fs0:<fs_name>_<arch>.efi oder wo immer Ihr Treiber kopiert wurdemap -r Dies sollte ein neues fs# verfügbar sein, z. fs2:FS_LOGGING Shell auf 1 oder mehrdrivers zu entladen, und dann mit der Treiber -ID unload Bitte beachten Sie, dass Sie in Visual Studio 2022 die Unterstützung der ARM/ARM64 -Kompilierung in Visual Studio 2022 aktivieren müssen , um in der Setup -Anwendung zum Bildschirm einzelner Komponenten zu gehen und die Dort -ARM -Compiler und -Bibliotheken auszuwählen, da sie nicht im Standard -Workloads -Bildschirm angezeigt werden:
Dies ist eine reine GPLV3+ -Implementierung von EFI -Treibern. Es wurde sehr darauf geachtet, keinen Code aus nicht gplv3 kompatiblen Quellen wie fsw_efi (nur GPLV2) oder Intel -Fettfahrer zu verwenden (erfordert eine zusätzliche Copyright -Bekanntmachung).
Beachten Sie jedoch, dass einige Dateien (die Non grub_#### -Quellen unter ./src/ ) unter GPLV2+ anstelle von GPLV3+ lizenziert sind und dass wir genau wie die GPLV3+ Quellen sehr darauf geachtet haben, sicherzustellen, dass wir mit lizenzierenden oder relizensierenden Angelegenheiten vollständig konform sind.
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