UEFI: NTFS เป็น bootloader ทั่วไปที่ออกแบบมาเพื่ออนุญาตให้บูตจากพาร์ติชัน NTFs หรือ Exfat ในโหมด UEFI บริสุทธิ์แม้ว่าระบบของคุณจะไม่รองรับ สิ่งนี้มีไว้สำหรับใช้กับรูฟัสเป็นหลัก แต่ยังสามารถใช้งานได้อย่างอิสระ
กล่าวอีกนัยหนึ่ง UEFI: NTFS ได้รับการออกแบบมาเพื่อลบข้อ จำกัด ซึ่งระบบ UEFI ส่วนใหญ่มีเพียงการให้การสนับสนุนการบูตจากพาร์ติชัน FAT32 และเปิดใช้งานความสามารถในการบูตจากพาร์ติชัน NTFS
ตัวอย่างเช่นสิ่งนี้สามารถใช้กับ UEFI-BOOT สื่อการติดตั้ง Windows NTFS ที่มี install.wim ที่มีขนาดใหญ่กว่า 4 GB (สิ่งที่ FAT32 ไม่สามารถรองรับได้) หรืออนุญาตให้ใช้ไดรฟ์สอง BIOS + UEFI ของ 'Windows to Go'
นอกเหนือจากนั้นและเนื่องจากมีข้อมูลที่ไม่ถูกต้องมากมายเกี่ยวกับเรื่องนี้บนอินเทอร์เน็ตจึงจำเป็นต้องเน้นว่าไม่มีอะไรในข้อกำหนดของ UEFI ที่บังคับใช้ FAT32 สำหรับการบูต UEFI ในทางตรงกันข้าม UEFI จะบูตอย่างมีความสุขจากระบบไฟล์ ใด ๆ ตราบใดที่เฟิร์มแวร์ของคุณมีไดรเวอร์สำหรับมัน ดังนั้นจึงเป็นเพียงตัวเลือกของผู้ผลิตระบบที่มีแนวโน้มที่จะรวมเฉพาะคนขับสำหรับ FAT32 ซึ่งจำกัดความสามารถในการบูตเริ่มต้นของ UEFI และทำให้หลายคน เชื่อ ว่า FAT32 เท่านั้นที่สามารถใช้สำหรับ UEFI Boot ได้
อย่างไรก็ตามดังที่แสดงในโครงการนี้มันเป็นไปได้มากที่จะแก้ไขข้อ จำกัด นี้และเปิดใช้งานเฟิร์มแวร์ UEFI ใด ๆ เพื่อบูตจากระบบไฟล์ที่ไม่ใช่ FAT32
วิธีการทำงานของ UEFI: NTFS ร่วมกับ Rufus มีดังนี้:
/efi/boot/bootaa64.efi NTFS ที่มีอยู่บนสื่อเดียวกันและดำเนินการ /efi/boot/bootia32.efi , /efi/boot/bootx64.efi , /efi/boot/bootarm.efi สิ่งนี้จะได้ผลลัพธ์ที่เหมือนกันราวกับว่าเฟิร์มแวร์ UEFI มีการสนับสนุน NTFS และสามารถบูตได้โดยตรง UEFI: NTFS เข้ากันได้กับการบูตที่ปลอดภัยและได้รับการลงนามโดย Microsoft
คุณสามารถค้นหาไบนารีที่ลงนามในการบูตได้อย่างปลอดภัย (สำหรับ x86_64, x86_32 และ ARM64) ใน uefi-ntfs.img เก็บถาวรของรูฟัส
อย่างไรก็ตามโปรดทราบว่าเนื่องจากข้อ จำกัด ของ Microsoft โดยพลการเกี่ยวกับ GPLV3 ไดรเวอร์เดียวที่สามารถใช้กับ UEFI: NTFS ในสภาพแวดล้อมการบูตที่ปลอดภัยคือ GPLV2 ที่ได้รับอนุญาต NTFS-3G โดยเฉพาะอย่างยิ่งไดรเวอร์ NTFs และ Exfat จาก EFIF ซึ่งได้มาจาก GRUB 2.0 ดังนั้น GPLV3 จึงไม่สามารถส่งไปยัง Microsoft เพื่อลงนามได้
ในที่สุดนโยบายการลงนามในการบูตที่ปลอดภัยในปัจจุบันของ Microsoft จำเป็นต้องมีการตรวจสอบเพิ่มเติมสำหรับแขน 32 บิตดังนั้นไบนารี ARM 32 บิตจะไม่ได้ลงนามในการบูต สิ่งนี้ไม่ส่งผลกระทบต่อแขน 64 บิต (AKA ARM64 / AARCH64 / AA64 ) ซึ่งเรามีไบนารีที่ลงนามในการบูตอย่างปลอดภัย
เพื่อความสะดวกโครงการสามารถรวบรวมกับไลบรารี GNU-EFI มากกว่า EDK2 ดังนั้นคุณอาจต้องเริ่มต้น submodules git ด้วย:
git submodule update --init
หากใช้โซลูชัน Visual Studio ( .sln ) เพียงกด F5 เพื่อให้แอปพลิเคชันรวบรวมและเปิดตัวใน EMU emulator
หากใช้ GCC กับ GNU-EFI คุณควรจะสามารถ make ง่ายๆ
หากจำเป็นคุณสามารถออกบางอย่างเช่น make ARCH=<arch> CROSS_COMPILE=<tuple> โดยที่ <arch> เป็นหนึ่งใน ia32 , x64 , arm หรือ aa64 และ tuple เป็นหนึ่งสำหรับ cross-compiler ของคุณ (เช่น aarch64-linux-gnu- )
นอกจากนี้คุณยังสามารถดีบักผ่าน QEMU โดยระบุ qemu ไปยังการ make ร้องของคุณ จงระวังว่าสิ่งนี้จะเปิดโหมด _DEBUG พิเศษและคุณควรเรียกใช้ทำโดยไม่เรียกใช้ qemu เพื่อสร้างไบนารีการปล่อยที่เหมาะสม
หากใช้ VS2022 กับ EDK2 บน Windows สมมติว่าไดเรกทอรี EDK2 ของคุณอยู่ใน D:edk2 และ nasm นั้นอยู่ใน D:edk2BaseToolsBinWin32 คุณควรจะออก:
set EDK2_PATH=D:edk2
set NASM_PREFIX=D:edk2BaseToolsBinWin32
set WORKSPACE=%CD%
set PACKAGES_PATH=%WORKSPACE%;%EDK2_PATH%
%EDK2_PATH%edksetup.bat reconfig
build -a X64 -b RELEASE -t VS2022 -p uefi-ntfs.dsc
หากใช้ GCC กับ EDK2 บน Linux และสมมติว่าไดเรกทอรี EDK2 ของคุณอยู่ใน /usr/src/edk2 :
export EDK2_PATH="/usr/src/edk2"
export WORKSPACE=$PWD
export PACKAGES_PATH=$WORKSPACE:$EDK2_PATH
. $EDK2_PATH/edksetup.sh --reconfig
build -a X64 -b RELEASE -t GCC5 -p uefi-ntfs.dsc
คุณสามารถค้นหาภาพพาร์ติชันไขมันแบบพร้อมใช้งานที่มี X86 และรุ่น ARM ของ UEFI: NTFS Loader (ทั้ง 32 และ 64 บิต) และไดรเวอร์ในโครงการ Rufus ภายใต้ /Res /UEFI
หากคุณสร้างพาร์ติชันที่มีขนาดเท่ากันในตอนท้ายของไดรฟ์ของคุณและคัดลอก uefi-ntfs.img ที่นั่น (ในโหมด DD แน่นอน) คุณควรมีทุกสิ่งที่คุณต้องการเพื่อสร้างพาร์ติชัน NTFS แรกบนไดรฟ์ UEFI ที่สามารถบูตได้
โปรดระวังว่าเพื่อเปิดใช้งาน ARM หรือ ARM64 Suppilation Support ใน Visual Studio 2022 คุณ ต้อง ไปที่หน้าจอ ส่วนประกอบแต่ละตัว ในแอปพลิเคชันการตั้งค่าและเลือกเครื่องมือสร้าง ARM/ARM64 ที่นั่นเนื่องจาก ไม่ ปรากฏในหน้าจอเวิร์ กโหลด เริ่มต้น: