Linux - efivarを使用してefi varを修正する

Linux - efivarを使用してefi varを修正する

MacBook Air 2018ハードウェアにシングルブートKali Linuxをインストールしました。

すべてが正常に動作するようにいくつかの問題を解決した後、問題が発生しました。

起動する前に開始音を無効にしようとしています。典型的なMacBookサウンド。

Appleのドキュメントで端末で実行されるサウンドを変更できることがわかりました。

sudo nvram SystemAudioVolume=%80

ただし、nvramLinuxではこのコマンドを使用できませんがnvramtool

manを読み取ると、nvramtoolすべてのcorebootパラメータを実行できますが、nvramtool -aコマンドの出力は次のようになります。

nvramtool: coreboot table not found. coreboot does not appear to be
installed on this system.

そこで、いくつかの調査の終わりにefivarEFI変数を変更できるプログラムを見つけました。

入力すると、efivar -l | grep -i SystemAudioVolumeApple()が表す変数が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の電源を入れてキーを挿入して「altcan I」を押し続けると、インストールプロセスが開始されます。そこからインスタンスを取得して実行してみることができますTerminal.appnvramしかし、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度だったのですが、追加する必要があると思います。

答え1

この記事によると、Linux で MacBook 起動サウンドを無効にする

一部のインターネットソースでは、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

関連情報