Il s'agit d'une implémentation GPLV3 + des pilotes de système de fichiers EFI autonomes, basés sur les pilotes en lecture seule GRUB 2.0.
Pour des informations supplémentaires ainsi que les pilotes précompilés, voir https://efi.akeo.ie
git submodule init et git submodule update .git .0001-GRUB-fixes.patch au sous-répertoire grub . Cela applique les modifications nécessaires à une compilation réussie de Grub.F5 pour compiler et déboguer le pilote par défaut.make dans le répertoire supérieur. Si nécessaire, vous pouvez également émettre quelque chose comme make ARCH=<arch> CROSS_COMPILE=<tuple> où <arch> est l'un des ia32 , x64 , arm , aa64 , riscv64 ou loongarch64 (l'abréviation officielle UEFI pour un arch, comme cela est utilisé dans /efi/boot/boot[ARCH].efi <tuple> /Arch. arm-linux-gnueabi- ou aarch64-linux-gnu- . par exemple make ARCH=aa64 CROSS_COMPILE=aarch64-linux-gnu-EfiFsPkg , à l'intérieur de votre répertoire EDK2, à la source EFIFS. Sur Windows, à partir d'une invite surélevée, vous pouvez exécuter quelque chose comme mklink /D EfiFsPkg C:efifs , et sur Linux ln -s ../efifs EfiFsPkg .set_grub_cpu.cmd <arch>./set_grub_cpu.sh <arch><arch> est l'un des ia32 , x64 , arm , aarch64 , riscv64 ou loongarch64 . Notez que vous devez invoquer le script set_grub_cpu chaque fois que vous changez la cible .edksetup.bat (windows) ou edksetup.sh (linux) exécutez quelque chose comme: build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc
<toolchain> est quelque chose comme VS2022 (Windows) ou GCC5 (Linux). build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc -m EfiFsPkg/EfiFsPkg/Ntfs.inf
edk2_build_drivers.cmd . Si QEMU est installé, la solution Visual Studio configure et testera les pilotes à l'aide de QEMU (en téléchargeant également un exemple d'image pour chaque système de fichiers cibles). Notez cependant que VS Debogging s'attend à ce qu'une version 64 bits de Qemu soit installée dans C:Program Filesqemu (que vous pouvez télécharger ici). Si ce n'est pas le cas, vous devez modifier .msvcdebug.vbs en conséquence.
Pour les tests en dehors de Visual Studio, assurez-vous d'avoir au moins un disque avec une partition cible à l'aide du système de fichiers cible, qui n'est pas géré par d'autres pilotes de système de fichiers EFI. Démarrez ensuite dans le shell EFI et exécutez ce qui suit:
load fs0:<fs_name>_<arch>.efi ou partout où votre pilote a été copiémap -r Cela devrait rendre un nouveau fs# disponible, par exemple fs2:FS_LOGGING à 1 ou plusdrivers , puis unload avec l'ID de pilote Veuillez être conscient que, pour activer la prise en charge de la compilation ARM / ARM64 dans Visual Studio 2022, vous devez accéder à l'écran des composants individuels dans l'application de configuration et sélectionner les compilateurs ARM et les bibliothèques là-bas, car ils n'apparaissent pas dans l'écran de charges de travail par défaut:
Il s'agit d'une implémentation GPLV3 + pure des pilotes EFI. Un grand soin a été pris pour ne pas utiliser de code à partir de sources compatibles non GPLV3, telles que fsw_efi de Refind (GPLV2 uniquement) ou le conducteur de gros d'Intel (nécessite un avis supplémentaire du droit d'auteur).
Notez cependant que certains fichiers (les sources non grub_#### sous ./src/ ) sont sous licence GPLV2 + plutôt que GPLV3 + et que, tout comme les sources GPLV3 +, nous avons pris grand soin de nous assurer que nous sommes entièrement conformes à toutes les questions de licence ou de relicites.
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