C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[27514] Re:Re:NTFS 지원 안되는 구형 UEFI 몌인보드에서 NTFS 지원
궁금 [] 782 읽음    2017-09-18 19:03
감사합니다
이해하는데 많은 도움되었는데요

그럼 32,64 용으로 둘다 만들어야 할거 같은데요
막상 EFI 코딩하려니 막막합니다
VC++ 헤더나 라이브러리 사용, 디버깅 등등
어떻게 시작해야 할지 막막 하네요.


빌더(TWx) 님이 쓰신 글 :
: 궁금 님이 쓰신 글 :
: : NTFS 지원 안되는 구형 UEFI 몌인보드에서 NTFS 지원 가능하도록
: : 바이오스 확장해주 는건 어떻게 만드는 건가요?
: : .EFI 파일 만들어서  한다고 하던데 방법이 궁금 합니다
:
:
:
: 답변:
:
:
: MS에서 배포하는 손안댄 순정 Windows OS 설치파일을 사용하면
: 메인보드가 UEFI 펌웨어에서 NTFS 파일시스템을 지원하든 안하든 상관 없습니다.
:
: 문제가 되는 경우는...
:
: 사용자가 OS 설치 이미지에서 /sources/ 디렉토리의 install.wim 파일을 수정해서
: 이미지 파일 안에 '프로페셔널/엔터프라이즈/서버 등 여러 OS 패키지를 병합하거나 디바이스 드라이버들 추가 등
: install.wim 파일을 커스텀화 해서 사용할 때 인데 (wim 파일구조나 병합 방법은 MSDN 참고하세요)
:
: OS 패키지가 여러 종류가 병합되다보면 install.wim 파일의 크기가 4GB가 넘는 경우가 생길 수 있고
: FAT32 파일시스템에선 액세스 할 수 있는 단일파일의 크기가 4GB로 제한 되어서, 메인보드 UEFI 펌웨어가
: NTFS 파일시스템을 지원하지 않고 FAT32 파일시스템만 지원하면 OS를 UEFI 모드로 설치 할 수 없게 되죠.
:
: 그러나 install.wim 파일이 4GB 크기를 넘더라도, MS에서 제공하는 툴을 이용해서 파일을 분할해주면 되기때문에
: 문제 될 건 없습니다. 분할 작업 없이 4GB 가 넘는 install.wim 파일을 사용할 수 있으려면 메인보드 UEFI 펌웨어에서
: NTFS 파일시스템을 지원하는 경우에만 OS를 UEFI 모드로 설치 할 수 있습니다.
:
: 메인보드 UEFI 펌웨어에서 NTFS 파일시스템을 지원하지 않을 때는, NTFS 파일시스템 UEFI 모듈을 만들어서
: UEFI 펌웨어에 바인딩 해 주면 됩니다.
:
:
: 확장자 .EFI를 갖는 EFI 모듈은 Windows PE 포맷을 이용합니다. PE 포맷을 확장해서 EFI 모듈정보를 추가로 사용하고 있습니다.
: EFI 모듈을 만드는 건, 리눅스에서 GCC를 이용할 수도 있고 Visual Studio C++ 컴파일러를 이용할 수 도 있습니다.
:
: 그러나 EFI 모듈이 PE포맷을 기반으로 하기 때문에, GCC를 이용하려면 벡엔드 변경이 필요해서 크로스 컴파일 환경을 셋업해야
: 합니다. Visual Studio C++ 컴파일러를 사용하는 게 훨씬 편합니다. 개발환경도 뛰어나고.
:
:
: <Visual C++ 을 이용해서 EFI 모듈 개발. VC++ 컴파일러는 EFI 모듈 빌드를 기본적으로 지원함>
:
:
: NTFS 파일시스템을 지원하지 않는 메인보드에서 NTFS 파일시스템을 지원하게 하는 방법은...
:
: UEFI용 NTFS 파일시스템 드라이버 모듈을 먼저 컴파일 해서 만들어 놓고...
: USB 디스크를 FAT32와 NTFS 파일시스템으로 2개의 파티션을 생성해서, NTFS.EFI 모듈을 로드해서 바인딩 해주는
: 코드를 구현한 bootx64.efi 만들어서 FAT32 파티션에 넣어주면 UEFI 펌웨어를 NTFS 파일시스템을 지원할 수 있도록
: 개념적으로 확장 할 수 있게 됩니다.
:
: 바인딩 역할을 하도록 사용자가 만든 bootx64.efi 에서 NTFS 파티션에 있는 원래의 OS 이미지로 부팅 과정이 넘어갈 수 있도록
: NTFS 파티션의 오리지날 bootx64.efi 로 실행을 넘기면 되죠.
:
: 정리하면...
:
: USB 디스크
:
: 1. FAT32 파티션
: /efi/boot/bootx64.efi (바인딩 역할을 하도록 만든 efi 모듈)
: /efi/boot/ntfs.efi (컴파일 한 ntfs efi filesystem driver 모듈)
:
: 메인보드의 UEFI 펌웨어가 64비트로 컴파일 되어 있으면
: UEFI펌웨어가 /efi/boot/ 디렉토리에서 bootx64.efi 파일명을 갖고있는 모듈을 로드하도록 되어 있음
: ntfs.efi 는 다른 디렉토리라도 상관없음. 사용자가 만든 bootx64.efi 에서 해당 디렉토리에서 ntfs.efi 모듈을 로드해서
: 바인딩 해주면 되므로.
:
: FAT32 파티션엔 사용자가 컴파일한 bootx64.efi와 ntfs.efi 파일, 두 개의 파일만 들어갈 정도로
: 파티션 크기를 작게 생성하면 됨.
:
:
: 2. NTFS 파티션
: iso 이미지를 마운트해서 OS 이미지를 카피해주면 됨.
: /boot
: /efi/boot/bootx64.efi (OS 오리지날 efi boot 모듈)
: /sources
: /support
: ....
:
: 위와 같이 런타임 바인딩을 이용해서 UEFI 펌웨어를 개념적으로 확장 할 수 있고...
:
: 아예 UEFI 펌웨어를 NTFS를 원래부터 지원하는 것 처럼 하려면
: UEFI 펌웨어의 플레쉬 메모리에 ntfs efi 모듈을 컴파일해서 라이트 하는 방법도 있습니다.
: UEFI 스펙에서 FV 라고, 플레쉬 메모리를 파일시스템 처럼 다룰 수 있도록 정의해 놓고 있기 때문인데.
: 이 방법을 쉽게 쓸 건 아니죠. 잘못 건드리면 펌웨어를 망가 뜨릴 수도 있으니.
:
: <NTFS 지원 안되는 UEFI 메인보드에서 NTFS EFI 모듈 바인딩>
:
:
:
: 메인보드의 UEFI 펌웨어가 64비트로 만들어져 있으면..
: OS도 UEFI 모드로 사용할 경우 64비트로 설치해야 하고, 32비트로 설치하는 건 불가능 하다고 말하는 사람들이 있는데
: 사실상 불가능한 건 아닙니다. 64비트 OS에서 32비트 코드를 사용할 수 있는 것 처럼...
: 64/32bit 간에 UEFI Thunk 레이어가 있으면 되는데 OS 벤더에서 필요성을 못 느껴서 안하고 있을 뿐 입니다.
: 시장이 64비트로 컴파일된 UEFI 펌웨어를 갖고있는 하드웨어로 이미 넘어가 있는 상태이므로.
:
:
빌더(TWx) [builder]   2017-10-08 20:16 X
VC++이 efi 모듈 컴파일 기능을 지원하지만, efi 모듈을 개발하기 위한 헤더파일 같은 환경 까지 지원하는 건 아니죠.
udk, edk 관련 자료 찾아보세요. efi specification 문서도 찾아 보시고. EFI 스펙을 사전에 스타디 하지 않으면 코드를 작성할 수 없어요.

메인보드의 UEFI 펌웨어가 64비트 만들어져 있으면 efi 모듈의 Start Entry는 64비트 롱모드로 동작하고
UEFI 펌웨어가 32비트로 만들어져 있으면 EFI 모듈은 32비트 프로텍티드 모드로 돟작합니다.

컴파일러가 제공하는 기본 라이브러리는 OS 디펜던트한 부분이라,사용할 수 없고
UEFI 펌웨어에서 specification 에 따라서 제공되는 인터페이스 API들만 사용해야 합니다. (인터페이스는 GUID로 노출)




빌더(TWx) [builder]   2017-10-08 20:24 X
그리고...
32비트 EFI 모듈은 따로 추가로 작성할 필요가 없습니다.

CPU 아키텍쳐가 64비트를 지원함에도 불구하고, 메인보드를 32비트로만 동작하게 설계해 놓은 경우가 있긴 한데...
이를테면 Atom CPU를 사용한 소형 테블릿 기종들.

64비트 하드웨어 구성조건을 만족하도록 메인보드 회로를 Full spec으로 구성하면 메인보드 생산단가가 올라가니까
단가를 줄이기 위해 보드 회로를 간단하게 구성해서 만들어진 경우가 그런 케이스 인데.
UEFI 펌웨어도 32비트로 컴파일 해 놓은 경우죠. 본인이 그런 디바이스를 쓴다면 모를까. 불필요한 겁니다.

+ -

관련 글 리스트
27512 NTFS 지원 안되는 구형 UEFI 몌인보드에서 NTFS 지원 궁금 747 2017-09-11
27513     Re:NTFS 지원 안되는 구형 UEFI 몌인보드에서 NTFS 지원 빌더(TWx) 1081 2017-09-14
27514         Re:Re:NTFS 지원 안되는 구형 UEFI 몌인보드에서 NTFS 지원 궁금 782 2017-09-18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.