هذا هو تنفيذ GPLV3+ لسائقي نظام ملفات EFI المستقلة ، استنادًا إلى برامج تشغيل GRUB 2.0 للقراءة فقط .
للحصول على معلومات إضافية بالإضافة إلى برامج التشغيل المسبقة ، انظر https://efi.akeo.ie
git submodule init git submodule update .git .0001-GRUB-fixes.patch على grub Subdirectory. هذا ينطبق على التغييرات المطلوبة لتجميع ناجح للهبة.F5 لتجميع وتصحيح برنامج التشغيل الافتراضي.make في أعلى الدليل. إذا لزم الأمر ، يمكنك أيضًا إصدار شيء مثل make ARCH=<arch> CROSS_COMPILE=<tuple> <tuple> يكون <arch> واحدًا من ia32 أو x64 أو arm و aa64 أو riscv64 أو loongarch64 (UFI OPBREVIATIONS الرسمية لـ ARCH ، كما هو مستخدم في /efi/boot/boot[ARCH].efi fiboot/Boot/Boot. 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 Depugging يتوقع أن يتم تثبيت إصدار 64 بت من QEMU في C:Program Filesqemu (التي يمكنك تنزيلها هنا). إذا لم يكن الأمر كذلك ، فيجب عليك تحرير .msvcdebug.vbs وفقًا لذلك.
للاختبار خارج Visual Studio ، تأكد من أن لديك قرصًا واحدًا على الأقل مع قسم مستهدف باستخدام نظام الملفات المستهدف ، لا يتم التعامل معه بواسطة برامج تشغيل ملفات EFI الأخرى. ثم التمهيد في قذيفة EFI وقم بتشغيل ما يلي:
load fs0:<fs_name>_<arch>.efi أو في أي مكان تم نسخ سائقكmap -r هذا يجب أن يجعل fs# جديد متاح ، على سبيل المثال fs2:FS_LOGGINGdrivers ، ثم unload مع معرف برنامج التشغيل يرجى النظر في أنه لتمكين دعم تجميع ARM/ARM64 في Visual Studio 2022 ، يجب عليك الانتقال إلى شاشة المكونات الفردية في تطبيق الإعداد وتحديد مجمعات ARM والمكتبات هناك ، لأنها لا تظهر في شاشة عبء العمل الافتراضية:
هذا هو تنفيذ GPLV3+ النقي لسائقي EFI. تم توخي الحذر الكبير في عدم استخدام أي رمز من مصادر متوافقة مع GPLv3 ، مثل REFIND's fsw_efi (GPLV2 فقط) أو برنامج تشغيل الدهون في Intel (يتطلب إشعارًا إضافيًا لحقوق الطبع والنشر).
لاحظ أن بعض الملفات (مصادر غير grub_#### تحت ./src/ ) مرخصة بموجب GPLV2+ بدلاً من GPLV3+ وأنه ، تمامًا مثل مصادر GPLV3+ ، فقد اهتمنا بشكل كبير بتأكد من أننا نتوافق تمامًا مع أي ترخيص أو مسائل إعادة التكرار ، بحيث يمكن استغلالها بشكل خاطئ.
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