Yeni dizustu bilgisayarlar cift ekran kartlarıyla sunulmaya başlandı. Bu kartlardan birisi oyunlar gibi yuksek işlem gucu isteyen uygulamlarda kullanılıyor; diğeri ise gunluk işlerde kullanılıyor fakat daha fazla enerji sarfediyor. İlki harici GPU olarak adlandırılırken ikincisi tumleşik GPU olarak adlandırılıyor.
Aşağıdaki yontem genelde ATI ve Intel ekran kartlarının beraber olduğu bilgisayarlarda kullanılıyor fakat Nvidia ve Interl'in beraber olduğu bilgisayarlarda da kullnılmış ve olumlu sonuc alınmış buraya gore1.
1- Hibrid Kart
Bilgisyarınızın hibrid ekran kartına sahip olup olmadığını oğrenmek icin ucbirimde
Kod:
lspci | grep VGA
komutunu yuruttuğunuzde
Kod:
00:02.0 VGA compatible controller: Intel Corporation Core Processor Integrated Graphics Controller (rev 02) 01:00.0 VGA compatible controller: ATI Technologies Inc Manhattan [Mobility Radeon HD 5000 Series]
gibi iki tane ekran kartı gosteriliyorsa bilgisayar hibrid ekran kartlıdır.
2- Switcheroo Ozelliğini
2.1- Cekirdeğin vgasvicheroo ile derlenip derlenmediğini oğrenmek
Bu ekran kartları arasında geciş yapabilmek icin cekirdeğe gomulu gelen vgaswitcheroo ozelliğinden yararlanacağız. Ubuntu 10.10'dan itibaren bu ozellik ontanımlı olarak cekirdekte bulunmaktadır. Cekirdeğin bu ozellikle derlendiğini teyit etmek icin
Kod:
grep -i SWITCHEROO /boot/config-$(uname -r)
komutunu yurutebilirsiniz. Cıktısı
CONFIG_VGA_SWITCHEROO=y
olmalıdır.
Bu ozelliğin etkin olabilmesi icin cekirdeğin ya "modeset=1" parametresiyle başlatılması ya da "nomodeset" parametresinin kullanılmaması gerek. Ontanımlı olarak Ubuntu cekirdeği "nomodeset" parametresi olmadan geldiği icin herhangi bir duzenlemeye gerek yok; lÂkin "modeset=1" parametresini girmek isteyenler veya daha once duzenleme yapanlar icin aşağıdaki yol uygulanabilir:
2.2- Cekirdeğe "modeset=1" parametresi eklemek
1-
Kod:
sudo nano /etc/default/grub
komutu ile duzenleme yapacağımız grub dosyası acılır.
2-
Kod:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
satırına "modeset=1" yazılır ya da satırdan "nomodeset" varsa silinir ki sonuc:
Kod:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modeset=1"
boyle olur. CTRL+O ile dosya kaydedilip CTRL+X ile cıkıldıktan sonra,
3-
Kod:
sudo update-grub
komutu verilerek değişikliğin kalıcı olması sağlanır.
2.3- Vgaswictheroo'nun etkin olup olmadığını kontrol etmek
Vgaswitcheroo'nun etkin olup olmadığını teyit etmek icin
Kod:
ls -l /sys/kernel/debug/vgaswitcheroo/switch
koutunu verdiğinizde boş donmuyorsa ozellik etkindir. Boş donuyorsa etkin değildir ve bilgisayar bu ozelliği desteklemiyordur.
3- Vgaswitcheroo'yu kullanmak
Aşağıdaki komutları uygulamak icin root olmanız gerek.
Kod:
sudo su
3.1-
Kod:
#echo ON > /sys/kernel/debug/vgaswitcheroo/switch
komutu o anda kullanılmayan GPU'yu acar kafat kullanıma sokmaz.
3.2-
Kod:
#echo IGD > /sys/kernel/debug/vgaswitcheroo/switch
komutu tumleşik GPU'yu goruntu cıkışına bağlar.
3.3-
Kod:
#echo DIS > /sys/kernel/debug/vgaswitcheroo/switch
komutu harici GPU'yu goruntu cıkışına bağlar.
3.4-
Kod:
#echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
komutu o anda kullanılmayan GPU'yu kapatır.
3.5-
Kod:
#echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch
komutu ile bilgisayarın bir sonraki acılışında tumleşik GPU'yu kullanmasını sağlanır.
3.6-
Kod:
#echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch
komutu ile bilgisayarın bir sonraki acılışında harici GPU'yu kullanmasını sağlarız.
4- GPU'lar arasında geciş yapmayı sağlayan bir betik
Roberto Martinez'in yazdığı bu betikle2 grafik ortamdayken kertlar arası geciş yapabileceksiniz. Yalnız betikte sadece Openbox pencere yoneticisi ve Gnome icin tanımlamalar var ve ayrıca Ubuntu 11.10 icin calışıp calışmayacağını bilmiyorum. Bu işlerden anlayan bir arkadaşımız el atarsa iyi olur.
1- Once gerekli paketleri ve Roberto Martinez'in sunduğu resimleri yukleyelim:
Kod:
sudo apt-get update && sudo apt-get upgrade sudo apt-get install wget gxmessage libnotify-bin wget -P /home/"$USER"/.local/share/icons/ http://lh4.ggpht.com/_Dw3SC8gD9Jk/S-MGVcEfaiI/AAAAAAAAAIA/Pguy_uSeqSk/s800/hardware_down.png wget -P /home/"$USER"/.local/share/icons/ http://lh5.ggpht.com/_Dw3SC8gD9Jk/S-MGVSO0JbI/AAAAAAAAAIE/_mdAnW7UiCQ/s800/hardware_up.png wget -P /home/"$USER"/.local/share/icons/ http://lh4.ggpht.com/_Dw3SC8gD9Jk/TNbQXzK6hrI/AAAAAAAAAJ8/YlqK46MusuE/s800/hardware.png wget -P /home/"$USER"/.local/share/icons/ http://lh5.ggpht.com/_Dw3SC8gD9Jk/S41DjuMt_MI/AAAAAAAAAF4/5pQm2-dX6Sg/s800/switch_before_shutdown.png
2- Sonra gerekli izinleri almak icin
Kod:
sudo nano /etc/rc.local
ile dosya acılır ve icine "exit 0" satırından oncesine
Kod:
chown kullanıcı_adı /sys/kernel/debug/vgaswitcheroo/switch echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
yazılıp kaydedilir. Buradaki kullanıcı_adı yerine kendi kullanıcı adınızı yazmalısınız.
3-
Kod:
cd nano switch_between_cards.sh
ile betiği yazacağımız dosyayı acarız ve icerisine
Kod:
#!/bin/bash # "switch_between_cards.sh" script by RM, with useful changes from LoLL # version 20101107 pci_integrated=$(lspci | grep VGA | sed -n '1p' | cut -f 1 -d " ") pci_discrete=$(lspci | grep VGA | sed -n '2p' | cut -f 1 -d " ") integrated=$(cat /sys/kernel/debug/vgaswitcheroo/switch | grep $pci_integrated | grep -o -P ':.:...:') discrete=$(cat /sys/kernel/debug/vgaswitcheroo/switch | grep $pci_discrete | grep -o -P ':.:...:') name_integrated=$(lspci | grep VGA | sed -n '1p' | sed -e "s/.* VGA compatible controller[ :]*//g" | sed -e "s/ Corporation//g" | sed -e "s/ Technologies Inc//g" | sed -e 's/\[[0-9]*\]: //g' | sed -e 's/\[[0-9:a-z]*\]//g' | sed -e 's/(rev [a-z0-9]*)//g' | sed -e "s/ Integrated Graphics Controller//g") name_discrete=$(lspci | grep VGA | sed -n '2p' | sed -e "s/.* VGA compatible controller[ :]*//g" | sed -e "s/ Corporation//g" | sed -e "s/ Technologies Inc//g" | sed -e 's/\[[0-9]*\]: //g' | sed -e 's/\[[0-9:a-z]*\]//g' | sed -e 's/(rev [a-z0-9]*)//g' | sed -e "s/ Integrated Graphics Controller//g") if [ "$integrated" = ":+:Pwr:" ] then integrated_condition="(*) - Power ON" elif [ "$integrated" = ": :Pwr:" ] then integrated_condition="( ) - Power ON" elif [ "$integrated" = ": :Off:" ] then integrated_condition="( ) - Power OFF" fi if [ "$discrete" = ":+:Pwr:" ] then discrete_condition="(*) - Power ON" elif [ "$discrete" = ": :Pwr:" ] then discrete_condition="( ) - Power ON" elif [ "$discrete" = ": :Off:" ] then discrete_condition="( ) - Power OFF" fi gxmessage -center \ -buttons "_Cancel":1,"switch to _Integrated":101,"switch to _Discrete":102 \ -wrap \ -title "Choose Hybrid Graphic Card" \ "Choose Hybrid Graphic Card ================= Integrated: $integrated_condition : $name_integrated Discrete: $discrete_condition : $name_discrete" whichCard=$? case "$whichCard" in 1) echo "Exit" ;; 101) if [ "$integrated" == ":+:Pwr:" ] && [ "$discrete" == ": :Pwr:" ] then notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_down.png" "switching to $name_integrated" echo OFF > /sys/kernel/debug/vgaswitcheroo/switch elif [ "$integrated" == ": :Pwr:" ] && [ "$discrete" == ":+:Pwr:" ] then notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_down.png" "switching to $name_integrated" echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch if [ "$DESKTOP_SESSION" = "openbox" ] then killall -u "$USER" elif [ "$DESKTOP_SESSION" = "gnome" ] then gnome-session-save --logout fi elif [ "$integrated" == ": :Off:" ] && [ "$discrete" == ":+:Pwr:" ] then notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_down.png" "switching to $name_integrated" echo ON > /sys/kernel/debug/vgaswitcheroo/switch echo DIGD > /sys/kernel/debug/vgaswitcheroo/switch if [ "$DESKTOP_SESSION" = "openbox" ] then killall -u "$USER" elif [ "$DESKTOP_SESSION" = "gnome" ] then gnome-session-save --logout fi elif [ "$integrated" == ":+:Pwr:" ] && [ "$discrete" == ": :Off:" ] then notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_down.png" "already switched to $name_integrated" fi ;; 102) if [ "$integrated" == ":+:Pwr:" ] && [ "$discrete" == ": :Pwr:" ] then notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_up.png" "switching to $name_discrete" echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch if [ "$DESKTOP_SESSION" = "openbox" ] then killall -u "$USER" elif [ "$DESKTOP_SESSION" = "gnome" ] then gnome-session-save --logout fi elif [ "$integrated" == ": :Pwr:" ] && [ "$discrete" == ":+:Pwr:" ] then notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_up.png" "switching to $name_discrete" echo OFF > /sys/kernel/debug/vgaswitcheroo/switch elif [ "$integrated" == ":+:Pwr:" ] && [ "$discrete" == ": :Off:" ] then notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_up.png" "switching to $name_discrete" echo ON > /sys/kernel/debug/vgaswitcheroo/switch echo DDIS > /sys/kernel/debug/vgaswitcheroo/switch if [ "$DESKTOP_SESSION" = "openbox" ] then killall -u "$USER" elif [ "$DESKTOP_SESSION" = "gnome" ] then gnome-session-save --logout fi elif [ "$integrated" == ": :Off:" ] && [ "$discrete" == ":+:Pwr:" ] then notify-send -t 5000 --icon="/home/$USER/.local/share/icons/hardware_up.png" "already switched to $name_discrete" fi ;; esac
yazılıp kaydedilir.
4- Betiği uygun dizine taşıyıp calıştırma izni verelim:
Kod:
sudo mv switch_between_cards.sh /usr/bin sudo chmod +x /usr/bin/switch_between_cards.sh
Bu işlemlerden sonra betik kullanılmaya hazır oluyor.
5- Acılış Sırasında Kullanılabilir Betik
5.1-
Kod:
sudo nano /etc/initramfs-tools/scripts/local-top/hybrid_boot_options
ile dosyayı oluşturur ve acılır,
5.2- İcine
Kod:
# # Standard initramfs preamble # prereqs() case $1 in prereqs) prereqs exit 0 ;; esac # source for log_*_msg() functions, see LP: #272301 . /scripts/functions # # Helper functions # message() run_switcheroo() # # Begin real processing # # Do we have any kernel boot arguments? for opt in $(cat /proc/cmdline); do case $opt in hybridopts=*) run_switcheroo "$" ;; esac done exit 0
yazılır, CTRL+O ile kaydedilir ve CTRL+X ile cıkılır.
5.3- Calıştırma izni vermek icin
Kod:
sudo chmod +x /etc/initramfs-tools/scripts/local-top/hybrid_boot_options
komutu verilir ve
Kod:
sudo update-initramfs -c -k all
komutu ile initramfs guncellenir.
5.4-
Kod:
sudo nano /etc/default/grub
ile grub duzenleme dosyası acılır
5.5-
Kod:
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash modeset=1
satırına istenilen parametre yazılır. MisÂl, "hybridopts=ON,IGD,OFF" yazıldığında başlangıcta iki GPU'da etkin kılınır, sonra tumleşik GPU'ya geciş yapar ve harici olan kapatılır. "hybridopts=ON,DIS,OFF" parametresi ise ikisini actıktan sonra harici olanı kullanır ve tumleşik olanı kapatır.
5.6- Ayarların kalıcı olması icin
Kod:
sudo update-grub
komutu yurutulur.
6- Kimi Hatalar İcin Cozum Onerileri
6.1- Surekli calışan fanın duzeltilmesi
Eğer bilgisayar kapatılmadan once iki ekran kartı da etkin duruma getirilmezse oluşan bir durummuş. Bunu onlemek icin yapmanız gereken bilgisayar kağatılmadan once
Kod:
sudo su echo OFF > /sys/kernel/debug/vgaswitcheroo/switch
komutunu yurutmek.
__________________
Hibrid Ekran Kartları İcin Vgaswitcheroo Methodu
Linux0 Mesaj
●45 Görüntüleme
- ReadBull.net
- Teknoloji Forumları
- işletim Sistemleri
- Linux
- Hibrid Ekran Kartları İcin Vgaswitcheroo Methodu