如何知道我的系统是作为EFI / UEFI还是BIOS启动的?


Answers:



16

不推荐使用

下面的答案是一种可能并不总是有效的方法。
而是使用基于的Colin答案/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引导。”
  其他
    回声“您正在使用BIOS引导”
科幻
...

资料来源:如何确定是否EFI系统使用的是旧式BIOS仿真与否,以及对测试EFI和EFI兼容性的详细信息与字符串一批电喷供应商/版本一起,请参阅此页Ubuntu精确开发者峰会


2
我将其简化为if dmesg | grep -Fq "EFI v"; then ...[另外,仅运行测试命令是否成功就没有意义。$?主要用于检查特定错误。
geirha

3
这很脆弱,因为不能保证搜索的字符串是由所需功能生成的。
托尔比约恩Ravn的安徒生

1
@izx,任何脚本都可能写“ EFI v”作为其他内容的一部分。如果在BIOS计算机上发生这种情况,那将是误报。
托尔比约恩Ravn的安徒生

2
最好不要在内核日志中使用grep获取文本,这可能会发生更改。最好看一下/ sys / firmware / efi
Colin Ian King

1
我想提一下,这是获得EFI版本的好方法!
欧米茄

0

用于检查系统是否使用UEFI或ROM BIOS引导的Python代码:

导入操作系统
def main():
    if(os.path.exists(“ / sys / firmware / efi”)):
        打印“ \ n \ n系统已由uefi引导!
    其他:
        打印“ \ n \ n使用rom bios启动系统”
主要()
sys.exit(0)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.