web-dev-qa-db-ja.com

Linux-efivarをefivarで変更する

MacBook Air 2018ハードウェアにシングルブートKali Linuxインストールがあります。

すべてを機能させるためにいくつかの問題を解決した後、私はこれで困っています:

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

私はApple docsで見つけました、ターミナルから実行しているサウンドを変更することが可能であること

Sudo nvram SystemAudioVolume=%80

ただし、nvramコマンドはLinuxでは使用できません。ただし、nvramtoolという別のプログラムがあります。

nvramtoolの説明を読むと、すべてのコアブートパラメータnvramtool -aを実行することができますが、コマンドの出力は次のようになります。

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

そのため、少し調べたところ、EFI変数の変更を許可するefivarというプログラムを見つけました。

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の電源を入れ、キーを挿入して、 altTerminal.appのインスタンスを取得できる場所からインストールプロセスに入ることができるので、そこからnvramを実行してみることができます。しかし、私は、Apple docsから示唆されているように、管理者権限が必要であると思います。
実行しようとしています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。
タグを作成できませんefivar原因は300未満です。しかし、それは追加されるべきだと思います。

4

この記事によると、 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
1
rage