2 result(s) in 1 page(s)
Previous Page  - 1 / 1 -  Next Page
Xen üzerinde sanal Pardus'ta otomatik gui başlatmak 23 April 08, Wednesday @ 03:46

Daha önceki bir yazımda (kesin konuşmak gerekirse şu yazımda) Xen üzerinde sanal Pardus kurmuş ve normal kullanıcı olarak oturum açıp, ağdaki herhangi diğer bilgisayar veya dom0'dan VNC ile bağlanıp sanal Pardus'umuzu kullanmıştık.

Kısaca özetlemek gerekirse:

  1. domU'da normal kullanıcı olarak VNC sunucusu çalıştırılır.
  2. Normal kullanıcının DISPLAY çevre değişkeni çalıştırılan VNC sunucu olacak şekilde ayarlanır.
  3. domU'da KDE başlatılır.

Ancak bir süre sonra fark edeceğiniz gibi, her grafik arayüz kullanmak istediğimizde bütün bu işlemleri baştan yapmak epey vakit kaybettiriyor. Ben de yukarıda saydığım adımları bizim adımıza yapan bir COMAR servis betiği ile sorunu çözmeye çalıştım. Betik son derece basit ve kirli, ancak özellikle Linux sistemleri yönetmenin kolaylığı ve elimizin altındaki araçlar konusunda fikir vermesi açısından yararlı olacağını düşünüyorum.

Önce COMAR tarafından çağrılacak başlatma betiği:

#!/bin/bash

export USER="otc"
export HOME="/home/otc"
/usr/bin/vncpasswd < /home/otc/.vnc/vnc-passwd
/usr/bin/vncserver :1 > /home/otc/vnc.log 2>&1
export DISPLAY="pardus-client:1"
/usr/kde/3.5/bin/startkde > /home/otc/kde.log 2>&1

vncserver programını başlatabilmek için bir şifre girme zorunluluğu bizi vncpasswd programı ile şifreyi önceden belirlemek zorunda bırakıyor. Bu şifre kullanıcımızın ev dizinindeki bir dosyadan okunacak şekilde ayarlanıyor. DISPLAY çevre değişkeni ayarlanıp KDE başlatılıyor. USER ve HOME çevre değişkenlerinin ayarlanması vncserver programını başlatabilmek için gerekli, eğer bunları ayarlamaz iseniz vnc sunucunuz başlatılamıyor.

Sırada vnc sunucumuzun otomatik başlamasını sağlayacak COMAR servis betiği var:

from comar.service import *
import os

serviceType = "script"
serviceDesc = _({
"en": "Vnc Server",
"tr": "Vnc Sunucu",
})
serviceDefault = "on"

@synchronized
def start(boot=False):
if status():
return

run("/sbin/start-stop-daemon --start --quiet --chuid otc -b --exec /etc/init.d/startvnc")


@synchronized
def stop():
run("/sbin/start-stop-daemon --stop --quiet --name startkde")
run("/sbin/start-stop-daemon --stop --quiet --name Xvnc")

def status():
return isServiceRunning("/home/otc/.vnc/pardus-client:1.pid")

COMAR servis betikleri Python ile yazılan ve servis ile ilgili işlemlerin tanımlandığı betiklerdir. Bu işlemler tanımlanırken COMAR Service API'si bize çok çeşitli metodlar sunar. Siz service komutunu veya TASMA'dan Servis Yöneticisi'ni çalıştırdığınızda COMAR servis betiğinizi çalıştırarak size istediğiniz bilgiyi sunar.

COMAR API'leri sistemde /usr/lib/pardus/comar altında bulunur. Bu dizinin içindeki service.py ve utility.py betikleri içerisinde servis betiğinde kullanabileceğiniz metod ve sınıfların kaynak kodları bulunur.

serviceDefault değişkeni ile servisin öntanımlı durumu (her açılışta başlatılıp başlatılmayacağı) belirtilir.

serviceDesc ile Servis Yöneticisi veya service komutunun çıktısında servisin açıklama hanesinde görünecek değer belirtilir.

Bir COMAR servis betiğinde servisin çalıştırılması, durdurulması ve o anki durumunun öğrenilmesi için gerekli 3 metod tanımlanması yeterlidir.

Servisleri başlatmak için run (/usr/lib/pardus/comar/utility.py içinde tanımlı) veya startService (/usr/lib/pardus/comar/service.py içinde tanımlı) çağrılarını kullanabilirsiniz. Run metodu yeni bir kabuk başlatmadan verilen komutu çalıştırır.

vncserver programı kendi süreç numarasını kullanıcının ev dizinindeki bir dosyaya yazar. COMAR isServiceRunning metoduna bu dosyanın yolunu vererek, dosyanın içinde yazan süreç numarasını okuyup o numaralı sürecin aktif olup olmadığını kontrol etmesini istiyoruz.

Servis başlatılacağı ve durdurulacağı zaman /sbin/start-stop-daemon programını çalıştırılmasını istiyoruz. start-stop-daemon orjinalde debian için yazılmış, servis başlatmak ve durdurmak için aşağı yukarı her linux dağıtımında bulunan yararlı bir program. Bu program ile ilgili daha ayrıntılı bilgi almak isteyenler programın man sayfasına bakabilirler.

start-stop-daemon ile servis başlatılırken /etc/init.d/startvnc betiğini otc kullanıcısı olarak start parametresi ile çalıştırmasını ve hata çıktıları haricinde hiçbir çıktıyı ekrana yazdırmamasını istiyoruz. startvnc betiğinde de vncserver ve startkde programlarının standart ve hata çıktılarını kullanıcının ev dizinindeki bir dosyaya yönlendiriyoruz ki COMAR ile servisi başlattığımızda bu çıktıları dosyadan takip edebilelim.

Servis durdurulacağı zaman Xvnc ve startkde adındaki tüm programların SIGTERM sinyali ile durdurulmasını istiyoruz. Belirtilen programların hangi sinyal ile durdurulacakları start-stop-daemon'un --signal parametresi ile belirtilebilir.

Hazırladımız COMAR servis betiğini kullanması için COMAR'a kaydettirmemiz gerekli. COMAR ile komut satırından haberleşmek için hav komutunu kullanıyoruz.

# hav register System.Service vnc service.py

Yukarıdaki komut ile service.py betiğini vnc adı ile COMAR Service sınıfı altına kaydettik. Artık Servis Yöneticisi veya service komutu ile vnc adını verdiğimiz servisimizi kullanmaya başlayabiliriz.

# service vnc start
# service vnc stop
# service vnc status

Servis betiğinizde bir hata olduğunu fark eder, veya artık bu servisi kullanmak istemediğinize karar verirseniz COMAR'a bu servisi silmesini söylemeniz gerekir.

# hav remove vnc 


Tags: Pardus   ,  Comments: 0 ( Add your comment )
Pardus'ta komut satırında makine adını (hostname) değiştirmek 15 February 08, Friday @ 04:17

Pardus'ta makine adını (hostname) komut satırından "hostname" komutu ile değiştirirseniz yaptığınız değişiklik COMAR'a kaydedilmediği için bilgisayarınız yeniden başlatıldığında makine adınız eski haline dönecektir. COMAR her açılışta makine adını yeniden ayarlar.

Pardus'u sürekli grafik arayüz ile kullanmaya alıştı iseniz bu tip ince ayrıntıları unutabiliyorsunuz. ("Neden ağ programcığı varken komut satırından komut satırından makine adını değiştireyim ki" dediğinizi duyar gibiyim.) İşte size adım adım makine adını COMAR ile değiştirmenin yöntemi:

1) Herhangi bir python yorumlayıcısı başlatın.

# python

 

2) Python yorumlayıcısında sıra ile aşağıdaki komutları girin.

import comar
link = comar.Link()
link.Net.Stack.setHostNames(hostnames="makine_adı")
reply = link.read_cmd()
reply.command
reply.data.split("\n")

3) reply.command komutunun çıktısı 'result' ise makine adınız bir dahaki açılışta makine_adı olarak değiştirilecek. Şimdi güvenle hostname komutunu kullanabilirsiniz.

# hostname makine_adı 

 



Tags: Pardus   ,  Comments: 2 ( Add your comment )
Previous Page  - 1 / 1 -  Next Page