Esta é uma implementação GPLV3+ de drivers de sistema de arquivos EFI independentes, com base nos drivers somente leitura GRUB 2.0.
Para informações adicionais, bem como drivers pré -compilados, consulte https://efi.akeo.ie
git submodule init e git submodule update .git .0001-GRUB-fixes.patch no subdiretório grub . Isso aplica as alterações necessárias para a compilação bem -sucedida do GRUB.F5 para compilar e depurar o driver padrão.make o diretório principal. Se necessário, você também pode emitir algo como make ARCH=<arch> CROSS_COMPILE=<tuple> <tuple> <arch> é um de ia32 , x64 , arm , aa64 , riscv64 ou loongarch64 (a abreviation crossurshi e a abre, como up /efi/boot/boot[ARCH].efi boot/boot/boot-march, arm-linux-gnueabi- ou aarch64-linux-gnu- . por exemplo, make ARCH=aa64 CROSS_COMPILE=aarch64-linux-gnu-EfiFsPkg , dentro do seu diretório EDK2, para a fonte EFIFS. No Windows, a partir de um prompt elevado, você pode executar algo como mklink /D EfiFsPkg C:efifs e no linux ln -s ../efifs EfiFsPkg .set_grub_cpu.cmd <arch>./set_grub_cpu.sh <arch><arch> é um dos ia32 , x64 , arm , aarch64 , riscv64 ou loongarch64 . Observe que você deve invocar o script set_grub_cpu sempre que alternar o destino .edksetup.bat (Windows) ou edksetup.sh (Linux), execute algo como: build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc
<toolchain> é algo como 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 . Se o Qemu estiver instalado, a solução do Visual Studio configurará e testará os drivers usando o QEMU (ao baixar também uma amostra de imagem para cada sistema de arquivos de destino). Observe, no entanto, que o VS Debugging espera que uma versão de 64 bits do Qemu seja instalada em C:Program Filesqemu (que você pode baixar aqui). Se não for esse o caso, você deve editar .msvcdebug.vbs de acordo.
Para testar fora do Visual Studio, verifique se você tem pelo menos um disco com uma partição de destino usando o sistema de arquivos de destino, que não está sendo tratado por outros drivers de sistema de arquivos EFI. Em seguida, inicialize no shell EFI e execute o seguinte:
load fs0:<fs_name>_<arch>.efi ou onde quer que seu motorista fosse copiadomap -r Isso deve disponibilizar um novo fs# , por exemplo, fs2:FS_LOGGING shell como 1 ou maisdrivers e depois unload com o ID do driver Lembre -se de que, para ativar o suporte de compilação ARM/ARM64 no Visual Studio 2022, você deve ir à tela de componentes individuais no aplicativo de configuração e selecionar os compiladores de braço e as bibliotecas lá, pois não aparecem na tela de cargas de trabalho padrão:
Esta é uma implementação pura de GPLV3+ de drivers EFI. Foi tomado muito cuidado para não usar nenhum código de fontes compatíveis com GPLV3, como fsw_efi da Refind (somente GPLV2) ou o driver gordo da Intel (requer um aviso de direitos autorais extra).
No entanto, observe que alguns arquivos (as fontes não grub_#### em ./src/ ) são licenciados em GPLV2+ em vez de GPLV3+ e que, assim como as fontes GPLV3+, cuidamos muito de garantir que possamos ser totalmente compatíveis com as obras licenciadoras ou relíquias.
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