Esta es una implementación GPLV3+ de controladores de sistemas de archivos EFI independientes, basada en los controladores de solo lectura Grub 2.0.
Para obtener información adicional, así como controladores precompilados, consulte https://efi.akeo.ie
git submodule init y git submodule update .git .0001-GRUB-fixes.patch al subdirectorio grub . Esto aplica los cambios necesarios para la compilación exitosa de GRUB.F5 para compilar y depurar el controlador predeterminado.make en el directorio superior. Si es necesario, también puede emitir algo como make ARCH=<arch> CROSS_COMPILE=<tuple> donde <arch> es uno de ia32 , x64 , arm , aa64 , riscv64 o loongarch64 (el UEFI oficial oficial de UEFI para un Arch, como se usa en /efi/boot/boot[ARCH].efi Boot <tuple> BootcheCARARCHARE) arm-linux-gnueabi- o aarch64-linux-gnu- . por ejemplo make ARCH=aa64 CROSS_COMPILE=aarch64-linux-gnu-EfiFsPkg , dentro de su directorio EDK2, a la fuente EFIFS. En Windows, desde un aviso elevado, podría ejecutar algo como mklink /D EfiFsPkg C:efifs , y en Linux ln -s ../efifs EfiFsPkg .set_grub_cpu.cmd <arch>./set_grub_cpu.sh <arch><arch> es uno de ia32 , x64 , arm , aarch64 , riscv64 o loongarch64 . Tenga en cuenta que debe invocar el script set_grub_cpu cada vez que cambia de destino .edksetup.bat (Windows) o edksetup.sh (Linux) ejecute algo como: build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc
<toolchain> es algo así como VS2022 (Windows) o GCC5 (Linux). build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc -m EfiFsPkg/EfiFsPkg/Ntfs.inf
edk2_build_drivers.cmd . Si se instala QEMU, la solución de Visual Studio configurará y probará los controladores usando QEMU (también descargando una imagen de muestra para cada sistema de archivos de destino). Sin embargo, tenga en cuenta que VS Depurging espera que se instale una versión de Qemu de 64 bits en C:Program Filesqemu (que puede descargar aquí). Si ese no es el caso, debe editar .msvcdebug.vbs en consecuencia.
Para probar fuera de Visual Studio, asegúrese de tener al menos un disco con una partición de destino utilizando el sistema de archivos de destino, que no está siendo manejado por otros controladores del sistema de archivos EFI. Luego arranca en el shell EFI y ejecute lo siguiente:
load fs0:<fs_name>_<arch>.efi o donde sea que se copiara su controladormap -r Esto debería hacer que un nuevo fs# esté disponible, por ejemplo fs2:FS_LOGGING en 1 o másdrivers , luego unload con la ID del controlador Tenga en cuenta que, para habilitar el soporte de compilación ARM/ARM64 en Visual Studio 2022, debe ir a la pantalla de componentes individuales en la aplicación de configuración y seleccionar los compiladores y bibliotecas de brazo allí, ya que no aparecen en la pantalla de cargas de trabajo predeterminadas:
Esta es una implementación pura de GPLV3+ de los controladores EFI. Se tuvo mucho cuidado para no usar ningún código de fuentes compatibles no GPLV3, como fsw_efi de Refind (solo GPLV2) o el controlador de grasa de Intel (requiere un aviso adicional de derechos de autor).
Sin embargo, tenga en cuenta que algunos archivos (las fuentes no grub_#### en ./src/ ) tienen licencia bajo GPLV2+ en lugar de GPLV3+ y que, al igual que las fuentes de GPLV3+, cuidamos mucho para garantizar que cumplamos plenamente con cualquier licencia o reflexión de licencia, para que se puedan reutilizar legalmente en GPLV2+ trabajos.
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