إنفيديا على لينكس من أين تبدأ ولماذا تتعثر الأمو
المشكلة تبدأ من قلب النواة، حيث تُدمَج تعريفات العتاد ليعمل كل شيء بتناغم. في عالم لينكس تُفضَّل الشيفرة المفتوحة، لكن إنفيديا لا تتيح تعريفات مفتوحة كما تفعل AMD، فتظل فجوة تقلّل الانسجام. في عام 2022 فتحت إنفيديا جزءا من الشيفرة لطرازات أحدث، فخفّ الضغط ولم يَختفِ. هنا تقدّم مجتمع freedesktop.org بإصدارَيْ Nouveau وNVK (بديل مفتوح المصدر وحديث لبطاقات إنفيديا الجديدة يهدف لأداء أفضل وتجربة أحدث). هذه المحاولات نافعة، لكنها ليست التعريف الأصلي، لذلك لا تستخرج كامل قوة البطاقة، وتأتي أحيانا بمشكلات جانبية. ومع ذلك أصبحت الخيارات الافتراضية التي تحملها أنوية لينكس، كمن يقول: هذا المتاح الآن حتى إشعار آخر.
عند الإقلاع تظهر العقدة الأولى. النواة تسحب Nouveau تلقائيا، فيتعطّل تحميل تعريف إنفيديا الرسمي. تتدخل التوزيعات لتُمهّد الطريق، تمنع تحميل Nouveau مبكرا، وتضبط إعدادات النواة وملفات initramfs وهي صورة مؤقته تساعد النواة ان ترتبط مع نظام الملفات. إي انها تقدم مخازن لتعريفات انفيديا مع حزم للتثبيت و بعض السكربتات. ثم يأتي DKMS كعامل صيانة هادئ يعيد بناء التعريف بعد كل ترقية للنواة حتى تتلاءم القطع من جديد.
لكن التوازن هش. تحديث في النواة أو قفزة في تعريف إنفيديا قد يكسر الانسجام، فنعود إلى إعادة التجميع عبر DKMS لإنتاج وحدة نواة تضيف ما يلزم ليفهم العتاد بقية المنظومة. يزداد المشهد تعقيدا مع Wayland الذي حل محل X11 في إدارة النوافذ وما يصاحبه أحيانا من اضطراب مع بطاقات إنفيديا، ومع الأجهزة الهجينة في بعض الحواسيب المحمولة حيث يتناوب المعالج الرسومي المتكامل والمنفصل على الحمل. إن قررت الإصلاح بنفسك، فتعامل معه كصيانة دورية بعد كل تحديث، وألقِ نظرة على /lib/modules/ لتتأكد أن كل قطعة في مكانها.
التوزيعات المقترحة:
1- Pop!OS
بوب أو أس الأفضل للمبتدئين
تتعرّف بسلاسة على بطاقات إنفيديا، وتدير التحديثات دون إزعاج أو حاجة لسطر الأوامر، وتجيد التعامل مع الأجهزة ذات أكثر من بطاقة رسومية. مبنية على أوبونتو، فتستفيد من دعم عتاد واسع وقاعدة مستخدمين كبيرة.
2- Ubuntu LTS
أوبونتو الدعم الطويل الأفضل استقرارا
تفضّل الإيقاع الهادئ. اختبارات أطول قبل الإصدار وتحديثات أقل، ما يعني تغييرات أقل ومشكلات أندر. كثير من التعريفات يأتي مُجمّعا مسبقا، فيسهل التثبيت وتستقر التجربة.
3- Fedora
فيدورا الأفضل لعتاد حديث
توفر أنوية حديثة مع حزمة akmod-nvidia التي تراقب تغيّر النواة وتعيد تجميع التعريف آليا، فتشعر أن النظام يشد البراغي فور ارتخائها.
4- openSUSE Tumbleweed
أوبن سوزا تامبلوييد الأفضل للتوزيعات ذات الترقيات المستمرة
يمتلك مستودعا خاصا بتعريفات إنفيديا، ويدعم تعدد الأنوية، ويتيح الرجوع السريع لإصدار سابق عند ظهور مشكلة، كزر نجاة قبل منعطف حاد.
في النهاية، تظهر أغلب العثرات مع الإصدارات الرئيسية من الأنوية مثل 6.16 و6.17 أكثر من الفرعية كـ 6.16.12 أو 6.17.7. إن أردت تجربة أهدأ لعام تقريبا، فاختيار أنوية LTS رهان عملي. وبين إصلاحٍ يدوي أو الاعتماد على ما تهيئه التوزيعات، الغاية واحدة: تشغيل بطاقتك بانسجامٍ أعلى وضجيجٍ أقل.
دليل تشخيص وإصلاح مشاكل تعريف NVIDIA على لينكس
الجزء الأول : التشخيص
1: التحقق من Secure Boot
استخدم الأمر التالي:
mokutil --sb-state
إذا كانت النتيجة
SecureBoot enabled: السبب غالبًا لأن الوحدات غير الموقعة تُمنع من التحميل تحت الإقلاع الآمن.الحل السريع: أوقف Secure Boot من إعدادات BIOS/UEFI.
بديل متقدم: وقّع تعريف NVIDIA يدويًا عبر MOK للحفاظ على Secure Boot مفعّلاً (راجع الملحق).
إذا كانت النتيجة
SecureBoot disabled: انتقل للخطوة التالية.
2: الإقلاع بنواة أقدم
من شاشة GRUB، اختر Advanced options ثم اختر نواة أقدم للاختبار.
إذا اشتغل النظام: المشكلة في عدم توافق البناء مع النواة الجديدة، ويمكن المتابعة إلى مسار الإصلاح أ.
إذا لم يعمل: أكمل للخطوة التالية.
3: فحص تحميل وحدة NVIDIA
lsmod | grep nvidia
إذا ظهرت
nvidiaوnvidia_drm: الوحدة تعمل، انتقل للخطوة 4.إذا لم يظهر شيء: فشل تحميل الوحدة أو بناؤها، انتقل إلى مسار الإصلاح أ.
4: التحقق من نوع الجلسة (Wayland أو X11)
echo $XDG_SESSION_TYPE
إذا كانت
wayland: قد تكون المشكلة في الجلسة نفسها، انتقل إلى مسار الإصلاح ب.إذا كانت
x11: الجلسة عادة أكثر استقرارًا مع NVIDIA، ويمكن متابعة التحليل المتقدم إن لزم.
الجزء الثاني: الإصلاح
مسار الإصلاح (أ) : فشل تحميل الوحدة أو فشل بناء DKMS
تعطيل تعريف nouveau المنافس
تحقق أولًا إن كان nouveau محمّلًا:
lsmod | grep nouveau
إن كان نشطًا، أضفه للقائمة السوداء:
echo -e "blacklist nouveau\noptions nouveau modeset=0" | sudo tee /etc/modprobe.d/blacklist-nouveau.conf
ثم أعد بناء صورة الإقلاع حسب التوزيعة:
- Ubuntu / Debian:
sudo update-initramfs -u
- Fedora / openSUSE:
sudo dracut --force
- Arch:
sudo mkinitcpio -P
إعادة بناء وحدة التعريف
- Ubuntu / Debian / Pop!_OS:
sudo apt install --reinstall linux-headers-$(uname -r) sudo dkms autoinstall
- Fedora:
sudo dnf reinstall kernel-devel-$(uname -r) sudo akmods --force
- Arch / Manjaro:
sudo pacman -S linux-headers sudo dkms autoinstall
- openSUSE:
sudo zypper install --force kernel-source kernel-syms sudo zypper reinstall nvidia-driver-G06-kmp-default
بعد ذلك، أعد بناء initramfs كما في الخطوة السابقة، ثم أعد التشغيل.
الحل الأخير: الحذف الكامل وإعادة التثبيت
إذا فشل كل شيء، قم بإزالة التعريف بالكامل وأعد تثبيته من جديد.
- Ubuntu / Debian:
sudo apt purge '*nvidia*' --autoremove sudo ubuntu-drivers autoinstall sudo reboot
- Fedora (مع RPM Fusion):
sudo dnf remove '*nvidia*' sudo dnf install akmod-nvidia xorg-x11-drv-nvidia-cuda sudo reboot
- Arch / Manjaro:
sudo pacman -Rns nvidia nvidia-utils sudo pacman -S nvidia-dkms nvidia-utils sudo reboot
- openSUSE:
sudo zypper rm '*nvidia*' sudo zypper install-new-recommends --repo repo-non-free
أو لتثبيت التعريف المناسب تلقائيًا
sudo zypper install-new-recommends --repo NVIDIA sudo reboot
مسار الإصلاح (ب) : مشاكل Wayland وتجمد الواجهة
سجّل الخروج من الجلسة الحالية.
في شاشة تسجيل الدخول، اختر رمز الترس.
بدّل الجلسة من Wayland إلى X11 أو X.Org.
سجّل الدخول مجددًا.
إذا لم يظهر خيار X11:
- في Fedora:
sudo dnf install xorg-x11-server-Xorg
- في Ubuntu:
sudo apt install xorg
- في Debian:
sudo apt install xorg
- في openSUSE:
sudo zypper install gnome-session
الجزء الثالث: التحليل المتقدم
فحص السجلات
sudo dmesg | grep -i -E 'nvidia|nouveau|drm' journalctl -b | grep -i -E 'nvidia|nouveau'
أمثلة تشخيص سريعة:
version magic mismatch: الوحدة بُنيت لنواة مختلفة، أعد بناء DKMS/akmods.
failed to initialize GSP: مشكلة Firmware/تهيئة، جرّب ضبط خيارات نواة NVIDIA مؤقتًا.
Device or resource busy: تعريف nouveau نشط مبكرًا، عطّله وأعد بناء initramfs.
الدخول من واجهة TTY عند الشاشة السوداء
اضغط Ctrl + Alt + F3، ثم نفّذ من الطرفية:
sudo dmesg | grep nvidia sudo dkms autoinstall sudo reboot
الجزء الرابع: الوقاية
استخدام Timeshift وSnapper قبل التحديثات الكبيرة
- Timeshift:
sudo timeshift --create --comments "Before NVIDIA update"
- Snapper (openSUSE):
sudo snapper create --description "Before NVIDIA update"
اختيار الحزمة الأنسب حسب التوزيعة
| التوزيعة | الحزمة الموصى بها | السبب |
|---|---|---|
| Arch / Manjaro | nvidia-dkms | يعيد بناء الوحدة تلقائيًا مع كل تحديث للنواة. |
| Fedora | akmod-nvidia | يدعم البناء التلقائي عبر akmods. |
| Ubuntu | ubuntu-drivers autoinstall | يختار التعريف الأنسب تلقائيًا ويضبط الاعتمادات. |
| openSUSE | install-new-recommends | يثبت التعريف المتوافق مع العتاد من المستودعات. |
متى نُصلح ومتى نرجع للخلف
يمكن الإصلاح إذا:
بُنيت الوحدة بنجاح بعد تثبيت headers.
تعطيل nouveau أصلح الشاشة السوداء.
تشغيل X11 حسّن الأداء.
الرجوع للخلف إذا:
فشل بناء الوحدة رغم توافر الملفات.
استمرار فشل nvidia-smi.
التعريف الجديد سبب مشاكل رسومية خطيرة.
الملحق: توقيع تعريف NVIDIA مع Secure Boot
هذا القسم اختياري لمن يرغب بإبقاء Secure Boot مفعّلًا.
إنشاء مفتاح MOK
openssl req -new -x509 -newkey rsa:2048 -keyout MOK.priv -outform DER -out MOK.der -nodes -days 3650 -subj "/CN=My NVIDIA MOK/"
استيراده
sudo mokutil --import MOK.der
ستُطلب كلمة مرور لمرة واحدة، ثم أعد التشغيل وسجّل المفتاح من شاشة MOKManager عبر Enroll MOK ثم Continue.
توقيع وحدة NVIDIA
ابحث عن مسارات الوحدات ثم وقّعها:
find /lib/modules/$(uname -r)/ -name "nvidia*.ko*" sudo /usr/src/linux-headers-$(uname -r)/scripts/sign-file sha256 MOK.priv MOK.der /PathTo/nvidia.ko
أعد التشغيل. بعد كل تحديث للتعريف أو النواة قد تحتاج لتكرار التوقيع.
جدول تعريفات NVIDIA حسب طراز البطاقة وتوزيعة لينكس
| سلسلة البطاقة والمعمارية | أمثلة على الطرازات | الفرع والإطار الزمني | اسم الحزمة حسب التوزيعة | ملاحظات هامة |
|---|---|---|---|---|
| سلسلة RTX 40, 30, 20 سلسلة GTX 16, 10 (Ada, Ampere, Turing, Pascal) | RTX 4090, RTX 3080, RTX 2060, GTX 1660, GTX 1070 | الفرع الحالي المدعوم (550.xx، 2024–2025) — 2024 وأحدث | - Debian/Ubuntu: nvidia-driver-550 - Fedora: akmod-nvidia - Arch: nvidia-dkms - openSUSE: nvidia-driver-G06-kmp-default | مناسب لأغلب البطاقات الحديثة؛ أفضل أداء، ودعم Wayland هو الأفضل نسبيًا. |
| سلسلة GTX 900, 700, 600 (Maxwell, Kepler) | GTX 980, GTX 970, GTX 780, GTX 750 Ti, GTX 660 | فرع مدعوم أمنيًا فقط (470.xx، 2021–2024) — ما قبل 2022 | - Debian/Ubuntu: nvidia-driver-470 - Fedora: akmod-nvidia-470xx - Arch: nvidia-470xx-dkms - openSUSE: nvidia-driver-G05-kmp-default | تحديثات أمنية فقط؛ دعم Wayland محدود جدًا؛ آخر فرع لبطاقات Kepler. |
| سلسلة GTX 500, 400 (Fermi) | GTX 580, GTX 560, GTX 460 | فرع منتهي الدعم (390.xx وما قبله) — قبل 2016 تقريبًا | - Debian/Ubuntu: nvidia-driver-390 - Fedora: akmod-nvidia-390xx - Arch: nvidia-390xx-dkms - openSUSE: nvidia-driver-G04-kmp-default | احتمال عدم التوافق مع أنوية حديثة؛ لا يدعم Wayland. |
| سلسلة GeForce 8, 9, 100–300 (Tesla) | 9800 GT, 8800 GT, GT 220 | فرع أرشيفي (340.xx) — دعم منتهي | - Debian/Ubuntu: nvidia-driver-340 - Fedora/Arch: غالبًا عبر مستودعات غير رسمية (AUR في Arch). - openSUSE: nvidia-driver-G03-kmp-default | صعب التشغيل على الأنظمة الحديثة؛ يفضّل استخدام nouveau. |
ملاحظة: إن توفر خيار يعتمد على إعادة البناء التلقائي مثل nvidia-dkms أو akmod-nvidia فاختَره لتفادي مشاكل تحديث النواة.