Ini adalah implementasi GPLV3+ dari driver sistem file EFI mandiri, berdasarkan pada driver baca-only GRUB 2.0.
Untuk info tambahan serta driver yang dikompilasi, lihat https://efi.akeo.ie
git submodule init dan git submodule update .git .0001-GRUB-fixes.patch ke grub subdirektori. Ini berlaku perubahan yang diperlukan untuk keberhasilan kompilasi grub.F5 untuk mengkompilasi dan men -debug driver default.make in the Top Directory. If needed you can also issue something like make ARCH=<arch> CROSS_COMPILE=<tuple> where <arch> is one of ia32 , x64 , arm , aa64 , riscv64 or loongarch64 (the official UEFI abbreviations for an arch, as used in /efi/boot/boot[ARCH].efi ) and <tuple> is the one for your cross-compiler, such as arm-linux-gnueabi- atau aarch64-linux-gnu- . misalnya make ARCH=aa64 CROSS_COMPILE=aarch64-linux-gnu-EfiFsPkg , di dalam direktori EDK2 Anda, ke sumber EFIFS. Di Windows, dari prompt yang ditinggikan, Anda bisa menjalankan sesuatu seperti mklink /D EfiFsPkg C:efifs , dan pada linux ln -s ../efifs EfiFsPkg .set_grub_cpu.cmd <arch>./set_grub_cpu.sh <arch><arch> adalah salah satu dari ia32 , x64 , arm , aarch64 , riscv64 atau loongarch64 . Perhatikan bahwa Anda harus meminta skrip set_grub_cpu setiap kali Anda beralih target .edksetup.bat (windows) atau edksetup.sh (linux) menjalankan sesuatu seperti: build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc
<toolchain> adalah sesuatu seperti VS2022 (Windows) atau GCC5 (Linux). build -a X64 -b RELEASE -t <toolchain> -p EfiFsPkg/EfiFsPkg.dsc -m EfiFsPkg/EfiFsPkg/Ntfs.inf
edk2_build_drivers.cmd . Jika QEMU diinstal, solusi Visual Studio akan mengatur dan menguji driver menggunakan QEMU (dengan juga mengunduh gambar sampel untuk setiap sistem file target). Namun perhatikan bahwa vs debugging mengharapkan versi qema 64-bit akan diinstal dalam C:Program Filesqemu (yang dapat Anda unduh di sini). Jika bukan itu masalahnya, Anda harus mengedit .msvcdebug.vbs sesuai.
Untuk pengujian di luar Visual Studio, pastikan Anda memiliki setidaknya satu disk dengan partisi target menggunakan sistem file target, yang tidak ditangani oleh driver sistem file EFI lainnya. Kemudian boot ke shell EFI dan jalankan berikut:
load fs0:<fs_name>_<arch>.efi atau di mana pun pengemudi Anda disalinmap -r Ini harus membuat fs# baru tersedia, misalnya fs2:FS_LOGGING ke 1 atau lebihdrivers , lalu unload dengan ID driver Harap berhati -hati bahwa, untuk mengaktifkan dukungan kompilasi ARM/ARM64 di Visual Studio 2022, Anda harus pergi ke layar komponen individual dalam aplikasi pengaturan dan memilih kompiler dan perpustakaan ARM di sana, karena mereka tidak muncul di layar beban kerja default:
Ini adalah implementasi GPLV3+ murni dari driver EFI. Perhatian besar diambil untuk tidak menggunakan kode apa pun dari sumber yang kompatibel dengan Non GPLV3, seperti fsw_efi (hanya GPLV2) atau driver lemak Intel (memerlukan pemberitahuan hak cipta tambahan).
Namun perlu dicatat bahwa beberapa file (non grub_#### di bawah ./src/ ) dilisensikan di bawah GPLV2+ daripada GPLV3+ dan bahwa, seperti sumber GPLV3+, kami sangat berhati -hati untuk memastikan bahwa kami sepenuhnya sesuai dengan masalah lisensi atau lisensi.
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