2014-04-22 1 views
0

EFI 셸에서 AHCI를 통해 SATA 드라이브에 액세스 (읽기/쓰기)하려면이 용도로 사용되는 읽기/쓰기 인터페이스가 있습니까?eHi 쉘에서 AHCI를 통해 SATA 드라이브에 직접 액세스 하시겠습니까?

즉, EFI 셸 응용 프로그램이 드라이브에 액세스하려면 AHCI 사양을 구현해야합니까?

또는 응용 프로그램이 단지 특정 호출 (Windows의 SCSI_PATH_THROUGH 같은) 인터페이스와 "EFI의 AHCI 드라이버", "읽기/쓰기"(... 명령 완료 명령, 문제 명령을 구축하고 처리)는 이들에 변환 낮은 수준의 액세스 루틴?

+0

나는이 질문을 이해하지 못한다. 당신은 당신이 실제로하려고하는 것을 설명하려고 할 수 있습니까? – unixsmurf

+0

먼저 AHCI를 통해 SATA 드라이브에 액세스 할 수있는 EFI 셸 응용 프로그램을 작성하려고합니다. (DOS 모드에서이 작업을 완료하기 위해 ahci 사양을 따랐습니다.이 응용 프로그램을 구현하려면 명령 헤더, 명령 테이블 및 해당 PRD 항목을 작성한 다음 제출해야합니다. !) 두 번째로, 내가 알았던 (?) efi 셸에는 efi 드라이버가있다. 따라서 efi 셸에서 동일한 응용 프로그램을 개발하려는 경우 동일한 방법을 사용해야합니까, 아니면 높은 수준의 읽기/쓰기 인터페이스 (efi 드라이버에서 제공됨)를 호출해야합니까? – liaoo

답변

1

UEFI에서 SATA 드라이브에 사용할 수있는 드라이버가 있고 액세스하려는 파일 시스템이 지원되는 경우 파일 읽기/쓰기 작업은 간단한 (ish) 프로토콜 호출로 수행됩니다.

내가 생각할 수있는 가장 좋은 예는 Linux 커널 스텁 로더 (Linux 커널을 자체적으로로드 할 수있는 EFI 응용 프로그램으로 변환)입니다. 이전 코드에서 버그가 있었기 때문에 현재 3.15 rc 이상을 사용해야합니다. https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/drivers/firmware/efi/efi-stub-helper.c?id=refs/tags/v3.15-rc5은 파일 시스템 액세스를 위해 https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/arch/x86/boot/compressed/eboot.c?id=refs/tags/v3.15-rc5에 정의 된 함수를 사용합니다.

또는 응용 프로그램은 GRUB과 유사하게 처리 할 수 ​​있으며 원시 블록 장치 액세스에 대한 방법을 사용하여 응용 프로그램이 UEFI 자체에서 지원하지 않는 파일 시스템에 액세스 할 수있게합니다.

또한 일부 응용 프로그램 (예 : rEFInd)은 런타임에 프로토콜 (rEFInd 설치와 함께 제공)을로드하여 UEFI에서 추가 파일 시스템 지원을 가능하게합니다.

관련 문제