انجمن‌های فارسی اوبونتو

لطفاً به انجمن‌ها وارد شده و یا جهت ورود ثبت‌نام نمائید

لطفاً جهت ورود نام کاربری و رمز عبورتان را وارد نمائید

نویسنده موضوع: نصب درایور انویدیا ورژن 340.108  (دفعات بازدید: 383 بار)

0 کاربر و 1 مهمان درحال مشاهده موضوع.

آفلاین mb

  • Jr. Member
  • *
  • ارسال: 57
  • جنسیت : پسر
نصب درایور انویدیا ورژن 340.108
« : 11 امرداد 1401، 08:30 ب‌ظ »
درود. من قبلاً از مینت نسخه 20.3 استفاده می کردم ولی حالا که نسخه جدید ۲۱ رو نصب کردم متاسفانه بدلیل منسوخ شدن درایور که دیگر پشتیبانی نمی شود از مخزن حذف شده و driver manager درایور کارت گرافیک را پیدا نمی کند آیا راه حلی برای نصب درایور وجود دارد لطفاً قدم به قدم بهم بگین پیشاپیش ازتون تشکر میکنم با مهر.
« آخرین ویرایش: 12 امرداد 1401، 10:09 ق‌ظ توسط mb »

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 4395
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #1 : 11 امرداد 1401، 11:18 ب‌ظ »
بهتره از همون درایور‌های آزاد nouveau استفاده کنید. فکر کنم نسخه‌های جدید Xorg هم دیگه از اون نسخه درایور‌ها پشتیبانی نمی‌کنند.
میدونید که زکات علم نشر آن است

آفلاین mb

  • Jr. Member
  • *
  • ارسال: 57
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #2 : 11 امرداد 1401، 11:48 ب‌ظ »
منم دوست دارم از nouveau استفاده کنم ولی اون اصلا برای من قابل استفاده نیست فقط کافیه ۱۰  یا ۳۰ دقیقه سیستم روشن باشه و مرورگردی کنم تا یکهو کل سیستم فریز بشه بعد مجبورم ری‌استارت کنم.

یا وقتی با vlc فیلم می بینم یه خط سبز رنگ افقی رد میشه غیر از اینها کلا خیلی GUI پرپر میزنه.

نمی دونم دقیقاً مشکل از کجاست شاید کارت گرافیک من رو که GeForce 9400 GT هست پشتیبانی نمیکنه جزو سری ۹ هست https://en.m.wikipedia.org/wiki/GeForce_9_series

اگه بتونید کمکم کنید مشکلم رو حل کنم یه دنیا ممنونتون میشم

ببینید آیا https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/-/issues/557 مشکلی که گزارش کردم ارتباطی به موضوع خرابی داره؟

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 4395
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #3 : 13 امرداد 1401، 01:15 ق‌ظ »
تا جایی که دیدم، اون issue ربطی به مشکل شما نداره.

ببینید توی گزارش‌های کرنل چیز مرتبطی گفته یا نه.
sudo dmesg --level err
sudo dmesg --level warn
sudo dmesg | grep -i nouveau
میدونید که زکات علم نشر آن است

آفلاین mb

  • Jr. Member
  • *
  • ارسال: 57
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #4 : 13 امرداد 1401، 02:22 ب‌ظ »
چرا اون issue هم یک مشکل دیگست که وقتی سیستم رو روی حالت خواب میزارم 10 دقیقه طول میکشه و وقتی روشن می کنم تصویر برفکی هست

realmb@realmb-M52L-S3P:~$ sudo dmesg --level err
[sudo] password for realmb:             
[   45.900564] nouveau 0000:02:00.0: vp: init failed, -2
[   45.900722] nouveau 0000:02:00.0: bsp: init failed, -2
[   46.374952] nouveau 0000:02:00.0: vp: init failed, -2
[   46.374999] nouveau 0000:02:00.0: bsp: init failed, -2
[  156.821030] nouveau 0000:02:00.0: vp: init failed, -2
[  156.821067] nouveau 0000:02:00.0: bsp: init failed, -2
[  156.897154] nouveau 0000:02:00.0: vp: init failed, -2
[  156.897214] nouveau 0000:02:00.0: bsp: init failed, -2
[  175.607297] nouveau 0000:02:00.0: vp: init failed, -2
[  175.607349] nouveau 0000:02:00.0: bsp: init failed, -2
realmb@realmb-M52L-S3P:~$ sudo dmesg --level warn
[    0.288644] mtrr: your CPUs had inconsistent variable MTRR settings
[    0.342490] pnp 00:07: disabling [mem 0x000d0000-0x000d3fff] because it overlaps 0000:02:00.0 BAR 6 [mem 0x000c0000-0x000dffff]
[    0.342493] pnp 00:07: disabling [mem 0x000d5800-0x000d7fff] because it overlaps 0000:02:00.0 BAR 6 [mem 0x000c0000-0x000dffff]
[    0.534518] device-mapper: core: CONFIG_IMA_DISABLE_HTABLE is disabled. Duplicate IMA measurements will not be recorded in the IMA log.
[    0.534613] platform eisa.0: EISA: Cannot allocate resource for mainboard
[    0.534616] platform eisa.0: Cannot allocate resource for EISA slot 1
[    0.534617] platform eisa.0: Cannot allocate resource for EISA slot 2
[    0.534619] platform eisa.0: Cannot allocate resource for EISA slot 3
[    0.534620] platform eisa.0: Cannot allocate resource for EISA slot 4
[    0.534622] platform eisa.0: Cannot allocate resource for EISA slot 5
[    0.534623] platform eisa.0: Cannot allocate resource for EISA slot 6
[    0.534624] platform eisa.0: Cannot allocate resource for EISA slot 7
[    0.534626] platform eisa.0: Cannot allocate resource for EISA slot 8
[    3.282246] USB-compliant keyboard: Invalid code 773 type 1
[   13.280921] systemd-journald[323]: File /var/log/journal/b0d275fb46fa48c6820be57edaa22cf5/system.journal corrupted or uncleanly shut down, renaming and replacing.
[   16.171451] Bluetooth: hci0: CSR: Unbranded CSR clone detected; adding workarounds and force-suspending once...
[   18.099863] spl: loading out-of-tree module taints kernel.
[   18.161061] icp: module license 'CDDL' taints kernel.
[   18.161072] Disabling lock debugging due to kernel taint
[   31.577945] kauditd_printk_skb: 13 callbacks suppressed
[   45.900532] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[   45.900707] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[   46.374938] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[   46.374994] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[  103.881463] [UFW BLOCK] IN=enp0s7 OUT= MAC=01:00:5e:00:00:01:c4:6e:1f:d4:20:9d:08:00 SRC=192.168.1.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=28868 PROTO=2
[  156.821018] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[  156.821063] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[  156.897139] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[  156.897207] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[  175.607286] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[  175.607345] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[  228.891711] [UFW BLOCK] IN=enp0s7 OUT= MAC=01:00:5e:00:00:01:c4:6e:1f:d4:20:9d:08:00 SRC=192.168.1.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=29142 PROTO=2
[  353.901794] [UFW BLOCK] IN=enp0s7 OUT= MAC=01:00:5e:00:00:01:c4:6e:1f:d4:20:9d:08:00 SRC=192.168.1.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=29256 PROTO=2
[  478.912075] [UFW BLOCK] IN=enp0s7 OUT= MAC=01:00:5e:00:00:01:c4:6e:1f:d4:20:9d:08:00 SRC=192.168.1.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=29305 PROTO=2
[  603.921730] [UFW BLOCK] IN=enp0s7 OUT= MAC=01:00:5e:00:00:01:c4:6e:1f:d4:20:9d:08:00 SRC=192.168.1.1 DST=224.0.0.1 LEN=32 TOS=0x00 PREC=0xC0 TTL=1 ID=29386 PROTO=2
realmb@realmb-M52L-S3P:~$ sudo dmesg | grep -i nouveau
[    2.834799] fb0: switching to nouveau from VESA VGA
[    2.834927] nouveau 0000:02:00.0: vgaarb: deactivate vga console
[    2.835012] nouveau 0000:02:00.0: NVIDIA G96 (096080c1)
[    2.953171] nouveau 0000:02:00.0: bios: version 62.94.50.00.22
[    2.973888] nouveau 0000:02:00.0: bios: M0203T not found
[    2.973891] nouveau 0000:02:00.0: bios: M0203E not matched!
[    2.973893] nouveau 0000:02:00.0: fb: 1024 MiB DDR2
[    3.035110] nouveau 0000:02:00.0: DRM: VRAM: 1024 MiB
[    3.035112] nouveau 0000:02:00.0: DRM: GART: 1048576 MiB
[    3.035115] nouveau 0000:02:00.0: DRM: TMDS table version 2.0
[    3.035117] nouveau 0000:02:00.0: DRM: DCB version 4.0
[    3.035119] nouveau 0000:02:00.0: DRM: DCB outp 00: 02000300 00000028
[    3.035122] nouveau 0000:02:00.0: DRM: DCB outp 01: 01000302 00020030
[    3.035124] nouveau 0000:02:00.0: DRM: DCB outp 02: 04011310 00000028
[    3.035125] nouveau 0000:02:00.0: DRM: DCB outp 03: 02022332 00020030
[    3.035127] nouveau 0000:02:00.0: DRM: DCB conn 00: 00001030
[    3.035129] nouveau 0000:02:00.0: DRM: DCB conn 01: 00000100
[    3.035130] nouveau 0000:02:00.0: DRM: DCB conn 02: 00002261
[    3.036966] nouveau 0000:02:00.0: DRM: MM: using CRYPT for buffer copies
[    3.334595] nouveau 0000:02:00.0: DRM: allocated 1600x900 fb: 0x70000, bo (____ptrval____)
[    3.334764] fbcon: nouveaudrmfb (fb0) is primary device
[    3.334776] nouveau 0000:02:00.0: [drm] fb0: nouveaudrmfb frame buffer device
[    3.355564] [drm] Initialized nouveau 1.3.1 20120801 for 0000:02:00.0 on minor 0
[   45.900532] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[   45.900556] nouveau 0000:02:00.0: vp: unable to load firmware nouveau/nv84_xuc00f
[   45.900564] nouveau 0000:02:00.0: vp: init failed, -2
[   45.900707] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[   45.900717] nouveau 0000:02:00.0: bsp: unable to load firmware nouveau/nv84_xuc103
[   45.900722] nouveau 0000:02:00.0: bsp: init failed, -2
[   46.374938] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[   46.374949] nouveau 0000:02:00.0: vp: unable to load firmware nouveau/nv84_xuc00f
[   46.374952] nouveau 0000:02:00.0: vp: init failed, -2
[   46.374994] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[   46.374997] nouveau 0000:02:00.0: bsp: unable to load firmware nouveau/nv84_xuc103
[   46.374999] nouveau 0000:02:00.0: bsp: init failed, -2
[  156.821018] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[  156.821028] nouveau 0000:02:00.0: vp: unable to load firmware nouveau/nv84_xuc00f
[  156.821030] nouveau 0000:02:00.0: vp: init failed, -2
[  156.821063] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[  156.821065] nouveau 0000:02:00.0: bsp: unable to load firmware nouveau/nv84_xuc103
[  156.821067] nouveau 0000:02:00.0: bsp: init failed, -2
[  156.897139] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[  156.897151] nouveau 0000:02:00.0: vp: unable to load firmware nouveau/nv84_xuc00f
[  156.897154] nouveau 0000:02:00.0: vp: init failed, -2
[  156.897207] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[  156.897211] nouveau 0000:02:00.0: bsp: unable to load firmware nouveau/nv84_xuc103
[  156.897214] nouveau 0000:02:00.0: bsp: init failed, -2
[  175.607286] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc00f failed with error -2
[  175.607295] nouveau 0000:02:00.0: vp: unable to load firmware nouveau/nv84_xuc00f
[  175.607297] nouveau 0000:02:00.0: vp: init failed, -2
[  175.607345] nouveau 0000:02:00.0: Direct firmware load for nouveau/nv84_xuc103 failed with error -2
[  175.607347] nouveau 0000:02:00.0: bsp: unable to load firmware nouveau/nv84_xuc103
[  175.607349] nouveau 0000:02:00.0: bsp: init failed, -2
realmb@realmb-M52L-S3P:~$

آفلاین mb

  • Jr. Member
  • *
  • ارسال: 57
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #5 : 13 امرداد 1401، 08:14 ب‌ظ »
گزارش‌های کرنل دقیقا داره چی میگه من سواد خوندنش رو ندارم ولی یک issue توی مخزن باز کردم
https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/-/issues/563

خیلی دوست دارم توی توسعه دادنش مشارکت داشته باشم و میخام یاد بگیرم چطوری کار میکنه. اگر کتاب و سایت یا مرجعی به درد بخور برای کمک به یاد گرفتن توسعه درایور کارت های گرافیکی وجود داره معرفی کنید.

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 4395
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #6 : 14 امرداد 1401، 07:03 ب‌ظ »
فکر کنم مشکل از این هست که یه چیزی (احتمالا مروگر یا خود میزکار) می‌خواهد از vdapu استفاده کنه و به همین دلیل مشکل پیش میاد.

vdpau یه API برای رمزگشایی کردن ویدیو هست. معمولا ویدیو به صورت خام حجم خیلی زیادی داره. برای مثال یه ویدیو به مدت حدود ۲ ساعت و با کیفیت 1080×1920 می‌تونه حدود 60Gib حجم داشته باشه. به همین خاطر معمولا حجم ویدیو‌ها رو با رمزینه‌هایی (codec) مثل HEVC یا H.264 یا H.265 یا MPEG-2 یا AV-1 یا  ... کم می‌کنند. در واقعیت این رمزینه‌ها یه جور فشرده‌سازی روی ویدیو اعمال می‌کنند.

وقتی ویدیو با این رمزینه‌ها رمزی میشه (به اصطلاح میگن encode میشه)، کیفیت اون تغییر نمی‌کنه. در واقیت فشرده‌سازی به صورت بی اتلاف (lossless) هست.
معمولا قبل از اینکه ویدیو رو با یکی از رمزینه‌ها بالا رمزی کنند، با یه سری الگوریتم‌های دیگه، به صورت با اتلاف حجمش کم میشه چون معمولا اطلاعاتی که همراه ویدیو خام هست، فقط موقع تدوین بدرد می‌خوره.

از اونجایی که ویدیو با یه رمزینه، رمزی شده، لازمه برای پخش شدن، از حالت رمزی در بیاد. (به اصطلاح decode بشه)
اینکار به صورت نرم‌افزاری و سخت‌افزاری ممکن هست.

۱- در حالت نرم‌افزاری، نرم‌افزار محسابات رو به پردازنده مرکزی (cpu) محول می‌‌کنه تا انجام بده. از اونجایی که پردازنده  مرکزی برای چنین کاری طراحی نشده، معمولا اینکار خیلی کند پیش میره و ویدیو رو هم نمیشه درست مشاهده کرد.

۲- در حالت سخت‌افزاری، کار‌ها به سخت‌افزاری که مخصوص رمزگشایی از یه رمزینه خاص هستند واگذار میشه. معمولا پردازنده گرافیکی چنین واحد‌های پردازشی داخل خودش داره.
یعنی داخل پردازنده گرافیکی بخش‌هایی وجود دارند که کار اونها این هست که فقط ویدیو با یه رمزینه خاص رو رمزگشایی کنند.
برای مثال یه قسمت هست که با رمزینه AV-1 کار می‌کنه، یکی با HVEC، یکی با MPEG-1 و ...
البته ممکنه یه بخش بتونه چندین رمزینه مختلف رو هم رمزگشایی کنه.
ممکنه یه پردازنده گرافیکی از بعضی از رمزینه‌ها پشتیبانی نکنه.

از اونجایی که رمزینه‌های مختلف و پردازنده‌های گرافیکی مختلف و درایور‌های مختلفی برای اونها هست، زیاد منطقی نیست هر برنامه بیاد و پشتیبانی از هر رمزینه، پردازنده گرافیکی و درایور رو مستقیم داخل خودش پیاده کنه. به خاطر همین یه سری API برای اینکار بوجود اومدن.

توی سیستم‌عامل‌های یونیکسی و شبه یونیکسی، VA-API، VDPAU، AMF و NVDECODE/NVENCODE یه سری API برای اینکار هستند.

در مورد AMF چیز زیادی نمی‌دونم، فقط می‌دونم مربوط به AMD هست.
NVENCODE/NVDECODE مال انویدیا هستند و فقط با درایور‌های انحصاری انویدیا کار می‌کنند.
VDPAU و VA-API معمولا بیشتر استفاده میشن.

برای اینکه از VDPAU همراه گرافیک‌های انویدیا استفاده کنید، به firmware انحصاری نیاز دارید.
اون firmware های انحصاری توی مخازن دبیان نیستند. یه بسته توی اوبونتو وجود داره به اسم nouveau-fw ولی انگار firmware های قدیمی رو داره که دیگه کار نمی‌کنند.

می‌تونید اون firmware ها رو از درایور‌های انحصاری استخراج کنید و جای مناسب بذارید تا استفاده بشن.
اگه می‌خواهید از این راه پیش برید، بگید تا بیشتر راهنمایی کنیم.
میدونید که زکات علم نشر آن است

آفلاین mb

  • Jr. Member
  • *
  • ارسال: 57
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #7 : 15 امرداد 1401، 05:09 ب‌ظ »
بله از این راه پیش میرم. جناب Dragon خیلی ممنون که کامل و جامع توضیح دادین و همین که فهمیدیم مشکل از کجا آب میخوره و راه حلش چیه نصف راه رو رفتیم. \\:D/

ولی منظور از firmware همون https://en.wikipedia.org/wiki/Video_BIOS هست ولی این فریمور عمومی هست و فریمور اختصاصی درون باینری درایور انویدیا هست. همینطوره آیا درست گفتم؟

فکر کنم برای انجام این کار از ابزار https://nouveau.freedesktop.org/Valgrind-mmt.html و https://nouveau.freedesktop.org/REnouveau.html استفاده می کنن که من بلد نیستم چطوری کار می کند.

و این قسمت زیر از مقاله https://en.wikipedia.org/wiki/VESA_BIOS_Extensions هست دقیقا متوجه نشدم مخصوصا https://en.wikipedia.org/wiki/Thunk رو

Despite this, it is common that a driver thunk out to the real mode interrupt in order to initialize screen modes and gain direct access to a card's linear frame buffer, because these tasks would otherwise require handling many hundreds of proprietary variations that exist from card to card.

 

آفلاین mb

  • Jr. Member
  • *
  • ارسال: 57
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #8 : 15 امرداد 1401، 05:30 ب‌ظ »
ببینید آیا https://developer.nvidia.com/nvidia-video-codec-sdk/download به درد میخوره

آفلاین Dragon-

  • عضو کاربران ایرانی اوبونتو
  • *
  • ارسال: 4395
  • جنسیت : پسر
پاسخ : نصب درایور انویدیا ورژن 340.108
« پاسخ #9 : 18 امرداد 1401، 03:45 ب‌ظ »
گزارش‌های کرنل دقیقا داره چی میگه من سواد خوندنش رو ندارم ولی یک issue توی مخزن باز کردم
https://gitlab.freedesktop.org/xorg/driver/xf86-video-nouveau/-/issues/563

خیلی دوست دارم توی توسعه دادنش مشارکت داشته باشم و میخام یاد بگیرم چطوری کار میکنه. اگر کتاب و سایت یا مرجعی به درد بخور برای کمک به یاد گرفتن توسعه درایور کارت های گرافیکی وجود داره معرفی کنید.

اگه می‌خواهید توی توسعه nouveau مشارکت داشته باشید، احتمالا باید بلد باشید چجوری برای کرنل ماژول بنویسید و همینطور چجوری کد ماژول‌های نوشته شده رو بخونید.
برای اینکار می‌تونید از راهنمای lkmp (مخفف linux kernel module programming) استفاده کنید.
https://github.com/sysprog21/lkmpg

می‌تونید به راهنمای متنی اون از طریق اینجا دسترسی داشته باشید:
https://sysprog21.github.io/lkmpg
pdf اون رو هم می‌تونید توی صفحه پروژه توی گیتهاب (که بالاتر لینکش رو گذاشتم) و همینطور لینک بالا پیدا کنید.

برای اینکه بتونید برای کرنل ماژول بنویسید یا کد ماژول‌های نوشته شده رو بخونید، لازمه اول به زبان برنامه نویسی c مسلط باشید.
چیز‌هایی مثل اشاره‌گر به تابع یا ساختار‌ها (structure) زیاد توی کد کرنل استفاده شدند و برای اینکه بتونید اون کد‌ها رو متوجه بشید یا کدی بنویسید، باید به این چیز‌ها خوب مسلط باشید.

شاید بتونید توی توسعه ابزار‌ها و کتابخانه‌های سمت فضای کاربر (user space)، مثل drm یا glx یا vulkan یا ... هم مشارکت داشته باشید. البته در این حالت باز هم نیازه خوب به c مسلط باشید.

ولی منظور از firmware همون https://en.wikipedia.org/wiki/Video_BIOS هست ولی این فریمور عمومی هست و فریمور اختصاصی درون باینری درایور انویدیا هست. همینطوره آیا درست گفتم؟
راستش نمی‌دونم.
فقط می‌دونم برای استفاده از VDPAU توی گرافیک‌های انویدیا، به firmware انحصاری نیاز دارید که میشه اونها رو از درایور‌های انحصاری استخراج کرد.

نقل‌قول
فکر کنم برای انجام این کار از ابزار https://nouveau.freedesktop.org/Valgrind-mmt.html و https://nouveau.freedesktop.org/REnouveau.html استفاده می کنن که من بلد نیستم چطوری کار می کند.
دومی که زیاد استفاده نمیشه و اولی جای اون رو گرفته.
نمی‌دونم میشه با اینها، اون firmware ها رو استخراج کرد یا نه. فقط می‌دونم با اسکریپت پایتون extract_firmware py توی این مخزن میشه firmware های مورد نیاز رو از درایور‌های انحصاری استخراج کرد.
https://github.com/envytools/firmware


نقل‌قول
و این قسمت زیر از مقاله https://en.wikipedia.org/wiki/VESA_BIOS_Extensions هست دقیقا متوجه نشدم مخصوصا https://en.wikipedia.org/wiki/Thunk رو

Despite this, it is common that a driver thunk out to the real mode interrupt in order to initialize screen modes and gain direct access to a card's linear frame buffer, because these tasks would otherwise require handling many hundreds of proprietary variations that exist from card to card.
منم درست نفهمیدم.  :)

ببینید آیا https://developer.nvidia.com/nvidia-video-codec-sdk/download به درد میخوره
نمی‌دونم به درد این موضوع می‌خوره یا نه. ولی از اونجایی که گفته باید درایور‌های سری 470 یا جدیدتر داشته باشید، فکر نکنم بدرد بخوره.

بعد از اینکه firmware ها رو استخراج می‌‌کنید، لازمه اونها رو کپی کنید داخل /lib/firmware/nouveau/
اون فایل‌هایی که کپی میشن خارج از کنترل مدیربسته هستند. تا جایی که می‌دونم، یه فایل deb نه توی مخازن و نه جای دیگه وجود داره که اون رو نصب کنید تا مدیربسته اون firmware ها رو مدیریت کنه.
ولی از اونجایی که این فایل‌ها فقط یه سری firmware هستند و معمولا زیاد تغییر نمی‌کنند و کار خاصی هم لازم نیست قبل یا بعد از کپی کردن اونها انجام بدید، فکر نکنم کپی کردن اون فایل‌ها توی اون مسیر، مشکلی بوجود بیاره. ولی همچنان یه احتمال کوچک هست که مشکل ایجاد بشه.

برای اینکه firmware های مورد نیاز رو بدست بیارید، اول یه دایرکتوری ایجاد کنید که موقتی فایل‌ها داخل اون قرار بگیرن و بعد واردش بشید.
mkdir ~/extract-firmware
cd ~/extract-firmware
اگه می‌خواهید، می‌تونید اسم یا مسیر دایرکتوری رو عوض کنید.

الان اون اسکریپت پایتون رو از گیتهاب بگیرید.
wget https://raw.github.com/envytools/firmware/master/extract_firmware.py
اگه می‌خواهید، میشه از یه ابزار دیگه برای دانلود استفاده کرد. برای مثال curl یا aria2 یا wget2 یا ...

الان درایور‌های انحصاری انویدیا نسخه 340.108 رو دانلود کنید.
wget http://us.download.nvidia.com/XFree86/Linux-x86/340.108/NVIDIA-Linux-x86-340.108.run
مثل بالا، اگه بخواهید، می‌تونید از یه ابزار دیگه برای دانلود استفاده کنید.

می‌تونید firmware ها رو از نسخه‌های دیگه درایور‌های انحصاری انویدیا هم استخراج کنید. برای اینکه ببینید اسکریپت extract_firmware.py از کدوم‌ها پشتیبانی می‌کنه، کد‌های extract_firmware.py رو ببینید.

فایل‌های خود درایور انحصاری رو از فایل run. دانلود شده استخراج کنید
bash NVIDIA-Linux-x86-340.108.run --extract-only

الان با استفاده از اون اسکریپت پایتون، firmware های انحصاری رو استخراج کنید.
python3 ./extract_firmware.py
قبلا این اسکریپت با پایتون ۳ سازگار نبود و برای اجرای اون، به پایتون ۲ نیاز داشتید. ولی یه مدتیه که این اسکریپت طوری نوشته شده که هم با پایتون ۳ کار بده و هم پایتون ۲.

می‌تونید به جای اینکه به python3 بگید اون اسکریپت رو اجرا کنه، اول دسترسی اجرایی به اسکریپت بدید و بعد مستقیم اجراش کنید.

البته این اسکریپت سعی می‌کنه با usr/bin/python/ اجرا بشه. این مسیر، مربوط به فایل اجرایی پایتون ۲ هست و به همین خاطر احتمالا با دادن دسترسی اجرایی به اسکریپت و اجرا مستقیم اون، یه خطا می‌گیرید که interupter این فایل وجود نداره.
برای حل این مشکل می‌تونید:

۱- اسکریپت رو باز کنید و این خط رو که خط اول هست:
#!/usr/bin/python
به این تغییر بدید:
#!/usr/bin/python3

۲- اگه روی دبیان یا اوبونتو یا یه توزیع مبتنی بر اونها هستید، می‌تونید بسته python-is-python3 رو نصب کنید تا لینک‌های مناسب ایجاد بشن و با اجرای usr/bin/python/ پایتون ۳ اجرا بشه.

۳- می‌تونید پایتون ۲ رو نصب کنید. البته اینکار پیشنهاد نمیشه چون مدت زیادیه که پشتیبانی از پایتون ۲ تموم شده. (ولی همچنان توی مخازن دبیان هست چون هنوز برنامه‌هایی هستند که فقط با پایتون ۲ اجرا میشن.)

بعد از اینکه اون اسکریپت پایتون رو اجرا کردید و firmware ها استخراج شدند، باید اونها رو توی جای مناسب قرار بدید تا استفاده بشن.

اول دایرکتوری /lib/firmware/nouveau/ رو با دسترسی، گروه و مالکیت درست بسازید.
sudo mkdir -m 0755 /lib/firmware/nouveau
sudo chown root:root /lib/firmware/nouveau

الان firmware های استخراج شده رو کپی کنید توی جای مناسب.
برای اینکار از دستور cp استفاده کنید و بعد chown و chmod رو اجرا کنید تا از دسترسی و گروه اون فایل‌ها مطمئن بشید.
sudo cp -d ./nv* ./vuc-* /lib/firmware/nouveau
sudo chown root:root /lib/firmware/nouveau/*
sudo chmod 0644 /lib/firmware/nouveau/*

احتمالا به بیشتر اون firmware های استخراج شده نیاز ندارید و فقط بعضی از اونها مورد نیاز هستند؛ ولی از اونجایی که دقیق نمی‌دونید کدوم‌ها مورد نیاز هستند، باید همه رو کپی کنید.
بودن firmware هایی که لازم ندارید، توی این شرایط مشکلی ایجاد نمی‌کنه.

بعد سیستم رو راه‌اندازی مجدد کنید و ببینید همچنان سیستم به طور ناگهانی فریز می‌شه یا نه.
میدونید که زکات علم نشر آن است