tarafından Guido Socher (homepage)
Yazar hakkında:
Guido, Lınux'u sadece işletim sistemlerinin nasıl çalıştığını
öğrenmenin ilginç olduğu için değil, aynı zamanda onu tasarlayan kişiler
yüzünden sevmektedir.
Türkçe'ye çeviri:
Erdal MUTLU <erdal(at)linuxfocus.org>
İçerik:
|
X11 ile uzaktan uygulama çalıştırmak
Özet:
Birçok yeni Linux kullanıcısı, Linux altındaki masaüstü ortamının,
başka bir "Windows" sistemi olduğunu ve sadece uygulamaları çalıştşrmaya ve ayrı pencerelerde görüntülemeye yaradığını düşünmektedir.
Bazıları da, birden fazla masaüstünün kullanabileceklerini fark etmişlerdir,
ama hepsi bu kadarmış gibi gözükmektedir. Linux altındaki X Pencere
Sistemi (X11) bundan çok daha fazla özelliklere sahiptir!
Bu bir ağ pencere sistemidir. Bunun ne kadar yeni ve güçlü özellikler
sunduğunu, hep beraber göreceğiz.
Display (Ekran) kavram?
X Pencere sistemindeki her grafik uygulaması, çalıştırıldığı zaman ilk önce,
grafik çıktısını göndereceği DISPLAY adlı çevre değişkeninin içeriğini denetlemektedir.
Bu ve X Pencere Sisteminin ağ özellikleri ile birlikte
grafik ortamdaki uygulamaları uzaktan çalıştırma özelliğini oluşturmaktadır.
Böylece, uygulamanın çalıştığı bilgisayardaki Merkezi işlem Biriminin (MİB=CPU) gücünden faydalanarak, uygulamayı başka
bir bilgisayardan yönetme imkanını elde etmiş oluruz. Tüm KGA (Kullanıcı Grafik Arabirimi = GUI)
sizin bulunduğunuz ve uygulamayı yönettiğiniz bilgisayarda gözükmektedir.
İki bilgisayarı aynı anda kullandığınızı fark etmiyorsunuz bile.
Ağ hızınız burada sorun olabilir, ancak 10Mit/sn hızına sahip bir yerel ağ,
gereğinden fazlasını sunmaktadır.
Bunu neden yapmak isteyebilirsiniz?
Birçok "Ağ grafik" uygulamalası vardır. Çeşitli şirketler, bu tür uygulamaları, binlerce kilimetre uzakta bulunan donanımları
kullanmak ve denetlemek için kullanmaktadır. Bunu yaparken de, sanki oradaki
bilgisayarın başında oturuyormuşsunuz gibi bir izlenim oluşmaktadır.
Birisi 1GHz, diğeri Pentium 133MHz olan iki bilgisayara sahip iseniz,
hızlı olan bilgisayarın hızından yararlanabilirsiniz. Belkide o anda kerdeşiniz, hızlı olan bilgisayarı kullanmaktadır. Hiç sorun değil, çünkü sizde ondan yararlanabilirsiniz.
Bu nasıl çalışmaktadır?
Tüm X Pencere sisteminde çalışan uygulamalar,
gimp, xterm, konquerer, netscape, ... gibi, gerçekte X-sunucusuna bağlantı yapan birer ağ istemci uygulamalarıdır. X-sunucusunun işlevi, grafik donımla
haberleşmek, resimleri ekranınıza çizmek, fareden ve tuşlardan gelen girişleri
okumaktır. İstemciler (gimp, netscape ... gibi uygulamalar), sunucuya
çerçeveleri ve tuşları nasıl boyaması gerektiğne dair komutlar göndermektedir.
Karşılığında, sunucudan fare ve tuşlardan gelen olayları almaktadır. Doğal olarak, bir kimliklendirmeye gereksinim vardır, yoksa herkesin ekranı karışabilirdi. Erişimi denetleyen iki program vardır:
- xhost: bu programı kullanarak, başka bir bilgisayardan sizin ekranınıza
grafik çıktılarını yazma hakkı verebilirsiniz. Örnek : philosophus adlı bilgisayarın başında oturduğunuzu varsayalım. movietux adlı bilgisayarda çalışan herhangibir programa, sizin bilgisayar ekranıza grafik görüntülerini görüntüleme hakkı vermek için,
aşağıdaki komutu kullananabilirsiniz:
xhost +movietux
Bu komut philosophus'daki bir kabuk ortamından çalıştırılması gerekmektedir.
- xauth: Bu cookie (çerez) tabanlı bir kimlik denetimi yöntemidir ve çok daha karışıktır.
Burada kişi bazında erişim hakkı verebilirsiniz. xhost'tan çok daha güvenlidir.
Kimlik denetimi, kullanıcıların .Xauthority dosyalarına cookie (çerez)
yerleştirerek yapılmaktadır. Eğer, uzaktan erişim yapan bilgisayar, bu dosyada
uygun bir cookie (çerez) sahip ise, erişime izin verilmektedir. Oturduğunuz,
yani erişimin yapılacağı bilgisayaradaki (philosophus) cookie (çerez), uzaktan erişim
yapmak istediğiniz bilgisayara (movietux) kopyalamak için aşağıdaki yöntemleri
kullanabilirsiniz:
xauth extract - philosophus:0.0 | ssh movietux
/usr/X11R6/bin/xauth merge
veya
scp ~/.Xauthority movietux:
Program (istemci) başlangıcında olan olaylar şöyledir:
- Hangi sunucuya bağlanacağını istemci DISPLAY çevre değişkenini denetleyerek öğrenmektedir.
Eğer, bu değişken tanımlı değil ise, bulunduğu bilgisayardaki sunucuya
bağlanmaya çalışır.
- Sunucu ise, istemcinin göndermekte olduğu resimleri göndermeye hakkı
olup olmadığını denetleyerek, eğer izni varsa, gönderilen resimleri ekrana
çizmektedir.
DISPLAY çevre değişkeninin yapısı aşağıdaki gibidir:
bash:export
DISPLAY=hostname:displaynumber.screennumber
tcsh:setenv DISPLAY hostname:displaynumber.screennumber
Ben burada displaynumber ve screennumber hakkında konuşmayacağım. Genelde
bunların değerleri 0:0 dır. Sözgelimi bash için :
export DISPLAY=philosophus:0.0
Uzaktaki herhangibir uygulamayı başlatmak
Tüm bu teorik bilgiden sonra pratik bir örnek verelim.
Denemeniz yeter. Biz yine philosophus adlı bilgisayarın başında oturmaktayız ve
movietux adlı bilgisayarda bir programı uzaktan çalıştırmak istiyoruz.
- X sunucunuza, movietux bilgisayarındaki programların sizin ekranınıza
resim çizebilmeleri için, izin vermesini söyleyin:
xhost +movietux
- movietux bilgisayarına giriş yapın.:
slogin -l username movietux
- Şimdi movietux adlı bilgisayara giriş yapmış oldunuz ve dolayısıyla
çalıştıracağınız her program movietux'da çalışıyor olacaktır.
- export DISPLAY=philosophus:0.0
- Herhangibir program çalıştırın. Sözgelimi:
netscape &
Eğer, movietux sizin bilgisayardan daha güçlü ise, netscpae html sayfalarını,
sizin bilgisayardaki netscape'ten çok daha hızlı olarak
görüntülediğini (düzenlediğini) fark edeceksiniz. Aynı zamanda, netscape
programının yerel makinanızda çalıştırılmamış olduğunu fark edemeyeceksiniz,
çünkü çalışma şeklinde (fare ve klavye) hiçbir fark olmayacaktır.
Nasıl, harika değil mi?
Ekranı (display) yanınızda götürmek
Uzaktaki bir bilgisayar üzerinde program çalıştırmak için izlediğiniz adımlar
oldukça basit olmasına karşın, yine de DISPLAY değişkenini ayarlamak için
birşeyler yazmanız gerekmektedir. Bu işlemi otomatikleştirmek mümkündür:
- Uzaktaki bilgisayara ssh ile giriş yapıyorsanız, DISPLAY
değişkeni otomatik olarak ayarlanmaktadır. ssh haricinde DISPLAY değişkenini
destekleyen başka programlar da var tabii, ancak ssh bunların arasında en çok
kullanılanıdır.
- Eğer, slogin veya başka program kullanıyorsanız, aşağıdaki
kabuk programlarını uzaktaki bilgisayara yüklemeniz gerekecektir.
tcsh için:
# Uzaktaki bilgisayara giriş sırasında ekranı yanınızda götürün:
# ~/.login dosyanızın içine aşağıdakileri yerleştirin:
set whoami=`who -ml`
set remhost=`expr "$whoami" :
'.*(\(.*\))'`
if ( "$remhost" != "" ) then
setenv DISPLAY
"$remhost":0.0
endif
Kabuk programı, uzaktaki bilgisayar ismini "who -ml" komutu
yardımıyla elde etmektedir. Komut aşağıdaki gibi bir çıktı vermektedir:
>who -ml
movietux!guido pts/3 Oct 26 21:55 (philosophus.tux.org)
Eğer, bash kullanıyorsanız, aşağıdaki kabuk programını kullanabilirsiniz:
# Uzaktaki bilgisayara giriş sırasında ekranı yanınızda götürün:
# ~/.bash_profile dosyanızın içine aşağıdakileri yerleştirin:
whoami=`who -ml`
remhost=`expr "$whoami" :
'.*(\(.*\))'`
if [ -n "$remhost" ];
then
DISPLAY="$remhost":0.0
export DISPLAY
fi
OpenGL
X Pencere sisteminin ağ özelikleri oldukça iyi olmasına karşın,
ağ üzerinden ağ protokolü yardımıyla gönderilen resimler biraz yavaş gelmektedir.
Normalde çok fazla bir fark hissetmeyeceksiniz.
Grafik ağırlıklı oyunlar gibi, grafik ağırlıklı programlar, genellikle OpenGL
(Open Graphics Library) ve GLX (OpenGL Extension to the X Window System, X
Pencere sisteminin OpenGL genişlemesi) kullanmaktadır. Bu grafik kütüphaneleri,
ekran kartınızın 3B (3D, üç boyutlu) özelliklerini doğrudan ve donanıma bağlı
kalmaksızın kullanmanıza olanak veren, uygulama geliştirme arayüzü
sağlamaktadır. Yani, uygulama çizmek istediği nesnenin özelliklerini ekran
kartına, noktalar, çizgiler ve alanlar olarak göndermekte ve resmin
oluşturulması ekran kartınızın donanımı tarafından yapılmaktadır. Bu çok hızlı
çizim olanağı vermektedir.
Şu an için Linux altındaki birçok grafik sürücüsü (X sunucusu) ekran kartı
uzaktaki uygulamalar için, ekran kartı donımını tarafından hızlandırılmış GLX/OpenGL
desteği içermemektedir. Bunun ektisi, uzaktan çalıştırdığınız OpenGL
uygulamalarının çok yavaş çalışmaları veya hiç çalışmamalarıdır. NVidia'nın
en son sürücüleri istisna oluşturmaktadır. Bunlar, kendi içinde doğrudan
ugulamalar için, doğrudan resim oluşturma arayüzü desteklemektedir.
Sonuç
X11 kullanarak ağınızın gücünden çok kolay bir şekilde yararlanabilirsiniz.
Uzaktaki uygulamalar ile, sanki yerel bilgisayarınızdakiler gibi
çalışabilirsiniz. Gözleyeceğiniz tek fark, dosya ve ev dizinizin uzaktaki
bilgisayarda yer alanlar olmasıdır. Ancak, NIS ve NFS sayesinde bu ufak farkı
bile gizlemek ve ağınızda yer alan en güçlü bilgisayarın gücünden yararlanmanız
mümkündür.
Bağlantılar
X11 system, x.org
xfree86.org Linux ile kullanılan X11 sistemi.
Linux
Bu yazı için görüş bildiriminde bulunabilirsiniz
Her yazı kendi görüş bildirim sayfasına sahiptir. Bu sayfaya yorumlarınızı yazabilir ve diğer okuyucuların yorumlarına bakabilirsiniz.
2002-01-11, generated by lfparser version 2.21