Intel ve NVIDIA kartı birlikte olan bir laptopta, Fedora 44 ve MATE masaüstü ile üç sorunla karşılaştım:
- Harici monitör ile laptop ekranı ters tarafta duruyordu.
- Ekran düzenini değiştirmeye çalıştığımda X kapanıp yeniden açılıyor, oturum gidiyordu.
- Bir düzeltmeden sonra monitör takılıyken her şey çalıştı, ama monitör yokken laptop ekranına hiç görüntü gelmedi.
Bu yazıda sorunların nedenini, nasıl bulduğumu ve iki durumda da (monitörlü ve monitörsüz) çalışan çözümü anlatıyorum. Yazının sonunda tüm adımları yapan bir script var.
Ortam
| Dağıtım | Fedora 44 |
| Masaüstü | MATE, X11 (Wayland değil) |
| Giriş ekranı yöneticisi | lightdm (slick-greeter) |
| Dahili grafik kartı | Intel Meteor Lake (Intel Arc) |
| Harici grafik kartı | NVIDIA GeForce RTX 4060 Laptop |
| NVIDIA sürücüsü | 595.112.07 |
| Laptop ekranı | 1920x1200, Intel kartına bağlı |
| Harici monitör | LG UltraWide 2560x1080, HDMI ile NVIDIA kartına bağlı |
Önemli nokta şu: laptop ekranı Intel kartına, HDMI çıkışı ise NVIDIA kartına bağlı. İki ekranı tek masaüstünde göstermek için iki kartın birlikte çalışması gerekiyor. Bu birlikte çalışmanın adı PRIME.
Önce hangi kartın neye bağlı olduğuna bakın
X'in gördüğü kartları ve ekranları şu komutlar gösterir:
xrandr --listproviders
xrandr --query | grep -E "Screen| connected"
Benim sistemimde (çözümden sonra) çıktı şöyle:
Provider 0: ... name:NVIDIA-0
Provider 1: ... Sink Output ... name:modesetting
Screen 0: minimum 8 x 8, current 4480 x 1200, maximum 32767 x 32767
HDMI-0 connected 2560x1080+0+0 ...
eDP-1-1 connected primary 1920x1200+2560+0 ...
NVIDIA-0 NVIDIA kartı, modesetting Intel kartıdır. HDMI-0 harici monitör, eDP-1-1 laptop ekranıdır. Sizin sisteminizde bu adlar farklı olabilir. Scriptte bu adları kullandığım için kendi adlarınızı not edin.
Sorun 1: Ekran düzeni değişince X çöküyor
X'in kendiliğinden kapanıp açılması bir çökmedir. Çökme kayıtları şu komutla görülür:
coredumpctl list --since today
TIME PID SIG EXE
... 10:19:14 7475 SIGSEGV /usr/libexec/Xorg
... 10:19:43 22518 SIGSEGV /usr/libexec/Xorg
... 10:20:42 25777 SIGSEGV /usr/libexec/Xorg
...
Çökmenin nerede olduğunu görmek için:
coredumpctl info <PID> --no-pager | grep -E "^\s+#[0-9]+"
#4 wfbDestroyPixmap (/usr/lib64/xorg/modules/libwfb.so + 0xb7f9)
#5 n/a (/usr/lib64/xorg/modules/drivers/nvidia_drv.so + 0x2359d4)
Çökme NVIDIA'nın X sürücüsünün içinde. O sırada xrandr --listproviders çıktısında Intel (modesetting) birinci sıradaydı, NVIDIA ise NVIDIA-G0 adıyla ikinci sıradaydı. Yani:
- X, Intel kartını birincil kart olarak kullanıyordu.
- HDMI'deki monitör, NVIDIA kartı üzerinden "ek çıkış" olarak sürülüyordu. Bu düzenin adı reverse PRIME.
Bu düzende NVIDIA çıkışının ayarı değiştirilince X'in çökmesi, NVIDIA sürücüsünün 580 ve 595 sürümlerinde bilinen bir hata. Benzer raporlar yazının sonundaki kaynaklarda var.
Neden Intel birincildi? NVIDIA'yı birincil kart yapan ayar dosyası /etc/X11/xorg.conf.d/10-nvidia.conf silinmişti. Dosyanın paketten gelip gelmediğini ve yerinde olup olmadığını şu komut gösterir:
rpm -V xorg-x11-nvidia
missing c /etc/X11/xorg.conf.d/10-nvidia.conf
Bu dosyanın içeriği şu (NVIDIA'nın kendi paketindeki hali):
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
Option "PrimaryGPU" "yes"
Option "SLI" "Auto"
Option "BaseMosaic" "on"
EndSection
PrimaryGPU "yes" satırı NVIDIA'yı birincil kart yapar. Bu durumda X, Intel kartını kendiliğinden "ek çıkış" olarak bağlar ve laptop ekranı Intel üzerinden gösterilir. Bu, reverse PRIME'ın tersidir ve benim sistemimde düzen değişince çökmedi.
Sorun 2: nvidia-xconfig laptop ekranını yok ediyor
Çözüm ararken nvidia-xconfig komutunu denedim. Bu komut /etc/X11/xorg.conf dosyasını üretir. Ürettiği dosyada yalnızca NVIDIA kartı tanımlıdır. Bu dosya varken X, Intel kartını hiç kullanmaz. Sonuç: harici monitör çalışır, laptop ekranı X'te hiç görünmez.
Elle Intel bölümü ekleyerek de denedim, yine olmadı. İki hata vardı:
- Yanlış sürücü: Intel için
Driver "intel"yazmıştım. Bu eski sürücü (xf86-video-intel) Meteor Lake gibi yeni işlemcilerde X'i çökertiyor. Doğrusumodesettingsürücüsü. X bunu ayar yazmadan kendisi seçiyor. - İki ayrı ekran: İki ayrı "Screen" bölümü tek masaüstü değil, birbirinden ayrı iki X ekranı demek. Pencereler bir ekrandan diğerine taşınamaz.
Sonuç olarak bu düzende /etc/X11/xorg.conf dosyasına hiç gerek yok. 10-nvidia.conf yeterli.
Sorun 3: Monitör yokken laptop ekranı kararıyor
xorg.conf kaldırılıp 10-nvidia.conf geri konunca, monitör takılıyken iki ekran da sorunsuz çalıştı. Ama monitör çıkarılıp laptop açılınca ekrana görüntü gelmedi.
Monitörsüz açılışın X kaydında (/var/log/Xorg.0.log) şunlar vardı:
(--) NVIDIA(GPU-0): DFP-0: disconnected
(--) NVIDIA(GPU-0): DFP-1: disconnected
(--) NVIDIA(GPU-0): DFP-2: disconnected
(--) NVIDIA(GPU-0): DFP-3: disconnected
(--) NVIDIA(0): No enabled display devices found; starting anyway ...
(II) NVIDIA(0): Validated MetaModes:
(II) NVIDIA(0): "NULL"
...
(II) modeset(G0): Output eDP-1-1 has no monitor section
(II) NVIDIA(0): Setting mode "NULL"
Anlamı şu:
- NVIDIA birincil kart, ama NVIDIA'ya bağlı hiç ekran yok. X ekran modunu boş ("NULL") bırakıyor.
- Laptop ekranı (
eDP-1-1) Intel üzerinden tanınıyor, ama onu açan kimse yok.
Monitör takılıyken bu sorun görünmüyor, çünkü NVIDIA'nın kendi ekranı olduğu için X açılırken bir mod seçiyor ve masaüstü oturumu ikinci ekranı da açıyor.
Çözüm: lightdm'in display-setup-script ayarı. lightdm, X açılır açılmaz ve giriş ekranını göstermeden önce bu ayarda yazan dosyayı root olarak çalıştırır. Bu dosyada iki iş yapılır:
- Intel kartının çıkışları NVIDIA'ya bağlanır:
xrandr --setprovideroutputsource modesetting NVIDIA-0 - Takılı ekranlar
xrandrile açılır. Monitör varsa monitör solda ve birincil, laptop ekranı sağda olur. Monitör yoksa laptop ekranı tek ekran olur.
Bu yöntem NVIDIA'nın kendi belgelerinde de PRIME için önerilen yöntemdir.
Çözümün özeti
| Dosya | Durum | Görevi |
|---|---|---|
/etc/X11/xorg.conf | Olmamalı | nvidia-xconfig ile üretilen hali laptop ekranını kapatıyor. |
/etc/X11/xorg.conf.d/10-nvidia.conf | Olmalı | NVIDIA'yı birincil kart yapar, Intel'i ek çıkış olarak bağlar. |
/etc/lightdm/nvidia-prime-ekran.sh | Olmalı | X açılınca ekranları bağlar ve açar. |
/etc/lightdm/lightdm.conf.d/50-nvidia-prime.conf | Olmalı | lightdm'e yukarıdaki dosyayı çalıştırmasını söyler. |
Script
Aşağıdaki script tüm adımları yapar. Her adımda önce mevcut durumu kontrol eder. Dosya zaten doğruysa dokunmaz. Değiştireceği dosyanın önce yedeğini alır. Ne yaptığını ve neyi atladığını ekrana yazar. --force verilirse dosyaları aynı olsa bile yeniden yazar.
Kullanmadan önce: scriptteki HARICI=HDMI-0 ve LAPTOP=eDP-1-1 satırlarını kendi xrandr --query çıktınızdaki adlarla değiştirin. NVIDIA birincilken laptop ekranının adı genelde eDP-1-1 gibi sonuna ek almış olur.
Dosya adı: nvidia-intel-prime-duzelt.sh
#!/bin/bash
# NVIDIA + Intel (PRIME) ekran ayarini duzeltir. Harici monitor takili da
# olsa takili olmasa da grafik ekranin acilmasini saglar.
#
# Bu laptopta:
# - Harici monitor (HDMI) NVIDIA kartina bagli. X'teki adi: HDMI-0
# - Laptop ekrani (eDP) Intel kartina bagli. X'teki adi: eDP-1-1
#
# Hedef durum:
# 1) /etc/X11/xorg.conf YOK. nvidia-xconfig ile uretilen bu dosya sadece
# NVIDIA'yi tanimliyor, laptop ekranini X'in disinda birakiyor.
# 2) /etc/X11/xorg.conf.d/10-nvidia.conf VAR. NVIDIA birincil kart olur,
# Intel karti X'e ek cikis olarak baglanir (surucusu: modesetting).
# 3) /etc/lightdm/nvidia-prime-ekran.sh VAR. lightdm, X acilir acilmaz bu
# dosyayi calistirir. Dosya Intel cikislarini NVIDIA'ya baglar ve takili
# ekranlari acar. Bu adim olmadan, harici monitor yokken NVIDIA'da hic
# ekran olmadigi icin X bos ekranla baslar ve laptop ekrani kapali kalir.
# 4) /etc/lightdm/lightdm.conf.d/50-nvidia-prime.conf VAR. lightdm'e 3.
# adimdaki dosyayi calistirmasini soyler.
#
# Her adim once kontrol edilir; zaten dogruysa atlanir.
# --force : dosyalar ayni olsa bile yeniden yazilir.
# Calistirma: sudo bash nvidia-intel-prime-duzelt.sh [--force]
# Script lightdm'i YENIDEN BASLATMAZ; sonunda ne yapilacagini yazar.
set -euo pipefail
FORCE=0; [ "${1:-}" = "--force" ] && FORCE=1
[ "$(id -u)" -eq 0 ] || { echo "HATA: root olarak calistirin (sudo)."; exit 1; }
TARIH=$(date +%Y%m%d-%H%M%S)
DEGISTI=0
# Verilen icerigi (stdin) hedef dosyaya yazar. Icerik ve izin ayniysa atlar.
# Farkliysa once yedek alir, sonra gecici dosyaya yazip mv ile tasir.
# Kullanim: dosya_yaz <hedef> <izin> < icerik
dosya_yaz() {
local hedef=$1 izin=$2 dizin gecici
dizin=$(dirname "$hedef")
gecici=$(mktemp "$dizin/.$(basename "$hedef").XXXXXX")
cat > "$gecici"
chmod "$izin" "$gecici"
if [ -e "$hedef" ] && cmp -s "$gecici" "$hedef" \
&& [ "$(stat -c '%a %U:%G' "$hedef")" = "$izin root:root" ] \
&& [ "$FORCE" -eq 0 ]; then
rm -f "$gecici"
echo "ATLANDI: $hedef zaten dogru."
return 0
fi
[ -e "$hedef" ] && cp -av "$hedef" "$hedef.yedek-$TARIH"
mv -f "$gecici" "$hedef"
chown root:root "$hedef"
restorecon "$hedef" 2>/dev/null || true
echo "YAPILDI: $hedef yazildi."
DEGISTI=1
}
# 1) nvidia-xconfig ile uretilmis /etc/X11/xorg.conf dosyasini kenara al
if [ -e /etc/X11/xorg.conf ]; then
mv -v /etc/X11/xorg.conf "/etc/X11/xorg.conf.yedek-$TARIH"
echo "YAPILDI: /etc/X11/xorg.conf kenara alindi (yedek: /etc/X11/xorg.conf.yedek-$TARIH)"
DEGISTI=1
else
echo "ATLANDI: /etc/X11/xorg.conf zaten yok."
fi
# 2) 10-nvidia.conf (xorg-x11-nvidia paketindeki orijinal icerik)
install -d -m 755 -o root -g root /etc/X11/xorg.conf.d
dosya_yaz /etc/X11/xorg.conf.d/10-nvidia.conf 644 <<'CONF'
Section "OutputClass"
Identifier "nvidia"
MatchDriver "nvidia-drm"
Driver "nvidia"
Option "AllowEmptyInitialConfiguration"
Option "PrimaryGPU" "yes"
Option "SLI" "Auto"
Option "BaseMosaic" "on"
EndSection
CONF
# 3) lightdm'in X acilinca calistiracagi ekran hazirlama dosyasi
install -d -m 755 -o root -g root /etc/lightdm/lightdm.conf.d
dosya_yaz /etc/lightdm/nvidia-prime-ekran.sh 755 <<'SH'
#!/bin/sh
# lightdm, X acildiktan hemen sonra bu dosyayi root olarak calistirir.
# Kuran: nvidia-intel-prime-duzelt.sh
# Gorevi:
# - Intel kartinin cikislarini (laptop ekrani) NVIDIA'ya baglamak.
# - Harici monitor takiliysa: monitor solda ve birincil, laptop ekrani sagda.
# - Harici monitor yoksa: laptop ekrani tek ve birincil ekran.
# Buradaki bir hata lightdm'i durdurmasin diye dosya her zaman 0 ile biter.
# Ne yapildigi /var/log/lightdm/nvidia-prime-ekran.log dosyasina yazilir.
LOG=/var/log/lightdm/nvidia-prime-ekran.log
exec >>"$LOG" 2>&1
echo "=== $(date '+%F %T') DISPLAY=$DISPLAY"
XR=/usr/bin/xrandr
HARICI=HDMI-0
LAPTOP=eDP-1-1
# Intel cikislarini NVIDIA'ya bagla (zaten bagliysa zarari yok)
$XR --setprovideroutputsource modesetting NVIDIA-0 || echo "UYARI: setprovideroutputsource basarisiz"
BAGLI=$($XR --query | awk '$2=="connected"{print $1}')
echo "Takili ekranlar: $(echo $BAGLI)"
takili() { echo "$BAGLI" | grep -qx "$1"; }
if takili "$HARICI" && takili "$LAPTOP"; then
$XR --output "$HARICI" --auto --primary --pos 0x0 \
--output "$LAPTOP" --auto --right-of "$HARICI"
elif takili "$LAPTOP"; then
$XR --output "$LAPTOP" --auto --primary --pos 0x0
takili "$HARICI" || $XR --output "$HARICI" --off 2>/dev/null
else
# Ad beklenenden farkliysa: takili her ekrani varsayilan ayarla ac
$XR --auto
fi
echo "Sonuc: $?"
$XR --query | grep -E " connected" || true
exit 0
SH
# 4) lightdm'e bu dosyayi calistirmasini soyleyen ayar
dosya_yaz /etc/lightdm/lightdm.conf.d/50-nvidia-prime.conf 644 <<'CONF'
# NVIDIA + Intel (PRIME): X acilinca laptop ekranini ve harici monitoru ac.
# Kuran: nvidia-intel-prime-duzelt.sh
[Seat:*]
display-setup-script=/etc/lightdm/nvidia-prime-ekran.sh
CONF
# Baska bir yerde ikinci bir display-setup-script tanimi var mi? (cakisma kontrolu)
DIGER=$(grep -rlE "^\s*display-setup-script" /etc/lightdm/lightdm.conf /etc/lightdm/lightdm.conf.d/ 2>/dev/null \
| grep -v "50-nvidia-prime.conf" || true)
[ -n "$DIGER" ] && echo "UYARI: su dosyalarda da display-setup-script var, sonuncusu gecerli olur: $DIGER"
echo
if [ "$DEGISTI" -eq 1 ]; then
echo "Ayar degisti. Etkili olmasi icin oturumu kapatin ve su komutu calistirin:"
echo " sudo systemctl restart lightdm"
echo "Ekran gelmezse Ctrl+Alt+F3 ile konsola gecip geri alin:"
echo " sudo rm /etc/lightdm/lightdm.conf.d/50-nvidia-prime.conf"
echo " sudo systemctl restart lightdm"
echo "Ekran hazirlama kaydi: /var/log/lightdm/nvidia-prime-ekran.log"
else
echo "Degisiklik yok, yeniden baslatma gerekmiyor."
fi
Uygulama
Scripti çalıştırın:
sudo bash nvidia-intel-prime-duzelt.sh
Script lightdm'i kendisi yeniden başlatmaz, çünkü bu açık oturumu kapatır. Açık işlerinizi kaydedip oturumu kapatın, sonra:
sudo systemctl restart lightdm
Ya da laptopu yeniden başlatın.
Test
- Monitörü çıkarın ve laptopu yeniden başlatın. Giriş ekranı laptop ekranında görünmeli.
- Monitörü takın ve laptopu yeniden başlatın. Monitör solda, laptop ekranı sağda olmalı.
Benim sistemimde iki durumda da sorunsuz çalıştı.
Ekran hazırlama dosyasının ne yaptığı şu kayıtta görülür:
sudo cat /var/log/lightdm/nvidia-prime-ekran.log
Bir şey ters giderse
Ekrana görüntü gelmezse Ctrl+Alt+F3 ile metin konsoluna geçin, kullanıcı adı ve şifrenizle girin, sonra:
sudo rm /etc/lightdm/lightdm.conf.d/50-nvidia-prime.conf
sudo systemctl restart lightdm
X'in kendisi açılmıyorsa 10-nvidia.conf dosyasını da kaldırın:
sudo rm /etc/X11/xorg.conf.d/10-nvidia.conf
sudo systemctl restart lightdm
Sorunu incelemek için işe yarayan komutlar:
# X'in son açılış kaydındaki hatalar
grep -E "\(EE\)|PrimaryGPU|Setting mode" /var/log/Xorg.0.log
# Bir önceki X açılışının kaydı
grep -E "\(EE\)|PrimaryGPU|Setting mode" /var/log/Xorg.0.log.old
# X çökmeleri
coredumpctl list --since today
# Yüklü NVIDIA sürücü sürümü
nvidia-smi --query-gpu=driver_version,name --format=csv,noheader
Notlar
- Wayland kullananlar için geçerli değil. Bu yazı X11 oturumu ve lightdm içindir. Oturum türünü
echo $XDG_SESSION_TYPEgösterir. - Oturum açıkken monitör takıp çıkarmak: Bu durumda ekranları masaüstünün kendi ekran ayarı yönetir. lightdm dosyası yalnızca X açılırken çalışır.
- Sürücüyü tek yoldan kurun. NVIDIA sürücüsünü hem paket (rpm) hem de NVIDIA'nın
.runkurucusu ile kurmak dosyaların birbirinin üzerine yazılmasına yol açar..runile kurulan çekirdek modülü çekirdek güncellemesinden sonra yeni çekirdekte olmaz ve X açılmaz. Bu durumda X kaydında şu hata görülür:Failed to initialize the NVIDIA kernel module. - Intel için "intel" sürücüsünü yazmayın. Yeni Intel işlemcilerde
modesettingsürücüsü kullanılmalı.
Kaynaklar
- NVIDIA README: Offloading Graphics Display with RandR 1.4
- NVIDIA forumu: HDMI çıkarılınca Xorg SIGSEGV (580 - 595 sürümleri)
- NVIDIA forumu: nvidia_drv.so içinde FreePixmap sırasında Xorg SIGSEGV (595.71.05)
- NVIDIA forumu: reverse PRIME çıkışının modu iki kez ayarlanınca segfault
- Arch Wiki: NVIDIA Optimus


