AMD — درایور متنباز گرافیک
آموزش کامل نصب درایور AMD در Gentoo: amdgpu/radeonsi، تنظیم کرنل DRM، mesa، firmware، VA-API/VDPAU و ROCm برای محاسبات.
درایورهای AMD در Gentoo کاملاً متنباز هستند و در کرنل لینوکس ادغام شدهاند. برخلاف NVIDIA که به درایور اختصاصی نیاز دارد، AMD با amdgpu و Mesa بهترین عملکرد را بدون نیاز به ماژول خارجی فراهم میکند. این رویکرد نصب و نگهداری را بسیار ساده میکند.
معماری درایور AMD
درایور AMD از سه لایه تشکیل میشود:
+---------------------+ +------------------+
| Application | | Application |
+----------+----------+ +---------+--------+
| |
v v
+---------------------+ +------------------+
| mesa (OpenGL/Vulkan)| | VA-API |
| - radeonsi (OpenGL) | | (Video decode) |
| - radv (Vulkan) | +--------+---------+
+----------+----------+ |
| |
v v
+---------------------------------------------+
| libdrm |
+---------------------+-----------------------+
|
v
+---------------------------------------------+
| amdgpu kernel module (DRM) |
+---------------------+-----------------------+
|
v
+---------------------------------------------+
| AMD GPU Hardware |
+---------------------------------------------+| لایه | بسته | توضیح |
|---|---|---|
| کرنل | amdgpu (built-in) | ارتباط با سختافزار |
| libdrm | media-libs/libdrm | کتابخانه کاربر |
| Mesa | media-libs/mesa | OpenGL, Vulkan (radeonsi, radv) |
| VA-API | media-libs/libva-mesa-driver | رمزگشایی ویدئویی |
| Firmware | sys-kernel/linux-firmware | فریمور سختافزاری |
amdgpu vs radeon
کرنل لینوکس دو درایور AMD دارد: radeon (قدیمی برای کارتهای قبل از Southern Islands) و amdgpu (مدرن، برای همه کارتهای GCN به بعد). در Gentoo هر دو را در VIDEO_CARDS میتوانید داشته باشید تا کارتهای قدیمی هم پشتیبانی شوند.
تنظیم VIDEO_CARDS
در /etc/portage/make.conf:
# /etc/portage/make.conf
VIDEO_CARDS="amdgpu radeonsi"برای کارتهای قدیمی (HD 5000/6000 سری یا قدیمیتر):
VIDEO_CARDS="radeon r300 r600"برای سیستم ترکیبی (بهعنوان مثال لپتاپ با Intel + AMD discrete):
VIDEO_CARDS="intel amdgpu radeonsi"پیکربندی کرنل
اگر از Manual Kernel استفاده میکنید، این گزینهها باید فعال باشند:
Device Drivers --->
Graphics support --->
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
<*> AMD GPU
[ * ] Enable amdgpu support for SI parts
[ * ] Enable amdgpu support for CIK parts
[ * ] ATI Radeon
[ * ] Enable radeonfb (NEW)
[ * ] DRM Support for radeon (NEW)استفاده از Distribution Kernel
اگر از gentoo-kernel یا gentoo-kernel-bin استفاده میکنید، این درایورها بهطور پیشفرض بهصورت ماژول فعال هستند. نیازی به پیکربندی دستی ندارید. به آموزش Distribution Kernel مراجعه کنید.
نصب Firmware
Firmware برای کارتهای AMD ضروری است. بدون firmware، صفحه نمایشگر سیاه خواهد شد:
# نصب linux-firmware
emerge --ask sys-kernel/linux-firmware
# خروجی:
# [ebuild N ] sys-kernel/linux-firmware-20240115
# 700+ مگابایت firmware برای همه سختافزارهابرای بررسی firmware نصبشده برای AMD:
ls /lib/firmware/amdgpu/ | head
# خروجی:
# accel_dbg.bin
# adt7753.bin
# ai_ibfw.bin
# ...
# (صدها فایل برای مدلهای مختلف)linux-firmware باید نصب باشد
اگر firmware نصب نباشد، کرنل در بوت خطای failed to load firmware میدهد و GPU کار نمیکند. این خطا معمولاً صفحه سیاه پس از grub است.
نصب Mesa
Mesa پیادهسازی متنباز OpenGL و Vulkan است. با USE flags مناسب:
# /etc/portage/make.conf
USE="${USE} vulkan gles2 v3d"
# /etc/portage/package.use/mesa
media-libs/mesa llvm video_cards_radeonsi vulkan# نصب Mesa
emerge --ask media-libs/mesa
# خروجی:
# [ebuild N ] media-libs/mesa-24.0.1
# [ebuild N ] dev-libs/wayland-1.22.0
# [ebuild N ] sys-devel/llvm-17.0.6
# ...برای Vulkan (مورد نیاز برای Steam، بازیها):
emerge --ask media-libs/vulkan-loader
emerge --ask media-libs/vulkan-tools
# تست Vulkan
vulkaninfo | grep "GPU"
# deviceName = AMD Radeon RX 6700 XT (RADV NAVI22)VA-API و VDPAU (رمزگشایی ویدئو)
برای رمزگشایی سختافزاری ویدئو (H.264, H.265, VP9, AV1):
emerge --ask media-libs/libva
emerge --ask media-libs/libva-mesa-driver # برای VA-API
emerge --ask media-libs/mesa-amber # اگر نیاز به VDPAU دارید
# بررسی پشتیبانی
vainfo
# خروجی نمونه:
# Trying display: wayland
# vainfo: VA-API version: 1.21 (libva 2.21.0)
# VA-AP-API: AMD Radeon Graphics 7000 series (radeonsi, navi21, LLVM 17.0.6)
# VAProfileMPEG2Simple: 4 entries
# VAProfileH264Main: 5 entries
# VAProfileHEVCMain: 5 entries
# VAProfileVP9Profile0: 5 entries
# VAProfileAV1Profile0: 5 entriesPipeWire و VA-API
برای پخش روان ویدئو 4K، از PipeWire بهعنوان سرور صوتی/ویدئویی استفاده کنید. این بهطور خودکار با VA-API یکپارچه میشود.
ROCm — محاسبات GPU
ROCm (Radeon Open Compute) معادل CUDA برای AMD است. برای یادگیری ماشین، رندرینگ علمی و محاسبات GPGPU:
# ROCm نیاز به کارت گرافیک پشتیبانیشده دارد (معمولاً Vega یا جدیدتر)
emerge --ask dev-libs/rocm-core dev-libs/rocm-opencl
emerge --ask sci-libs/rocBLAS # برای PyTorch AMD
emerge --ask dev-util/rocm-smi # ابزار مانیتورینگ
# بررسی
rocm-smi
# ==================================== ROCm System Management Interface ====================================
# ================================================= Concise Info ================================================
# Device [Model : Revision] Temp Power Partitions SCLK MCLK Fan Perf PwrCap VRAM% GPU%
# 0 [0x73bf:0xC1] 45.0°C 35.0W NPS: 0 0Mhz 0Mhz 0% auto 0W 0% 0%
# ================================================================================================================پشتیبانی محدود ROCm
ROCm فقط روی کارتهای RX 5000 به بعد بهخوبی پشتیبانی میشود. کارتهای قدیمیتر ممکن است کار کنند اما پایداری تضمین نمیشود. لیست کامل در ROCm Supported Hardware موجود است.
بررسی نصب
پس از نصب، تأیید کنید همه چیز درست است:
# بررسی ماژول بارگذاریشده
lsmod | grep -E "amd|drm"
# amdgpu 925696 15
# drm_ttm_helper 16384 1 amdgpu
# drm_dp_aux_bus 16384 1 amdgpu
# i2c_algo_bit 16384 1 amdgpu
# drm 667648 17 drm_dp_aux_bus,drm_ttm_helper,amdgpu
# بررسی OpenGL
glxinfo | grep "OpenGL renderer"
# OpenGL renderer string: AMD Radeon Graphics (radeonsi, renoir, LLVM 17.0.6, DRM 3.54, 6.6.21-gentoo)
# بررسی Vulkan
vulkaninfo --summary | grep deviceName
# deviceName = AMD Radeon Graphics (RADV RENOIR)
# مانیتورینگ دما و فن
cat /sys/class/drm/card0/device/gpu_busy_percent
# 12 (درصد)
cat /sys/class/drm/card0/device/hwmon/hwmon*/temp1_input
# 45000 (45000 = 45 درجه سانتیگراد)خطاهای رایج
۱. صفحه سیاه — خطای firmware
amdgpu: firmware: failed to load amdgpu/navi10_gpu_info.binدلیل: linux-firmware نصب نیست. راهحل:
emerge --ask sys-kernel/linux-firmware
# بررسی نصب firmware برای مدل شما
ls /lib/firmware/amdgpu/ | grep navi10
# navi10_gpu_info.bin
# navi10_pfp.bin
# ...
# ریبوت
reboot۲. عملکرد پایین OpenGL
OpenGL renderer string: llvmpipe (LLVM 17.0.6, 256 bits)دلیل: Mesa با درایور صحیح ساخته نشده و در حالت software rendering اجرا میشود. راهحل:
# بررسی VIDEO_CARDS
emerge --info | grep VIDEO_CARDS
# اگر amdgpu radeonsi نیست:
VIDEO_CARDS="amdgpu radeonsi" emerge --ask --changed-use media-libs/mesa
# بررسی اطمینان از رادر نرمافزاری فعال نباشد
LIBGL_ALWAYS_SOFTWARE=1 glxinfo | grep renderer # این باید نادیده گرفته شود۳. تار شدن صفحه (Tearing) روی X11
دلیل: VSync غیرفعال است. راهحل:
# در /etc/X11/xorg.conf.d/20-amd.conf
Section "Device"
Identifier "AMD"
Driver "amdgpu"
Option "TearFree" "true"
Option "DRI" "3"
EndSection
# یا با متغیر محیطی:
export vblank_mode=0 # for OpenGLبرای Wayland، tearing بهطور پیشفرض وجود ندارد (compositor مسئول است).
خلاصه و مرحله بعد
نصب درایور AMD در Gentoo ساده است: تنظیم VIDEO_CARDS="amdgpu radeonsi"، نصب linux-firmware، Mesa، و در صورت نیاز VA-API/ROCm. تمام درایور متنباز است و در کرنل لینوکس ادغام شده، بنابراین به module-rebuild نیاز ندارید.
برای پیکربندی کرنل دستی، آموزش Manual Kernel را ببینید. برای راهاندازی Wayland با AMD، آموزش Wayland را مطالعه کنید. برای نصب دسکتاپ کامل، KDE Plasma یا GNOME با AMD بهخوبی کار میکنند.
این صفحه در تاریخ ۱ تیر ۱۴۰۵ بهروزرسانی شده است.