Это реализация GPLV3+ автономных драйверов файловых систем EFI на основе драйверов только для чтения GRUB 2.0.
Для получения дополнительной информации, а также предварительных водителей, см. Https://efi.akeo.ie
git submodule init и git submodule update .git .0001-GRUB-fixes.patch на подкаталог grub . Это применяет изменения, которые необходимы для успешного сборника Grub.F5 , чтобы скомпилировать и отлаживать драйвер по умолчанию.make в верхнем каталоге. При необходимости вы также можете выпустить что-то вроде make ARCH=<arch> CROSS_COMPILE=<tuple> , где <arch> <tuple> одно из ia32 , x64 , arm , aa64 , riscv64 или loongarch64 ( официальные аббревиации UEFI для Arck, как это используется в /efi/boot/boot[ARCH].efi bootrarch]. arm-linux-gnueabi- или aarch64-linux-gnu- . Например, make ARCH=aa64 CROSS_COMPILE=aarch64-linux-gnu-EfiFsPkg , внутри вашего каталога EDK2, на источник 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 отладка ожидает, что 64-битная версия QEMU будет установлена в C:Program Filesqemu (которую вы можете скачать здесь). Если это не так, вы должны отредактировать .msvcdebug.vbs соответственно.
Для тестирования вне Visual Studio убедитесь, что у вас есть хотя бы один диск с целевым разделом с использованием целевой файловой системы, который не обрабатывается другими драйверами файловой системы EFI. Затем загрузитесь в оболочку EFI и запустите следующее:
load fs0:<fs_name>_<arch>.efi или везде, где был скопирован ваш драйверmap -r Это должно сделать новый fs# доступным, например, fs2:FS_LOGGING на 1 или болееdrivers , затем unload с идентификатором драйвера Пожалуйста, помните, что, чтобы включить поддержку компиляции ARM/ARM64 в Visual Studio 2022, вы должны перейти на экран отдельных компонентов в приложении настройки и выбрать там компиляторы ARM и библиотеки, поскольку они не отображаются на экране рабочей нагрузки по умолчанию:
Это чистая реализация GPLV3+ драйверов EFI. Была принята большая забота, чтобы не использовать какой -либо код из не совместимых с GPLV3 источников, таких как fsw_efi (только GPLV2) или жирный драйвер Intel (требует дополнительного уведомления об авторском праве).
Обратите внимание, что некоторые файлы (не grub_#### Источники в разделе ./src/ ) лицензированы в рамках GPLV2+, а не GPLV3+, и что, как и источники GPLV3+, мы очень заботились о том, чтобы мы полностью соответствовали любым лицензированию или мощным вопросам, так что они могут быть вновь вновь вновь в GPLV2+.
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