سلام
این مقاله ترجمه ( اندکی تغییر و تصرف ، همچنین منابع برای کوتاهی مقاله حذف شده اند .)مقاله زیر است که با مجوز MIT منتشر شده است:
https://github.com/bayasdev/nvidia-gpu-offاگه اصلاحی دارید یا مشکلی دیدید خوشحال میشم همینجا بگید
راهنمای قطعی برای خاموش کردن کامل گرافیک اختصاصی انویدیا و در نتیجه دوبرابر کردن عمر باتری لپ تاپ در لینوکس.
پیشگفتارگرافیک های Nvidia در لینوکس به دلیل راهانداز های مالکیتی همیشه سردرد ساز بوده اند، اما این مشکل بر روی لپ تاپ ها به دلیل عدم وجود فناوری مدیریت پویای قدرت برای کارت های پیش از Turing و پردازنده های اینتل قدیمی تر از نسل کافی لیک تشدید می شود.
چرا nouveau یا bbswitch جایگزین مناسبی نیستند؟راهانداز متنباز "nouveau" که در هسته لینوکس داخلی ساخته شده است، امکانات کافی برای مدیریت پویای قدرت و انتقال پیکربندی ("PRIME offloading") را فراهم میکند؛ با این حال، به دلیل محدودیتهای تحمیل شده توسط انویدیا ، راهانداز "nouveau" نمیتواند سرعت ساعت کارت گرافیک را کنترل کند، که این باعث کاهش عملکرد کارت گرافیک میشود. و عملکرد بدی را به وجود میآورد. همچنین، ممکن است باعث مشکلات عدم سازگاری نرمافزاری شود (به عنوان مثال در لپتاپ من، باز کردن برنامهی تنظیمات گنوم در حالت nouveau باعث قطعی و تعلیق صفحه کلید تا پنج ثانیه میشود ).
نرمافزار bbswitch نیز از سال ۲۰۱۳ به بعد بروزرسانی نشده و در برخی سیستمها کاملاً معیوب است.
نیازمندیها: - داشتن لپتاپی با فناوری Optimus و کارت گرافیک انویدیا با معماری قبل از Turing.
- این راهنما برای توزیعهای لینوکسی با سیستم init مبتنی بر systemd طراحی شده است.
محدودیتها:این نکته را بهخاطر داشته باشید که در صورتی که پورت HDMI به کارت گرافیک Nvidia متصل باشد، این پورت کار نخواهد کرد. با این حال همیشه میتوانید روند توضیح داده شده در این راهنما را برعکس کنید و مجدد گرافیک خود را فعال کنید.
شروع کنیم!۱) حذف راهاندازی مالکیتی Nvidia لطفاً به مستندات توزیع خود مراجعه کنید تا راهانداز انحصاری Nvidia را حذف کنید، اما در اوبونتو میتوانید این کار را با دستور زیر انجام دهید:
sudo apt-get autoremove --purge *nvidia*
سپس سیستم خود را مجدد راهاندازی کنید.
۲) شناسایی رابطهای ارتباطی قبل از ادامهی این راهنما، لازم است رابطهای ارتباطی PCI کارت گرافیک Nvidia را شناسایی کنیم. لطفا دستور زیر را اجرا کنید تا رابطهای مربوط به کارت گرافیک Nvidia را بیابید:
lspci | grep NVIDIA
در لپتاپ من، خروجی به شکل زیر بود:
01:00.0 VGA compatible controller: NVIDIA Corporation GP106M [GeForce GTX 1060 Mobile]
01:00.1 Audio device: NVIDIA Corporation GP106 High Definition Audio Controller
همانطور که مشاهده میکنید، رابط PCI 01:00.0 مربوط به کارت گرافیک و رابط PCI 01:00.1 مربوط به تراشهی صوتی کارت گرافیک است. رابط ها را یادداشت میکنیم ، در مراحل بعد به انها نیاز داریم.
۳.۱) نصب بستهی acpi-call-dkmsدر اوبونتو، دبیان و توزیعهای زیر شاخه انها از دستور زیر استفاده کنید:
sudo apt install acpi-call-dkms
در آرچ لینوکس و توزیعهای مشابه، این بسته با نام acpi_call-dkms شناخته میشود، بنابراین از دستور زیر استفاده کنید:
sudo pacman -S acpi_call-dkms
اگر توزیع دیگری دارید. لطفا به مستندات یا مخازن مربوطه آن مراجعه کنید.
۳.۲) یافتن فراخوانی ACPI مناسب برای شماقبل از ادامهی راهنما، لازم است که دستور زیر را اجرا کنید:
sudo modprobe acpi_call
در اوبونتو، دبیان و توزیعهای زیر شاخه آن، لطفاً دستور زیر را اجرا کنید:
sudo /usr/share/doc/acpi-call-dkms/examples/turn_off_gpu.sh
در آرچ لینوکس و توزیعهای زیر شاخه آن، دستور زیر را اجرا کنید:
sudo /usr/share/acpi_call/examples/turn_off_gpu.sh
خروجی من به شکل زیر بود:
Trying \_SB.PCI0.P0P1.VGA._OFF: failed
Trying \_SB.PCI0.P0P2.VGA._OFF: failed
Trying \_SB_.PCI0.OVGA.ATPX: failed
Trying \_SB_.PCI0.OVGA.XTPX: failed
Trying \_SB.PCI0.P0P3.PEGP._OFF: failed
Trying \_SB.PCI0.P0P2.PEGP._OFF: failed
Trying \_SB.PCI0.P0P1.PEGP._OFF: failed
Trying \_SB.PCI0.MXR0.MXM0._OFF: failed
Trying \_SB.PCI0.PEG1.GFX0._OFF: failed
Trying \_SB.PCI0.PEG0.GFX0.DOFF: failed
Trying \_SB.PCI0.PEG1.GFX0.DOFF: failed
Trying \_SB.PCI0.PEG0.PEGP._OFF: works!
Trying \_SB.PCI0.XVR0.Z01I.DGOF: failed
Trying \_SB.PCI0.PEGR.GFX0._OFF: failed
Trying \_SB.PCI0.PEG.VID._OFF: failed
Trying \_SB.PCI0.PEG0.VID._OFF: failed
Trying \_SB.PCI0.P0P2.DGPU._OFF: failed
Trying \_SB.PCI0.P0P4.DGPU.DOFF: failed
Trying \_SB.PCI0.IXVE.IGPU.DGOF: failed
Trying \_SB.PCI0.RP00.VGA._PS3: failed
Trying \_SB.PCI0.RP00.VGA.P3MO: failed
Trying \_SB.PCI0.GFX0.DSM._T_0: failed
Trying \_SB.PCI0.LPC.EC.PUBS._OFF: failed
Trying \_SB.PCI0.P0P2.NVID._OFF: failed
Trying \_SB.PCI0.P0P2.VGA.PX02: failed
Trying \_SB_.PCI0.PEGP.DGFX._OFF: failed
Trying \_SB_.PCI0.VGA.PX02: failed
همانطور که مشاهده میکنید، \_SB.PCI0.PEG0.PEGP._OFF فراخوانی ACPI صحیح برای لپتاپ من بود. لطفاً فراخوانی ACPI مناسب برای دستگاه خود را یادداشت کنید.
۴) قرار دادن nouveau در لیست سیاه و بارگذاری acpi-call-dkmsبا دستور زیر فایل /etc/modprobe.d/blacklist.conf را باز کنید:
sudo nano /etc/modprobe.d/blacklist.conf
و به انتهای فایل، محتوای زیر را اضافه کنید (
در ویرایشگر نانو میتوانید با ctrl+x و زدن اینتر تغییرات را ذخیره کنید):
blacklist nouveau
فایل /etc/modules را باز کنید با دستور زیر باز کنید :
sudo nano /etc/modules
و در انتهای آن، acpi_call را اضافه کنید. به عبارت دیگر، باید این فایل به شکل زیر باشد:
# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
acpi_call
( این محتوای فایل نه جزو مقاله هست نه من نوشتم ولی chatGPT تضمین داده که محتوا بعد ویرایش همونه ، ترجمه رو تحریف و تکمیل کرد
)
۵) خاموش کردن کارت گرافیک در زمان راهاندازی سیستمبرای راهاندازی خودکار، از systemd-tmpfiles استفاده خواهیم کرد.
فایل /etc/tmpfiles.d/acpi_call.conf را با دستور زیر ویرایش و محتوای زیر را در انتهای آن اضافه کنید:
sudo nano /etc/tmpfiles.d/acpi_call.conf
w /proc/acpi/call - - - - \\_SB.PCI0.PEG0.PEGP._OFF
لطفاً \_SB.PCI0.PEG0.PEGP._OFF را با فراخوانی ACPI خود که در مرحله ۳.۲ دریافت کردهاید، جایگزین کنید. اما فراموش نکنید که باید بک اسلش را قرار دهید.
سپس با استفاده از دستور
sudo update-initramfs -u -k all
تغییرات را ذخیره کرده و سیستم خود را راهاندازی مجدد کنید.
۶.۱) تلاش برای حذف رابط های PCIبعد از راهاندازی مجدد، کارت گرافیک Nvidia شما باید به وسیلهی فراخوانی ACPI خاموش شود. اما عدم حذف رابط های PCI آن ممکن است به مشکلات پایداری منجر شود. بنابراین برای هر یک از رابط های PCI که در مرحله ۲ دریافت کردهاید، باید دستورات زیر را اجرا کنید.
sudo echo 1 > /sys/bus/pci/devices/[PCI bus here]/remove
برای لپتاپ من باید این کار را انجام دهید:
sudo echo 1 > /sys/bus/pci/devices/0000\:01\:00.0/remove
sudo echo 1 > /sys/bus/pci/devices/0000\:01\:00.1/remove
در این مرحله، با بک اسلش ها به دقت برخورد کنید.
حال میتوانید دوباره lspci را اجرا کنید تا بررسی کنید که گرافیک انویدیا دیگر در سیستم شما وجود ندارد.
نتیجهمصرف برق لپتاپ من از ۳۰ وات برای تماشای ویدئوی Youtube با راهانداز اختصاصی ، به ده وات در حالت مجتمع رسید.
امیدوارم این راهنما بتواند به شما کمک کند
حالش را ببرید ! ( یا مثل انجمن های دیگه : اگه بهتون کمک کرد لایک کنید . اما چون پسندیدن نداریم در انجمن به مقاله اصلی ستاره بدید.
اگه ناظران این مقاله رو مفید میدونید بی زحمت سنجاقش کنید