Ubuntu se congela al iniciar session después de nvidia-prime intel

Tengo un Asus GL553 con Intel 560 y Nvidia GTX 1050 y he intentado configurar mis tarjetas híbridas con nvidia-prime. Instalé Ubuntu Gnome 17.04, luego instalé nvidia-381 y ejecuté la inteligencia de selección principal que tuve que reiniciar con fuerza y ​​cuando intenté iniciar session, el sistema se congela. He investigado y leído todos estos temas, pero no puedo encontrar una solución.

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 / + fuente / nvidia-prime / + error / 1663926

¿Alguien ha podido configurar nvidia correctamente?

Finalmente lo hice.

1.- Crea una carpeta para almacenar los files SSDT. A continuación, extráigalo de las tablas ACPI (ejecute esta parte como raíz):

# 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.- Asegúrate de tener IASL instalado. En ubuntu, sudo apt install iasl debería ser suficiente. Descargué la fuente y la compilé yo mismo para get la última versión, pero no creo que sea necesario.

3.- Hay una definición duplicada en un file SSDT que no nos permite desarmarlo. Averigüe cuál es y elimínelo:

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

Entonces en mi caso es SSDT1. Reemplázalo con lo que sea que obtienes. No toque DSDT.dat

4.- Luego, encontramos el file SSDT con el código que necesitamos cambiar. Buscamos el file con "NVID" y "OSYS" presentes: (Probablemente hay una forma mejor de hacerlo en 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 

Entonces en mi caso era SSDT3, si es diferente, reemplazas todas las demás instancias de SSDT3 con lo que sea que obtengas.

5.- Desarmar!

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

6.- Espero que no veas ningún error en este punto. Reemplace todas las instancias de OSYS excepto la statement con la constante para Windows 7, y cambie el número de bloque de definición por uno:

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

Si tiene un BIOS diferente, el número del bloque de definición podría no ser 1000. Simplemente abra SSDT3.dsl en un editor de text y busque DefinitionBlock. Cualquier cantidad que veas en esa línea, increméntala en uno.

7.- Comstack todo y espera que no haya errores.

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

8.- Haz una image:

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

8.- Todas las siguientes instrucciones corresponden a Ubuntu y GRUB2. Cópialo en la carpeta de inicio. initrd.img es tu img pnetworkingeterminado desde la carpeta de inicio:

 # cp acpi_gpufix /boot/ 

puede agregarlo permanentemente a su GRUB editando /etc/grub.d/10_linux. Tuve que cambiar la línea initrd ${rel_dirname}/${initrd} a initrd ${rel_dirname}/acpi_gpufix ${rel_dirname}/${initrd} . Luego ejecuta update-grub2.

9.- Para comprobar si funciona:

 $ 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 

Ahora puedes cambiar la GPU sin congelaciones

fuente:

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