システムがEFI / UEFIまたはBIOSとして起動したかどうかを確認するにはどうすればよいですか?


120

特定の実行中のUbuntuシステムがEFI / UEFIまたはBIOSを使用して起動されたかどうかを確認するにはどうすればよいですか?


興味深い質問。正確なduではありませんが、同様の質問に対する回答をここで試してください。
トム・ブロスマン

回答:


133

最も簡単な方法は、/sys/firmware/efi存在するかどうかを確認することです。従来のBIOSを使用して起動した場合は表示されません。

#!/bin/bash
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS


Ubuntu 16.04およびFedora 24で動作します
geek1011

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に何も出力しないように指示する
if [$?-eq 0]#終了コードを確認します。0 EFIの場合、BIOS
それから
    echo "EFIブートを使用しています。"
  他に
    echo "BIOSブートを使用しています"
fi
...

出典:EFIシステムがレガシーBIOSエミュレーションを使用しているかどうかを判断する方法、およびEFIとEFIの互換性のテストに関する詳細、および多くのEFIベンダー/バージョンの文字列については、次のページを参照してください。 Ubuntu Developer Summit for Precise


2
私はそれを簡素化しif dmesg | grep -Fq "EFI v"; then ...ます。[成功/失敗をテストするためだけに、コマンドを追加で実行しても意味がありません。$?主に特定のエラーをチェックするのに役立ちます。
ガイラ

3
検索された文字列が目的の機能によって生成される保証がないため、これは脆弱です。
トールビョーンラヴンアンデルセン

1
@izx、他の何かの一部として「EFI v」を記述するスクリプトが起こることがあります。これがBIOSマシンで発生した場合、これは誤検知になります。
トールビョーンラヴンアンデルセン

2
カーネルログのテキストをgrepしないことをお勧めします。変更される可能性があります。/ sys / firmware / efiを見るのがベスト
コリンイアンキング

1
ただし、これはEFIバージョンを取得するのに最適な方法です。
オメガ

0

システムがUEFIまたはROM BIOSで起動されているかどうかを確認するPythonコード:

os、sysのインポート
def main():
    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.