내 노트북에는 디스플레이 어댑터가 있고 Windows 10에서는 볼 수 있습니다.BIOS 장치 이름에서..
장치 관리자 > 디스플레이 어댑터 > 속성 > 세부 정보 > "BIOS 장치 이름"
거기에서 다음과 같은 팝업이 표시됩니다.\_SB.PCI0.GFX0
동일한 노트북이 Linux를 실행하는 경우 해당 정보를 어떻게 얻을 수 있나요?
건배
고쳐 쓰다
Hackintosh를 구축 중이고 디스플레이 백라이트 수정을 생성하기 위해 SSDT를 구축해야 하기 때문에 이 정보가 필요합니다. 난 도와주고 싶어요Opencore project
그리고 (지금은) Linux에서 이를 수행할 수 있는 방법을 제공합니다.유일한 방법네, Windows로 전환해서 사용하세요Device Manager
시도했지만 dmidecode
Windows 에서 제공하고 SSDT를 만드는 데 필요한 형식을 lspci
제공하지 않았습니다 .BIOS device name
나는 노력했다acpidump
더 가까워졌지만 디컴파일된 출력에는 디스어셈블리 오류가 있습니다. 여기에는 내가 찾고 있는 문자열이 포함되어 있지만 \_SB.PCI0.GFX0
해당 파일을 읽고 이를 내 특정 디스플레이 어댑터와 연결하는 스크립트를 만드는 방법을 모르겠습니다. 예를 들어: Intel(R) HD Graphics 4000
.
acpidump
다음은 시스템에서 텍스트 파일로 ACPI 테이블을 덤프하기 위해 지금까지 시도한 명령입니다 .
sudo acpidump -o acpidump.out
acpidump 출력에서 이진 ACPI 테이블 추출
acpixtract -a acpidump.out
현재 7개의 ssdt*.data 파일이 있습니다. ssdt1.dat의 바이너리 테이블을 휴먼 소스 코드로 분해했습니다.
iasl -d ssdt1.dat
이렇게 하면 1000개가 넘는 줄 중 처음 60줄에 불과한 매우 큰 .dsl 파일이 생성됩니다.
/*
* Intel ACPI Component Architecture
* AML/ASL+ Disassembler version 20190509 (64-bit version)
* Copyright (c) 2000 - 2019 Intel Corporation
*
* Disassembling to symbolic ASL+ operators
*
* Disassembly of ssdt1.dat, Mon Jun 7 09:54:08 2021
*
* Original Table Header:
* Signature "SSDT"
* Length 0x00001EED (7917)
* Revision 0x01
* Checksum 0x9C
* OEM ID "COMPAL"
* OEM Table ID "CRV ORB "
* OEM Revision 0x00001000 (4096)
* Compiler ID "ACPI"
* Compiler Version 0x00040000 (262144)
*/
DefinitionBlock ("", "SSDT", 1, "COMPAL", "CRV ORB ", 0x00001000)
{
/*
* iASL Warning: There was 1 external control method found during
* disassembly, but only 0 were resolved (1 unresolved). Additional
* ACPI tables may be required to properly disassemble the code. This
* resulting disassembler output file may not compile because the
* disassembler did not know how many arguments to assign to the
* unresolved methods. Note: SSDTs can be dynamically loaded at
* runtime and may or may not be available via the host OS.
*
* To specify the tables needed to resolve external control method
* references, the -e option can be used to specify the filenames.
* Example iASL invocations:
* iasl -e ssdt1.aml ssdt2.aml ssdt3.aml -d dsdt.aml
* iasl -e dsdt.aml ssdt2.aml -d ssdt1.aml
* iasl -e ssdt*.aml -d dsdt.aml
*
* In addition, the -fe option can be used to specify a file containing
* control method external declarations with the associated method
* argument counts. Each line of the file must be of the form:
* External (<method pathname>, MethodObj, <argument count>)
* Invocation:
* iasl -fe refs.txt -d dsdt.aml
*
* The following methods were unresolved and many not compile properly
* because the disassembler had to guess at the number of arguments
* required for each:
*/
External (_SB_.PCI0.GFX0, DeviceObj)
External (_SB_.PCI0.GFX0._DOD, IntObj)
External (_SB_.PCI0.GFX0.AINT, MethodObj) // Warning: Unknown method, guessing 2 arguments
External (_SB_.PCI0.GFX0.DD01._ADR, IntObj)
External (_SB_.PCI0.GFX0.DD01._DGS, IntObj)
External (_SB_.PCI0.GFX0.DD02._ADR, IntObj)
External (_SB_.PCI0.GFX0.DD02._BCL, IntObj)
External (_SB_.PCI0.GFX0.DD02._BCM, IntObj)
External (_SB_.PCI0.GFX0.DD02._BQC, IntObj)
ssdt1.dat
분해 오류가 발생하지 않도록 분해해야 할 수도 있다고 생각합니다 . 그런 다음 분해 파일에서 "Intel(R) HD Graphics 4000"과 같은 이름으로 장치를 검색하거나 적어도 검색할 수 있는 방법이 있습니까? 이것이 BIOS Device Name
내 디스플레이 어댑터 라는 것이 분명합니까 ?
아마도 dmidecode
, lspci
그리고 acpidump
모두 하나의 스크립트로 결합될 수 있습니까?
다른 도움을 주시면 대단히 감사하겠습니다.
유연한
답변1
이것이 최선의 솔루션인지, 모든 Linux 배포판에서 작동하는지 모르겠지만 다음 \_SB_.PCI0.GFX0
을 사용하여 필요한 정보를 찾을 수 있었습니다.
# cat /sys/class/pci_bus/0000:00/device/0000:00:02.0/firmware_node/path
이를 ACPI 경로라고도 합니다. 이 명령이 나에게 적합한 이유는 무엇입니까?
설명하다
Linux에서 PCI 장치는 16비트 도메인 번호, 8비트 버스 번호, 5비트 장치 번호 및 3비트 기능 번호로 식별됩니다. 마지막 세 숫자는 일반적으로 BDF 또는 B/라고 합니다. 장치의 D/F(버스/장치)/기능).
이 lspci
명령은 다음을 사용하여 이 식별 번호를 표시할 수 있습니다.
# lspci -D
..
0000:00:02.0 VGA compatible controller: VMware SVGA II Adapter
..
이 숫자의 형식은 0000:00:02.0
입니다 domain:bus:device:function
.
이제 터미널에서 이 명령을 사용하여 디스플레이 어댑터의 ACPI 경로를 찾으세요.
# cat /sys/class/pci_bus/<domain:bus>/device/<domain:bus:device:function>/firmware_node/path
다시 말하지만, 나는 이 주제에 대해 잘 알지 못하며 이 프로세스가 모든 배포판에서 작동하는지 여부는 잘 모르지만 내 배포판에서는 작동합니다 Ubuntu mate 20.04.1
.
또 다른 해킹은 및를 사용하여 원래 질문의 단계 를 따르는 것입니다 acpidump
. 그런 다음 생성된 디스어셈블리 .dsl 파일을 검색하면 다음 문자열이 발견됩니다.acpixtract
iasl
DeviceObj
외부(SB.PCI0.GFX0, 장치 개체)ACPI 경로가 다음과 같다는 의미입니다.\_SB_.PCI0.GFX0