UEFI : NTFS는 시스템이 기본적으로 지원하지 않더라도 순수한 UEFI 모드에서 NTFS 또는 EXFAT 파티션의 부팅을 허용하도록 설계된 일반적인 부트 로더입니다. 이것은 주로 Rufus와 함께 사용하기위한 것이지만 독립적으로 사용할 수도 있습니다.
다시 말해, UEFI : NTFS는 대부분의 UEFI 시스템이 FAT32 파티션에서 부팅 지원을 제공하는 제한을 제거하고 NTFS 파티션에서 부팅 할 수있는 제한을 제거하도록 설계되었습니다.
예를 들어, install.wim 포함 된 Windows NTFS 설치 미디어를 uefi-boot에 사용하는 데 사용할 수 있습니다.
옆으로, 인터넷에 이것에 대한 많은 부정확 한 정보가 존재하는 것처럼 보이기 때문에 UEFI 부팅에 실제로 FAT32의 사용을 강요하는 UEFI 사양에 전혀 아무것도 없다는 점을 강조해야합니다. 반대로 UEFI는 펌웨어에 드라이버가있는 한 모든 파일 시스템에서 행복하게 부팅됩니다. 따라서 FAT32 용 드라이버 만 포함하는 경향이있는 시스템 제조업체의 선택 일 뿐이며 UEFI의 기본 부팅 기능을 제한하며 많은 사람들이 UEFI 부팅에 FAT32 만 사용할 수 있다고 잘못 믿게 됩니다.
그러나이 프로젝트에서 알 수 있듯이이 한계를 해결하고 UEFI 펌웨어가 비 FAT32 파일 시스템에서 부팅 할 수 있도록 할 수 있습니다.
UEFI : NTFS가 Rufus와 함께 작동하는 방식은 다음과 같습니다.
/efi/boot/bootia32.efi , /efi/boot/bootx64.efi , /efi/boot/bootarm.efi 또는 /efi/boot/bootaa64.efi bootaa64. 이는 UEFI 펌웨어가 NTF를 기본적으로 지원하고 바로 부팅 할 수있는 것처럼 정확히 동일한 결과를 얻습니다. UEFI : NTFS는 Secure Boot와 호환되며 Microsoft가 서명했습니다.
Rufus의 uefi-ntfs.img 아카이브에서 안전한 부트 서명 바이너리 (x86_64, x86_32 및 arm64)를 찾을 수 있습니다.
그러나 GPLV3에 관한 Microsoft 임의의 제한으로 인해 현재 안전한 부팅 환경에서 UEFI : NTFS와 함께 사용할 수있는 유일한 드라이버는 GPLV2 라이센스 NTFS-3G입니다. 특히 Grub 2.0에서 파생 된 EFIFS의 NTF 및 EXFAT 드라이버는 서명을 위해 Microsoft에 제출할 수 없습니다.
마지막으로 Microsoft의 현재 보안 부팅 서명 정책에는 32 비트 암에 대한 추가 유효성 검사가 필요하므로 32 비트 암 바이너리는 보안 부팅 서명이 아닙니다. 이것은 우리가 부츠 서명 된 바이너리를 완전히 안전하게 보장하는 64 비트 암 (일명 ARM64 / AARCH64 / AA64 )에는 영향을 미치지 않습니다.
편의를 위해 프로젝트는 EDK2 대신 GNU-EFI 라이브러리에 대해 편집 할 수 있으므로 다음과 같이 GIT 하위 모듈을 초기화해야 할 수도 있습니다.
git submodule update --init
Visual Studio Solution ( .sln )을 사용하는 경우 F5를 눌러 QEMU 에뮬레이터에서 응용 프로그램을 컴파일하고 시작하십시오.
GNU-EFI와 함께 GCC를 사용하는 경우 단순히 make 발행 할 수 있습니다.
필요한 경우 make ARCH=<arch> CROSS_COMPILE=<tuple> 과 같은 것을 발행 할 수 있습니다. 여기서 <arch> 는 ia32 , x64 , arm 또는 aa64 중 하나이며 튜플은 크로스 컴파일러 (예 : aarch64-linux-gnu- )를위한 것입니다.
qemu make 호출에 지정하여 QEMU를 통해 디버깅 할 수도 있습니다. 그러나 이것은 특별한 _DEBUG 모드를 켜고, 적절한 릴리스 바이너리를 생산하기 위해 qemu 호출하지 않고 제작을 실행해야한다는 점을 염두에 두십시오.
Windows에서 EDK2와 함께 VS2022를 사용하는 경우 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
Linux에서 EDK2와 함께 GCC를 사용하고 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
UEFI : NTFS 로더 (32 및 64 비트)의 X86 및 ARM 버전을 포함하는 즉시 사용 가능한 지방 파티션 이미지를 찾을 수 있습니다.
드라이브 끝에서 동일한 크기의 파티션을 만들고 uefi-ntfs.img (DD 모드)에서 복사하는 경우 해당 드라이브에서 첫 번째 NTFS 파티션을 만드는 데 필요한 모든 것을 갖추어야합니다.
Visual Studio 2022에서 ARM 또는 ARM64 컴파일 지원을 활성화하려면 설정 애플리케이션의 개별 구성 요소 화면으로 이동 하여 ARM/ARM64 도구가 기본 작업로드 화면에 나타나지 않으므로 도구를 선택해야합니다.