시스템이 EFI / UEFI 또는 BIOS로 부팅되었는지 어떻게 알 수 있습니까?


답변:



16

더 이상 사용되지 않음

아래의 답변은 항상 작동하지 않을 수있는 방법입니다.
대신 사용 콜린의 답변을 기반으로 /sys/firmware/efi.


시스템이 EFI로 부팅되었는지 (또는 어떤 경우에는 BIOS 여야 하는지) 쉽게 알 수 있습니다.

그냥 사용 dmesg | grep "EFI v"

  • 시스템이 EFI로 부팅 된 경우 다음과 같은 행을 반환합니다.

    [0.000000] American Megatrends의 EFI v2.00
  • 그렇지 않은 경우 아무것도 반환하지 않으면 BIOS에서 부팅됩니다.

grep의 종료 코드를 기반으로 한 bash 스크립트 사용법의 예 :

...
dmesg | grep -q "EFI v"# -q grep에게 아무것도 출력하지 않도록 지시
만약 [$? -eq 0] # 종료 코드를 확인하십시오. 0 EFI이면 BIOS
그때
    echo "EFI 부팅을 사용하고 있습니다."
  그밖에
    echo "BIOS 부팅을 사용하고 있습니다"
fi
...

출처 : EFI 시스템이 레거시 -BIOS 에뮬레이션을 사용하는지 여부를 확인하는 방법과 여러 EFI 공급 업체 / 버전의 문자열과 함께 EFI 및 EFI 호환성 테스트에 대한 자세한 정보는 이 페이지 를 참조 하십시오. 정확한 우분투 개발자 서밋 .


2
나는 그것을 단순화 할 것이다 if dmesg | grep -Fq "EFI v"; then .... [성공 / 실패 여부를 테스트하기 위해 명령 을 실행할 필요도 없습니다 . $?주로 특정 오류를 확인하는 데 유용합니다.
geirha

3
검색된 문자열이 원하는 기능에 의해 생성된다는 보장이 없으므로 취하기 어렵습니다.
Thorbjørn Ravn Andersen

1
@izx, 모든 스크립트는 "EFI v"를 다른 것의 일부로 쓸 수 있습니다. BIOS 시스템에서 발생하면 오 탐지입니다.
Thorbjørn Ravn Andersen 1

2
커널 로그에서 텍스트를 grep하지 않는 것이 좋으며 변경 될 수 있습니다. 가장 좋은 것은 / sys / firmware / efi
Colin Ian King

1
그러나 이것이 EFI 버전을 얻는 좋은 방법이라고 언급하고 싶습니다!
오메가

0

UEFI 또는 ROM BIOS로 시스템이 부팅되는지 확인하는 Python 코드 :

os, sys 가져 오기
데프 메인 () :
    if (os.path.exists ( "/ sys / firmware / efi")) :
        print "\ n \ n 시스템이 uefi로 부팅되었습니다!"
    그밖에:
        print "\ n \ n rom bios로 시스템을 부팅했습니다"
본관()
sys.exit (0)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.