Nvidia ve sürücü problemlerini çözme

Selamunaleyküm
Bildiğiniz üzer nvidia sürülerini yüklemek gerçekten sıkıntı bir konu. En basitinden yabancı forumlar dahil tam bir çözüm maalesef yok gibi ubuntuda da arayüzle yükleme denemem başarısız olunca(yüklendi ama istediğim performansta değil) bunun ilgili bir şeyler paylaşıp topluluk olarak çözüm bulmak istedim.
github linki

kod ve çalışma mantığı

kod kısaca

  • gerekli çekirdek ve paket bağımlılıklarını yükleyip
  • tersine mühendislikle oluşturulan sürücülerini kaldırıp
  • gerekli config ayarlarını yaptıktan sonra
  • sistemi yeniden başlatıp
  • masaüstü ortamına göre xOrg’u durdurup
  • sürücüyü yüklüyor
  • arada tekrarlamasın diye ve işlem adımlarını hataya karşı kayıt alıp ana klasörde kayıt tutuyor
#!/bin/bash

##
user=$(whoami)
FILE=/home/$user/pars_nvidia_log.txt
ENVI=""
LOG=""
if test -f "$FILE"; then
    sudo bash -c -i '
    DESKTOP=(""$(cat /etc/X11/default-display-manager))
    modprobe -r nouveau &&
	LOG+="
	modprobe -r nouveau işlemi yapıldı
	" &&
    ## nvidia yazılımı çalışırken x org ile çakkışmasın diye
    ## servisi durduruyoruz
    ## bu xfce sistemi için geçerli 
    ## gnome için lightdm yerine gdm kullanılamsı gerekiyor
    case $DESKTOP in
	"/usr/sbin/lightdm")
	ENVI="lightdm"
	;;
	"/usr/sbin/gdm3")
	ENVI="gdm3"
	;;
	"/usr/sbin/sddm")
	ENVI="sddm"
	;;
	"/usr/sbin/gdm3")
	ENVI="gdm3"
	;;
	*)
	echo "hatalı giriş yapıldı"
	exit
	;;
    esac
	LOG+="
	case ile masaüstü seçildi $DESKTOP
	" &&
    	service $ENVI stop
	LOG+="
	x11 duruduruldu
	" &&
    	sh NVIDIA-Linux-x86_64* &&
	LOG+="
	yükleme bitti" &&
    echo "
    $LOG
    " >> $FILE ;
	reboot
    '
else
    sudo bash -c  -i '
    dpkg --add-architecture i386 &&
    apt update -y &&
    apt upgrade -y &&
	LOG+="
	güncellemeler yapıldı" &&
    ##derleme için gerekli karnel paketleri yüklemesi
    apt install linux-headers-$(uname -r) -y &&
	LOG+="
	kerenel başlıkları yüklendi" &&
    apt install linux-source dkms build-essential -y &&
	LOG+="
	kernel bağımlılıkları yüklendi" &&
    ##nvidia sitesindeki gereklilikler
    apt install libglvn* libvdpau* libvulkan* make gcc -y &&
    	LOG+="
	nvidia gereklilikleri yüklendi" &&
    ##pardus nvidianın  nouveau driveri ile çalışmasını engellemek için
    apt purge nvidi* xserver-xorg-video-nouveau -y &&
	LOG+="
	eski nvidia bağımlılıkları silindi"
    '
    

    echo "
    blacklist nouveau
    options nouveau modeset=0
    " > blacklist.conf

    ## gerekli temel ayarlar yapıldıktan sonra tekrar aynı yerden başlamaması için
    ## kullanıcıda bir log oluşturyor  hata veya yapılandırma 
    ## kayırtları eklenir
    echo "
    $LOG
    " >> $FILE
    
    
    sudo bash -c  -i '
    ##configin taşınması
    cp blacklist.conf /etc/modprobe.d/blacklist.conf &&
    ##gerekirse bazı güncellemeleri yapması için
    update-initramfs -u &&
    echo "bilgisayar birazdan yeniden başlayacaktır" &&
    sleep 2 &&
    echo "
    $LOG
    " >> $FILE ;
    reboot
    '
fi
    echo "
    $LOG
    " >> $FILE

konular

  • özet ve resimler
  • yedek uyarısı
  • kurulum hazırlığı
  • sürücü kurulumu
  • sonuç
  • eksikler ve yapılması gerekenler
  • son olarak

özet ve resimler

velhasıl benim gelebildiğim nokta
xfce, gnome, kde, cinamon masaüstü ortamları olan Pardus veya Debian tabanlı sistemleri için kapalı kaynak sürcü kurulum
nvidianın kendi ayarları


davinci 18

blender ve nvidia-smi

Pardus hakkında ve neofetch

yedek uyarısı

!!!
!!! Kurulum yapmak isterseniz öncelikle yedek almanızı kesinlikle tavsiye ederim. Herhangi hata çıkınca yardım etmeye çalışırız ancak sorumluluğun sizin üzerinizde olduğunu unutmayın!!!
!!!
yedek almak için de mağzadan timeshift programını yükleyerek yapabilirisiniz

time shift kullanımı

Timeshift ile sisteminiz donanımsal hariç çökmeler hariç eski haline gelebilir(siyah ekran alsanız bile)
arayüzle yedek alıp yediği geri alma
180 -Pardus Dersleri- timeshift ile sistem ve dosya yedekleme - YouTube
siyah ekran çıkarsa uç birimden yedeği gere alma
How to Use Timeshift in Linux from the Terminal | System Backup and Restore - Fast & Easy Way - YouTube
How to Backup and Restore Your Linux Installation – Timeshift – RSYNC ⁄ BTRFS – Arch ⁄ Ubuntu - YouTube

kurulum hazırlığı

kurulum için arşivi indirip ev veya kullanıcı klasörünüze çıkarmanız gerekiyor ve nvidianın sitesinden kendinize uygun olan sürcüyü indirip ev veya kullanıcı klasörüne eklemeniz gerekiyor
örneğin

bu işlemleri yaptıktan sonra

  • öncelikle dosyaların olduğu yerde uç birimi açıp dosyaları çalışabilir yapmak için
    chmod +x pars_nvidia.sh NVIDIA-Linux-* komutunu çalıştırmanız gerekiyor

  • sonrasında crl alt f3 tuşlarına aynı anda basarak tty ekranını açıyoruz

  • kullanıcı ismimimzi yazıp sonrasında parolamizi yazıyoruz

  • burada ./pars_nvidia.sh yazmamız gerekiyor bunu yaparken tab tuşu ile tamamlama yapabiliriz

  • bilgisayar yeniden başlayınca giriş yapmadan ctrl alt f3 tuşlarına aynı anda basıp tty ekranına geçiyoruz

  • tekrardan ./pars_nvidia.sh komutunu çalıştırıyoruz

nvida kurulum ekranı gelince

  • kernel modulünü dkms ile yükleyelim mi diye soruyor burada ok tuşları ile yes diyoruz

  • sonrasında 32 bit paketlerini yüklemek istiyor muyuz onu soruyor isteğinize göre yükleyebilirsiniz

  • sonrasında zaten yüklenmeye başlayıp bitince de hata çıkazsa yeniden başlayacaktır diye düşünüyorum.

eksikler ve yapılması gerekenler

Ama bu gibi sürücü yüklemelerinin daha da kolaylaşması gerekiyor normalde gtk ile komut ile bir şeyler yapmak istiyordum ama sudo’lu yani root gerektiren komutlar çok olduğu için internette araştırdığımda kullanıcıdan şifreyi alıp direk komut çalıştıran denemeler gördüm bazıları history (geçmişe) kaydedildiği için güvenlik zafiyeti olur diyordu bu yüzden yapmak istemedim

  • bu root gerektiren işlemleri python da nasıl yapabilirim
  • nvidia dökümantasyonunda işlemleri yaparken xorg opengl veya cl idi bunlarala çalışan bir uygulama olmasını istemiyor kısaca grafik arayüzü kaptamazı istiyior yanlış anlamadıysam çünkü yükleme denemelerimde direk x11 kapa diya hata veriyordu bunu nasıl çözebilirim
  • çözüm olarak kod ikiye ayırdım bağımlıkların yüklendiği birde sürücünün hazırlanıp yüklendiği diye ama bunu başlangıçta init veya systemd ile ayarlasam bile nvidia sürcüsü yüklenirken seçenekler çıkartıyor malesef bunun için de bir şey yapamıyorum
  • en azından başta systemd ile başlangıçta tty gidip(sudo chvt 3) otomatik giriş yapıp nasıl betik çalıştırabilirim

buraya kadar okuduğunuz için teşekkür ederim eğer ki bu sıkıntılar çözülürse inşAllah ilerisi için nvidia github kodundan açık kaynak sürücü yükleme, nvidia docker kurulumu, amd sürücü kurulumu, belki yazıcı kurulum gibi sürücü kurulumların daha kolaylaştıran araçlar yapılabilir.

son olarak

  • eğer kodu deneyip hata alırsanız buradan veya githubdan dönüş yaparsanız yardımcı olmaya çalışırım
  • eğer koda bakarsanız acemiliğimi görebilirsiniz bu konuda kod düzeltmeleri veya yorumlarınıza açığım
  • eklemek istediğiniz veya çıkramak istediğiniz bir kısım olarsa da yorumlardan yazabilirisiniz
3 Beğeni

ek olarak iki ekran kartlı dizüstülerde harici ekran kartını (nvidia veya amd) kapatmak için ne yapılabilir
https://github.com/bayasdev/envycontrol
örneğin burada işlemi yapan bir kod var ama çok uzun ve ne yaptığını gerçekten anlamadım tam olarak nasıl bir işlem yapmış
bir de yazılım kullanarak dahili ekran kartını veya bir donanımı devre dışı nasıl bırakabiliriz bunu biostan yapabiliyorum ve pil süresi neredeyse 3 katına çıkıyor ama kodla nasıl yapılabilir

4 Beğeni

Python ve GTK kulanarak kullanıcı parolası gerektiren işlemler yapılabiliyor. Şifrenin kaydedilmesi sorununu bilmiyorum. Ama shell injection problemi var ve buna önlem olarak önerilen bir yöntem var. Çeşitli komutları çalıştırmak için Python’da subprocess.run kullanılabilir.

Örneğin, Sistem Gözlem Merkezi uygulamasında Bellek sekmesinde en altta Donanım kısmında Göster... etiketine tıklayınca şifre soruyor. Şifre girilince dmidecode komutu ile RAM donanım bilgileri elde edilip bir pencerede gösteriliyor. Bu uygulama Python ve GTK kullanılarak geliştirildi.

Pardus uygulamalarında da örnekleri olabilir. Bazı işlemler için kullanıcı şifresi istenen uygulamalar var.

Ekran kartı sürücü kurulumu işlemlerini detaylı bilmiyorum.

1 Beğeni

hocam cevabınız için teşekkürler subprocess çalışma mantığına biraz daha bakmam lazım belli ki. Acaba sistem gözleme uygulmasını yaparken kaynak olarak takip ettiğiniz bir kaynak var mıydı?

Ben Linux’a yeni geçtiğimde bu uygulamayı geliştirmeye başlamıştım. Uygulamayı geliştirirken öğrendim. Kodları çok kere güncelledim. Hataları giderdim.

İlk başlarken Pardus uygulamalarının kodlarına da bakmıştım. İnternetten de araştırdım. GTK’nın dokümanlarını inceledim.

Örneğin GTK arayüz araçları için (buton, menü, pencere gibi) bir link:
Classes - Gtk 3.0
Bu adreste örnekler de var:
https://python-gtk-3-tutorial.readthedocs.io/en/latest/index.html

Ya da Python subprocess kullanımı hakkında:
https://docs.python.org/3/library/subprocess.html

Çeşitli örneklerin olduğu başka siteler de var. İnternetten arama motorundan da arama yapabilirsiniz. Python ve GTK uygulaması için bazı örnekler:
python gtk label set text
python gtk run code after window is shown
veya:
python get command output gibi.
Ben kısa metinlerle arama yapmayı tercih ettim. Türkçe kaynak var mı bilmiyorum. Araştırmadım.

Çeşitli Pardus uygulamalarının kodları:
https://github.com/pardus

Takıldığınızda isterseniz bana soru sorabilirsiniz. Mail de atabilirsiniz.

İlave bilgilendirme:
Ben programcı değilim. Başkalarından da fikir alabilirsiniz.

1 Beğeni

Çok sağolun hocam ben de biraz karıştırıp kurcalayayım bir sıkıntı olursa inşallah size de sorarım

1 Beğeni