고칠 수 있는 문제에 대한 질문인데 왜 고칠 수 있는지 모르겠습니다.
키보드에서 백라이트를 조정할 수 있기를 원합니다. 문제를 해결한 유일한 방법은 grub에서 한 줄을 변경하는 것이었습니다.
GRUB_CMDLINE_LINUX_DEFAULT="acpi_osi="
이것이 백라이트 문제를 해결하는 이유를 아는 사람이 있습니까?
저는 데비안 8을 사용하고 있습니다.
답변1
운영 체제 시작 프로세스 중에 운영 체제는 BIOS에서 다양한 ACPI 테이블을 얻고설명하다"테이블", 여기서프로그램 코드와 더 비슷해 보입니다.. 꽤 인기 있는 테이블은DSDT, 그러나 그것은 혼자가 아닙니다.
ACPI 테이블은 텍스트 소스 코드(위에 링크된 예 참조)로 생성되고 다음 도구를 사용하여 이진 형식으로 컴파일됩니다.야스르(인텔 제공). 이러한 테이블은 BIOS에 저장되고 운영 체제에서 바이너리 형식(중간 바이트 코드 등)으로 처리되지만 필요한 경우 소스 코드로 다시 "분해"될 수 있습니다. Linux 패치 프로그램은 때때로 이를 사용하여 버그나 ACPI "버전 불일치"를 수정합니다. 원래 테이블은 분해되고 소스 코드에서 수정될 수 있으며 현재 버전의 IASL로 다시 컴파일되고 사용자 정의 대체 항목으로 Linux 커널에 제공됩니다. ..
ACPI 테이블(DSDT 포함)에는 조건부 분기가 포함되어 있습니다. 부팅 운영 체제에서 해석되는 ACPI 테이블은 _OSI라는 메서드를 사용하여 운영 체제 버전을 테스트할 수 있습니다. 호스트 운영 체제는 이 테이블을 해석하여 "운영 체제 버전 문자열"을 _OSI 메서드에 제공합니다. 예를 들어, 어떤 이유로,_OSI "Windows 2009" 문자열은 "Windows 7"을 나타냅니다.우리 현실에서는. 추정되는 내용이니 참고해주세요원래 목적은 아니지만_OSI 접근 방식의 경우 괜찮습니다 :-)
즉, ACPI 테이블에 포함되어 있고 호스트 운영 체제에 의해 해석되는 "프로그램"은 실행 중인 Windows 버전을 테스트하고 이에 따라 동작을 수정할 수 있습니다. 감지된 Windows 버전을 기반으로 하드웨어 및 다양한 BIOS 서비스 인터페이스/구조를 초기화할 수 있습니다. 예를 들어 MacOS와 마찬가지로 Linux에는 고유한 할당된 _OSI ID가 있습니다. 그러나 x86 마더보드의 BIOS는 일반적으로 최신 Windows 버전에 대해 테스트되므로 ACPI 테이블이 정확하다는 것을 확신시키려고 하면 실제로 운이 좋을 수도 있습니다. Linux가 아닌 일부 특정 Windows 버전에서 해석됩니다. (또는 잘 정의되지 않은 분기형 ACPI 코드에서 "기본 사례"가 발생하지 않도록 하십시오.) 이는 acpi_osi="some string"
커널 명령줄 인수의 이점입니다. 이에 대한 자세한 내용과 기타 관련 주장은 다음과 같습니다.Linux "커널 매개변수" 가이드에 일부 문서가 있습니다..
디스플레이 백라이트 외에도 acpi_osi 문자열은 부팅 중 BIOS 및 운영 체제 동작의 다양한 측면에 영향을 미칠 수 있습니다. 예를 들어, 현재 저는 오래된 Acer Extensa 5220 노트북(C2D, i965GM Northbridge)을 사용하고 있으며 기본 구성에서는 일시 중단(ACPI S3, RAM 일시 중단)에서 재개하는 데 자주 실패합니다. 다시 시작하면 검은색 화면과 백라이트가 나타나면서 멈추거나 두 번 재부팅하고 처음부터 다시 시작합니다. BIOS를 업데이트했는데 별로 도움이 되지 않았지만 이번 BIOS 업데이트(1.35)가 Windows 7에서 잘 작동하도록 설계되었다는 확신이 들었습니다. 그래서 여러 가지를 시도한 끝에 마침내 꽤 좋은 결과를 얻었습니다.
acpi_osi=! acpi_osi="Windows 2009"
첫 번째 부분인 acpi_osi=!는 "이 시점에서 알고 있는 모든 acpi_osi 문자열을 잊어버리십시오"를 의미합니다(실제로는 단순한 문자열이 아니라 문자열 목록입니다. 물론 - 이런). 따라서 먼저 인터프리터가 원래 사용하던 것을 모두 지운 다음 원하는 문자열을 설정합니다. 최신 Linux 커널과 함께 작동하려면 BIOS가 명목상 지원하는 가장 최신 버전의 Windows를 지정하는 것이 가장 좋습니다.
문자열에 공백 문자(ASCII "공백")가 포함되어 있으므로 "Windows 2009" 주위에 따옴표가 필요합니다. 이 cmdline 인수를 일부 배포판별 구성 파일(예: Debian 및 친구들(Ubuntu)의 /etc/default/grub)의 셸 변수에 입력해야 하는 경우 문제가 될 수 있습니다. 이 경우에는 를 사용하십시오 acpi_osi=\"Windows 2009\"
. 즉, 커널 명령줄에 들어가야 하는 모든 인용문을 "이스케이프"하려면 백슬래시를 사용하십시오. 그런 다음 update-grub(Debian/Ubuntu를 다시 실행)을 실행하면 백슬래시가 제거되고 따옴표가 문자 그대로 /boot/grub/grub.cfg에 나타납니다. 흥미롭게도 나중에 확인하면 cat /proc/cmdline
첫 번째 인용문이 매개변수의 맨 처음으로 이동된 것을 알 수 있습니다. "acpi_osi=Windows 2009"
이는 약간 이상해 보입니다. :-)
나는 acpi_os_name 또는 acpi_sleep을 망쳐서는 안 된다는 것을 알아냈습니다(그렇지 않으면 유망해 보입니다). YMMV.
이는 일반적인 이전 버전과의 호환성 문제의 또 다른 징후입니다. 시간적으로 멀리 떨어져 만들어진 서로 다른 두 소프트웨어 간의 상호 호환성. 일시 중지 및 재개에 대해 말하자면, Linux는 "전원 상태 설정"이라고 하는 오래되고 간단한 APM BIOS 호출에 대한 지원을 잃었습니다. 따라서 일시 중지+재개에 사용할 수 있는 유일한 인터페이스는 ACPI입니다. 그 자체는 매우 복잡하며 여러 단계를 거쳤습니다. 주요 릴리스와 매우 현대적인 Linux 릴리스는 더 이상 매우 오래된 하드웨어(및 해당 BIOS)에서 철저하게 테스트되지 않으며 BIOS는 새로운 경우에도 버그가 없을 수 없습니다.... 심지어 ACPI도 이제 이를 기반으로 하는 UEFI로 대체됩니다. ACPI의 최상위에 있으며 자체적으로 더 많은 기능을 제공합니다…
답변2
acpi_osi=
_OSI
마더보드에서 제공한 ACPI 코드를 실행할 때 Linux가 ACPI 운영 체제 인식을 비활성화하게 합니다( ).
노트북은 운영 체제에 밝기 단축키를 보고하는 다양한 모드 간을 전환하기 위해 특정 Windows 버전을 확인할 수 있습니다. Linux는 일반적으로 ACPI 코드에 최신 버전의 Windows로 표시되므로 acpi_osi=
이러한 모든 검사가 실패하면 ACPI 코드가 Linux 설치가 이해할 수 있는 방식으로 밝기 단축키를 보고하게 됩니다.
바라보다https://unix.stackexchange.com/a/268106/147970영향에 대한 자세한 내용 acpi_osi=…
.