nvidia-prime intelの後にログインするとUbuntuがハングする

nvidia-prime intelの後にログインするとUbuntuがハングする

私はIntel 560とNvidia GTX 1050を搭載したAsus GL553を持っており、nvidia-primeを使ってハイブリッドカードを構成しようとしています。 Ubuntu Gnome 17.04をインストールし、nvidia-381をインストールしてPrime Select Intelを実行しましたが、ハード再起動が必要でログインしようとするとシステムがハングしました。これらのトピックをすべて調べて読みましたが、解決策が見つかりませんでした。

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

NVIDIAを正しく設定できる人はいますか?

ベストアンサー1

やっとやりました。

1.- SSDTファイルを保存するフォルダを作成します。次に、ACPIテーブルから抽出します(この部分を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.- IASL がインストールされていることを確認します。 Ubuntuではsudoapt 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

おすすめ記事