web-dev-qa-db-fra.com

Ubuntu se bloque lors de la connexion après le premier choix d'Intel

J'ai un Asus GL553 avec Intel 560 et Nvidia GTX 1050 et j'ai essayé de configurer mes cartes hybrides avec nvidia-prime. J'ai installé Ubuntu Gnome 17.04, puis nvidia-381 et lancé une sélection sélective d'Intel. J'ai dû redémarrer l'ordinateur avec difficulté et le système s'est bloqué. J'ai fait des recherches et lu tous ces sujets mais je ne trouve pas de solution.

Quelqu'un at-il pu configurer correctement NVIDIA?

3
Glats

Je l'ai finalement fait.

1.- Créez un dossier pour stocker les fichiers SSDT. Puis extrayez-le des tables ACPI (exécutez cette partie en tant que root):

# 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.- Assurez-vous que IASL est installé. Sur Ubuntu, Sudo apt install iasl devrait suffire. J'ai téléchargé le code source et l'ai compilé moi-même pour obtenir la dernière version, mais je ne pense pas que ce soit nécessaire.

3.- Il y a une définition dupliquée dans un fichier SSDT qui ne nous permet pas de la désassembler. Découvrez lequel et supprimez-le:

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

Donc, dans mon cas, il s'agit de SSDT1. Remplacez-le par ce que vous obtenez. Ne touchez pas DSDT.dat

4.- Ensuite, nous trouvons le fichier SSDT avec le code que nous devons changer. Nous recherchons le fichier contenant "NVID" et "OSYS": (Il existe probablement un meilleur moyen de le faire dans 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

Donc, dans mon cas, il s’agissait de SSDT3. Si ses caractéristiques sont différentes, vous remplacez toutes les instances ultérieures de SSDT3 par ce que vous obtenez.

5.- Démonter!

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

6.- J'espère que vous ne voyez pas d'erreur à ce stade. Remplacez toutes les instances d'OSYS, à l'exception de la déclaration, par la constante de Windows 7 et remplacez le numéro du bloc de définition par un:

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

Si vous avez un BIOS différent, le numéro du bloc de définition peut ne pas être 1000. Ouvrez simplement SSDT3.dsl dans un éditeur de texte et recherchez DefinitionBlock. Quel que soit le nombre que vous voyez sur cette ligne, incrémentez-le d'un.

7.- Tout compiler et espère qu'il n'y a pas d'erreurs.

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

8.- Faire une image:

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

8.- Toutes les instructions suivantes correspondant à Ubuntu et GRUB2. Copiez-le dans le dossier de démarrage. le initrd.img c'est votre img par défaut du dossier de démarrage:

# cp acpi_gpufix /boot/

vous pouvez l'ajouter définitivement à votre GRUB en modifiant /etc/grub.d/10_linux. Je devais changer la ligne initrd ${rel_dirname}/${initrd} en initrd ${rel_dirname}/acpi_gpufix ${rel_dirname}/${initrd}. Puis lancez update-grub2.

UPDATE: Maintenant GRUB prend en charge l'initiation supplémentaire: GRUB_EARLY_INITRD_LINUX_CUSTOM = acpi_gpufix.img sur votre/etc/default/grub

9.- Pour vérifier si cela fonctionne:

$ 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

Maintenant, vous pouvez changer le GPU sans figer

la source:

https://github.com/Bumblebee-Project/Bumblebee/issues/764#issuecomment-306543064https://devtalk.nvidia.com/default/topic/1012369/linux/ ordinateur portable gèle-changer-cartes vidéo

0
Glats