wikibackup/fa/use-from-nvidia-in-parch.md

232 lines
No EOL
13 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: استفاده از انویدیا در پارچ
description:
published: true
date: 2024-11-19T17:21:58.813Z
tags: پارچ, انویدیا
editor: markdown
dateCreated: 2024-11-13T18:31:50.299Z
---
## استفاده از گرافیک انویدیا در پارچ
با گفته‌های بزرگان و کاربران گنو/لینوکس، کارت گرافیک انویدیا در لینوکس دردسرهای فراوانی دارد و شبیه یک غول ترسناک به نظر می‌رسد اما امروز اینجاییم که این غول بزرگ را محو کنیم!
## نصب درایور
### درایور انحصاری انویدیا
پیش از هرکاری، ابتدا باید تشخیص بدهیم که چه نسخه از درایور با گرافیک ما سازگار است بنابراین باید برنامه nvidia-helper را از مخازن پارچ نصب کنیم و آن‌را اجرا کنیم:
```bash
sudo pacman -S nvidia-helper && nvidia-helper
```
اگر این خروجی را گرفتیم یعنی میتوانیم آخرین نسخه درایور را نصب بنمایم:
```
Your card is supported by the latest drivers.
It is recommended to install the nvidia package or install the nvidia-dkms package for custom kernels
```
مراحل نصب:
۱. ابتدای امر به کمک ویرایشگر نانو فایل `/etc/mkinitcpio.conf` را باز کنید:
```bash
sudo nano /etc/mkinitcpio.conf
```
۲. به‌این صورت بخش MODULES را پر کنید:
```
MODULES=(nvidia nvidia_modeset nvidia_uvm nvidia_drm)
```
۳. بعد از این کار از بخش `HOOKS` در همان فایل، کلمه kms را حذف کنید؛ به کمک میانبر <kbd>Ctrl + o</kbd> و سپس زدن اینتر فایل را ذخیره نموده و با میانبر <kbd>Ctrl + x</kbd> از ویرایشگر خارچ شوید.
۴. در آخر به کمک دستور زیر درایور و اجزای آن را نصب نمایید:
```bash
sudo pacman -S nvidia nvidia-utils nvidia-settings nvidia-pacman-hook
```
> **نکته**
اگر شما کرنل کاستوم نصب نموده اید باید درایور nvidia-dkms را نصب کنید:
sudo pacman -S nvidia-dkms nvidia-utils nvidia-settings
اگر کرنل lts دارید:
sudo pacman -S nvidia-lts nvidia-utils nvidia-settings
{.is-info}
اما اگر یکی از خروجی های زیر را گرفتید با توجه به نام درایوری که برایتان نوشته شده یکی از درایورها را نصب کنید:
```
Your card is supported by the Tesla(470xx) dkms drivers.
Your card is supported by the legacy 390xx drivers.
Your card is supported by the legacy 340xx drivers.
```
به کمک دستورات:
```bash
paru -S nvidia-470xx-dkms nvidia-470xx-settings or paru -S nvidia-390xx-dkms nvidia-390xx-settings or paru -S nvidia-340xx-dkms nvidia-340xx-settings
```
### نصب درایور آزاد
در گنو/لینوکس، دو درایور آزاد برای گرافیک‌های انویدیا داریم:
۱.nouveau
این درایور به‌صورت پیشفرض در کرنل موجود است و نیازمند نصب چیز دیگری نیست. اما مشکلات بسیار زیادی از جمله عدم کنترل سرعت فن و عملکرد ضعیف دارد؛ بنابراین توصیه نمی‌شود.
۲.nvidia-open
از نسخه 510 به بعد، درایور nvidia-open منتشر شد که کد کرنل آن باز است و از گرافیک های سری تورینگ به بالا ساپورت میکند، اینجا لیست گرافیک‌هایی است که از این درایور پشتیبانی می‌کنند.
نحوه نصب آن به این شکل است، ابتدا باید به کمک ویرایشگر نانو فایل `/etc/mkinitcpio.conf` را باز کنیم:
```bash
sudo nano /etc/mkinitcpio.conf
```
سپس بخش MODULES را اینگونه پر کنید:
```
MODULES=(nvidia-open)
```
بعد از این کار از بخش `HOOKS` همان فایل، کلمه kms را حذف کنید؛ به کمک میانبر <kbd>Ctrl + o</kbd> و سپس زدن اینتر فایل را ذخیره نموده و با میانبر <kbd>Ctrl + x</kbd> از ویرایشگر خارچ شوید.
در آخر درایور و مشتقات آن را نصب نمایید:
```bash
sudo pacman -S nvidia-open nvidia-utils nvidia-settings
```
>**نکته**
اگر کرنل کاستوم یا کرنل lts نصب نموده‌اید باید درایور nvidia-open-dkms را نصب نمایید:
sudo pacman -S nvidia-open-dkms nvidia-utils nvidia-settings
{.is-info}
## نکات مهم
۱. برای اجرای بازی ها به کمک گرافیک انویدیا باید درایور ۳۲ بیتی انویدیا و mesa و ولکان هر دو نسخه ۶۴ و ۳۲ بیتی را نصب کنید.
اگر درایور انحصاری انویدیا یا nvidia-open را دارید:
```bash
sudo pacman -S vulkan-icd-loader lib32-vulkan-icd-loader lib32-nvidia-utils mesa lib32-mesa
```
اگر درایور nouveau دارید:
```bash
sudo pacman -S vulkan-icd-loader lib32-vulkan-icd-loader vulkan-nouveau lib32-vulkan-nouveau
```
۲. اجرای بهتر ویلند و کامپازیتورهای آن
از نسخه ۳۶۴ درایور به بعد فلگ `nvidia_drm.modeset=1` جهت عملکرد بهتر ویلند و X11 در حالت روت اضافه شده است، از آنجایی که درایور انویدیا نمی‌تواند به صورت با تنظیم‌گر حالت کرنل لینوکس(Kernel Mode Setting یا به اختصار KMS) سازگار باشد و اگر تنظیم‌گر دیر بارگذاری شود یا بعد از اجرای پروتکل نمایش بالا بیاید، دیگر به صورت خودکار نمی‌تواند وضوح و عمق نمایشگر را تنظیم کند و امکان تعویض کنسول(tty) دیگر فراهم نیست؛ پس این فلگ به درایور افزوده شد که تنظیم‌گر مدیر هسته DRM انویدیا را با kms جایگزین می‌کند؛ جهت گذاشتن این فلگ در پارامتر های کرنل این دستور را وارد کنید:
```bash
sudo tee /etc/modprobe.d/nvidia-modeset.conf <<< 'options nvidia_drm modeset=1'
```
همچنین از نسخه ۵۴۵ به بعد درایور، فلگ nvidia_drm.fbdev=1 را نیز افزوده شد که simpledrm را مدیر هسته DRM می‌کند که برای کنسول(tty) با نمایشگر دارای رزولوشن بالا است. برای فعالسازی و افزودن آن به متغیرهای کرنل دستور زیر را وارد کنید:
```bash
sudo tee /etc/modprobe.d/nvidia-modeset.conf <<< 'options nvidia_drm modeset=1 fbdev=1'
```
## سوییچ بین دو کارت گرافیک در لپ‌تاپ
برای اینکار دو برنامه آسان و راحت وجود دارد:
### Bumblebee (توصیه نمی‌شود)
این برنامه به کمک فناوری NVIDIA Optimus موجود در گرافیک های انویدیا، بین دو گرافیک موجود با توجه به سنگینی کار درحال انجام، سوییچ می‌کند.
بامبل بی به این‌صورت کار می‌کند که هسته DRM انویدیا یا `nvidia-drm` را درهنگام بوت مسدود میکند و نمی‌گذارد درایور در هنگام بوت بارگذاری و نمایشگر روی گرافیک انویدیا تنظیم شود، بلکه نمایشگر از کارت گرافیک مجتمع قدرت می‌گیرد و زمانی که درحال انجام کار سبکی مانند وب گردی هستید یا روی حالت استندبای قرار دارید؛ قدرت را از کارت گرافیک مجتمع می‌گیرد و به نمایشگر منتقل می‌کند.
>**نکته**
به دلیل این نحوه کارکرد بامبل بی ممکن است دچار مشکلاتی از جمله کمبود fps در بازی‌ها یا افت عملکرد در سایر برنامه‌ها شوید، [اینجا](https://bbs.archlinux.org/viewtopic.php?pid=1822926) یا [اینجا](https://github.com/Witko/nvidia-xrun/issues/4#issuecomment-153386837) را ببینید. همچنین مقایسه عملکرد بامبل بی با تک-سوییچر nvidia-xrun را هم در [اینجا](https://wiki.archlinux.org/title/Bumblebee#Optimizing_speed) می‌توانید ببینید.
همچنین موقع سوییچ بین دو گرافیک بنا به خاطر فرایند روشن کردن گرافیک مجزا و انتقال قدرت به آن احتمال پارگی یا سیاه شدن صفحه نمایش وجود دارد.
{.is-info}
اگر درحال انجام کار سنگین باشید مانند ویرایش ویدیو با بازی کردن، بامبل بی تنظیم می‌کند که برنامه موردنظر از کارت گرافیک انویدیا استفاده کند اما نمایشگر از کارت گرافیک انویدیا استفاده نکند و صرفا قدرت گرافیک انویدیا به نمایشگری که از گرافیک مجتمع استفاده می‌کند، منتقل شود.
>**هشدار**
بامبل بی درایور هسته DRM انویدیا را مسدود می‌کند تا درایور انویدیا در هنگام بوت بارگذاری نشود، اگر سراغ راه دیگری می‌روید، بامبل بی را حذف کنید تا گرافیک انویدیا بتواند فعال شود.
{.is-warning}
برای نصب آن به این شکل عمل کنید، با فرض اینکه شما درحال استفاده از درایور nvidia هستید:
```bash
sudo pacman -S bumblebee mesa lib32-nvidia-utils lib32-virtualgl
```
سپس کاربر خود را به گروه بامبل بی اضافه نموده و سپس سرویس بامبل بی را روشن کنید (منظور از $user نام یوزر شماست):
```bash
sudo gpasswd -a $user bumblebee && sudo systemctl enable --now bumblebeed.service
```
در نهایت سیستم خود را ریستارت کنید.
#### مدیریت انرژی در بامبل بی
بامبل بی به صورت خودکار کارت گرافیک مجزا را درهنگام بیکاری، خاموش نمی‌کند بنابراین ما نیازمند برنامه دیگری هستیم که این کار را انجام دهد، برنامه bbswatch این‌کار را برای ما انجام می‌دهد کافی است که آن را نصب کنیم:
```bash
sudo pacman -S bbswitch
```
برای کرنل lts یا کرنل های کاستوم:
```bash
sudo pacman -S bbswitch-dkms
```
>**نکته**
این برنامه نیازمند بامبل بی نیست و در هرصورتی می‌توانید آن را نصب کنید اما برای کامپیوتر های غیرقابل حمل این روش کار نمی‌کند.
{.is-info}
### Envycontrol
این برنامه همانند بامبل بی به کمک تکنولوژی NVIDIA Optimus کار می‌کند، اما برخلاف بامبل بی ۳ حالت مختلف دارد و کاربر باید آن‌را به صورت دستی تنظیم کند.
برخلاف بامبل بی این سوییچر مشکلات افت فریم یا پارگی صفحه نمایش موقع سوییچ کردن را ندارد و حتی مکانیزم هایی برای حل پارگی صفحه نمایش(اگر آن را دارید.) دارد.
دستور نصب آن به این شکل است:
```bash
sudo pacman -S envycontrol
```
#### تنظیم حالت سوییچر envycontrol
اگر میخواهید سیستم به صورت خودکار بین دو گرافیک سوییچ کند این دستور را وارد کنید:
```bash
sudo envycontrol -s hybrid
```
>**نکته**
envycontrol برای کنترل مصرف انرژی در پردازنده های گرافیکی سری تورینگ به بالا انویدیا، فلگ `--rtd3` را دارد که مقدار پیشفرض آن ۲ است، ۱ کمترین درجه و ۳ بیشترین درجه آن است. این فلگ مانند bbswatch عمل می‌کند و زمانی که کارت گرافیک انویدیا در حالت بیکاری است مقدار مصرف انرژی آن را کم می‌کند و بیشترین درجه تقریبا کارت گرافیک را به حالت خاموشی می‌برد، این فلگ تنها درحالت هایبرید کار می‌کند.
برای تنظیم آن به عنوان مثال به این شکل عمل کنید:
sudo envycontrol -s hybrid --rtd3 2
اگر نیازمند این ویژگی هستید اما پردازنده گرافیکتان سری پاسکال به پایین است به این [بخش](#مدیریت_انرژی_در_بامبل_بی) مراجعه کنید.
{.is-info}
اگر میخواهید فقط از گرافیک اینتل یا انویدیا استفاده بنمایید به این شکل عمل کنید:
```bash
:For Only nvidia
sudo envycontrol -s nvidia --dm DM
:For only intel/amd
sudo envycontrol -s integrated --dm DM
```
(منظور از `DM` دیسپلی منیجر توزیعتان است مانند sddm یا gdm، در اینجا مدیر نمایش را معرفی میکنیم تا در فایل‌های مدیر نمایش تنظیم شود که با گرافیک انویدیا یا گرافیک مجتمع بالا بیایند و میزکار را با چه کارت گرافیکی بارگذاری کند.)