Linux - efivar를 사용하여 efi var 수정

Linux - efivar를 사용하여 efi var 수정

MacBook Air 2018 하드웨어에 단일 부팅 Kali Linux를 설치했습니다.

모든 것이 제대로 작동하도록 몇 가지 문제를 해결한 후 문제가 발생했습니다.

부팅하기 전에 시작음을 비활성화하려고 합니다. 전형적인 맥북 사운드.

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.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

이 값을 수정하는 방법을 알고 있나요? (가능하다면)

추신.
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

관련 정보