답변

답변

(U)EFI 확인 방법개정내 노트북(또는 사양 버전)

참고: 노트북/마더보드 제조업체에서 제공하는 EFI/BIOS 버전을 언급하는 것이 아닙니다.

답변1

머리말

귀하의 질문에 사용된 언어를 가능한 한 정확하게 설명하려는 귀하의 시도를 확인하고 감사드립니다!UEFI1 사양그리고 그 이전의 것들은EFI²본질적으로 복잡하고 다소 혼란스럽습니다.

가능한 한 많은 혼란을 없애기 위해 먼저 원래 EFI 플랫폼(Intel에서 단독으로 개발하고 홍보하며 버전 번호는 "1"로 시작)과 버전 제한 간의 전환을 표시하는 이벤트와 문서에 주목하겠습니다. . UEFI의 후속 제품은 UEFI입니다. 이는 Intel의 대규모 이해관계자 그룹의 작업이며 UEFI 포럼으로 조직되었습니다(해당 작업은 "2"로 시작하는 버전 번호로 구별됩니다). 이것들은UEFI 포럼이 공식적으로 설립되었습니다.2005년 7월 25일에 그들은 이후 첫 번째 논문을 발표했습니다 .UEFI 사양(v2.00)2006년 1월 31 일 원래 UEFI 사양의 기초입니다. 인텔의 궁극기인가?EFI 사양, v1.102002년 12월 1일 부터 .

답변

장치 UEFI 펌웨어의 특정 버전에 대한 "Hoyle에 따른" 명확한 정보를 얻으려면 UEFI 셸로 부팅한 다음 ver옵션 과 함께 명령을 실행하는 것이 이상적인 장소입니다 -terse. 이는 ver혼란스러울 수 있는 이 명령만 사용하여 생성된 다른 모든 상황별 요소를 제외하고 펌웨어의 명확한 UEFI 버전을 편리하게 출력합니다 . 다음은 항상 초기 명령 프롬프트 앞에 나오는 장치 중 하나의 출력 예와 명령을 호출할 때 예상되는 내용입니다 ver -terse.

  UEFI Interactive Shell v2.0
  Build 8192. Copyright 2008 by Intel(R) Corporation.
  UEFI v2.10 Firmware (Phoenix Technologies Ltd., 0x01014318)

Shell> ver -terse
  2.10

ver마찬가지로 -s옵션과 함께 명령을 사용하여(이는 의미함) 쉘 바이너리의 버전을 알 수 있습니다 -terse. 두 버전이 다르고 계속 진행하기 위해 쉘 버전이 펌웨어 버전과 일치하거나 같거나 클 필요가 없기 때문입니다. 달리기 . 이전 버전과의 호환성을 위해 많은 초기 셸이 존재하며 사용 가능한 기능의 하위 집합이 있더라도 최신 펌웨어에서 실행할 수 있습니다. EFI 시대의 초기 셸은 UEFI 장치에서 성공적으로 실행되는 경우가 거의 없다는 점에 유의하는 것이 중요합니다.

Shell> ver -s
  2.00

두 값 모두 셸 초기화 출력의 일부라는 점을 눈치챘을 것입니다. 실제로 이것은 의도적으로 설계된 것입니다. UEFI 셸은 ver시작 시 명령의 전체 "자세한" 출력을 자동으로 인쇄합니다. 대부분의 경우 명령을 전혀 실행할 필요가 없지만 셸로 부팅하고 해당 출력을 읽은 다음 재부팅하여 사용합니다. 첫 번째 세션UEFI 셸 사양 v2.0이 헤더는 명령에 의해 출력되는 정보의 레이아웃을 위해 도입되었으며 ver15년 후 이 글을 쓰는 시점에도 변경되지 않았습니다.

UEFI <support-level> Shell v%uefishellversion%
<shell-supplier-specific-data>
UEFI v%uefiversion% (<fw-vendor>, 0x<fw-vendor-ver as 32b hex value> <opt. add'l. info>)

보시다시피, 쉘 버전은 첫 번째 줄의 마지막 데이터여야 하며, 펌웨어 버전은 첫 번째 쉘 프롬프트가 표시되기 전에 인쇄된 세 번째이자 마지막 줄의 두 번째 데이터여야 합니다. 또한 위 헤더의 변수 이름은 모든 UEFI 인스턴스에 존재하는 표준화된 읽기 전용 환경 변수이며 대부분의 다른 셸에서처럼 참조될 수도 있습니다. 이는 버전 정보를 검색하는 또 다른 방법이며 UEFI 셸의 필요성을 완전히 우회하는 방법으로 부팅 시 자동으로 실행되도록 설정한 스크립트의 기초가 될 수도 있습니다.

fs0:\> echo %uefiversion%
  2.10

fs0:\> echo %uefishellversion%
  2.00

부팅 가능한 UEFI 셸 구매

여기에서 멈출 수도 있지만 가장 널리 사용되는 시스템에서 UEFI 셸에 쉽게 액세스할 수 있는 공급업체가 거의 없다는 점을 고려하여 UEFI 셸이 포함된 부팅 가능한 저장 매체를 만드는 기본 사항을 검토해 보겠습니다. 그런 다음 일회성 부팅 메뉴에서 해당 저장 장치를 선택하여 사용할 수 있습니다. 대부분의 펌웨어는 시스템 전원을 처음 켠 후 몇 초 이내에 사용할 수 있습니다(일반적으로 해당 초 동안 높은 숫자의 기능 키 중 하나를 눌러 액세스합니다). , 예를 들어 F10, F11또는 F12에 매핑되는 것을 본 적이 있지만 Esc가끔은 F2).

물론 원할 경우 셸 바이너리를 저장하는 장치를 수동으로 파티션하고 포맷할 수 있지만 소프트웨어 유틸리티를 사용하여 해당 부분을 처리하려는 사용자를 위해 몇 가지 제안 사항이 있습니다.

도구를 설치하고 비어 있거나 지울 수 있는 저장 장치를 준비한 후에는 이를 사용할 UEFI 셸 복사본이 필요합니다. 일부 옵션은 다음과 같습니다:

  • UEFI 셸 ISO 이미지
    • Rufus 유틸리티 개발자는 UEFI 셸을 사용하여 가장 일반적인 아키텍처에 대해 매우 안정적인 ISO 이미지를 생성합니다. 위에서 언급한 도구를 사용하여 플래시하거나 구울 수 있는 올인원 ISO입니다. 이것은 사용하기 가장 쉬운 소스이며 모든 사람에게 권장됩니다.
  • TianoCore EDK2 안정 버전
    • 이는 대부분의 일반적인 UEFI 펌웨어 개발이 이루어지는 공식 오픈 소스 프로젝트이며 정기적으로 사전 빌드된 바이너리로 안정적인 릴리스를 표시합니다. 이 ShellBinPkg.zip파일에는 완전한 UEFI 셸과 다양한 아키텍처용으로 구축된 최소한의 구현이 포함되어 있습니다. 고급 사용자에게 권장됩니다.
  • 오픈코어 부트로더
    • 이는 다양한 펌웨어와 상호 작용하기 위한 UEFI 셸 및 기타 다양한 유틸리티를 포함하는 오픈 소스 부트로더입니다. <arch>\EFI\OC\Tools\OpenShell.efi다운로드 가능한 릴리스 아카이브에서 찾을 수 있습니다 .

ISO 또는 기본 .efi바이너리 실행 파일을 사용하는지 여부에 따라 ISO를 저장 매체의 예상 콘텐츠로 유틸리티 소프트웨어에 제공하거나 유틸리티를 사용하여 빈 부팅 가능한 장치를 만든 다음 파일을 복사할 수 있습니다 .efi. EFIEFI 시스템 파티션의 파일 시스템에 생성된 장치 폴더에 있습니다. 마지막으로, 부팅 가능한 미디어가 시스템에 연결된 상태에서 재부팅을 실행하고 일회성 부팅 메뉴에 들어가서 셸이 있는 장치를 선택하면 셸에 직접 드롭되고 명령 프롬프트가 완료되어 가져올 준비가 됩니다. 귀하의 질문에 대한 답변.


용어집 및 각주

^맞잡다 두번째확장 가능에프펌웨어상호 작용

²두번째확장 가능에프펌웨어상호 작용

입방체이전 버전과의 호환성에 대한 참고 사항:이는 많은 제조업체가 펌웨어 패키지나 지원 웹 사이트에 UEFI 셸 실행 파일을 포함하지 않거나 포함하더라도 공개하기 어렵기 때문에 타사에서 UEFI 셸 실행 파일을 얻어야 하는 경우가 많기 때문에 특별히 언급됩니다. 다운로드하여 사용하세요. 이 작업을 수행해야 하는 경우 펌웨어의 이전/의도된 버전과 정확히 일치하는 쉘을 찾는 대신 신뢰할 수 있는 소스에서 쉘을 찾는 데 주로 시작할 쉘 검색에 집중할 수 있습니다. 실제로 위에 표시된 모든 예제 출력에 대해 (의도적으로) 상당히 오래된 셸(UEFI v2.00의 최종 개정판이 출시된 직후인 2008년에 컴파일됨)이 c로 만든 최신 장치에서 실행되고 있음을 알 수 있습니다. 2022년 UEFI v2.10 펌웨어로 출시됩니다. 답변 끝에 일부 쉘 소스에 대한 링크를 제공했지만,이 글을 쓰는 시점에서 신뢰할 수 있고 사용 가능한 것으로 간주되지만 계속 사용 가능하다고 가정하거나 해당 주제에 대한 나의 이해가 보안 문제로 이어질 것이라고 가정해서는 안 됩니다. 그런 상황.

관련 정보