Linux - 使用 efivar 修改 efi var
我在 MacBook Air 2018 硬體上安裝了單啟動 Kali Linux。
在解決了一些問題以使所有工作正常後,我遇到了麻煩:
我正在嘗試在啟動前禁用啟動聲音。MacBook 的典型聲音。
我在 Apple 文件上發現可以修改從終端執行的聲音
sudo nvram SystemAudioVolume=%80
但
nvram
命令在 Linux 上不可用;但是,還有另一個名為nvramtool
.閱讀man of
nvramtool
it’s possible to get all coreboot parameters runningnvramtool -a
,但命令的輸出是:nvramtool: coreboot table not found. coreboot does not appear to be installed on this system.
因此,經過一番調查後,我發現了一個名為
efivar
允許修改 EFI 變數的程序。鍵入
efivar -l | grep -i SystemAudioVolume
我得到由 Apple (SystemAudioVolume
) 指示的變數,該值具有以下值:7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume
現在打字,
efivar --print --name 7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume
我得到這種輸出:
GUID: 7c436110-ab2a-4bbb-a880-fe41995c9f82 Name: "SystemAudioVolume" Attributes: Non-Volatile Boot Service Access Runtime Service Access Value: 00000000 69 |i |
編輯
我嘗試創建 macOS Mojave 的可啟動 USB 密鑰。
打開Mac,插入鑰匙並按住
alt
我可以進入安裝過程,從那裡我可以獲得一個實例,Terminal.app
這樣我就可以嘗試nvram
從那裡執行。但我認為,正如 Apple 文件所建議的那樣,需要管理員權限。嘗試執行
nvram -p
我得到所有變數的列表,執行nvram -p | grep -i SystemAudioVolume
我得到
7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume=i
輸入
nvram SystemAudioVolume=%80
並重新執行nvram -p | grep -i SystemAudioVolume
我得到
7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume=%80
但是重新啟動後聲音仍然存在並在安裝過程中返回執行
nvram -p | grep -i SystemAudioVolume
我再次得到
7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume=i
你知道如何修改值嗎?(如果可能的話)
PS。
我無法創建 TAG,***
efivar
***因為我不到 300。但我認為應該添加它。
根據這篇文章,在 Linux 中禁用 MacBook 啟動聲音,
一些 Internet 來源表明,從 Linux 寫入 EFI 變數有時可能會損壞您的 Apple 韌體。我沒有進一步研究這個。如果你碰巧知道如何在 Linux 下成功寫入這些變數,請在評論中告訴大家(如果 OS X 恢復模式失去,你知道的)。
他們的解決方案是
nvram
通過以下命令簡單地使用禁用聲音:nvram SystemAudioVolume=%00
Cmd
他們還使用恢復模式通過按住++來做到這Option
一點R
。另一種選擇是簡單地使用 寫入變數
printf
,這是部落格評論中討論的一種方法。注意:此方法有潛在危險,建議先使用前一種方法。
# Ensure efivars are mounted mount | grep efivars efivarfs on /sys/firmware/efi/efivars type efivarfs (rw,relatime) # Remove immutable bit, allows modification chattr -i /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82 # Set volume to 00 printf "\x07\x00\x00\x00\x00" > /sys/firmware/efi/efivars/SystemAudioVolume-7c436110-ab2a-4bbb-a880-fe41995c9f82 # Display new value efivar -n 7c436110-ab2a-4bbb-a880-fe41995c9f82-SystemAudioVolume -p GUID: 7c436110-ab2a-4bbb-a880-fe41995c9f82 Name: "SystemAudioVolume" Attributes: Non-Volatile Boot Service Access Runtime Service Access Value: 00000000 00