是否有命令或方法(RTFM 除外)來確定係統是否具有 UEFI BIOS?
我提出這個問題的靈感是Ask Ubuntu上的另一個問題。
我問的一個原因是我只是好奇。我想更多地了解它在未來可能具有的價值。
但我也想知道,這樣我就有一個程序,當我想知道
WTF
他們和他們的系統是否會啟動時,我可以要求使用者執行。;-)最初我想知道是否可以通過諸如(或類似)之類的工具檢測和報告此資訊
dmidecode
。但是當 aUEFI BIOS
模擬 a時會發生什麼pre-UEFI BIOS
?我預計隨著時間的推移,這個問題只會變得更有趣。似乎每個主要作業系統背後的公司都會堅持
EFI
通過做“相同的事情只有不同的事情”來實施支持。<sigh/>
系統可以具有 UEFI 韌體,並且仍以傳統 BIOS 模式啟動作業系統。在這種情況下,啟動的作業系統無法確定硬體是否真正支持 UEFI,因為 BIOS 與 UEFI 不兼容。
如果有任何與 UEFI 相關的內容,您仍然可以查看韌體介面,但這是特定於供應商且不一致的。所以那邊也沒有明確的答案。
證明您的 x86(_64) 核心的規範方法是從 UEFI 引導的:
$ dmesg | grep 'EFI v' [ 0.000000] efi: EFI v2.31 by EDK II
核心將在EFI 引導的主入口點列印此類消息。當且僅當此類消息存在時,核心才會使用 UEFI 引導。
其他資訊:
$ dmesg | grep 'efi: mem' [ 0.000000] efi: mem00: type=7, attr=0xf, range=[0x0000000000000000-0x00000000000a0000) (0MB) ...
這是從 EFI 韌體傳遞到核心的記憶體映射。
$ ls -F /sys/firmware/efi efivars/ systab vars/
這些是與 EFI 相關的核心 ABI。
efivars
(3.8+) 並且vars
是 EFI NVRAM 的核心 ABI,因此您可以使用它們更改引導選項。但缺乏這些線索並不能證明系統只是 BIOS。
根據經驗,最近的筆記型電腦都有 UEFI 韌體。最新的伺服器正在遷移到 UEFI 韌體。
編輯:rEFInd 的作者有更徹底的解釋。步驟是一樣的。
此外,來自 Ubuntu 的韌體測試套件可能會檢測您的 UEFI 韌體是否具有與舊版 BIOS 的兼容性功能。雖然它不能解決在 BIOS 模式下檢測支持 UEFI 的韌體啟動的問題。