了解的有關NVRAM的所有信息

什麼是NVRAM?

NVRAM在PC用戶中並不流行,但在Mac用戶中卻非常熟悉。NVRAM 是一種RAM,它在主機設備的電源關閉後會保留數據。(與RAM相反)。NVRAM用於存儲諸如亮度,音量,計算機名稱,查找我的Mac的ID等值。在Windows和Linux中,這些值不是存儲在NVRAM中,而是存儲在HDD上,因為大多數PC都沒有NVRAM。OS X利用NVRAM運行許多服務,例如iMessage,FaceTime,啟動設備等。

PC上的NVRAM

NVRAM和UEFI一樣,已經實現了許多新的PC型號,並且許多操作系統(例如Windows和Linux)也開始使用它。例如,處於UEFI模式的Windows使用NVRAM來檢查是否啟用了安全啟動。

但是,在PC領域,一切都無法順利進行。從舊版BIOS遷移到UEFI的開始,由於不穩定的NVRAM,許多PC受到嚴重損壞。值得注意的是,許多三星PC由於NVRAM寫入不佳而變得笨拙,其中CMOS復位是恢復它或更糟的唯一選擇,有時會損壞固件。其他OEM則開始謹慎處理,並且在新的BIOS更新中,如果暴露了任何可能的危險,他們可以關閉NVRAM。

如何測試NVRAM?

在OS X中打開終端,輸入:

sudo nvram MyVar = TestValue

然後鍵入以下內容以顯示當前的NVRAM:

nvram - p

你會看見:

MyVar的測試值   

重新啟動後,在終端中鍵入nvram –p,如果仍然可以看到先前的結果,則您的NVRAM正在運行

NVRAM和Hackintosh

1 /變色龍

由於該引導加載程序的實施受限,Chameleon在引導OS X之前不會保留所有系統的efi運行時,這意味著即使已啟用了本機NVRAM,NVRAM也將無法運行。

為了解決該問題,創建了模塊“ FileNVRAM”以模擬用於Chameleon的NVRAM。通過將NVRAM仿真模塊集成到OS X的內核,可以正常運行NVRAM所需的所有功能。該模塊將把nvram文件從磁盤中提前加載到內存中,以便Filenvram在OS X啟動和運行之前將其保存。它還將向OS X中插入一個kext。kext將處理OS X期望的NVRAM API。更改nvram時,此kext會執行舊版轉換,並將nvram寫入/Extra/nvramxxxxxxxxxxx.plist。

2 /三葉草UEFI

與Chameleon不同,Clover UEFI對UEFI系統更為透明,因此它將使用系統的本機NVRAM(如果存在)。

若要查看您是否具有本機NVRAM,請轉到/ EFI / Clover / Drivers64UEFI /並刪除EmuVariableUEFI-64.efi,然後重新啟動。請按照上面的NVRAM測試過程進行操作,如果該程序仍在運行,則說明您具有本機NVRAM支持,並且不需要使用EmuVariableUEFI-64.efi;如果沒有,則放回EmuVariableUEFI-64.efi以使用NVRAM。

EmuVariableUEFI-64.efi的工作原理是從HFS + / FAT32分區加載最新nvram.plist和模擬為OS X NVRAM但此驅動程序不能保存到NVRAM的nvram.plist。因此,我們需要一些解決方案來在關機時保存nvram.plist。

安裝RC腳本

您可以通過在Clover <= 2711中選擇“將RC腳本安裝到目標分區”來安裝它

這就是三葉草安裝程序保存NVRAM的方式(直到三葉草2711)。它利用OS X的功能,在啟動時加載/etc/rc.local,在關閉時加載/etc/rc.shutdown.local,Clover Installer添加了執行腳本,以將日誌文件保存到rc.local中,並將nvram.plist保存到rc中。 .shutdown.local。

事實是,RC腳本自Leopard(10.5)以來就已被棄用,但由於某些原因,它仍然可以保留到Mavericks(10.9)。不幸的是,它已經在優勝美地(10.10)中完全消失,因此由於nvram.plist保存腳本在關閉時不會運行,因此在舊安裝程序中使用RC腳本的Clover用戶現在將無法保留NVRAM。

使用LoginHook / LogoutHook

要臨時替換RC腳本,某些用戶使用LoginHook / LogoutHook替換rc.local / rc.shutdown.local。登錄時將運行LoginHook命令,而註銷時將運行LogoutHook。這種方法仍然存在一些問題。這些腳本僅在登錄/註銷時運行,而不會啟動/關閉。從Tiger(10.4)開始不推薦使用此方法,因此完全消失將是一個時間問題。

点赞
Share