nvidia-prime intel 이후 로그인 시 Ubuntu가 정지됨

nvidia-prime intel 이후 로그인 시 Ubuntu가 정지됨

저는 Intel 560과 Nvidia GTX 1050을 탑재한 Asus GL553을 가지고 있으며, nvidia-prime을 사용하여 하이브리드 카드를 구성하려고 합니다. Ubuntu Gnome 17.04를 설치한 다음 nvidia-381을 설치하고 프라임 셀렉트 인텔을 실행했는데 하드 재부팅을 해야 했고 로그인하려고 하면 시스템이 정지되었습니다. 이 모든 주제를 조사하고 읽었지만 해결책을 찾을 수 없습니다.

https://devtalk.nvidia.com/default/topic/991853/complete-freeze-with-nvidia-prime/?offset=8 https://devtalk.nvidia.com/default/topic/991853/complete-freeze-with-nvidia-prime/?offset=18 https://askubuntu.com/questions/831928/edited-to-shutdown-hangs-on-intel-grapics-on-16-04-with-4-7-2-kernel https://askubuntu.com/questions/879856/nvidia-prime-cant-switch-to-intel https://bugs.launchpad.net/lightdm/+bug/1637733 https://bugs.launchpad.net/ubuntu/+source/nvidia-prime/+bug/1663926

엔비디아를 올바르게 구성할 수 있는 사람이 있나요?

답변1

드디어 해냈습니다.

1.- SSDT 파일을 저장할 폴더를 만듭니다. 그런 다음 ACPI 테이블에서 추출합니다(이 부분을 루트로 실행).

# mkdir dsdt
# cd dsdt
# SSDT_FILES=`ls /sys/firmware/acpi/tables/ | grep SSDT`
# for file in $SSDT_FILES ; do cat "/sys/firmware/acpi/tables/$file" > "$file.dat"; done
# cat /sys/firmware/acpi/tables/DSDT > DSDT.dat

2.- IASL이 설치되어 있는지 확인하십시오. 우분투에서는 sudo apt install iasl로도 충분합니다. 최신 버전을 얻기 위해 소스코드를 다운로드하고 직접 컴파일을 해보았지만 굳이 그럴 필요는 없을 것 같습니다.

3.- SSDT 파일에 중복된 정의가 있어 이를 분해할 수 없습니다. 어느 것인지 확인하고 삭제하세요.

# grep PRT0 *.dat
Binary file DSDT.dat matches
Binary file SSDT1.dat matches
# mv SSDT1.dat SSDT1.bak

제 경우에는 SSDT1입니다. 당신이 얻는 무엇이든 그것을 대체하십시오. DSDT.dat를 만지지 마십시오

4.- 다음으로 변경해야 할 코드가 포함된 SSDT 파일을 찾습니다. "NVID"와 "OSYS"가 모두 존재하는 파일을 찾습니다. (이 작업을 수행하는 더 좋은 방법은 grep에 있을 수 있습니다.)

# grep NVID *.dat
Binary file SSDT10.dat matches
Binary file SSDT3.dat matches
# grep OSYS SSDT10.dat
# grep OSYS SSDT3.dat
Binary file SSDT3.dat matches

따라서 제 경우에는 SSDT3입니다. 다른 경우 SSDT3의 다른 모든 인스턴스를 원하는 대로 교체할 수 있습니다.

5.- 분해!

# iasl -e *.dat -d SSDT3.dat

6.- 이 시점에서는 오류가 표시되지 않기를 바랍니다. 선언을 제외한 OSYS의 모든 인스턴스를 Windows 7 상수로 바꾸고 정의 블록 번호를 1씩 늘립니다.

# sed -i '/^ *External/! s/OSYS/0x07D9/g' SSDT3.dsl
# sed -i '/^ *DefinitionBlock/ s/0x00001000/0x00001001/g' SSDT3.dsl

다른 BIOS가 있는 경우 정의 블록 번호가 1000이 아닐 수 있습니다. 텍스트 편집기에서 SSDT3.dsl을 열고 DefinitionBlock을 찾으세요. 해당 줄에 보이는 숫자에 1을 더하세요.

7.- 모든 것을 컴파일하고 오류가 없기를 바랍니다.

# iasl -ve -tc -p SSDT3 SSDT3.dsl

8.- 이미지 만들기:

# mkdir -p kernel/firmware/acpi
# cp SSDT3.aml kernel/firmware/acpi/ssdt3.aml
# find kernel | cpio -H newc --create > acpi_gpufix

8.- 아래의 모든 지침은 Ubuntu 및 GRUB2에 해당합니다. 시작 폴더에 복사하세요. initrd.img 시작 폴더의 기본 img입니다.

# cp acpi_gpufix /boot/

/etc/grub.d/10_linux를 편집하여 GRUB에 영구적으로 추가할 수 있습니다. 줄을 . initrd ${rel_dirname}/${initrd}으로 변경 initrd ${rel_dirname}/acpi_gpufix ${rel_dirname}/${initrd}한 다음 update-grub2를 실행 해야 했습니다 .

9.- 작동하는지 확인하십시오.

$ dmesg | grep ACPI | grep override
[    0.000000] ACPI: Table Upgrade: override [SSDT-PegSsd- PegSsdt]
[    0.000000] ACPI: SSDT 0x000000007A715080 Physical table override, new table: 0x0000000079493000

이제 정지하지 않고 GPU를 변경할 수 있습니다

원천:

https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-306543064 https://devtalk.nvidia.com/default/topic/1012369/linux/laptop-freezes-changing-video-cards

관련 정보