मैं कैसे बता सकता हूं कि मेरा सिस्टम EFI / UEFI या BIOS के रूप में बूट किया गया था?


120

मैं यह कैसे निर्धारित करूं कि क्या कोई विशेष चल रहा उबंटू सिस्टम EFI / UEFI, या BIOS का उपयोग करके बूट किया गया था?


दिलचस्प सवाल। एक सटीक डूप नहीं है, लेकिन एक समान प्रश्न के लिए यहां उत्तर का प्रयास करें ।
टॉम ब्रॉसमैन

जवाबों:


133

यह देखने का सबसे आसान तरीका है कि क्या /sys/firmware/efiमौजूद है या नहीं। यदि आप पारंपरिक BIOS का उपयोग करके बूट करते हैं तो यह प्रकट नहीं होता है।

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

QEMU 2.0.0, OVFM और Ubuntu 14.04 पर परीक्षण किया गया: github.com/cirosantilli/runlinux/tree/…
Ciro Santilli 新疆 U U U

उबंटू 16.04, और फेडोरा 24
geek1011

16

पदावनत

नीचे दिया गया उत्तर एक विधि है जो हमेशा काम नहीं कर सकती है।
इसके बजाय का उपयोग कॉलिन के जवाब के आधार पर /sys/firmware/efi


यह बताना बहुत आसान है कि क्या कोई सिस्टम EFI में बूट किया गया था (या नहीं, किस स्थिति में इसे BIOS होना चाहिए):

महज प्रयोग करें dmesg | grep "EFI v"

  • यह इस तरह से एक लाइन लौटाएगा, यदि सिस्टम EFI से बूट किया गया था:

    [[००००००] अमेरिकी मेगेट्रेंड्स द्वारा ईएफआई v2.00
  • या कुछ भी नहीं लौटाएं अगर यह नहीं था, तो यह किस स्थिति में BIOS से बूट किया गया था

Grep के निकास कोड के आधार पर बैश स्क्रिप्ट के उपयोग का उदाहरण :

...
dmesg | grep -q "EFI v" # -q, grep को आउटपुट कुछ भी नहीं बताता है
अगर [$? -एक ०] # चेक एग्ज़िट कोड; यदि 0 ईएफआई, अन्य BIOS
फिर
    इको "आप ईएफआई बूट का उपयोग कर रहे हैं।"
  अन्य
    गूंज "आप BIOS बूट का उपयोग कर रहे हैं"
फाई
...

स्रोत: यह निर्धारित करने के लिए कि कोई ईएफआई प्रणाली विरासत-BIOS एमुलेशन का उपयोग कर रही है या नहीं, साथ ही साथ ईएफआई और ईएफआई संगतता के लिए परीक्षण पर अधिक जानकारी के साथ-साथ कई ईएफआई विक्रेताओं / संस्करणों के लिए, कृपया इस पृष्ठ को देखें सटीक के लिए Ubuntu डेवलपर शिखर सम्मेलन


2
मुझे लगता है कि सरल होगा if dmesg | grep -Fq "EFI v"; then ...[इसके अतिरिक्त कमांड चलाने का कोई मतलब नहीं है , बस सफलता / असफलता के लिए परीक्षण करना है। $?विशिष्ट त्रुटियों के लिए जाँच के लिए मुख्य रूप से उपयोगी है।
गीरा

3
यह भंगुर है, क्योंकि इसमें कोई गारंटी नहीं है कि वांछित विशेषता द्वारा उत्पन्न स्ट्रिंग की खोज की गई है।
थोरबजोरन रेव एंडरसन

1
@izx, किसी भी स्क्रिप्ट को "EFI v" को किसी और चीज के हिस्से के रूप में लिखने के लिए हो सकता है। यदि यह एक BIOS मशीन पर होता है, तो यह गलत सकारात्मक होगा।
थोरबजोरन रावन एंडरसन

2
कर्नेल लॉग में पाठ के लिए श्रेष्ठ नहीं, यह परिवर्तन के अधीन है। सर्वश्रेष्ठ देखने के लिए / sys / फर्मवेयर / efi
कॉलिन इयान किंग

1
मैं यह उल्लेख करना चाहूंगा कि यह EFI संस्करण प्राप्त करने का एक शानदार तरीका है!
ओमेगा

0

सिस्टम में UEFI या ROM BIOS के साथ बूट होने की जाँच करने के लिए पायथन कोड:

आयात os, sys
def मुख्य ():
    अगर (os.path.exists ( "/ sys / फर्मवेयर / EFI")):
        प्रिंट "\ n \ n सिस्टम uefi के साथ बूट किया गया है!"
    अन्य:
        प्रिंट "\ n \ n सिस्टम को बायोस के साथ बूट किया गया है"
मुख्य()
sys.exit (0)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.