Kaydet (Commit) 93d2ad08 authored tarafından Gürer Özen's avatar Gürer Özen

müdür ile ilgili belge, daha tamamlanmadı ama System.Service ve comar.service

anlatıyor en azından
üst a86e9e75
#LyX 1.3 created this file. For more info see http://www.lyx.org/
\lyxformat 221
\textclass article
\language turkish
\inputencoding auto
\fontscheme default
\graphics default
\paperfontsize default
\spacing single
\papersize Default
\paperpackage a4
\use_geometry 0
\use_amsmath 0
\use_natbib 0
\use_numerical_citations 0
\paperorientation portrait
\secnumdepth 3
\tocdepth 3
\paragraph_separation skip
\defskip medskip
\quotes_language english
\quotes_times 2
\papercolumns 1
\papersides 1
\paperpagestyle default
\layout Title
Pardus Al Sistemi
\layout Author
Grer zen
\layout Standard
\pagebreak_bottom
\begin_inset LatexCommand \tableofcontents{}
\end_inset
\layout Section
Giri
\layout Standard
letim sistemi ekirdeinin almaya balad andan, kullancnn giri
yapabilecei ana kadar yaplan ilemler al (init) sreci olarak adlandrlm
aktadr.
Dosya sistemlerinin balanmas, donanm modllerinin yklenmesi, temel
a ayarlarnn yaplmas, sistem servislerinin balatlmas ve grafik arabirimi
nin altrlp, kullancnn karsna giri ekran kartlmas bu srecin
kapsamndadr.
\layout Standard
Bilgisayar kapatlaca zaman, servislerin durdurulmas, balanm dosya
sistemlerinin ayrlmas da ayn sistem tarafndan yrtlr.
\layout Subsection
Al Sreci
\layout Standard
ekirdek kendi hazrlk ilemleri bittikten sonra /sbin/init (ekirdee
init= parametresi verilerek deitirilebilir) komutunu altrr.
Bu komut, al ve kapan aamalarnda /etc/inittab dosyasnda belirtilen
dier komutlar altrarak sreleri yrtr.
\layout Standard
Linux datmlarnda bu komutlar bir dizi bash betii eklindedir.
Pardus 1.0 iin kullandmz Gentoo al sistemi, /sbin/rc ana betii,
/sbin/functions.sh yardmc fonksiyonlar, bir dizi yardmc komut ve /etc/init.d
altndaki servis betiklerinden olumaktadr.
Temel betik ve komutlar initscripts adnda bir paketle gelirken, servis
betikleri ait olduklar paketlerin iinden kar.
\layout Standard
Al, alma ve kapan aamalar alma seviyesi (runlevel) olarak
isimlendirilir.
Ana sre (/sbin/init) belli bir alma seviyesine getiinde (telinit
komutuyla ya da kapatma tuuna baslmas gibi bir olayla), rc betii o
alma seviyesine ait (/etc/runlevels/ iinde alma seviyesine ait dizinde
sembolik balantyla belirtilmi) olan servis betiklerini altrr.
ntanml gelen baz alma seviyeleri:
\layout Description
sysinit Temel al, dosya sistemlerinin balanmas.
\layout Description
boot Geri kalan al ilemleri.
\layout Description
default Normal alma ortam.
\layout Description
single Yalnzca yetkili kullancnn giri yapabilecei kurtarma modu.
\layout Description
reboot Yeniden balama sreci.
\layout Description
halt Kapan sreci.
\layout Standard
Bunlarn dnda, kullanc kendisi de, istedii servislerin ak olduu
alma seviyeleri ekleyebilmektedir.
\layout Subsection
Donanm Tanma
\layout Standard
Bir aygtn yazlmlar tarafndan kullanlabilmesi iin, gerekli ekirdek
modlnn yklenmesi, gerekiyorsa aygta firmware yklenmesi, eer varsa
servis yazlmnn altrlmas, ve /dev dizininde aygta erimek iin
gereken dosyalarn oluturulmas gerekmektedir.
\layout Standard
Bu ilemlerin, al srasnda, aktif olan aygtlar iin (coldplug) ve
alma esnasnda taklan aygtlar iin (hotplug) yaplmas gereklidir.
\layout Standard
Linux 2.6.x serisi ekirdeklerde, her bir aygt, sysfs dosya sistemi zerinde
bir dizin olarak gzkmekte ve bu dizindeki dosyalardan ekirdein aygta
dair tm bilgisine ulalabilmektedir.
Modern balant yollar (PCI, USB, FireWire) protokollerinde, aygtlarn
retici ve modeline ait saylar bulunduu iin, sysfs'ten alnan bu saylar
ve aygt snf gibi deerleri, eldeki modl ve servislerin desteklenen
donanm listeleriyle karlatrarak, hangilerinin yklenmesi gerektii
bulunabilmektedir.
\layout Subsection
Sorunlar
\layout Standard
Bu sistem ile iki temel problemimiz var.
lki kullanlla ynelik.
Al sisteminin yaval yznden kullanc giri ekrannn kmas
nerdeyse bir dakikay bulmakta.
kincisi ise teknik bir problem.
Sistemin bash, sed, awk gibi zayf ve karmak szdizimli dillerle yazlm
olmas yznden bakm ve gelitirme yapmak ok zor.
\layout Standard
Yavaln temel sebeplerinden biri bash.
Kabuun programlama yaplarnn zayf olmas yznden basit iler iin
bir sr ek ara ve komut kullanlyor.
Bash'in genel yaval yznden, her betiin ilk i olarak functions.sh'
ve ortam deikenlerini tayan /etc/profile' armas ok zaman alyor.
\layout Standard
zm olarak betiklerin otomatik olarak tek bir dosyaya birletirilmesi,
bash yerine busybox kabuu kullanlmas gibi giriimler mevcut, ama bunlar
karmakla bir zm getirmiyor.
\layout Standard
kinci byk sebep, ilemlerin sral yaplmas.
Birarada yrtlebilecek ilemler birbirlerini bekliyor ve zaman kaybna
yol ayor.
\layout Standard
Buna zm olarak da betiklerin birbirlerine bamllklar dikkate alnarak
paralel altrlmas iin initng gibi giriimler mevcut.
Kendi servis betik biimi olan initng'nin, kullanmda, yeterince olgun
bir yazlm olmamasndan kaynaklanan, baz sorunlar kardn grdk.
\layout Standard
nemli bir faktr de disk okuma hzdr.
Modern harddiskler 20-30 MB/s gibi okuma hzlarna sahip olmakla birlikte,
okunacak bilginin srekli olmad durumlarda kafa hareketinin yava olmas
nedeniyle bu hz ok dmektedir.
zellikle ok sayda ufak dosya olmas durumunda okuma hz kt etkilenmektedi
r.
\layout Standard
nykleme (preload) gibi tekniklerle okuma yaplmayan anlarn deerlendirilmesi,
zellikle paralel ilevler olduu durumlarda, disk iin bekleyen farkl
ilevlerin, ayn anda abanp, ncelii yksek bir ilevin nn tkamamasna
dikkat edilmesi, disk okuma verimini yksek tutacaktr.
\layout Standard
Paketlerle birlikte gelen kk dosyalarn birletirilip ilendii durumlarda
(rnein /etc/env.d dosyalarndan /etc/profile.env elde edilmesi), ya da
bir ayar dosyas deitiinde yaplacak ilemlerde (/etc/ld.so.conf deitiinde
ldconfig komutunun altrlmas), bu ilemi her alta tekrarlamamak
iin gerek bir deiiklik olmadnda ayar dosyalarna yazmamaya dikkat
etmek gereklidir.
Pardus 1.0 zerinde, her alta ekirdee verilen dil parametresi ile
/etc/env.d gncellendii iin, ayn dil ile st ste yaplan allarda,
/etc/profile.env oluturulmas ve ld yollar dosyas da bundan dolay gncellend
ii iin ldconfig altrlmas, gereksiz yere tekrarlanmaktayd.
\layout Section
Gerekler
\layout Standard
Pardus iin kullanacamz al sisteminin baz gerekleri salamasn
bekliyoruz.
\layout Subsection
Hz
\layout Standard
Giri ekrannn kullancnn karsna mmkn olduu kadar hzl getirilmesi
gereklidir.
\layout Subsection
Esneklik
\layout Standard
Al sistemine yeni bir zellik eklemek ya da zel bir srm iin deiiklikle
r yapmak kolay olmaldr.
\layout Subsection
Salamlk
\layout Standard
kabilecek sorunlar mutlaka gz nne alnmal.
Kullanc hatas yada al sisteminin bir i hatas yznden sistemin
alamaz hale gelmesine olabildiince engel olunmal.
\layout Subsection
Servis Ynetimi
\layout Standard
Al sisteminin temel bileenleri tek bir paket olsa bile, dier paketlerin
de bu sistemle entegre edilebilmesi iin kendi betiklerini sisteme dahil
edebilmeleri gerekmektedir.
\layout Standard
Kullanc, bu betiklerin ynettii servisleri, hem komut satr hem de grafik
arayz araclyla, balatp durdurabilmeli, alta alp almayacan
ayarlayabilmelidir.
\layout Standard
Kullancnn servisleri daha kolay ynetebilmesi iin, betiklerin yerel
mi yoksa darya hizmet verecek bir servis mi altrd, ne i yapt,
o anda alp almad ile ilgili detayl bilgi salanmaldr.
\layout Standard
Servislerin birbirine bamllklar belirtilebilmeli, altrma ilemi
bamllk srasna gre gitmelidir.
\layout Subsection
zel Al Seenekleri
\layout Standard
alan CD iin (deiik balama tablosu, baz dizinler yalnzca okunabilir),
metin terminaller iin (masast yok), kurtarma durumlar iin (donanm
seenekleri en gvenlide) al destei olmal.
\layout Subsection
Yerelletirme
\layout Standard
Tm metinler gettext araclyla yerelletirilebilmeli.
Al dil ve klavye seenekleri, ekirdek parametreleri ile ayarlanabilmelidir.
\layout Subsection
Grsellik
\layout Standard
gereksiz metinler olmasn
\layout Standard
logo + anim
\layout Section
Tasarm
\layout Standard
Al betiklerini tamamen Python ile yazmaya karar verdik.
Python, ok kullanlan metin ilemleri, dosya sistemine eriim, program
altrma ilevleri iin hazr fonksiyonlar ierdii ve gl bir programlama
dilinin tm imkanlarn sunduu iin betiklerin ok sade ve esnek olmasn
salad.
\layout Standard
Al sistemi devreye girdiinde, Python yorumlaycs ve kullanlan modllerin
yklenmesi yaklak 1.5-2 saniye srmekte.
Buna karlk toplam al sresi nerdeyse bir buuk dakikadan, 15-20
saniyeye inmi durumda.
Al betiklerinin uzunluu ise nerdeyse onda birine dt.
\layout Standard
Servis betikleri, omar betikleri olarak yeniden yazld.
Bylece betiklerin ynetilmesi, paralel altrlmas gibi iler omar
tarafndan kolayca gerekletirilebiliyor.
Betiklerin kolayca yazlabilmesi iin sk kullanlan servis fonksiyonlar
iin bir omar API modl yazld.
\layout Standard
Sistemin bileenlerini incelersek:
\layout Subsection
mudur.py
\layout Standard
Mdr /sbin/init tarafndan altrlan ve temel al ilemlerinin tmn
yapan betiktir.
\layout Standard
Ayarlar /etc/conf.d/mudur.conf dosyasndan okumaktadr.
Ayrca ekirdek parametreleriyle verilen dil ayarlarn kullanmaktadr.
\layout Standard
lk olarak sysinit aamasnda dosya sistemlerini denetleyip balar, udev'i
etkinletirir, bilgisayar adn ve sistem saatini ayarlar, bir yandan paralel
olarak muavin betiini altrarak aktif olan aygtlar iin gerekli srcleri
n yklenmesi ilemini balatr.
\layout Standard
kinci aama boot ile birlikte, lokal a balantsn amak, /var ve /tmp
dizinlerindeki geici dosyalar temizlemek, /etc/env.d dizinindeki dosyalardan
/etc/profile.env yi gncellemek gibi ileri yaptktan sonra omar servisini
balatr.
\layout Standard
Nihayet default aamas iin altnda omar'a servisleri balatma komutunu
gnderir.
\layout Standard
Kapan srasnda ise nce omar'a servisleri durdurma komutu gnderilir,
sonra da dosya sistemleri ayrlp, kapatma yada yeniden balatma ilemi
yaplr.
\layout Subsection
muavin.py
\layout Standard
Bu betik donanm tanmayla ilgili iki ilevi yerine getirmektedir.
\layout Standard
Al srasnda mudur.py tarafndan balatldnda sysfs iinde tarama
yaparak bulunan aygtlara ait ekirdek modllerini ykler.
\layout Standard
alma srasnda bir aygt takldnda ise, udev tarafndan balatlarak
firmware ykleme ve modl bulup ykleme ilerini yapar.
\layout Subsection
service Komutu
\layout Standard
Komut satrndan servislerin alma durumlarn gsteren, servisleri ap
kapatma ilerini yapan basit bir betiktir.
\layout Subsection
Servis KGA
\layout Standard
Pardus yaplandrma merkezi Tasma iinde servisleri ynetebilen bir arayzdr.
\layout Subsection
omar System.Service Snf
\layout Standard
Mdr iin yazlm servis betikleri omar'da bu snfa kayt olurlar ve
aadaki metotlar salarlar:
\layout Subsubsection*
System.Service.info
\layout Standard
Servis hakknda bilgi dndrr.
lk satr servisin tipi, ikinci satr durumu, son satr da yerelletirilmi
olarak servisin adn verir.
\layout Standard
tip servis vardr:
\layout Description
server Apache, OpenSSH, Postfix gibi d bilgisayarlara hizmet veren web,
kabuk, eposta sunucu gibi servislerin balatma betikleri.
\layout Description
local Pardus masastnn alabilmesi iin yerel programlara hizmet veren
DBus, HAL, Zemberek gibi servislerin balatma betikleri.
\layout Description
script Bir servis balatmayan, yalnzca alta belli ilemleri yerine
getiren betikler.
\layout Standard
Bir servis drt durumda olabilir:
\layout Description
on Servis srekli olarak aktr ve u anda almaktadr.
\layout Description
started Servis kapaldr ama kullanc tarafndan altrlmtr.
\layout Description
stopped Servis aktr ama bir sebepten dolay durdurulmu yada alamamtr.
\layout Description
off Servis kapaldr.
\layout Standard
Servis tipi ve ad, kullanc arayzlerinde gstermek amal dnlmtr.
\layout Subsubsection*
System.Service.start
\layout Standard
Servisi balatr.
\layout Subsubsection*
System.Service.stop
\layout Standard
Servisi durdurur.
\layout Subsubsection*
System.Service.reload
\layout Standard
Eer servis destekliyorsa kapanmadan ayarlarn tekrar ykleyip gncellemesini
salar.
\layout Subsubsection*
System.Service.setState (state)
\layout Standard
Servisin durumunu deitirir.
Eer state parametresi
\begin_inset Quotes eld
\end_inset
on
\begin_inset Quotes erd
\end_inset
verilirse, servis altrlr ve srekli olarak ak konuma getirilir.
Bylece bilgisayar yeniden balattnzda servis otomatik olarak alacaktr.
State
\begin_inset Quotes eld
\end_inset
off
\begin_inset Quotes erd
\end_inset
verilerek servis kapatlp almayacak ekilde ayarlanr.
\layout Subsubsection*
System.Service.ready
\layout Standard
Servis eer
\begin_inset Quotes eld
\end_inset
on
\begin_inset Quotes erd
\end_inset
olarak ayarlanmsa, start metodunu ararak balatr.
Mdr al srasnda tm servislere bu ary yaparak servisleri balatmakta
dr.
\layout Subsubsection*
System.Service.changed
\layout Standard
Bu uyar bir servisin durumu deitiinde gnderilir.
Parametre olarak
\begin_inset Quotes eld
\end_inset
started
\begin_inset Quotes erd
\end_inset
ve
\begin_inset Quotes eld
\end_inset
stopped
\begin_inset Quotes erd
\end_inset
deerleri verir.
\layout Subsection
omar comar.service Modl
\layout Standard
Servis betiklerinde sk kullanlan fonksiyonlar bu Python modlnde salanmtr.
\layout Standard
Betiklerde:
\layout LyX-Code
from comar.service import *
\layout Standard
eklinde kullandnzda info, setState, ready metotlar sizin iin tanmlanm
olacaktr.
Bylece yalnzca start ve stop metotlar ile bir servis betii yazabilirsiniz.
\layout Standard
Bu modldeki fonksiyonlar, betik tipi ve adn betiinizin iindeki serviceType
ve serviceDesc deikenlerinden okuyacaktr.
\layout Standard
Bu modl import ettiiniz halde, bu fonksiyonlar kendiniz de tanmlayabilirsin
iz, bu durumda betik iindekiler alacaktr.
\layout Standard
Modlde ayrca u yardmc fonksiyonlar bulunmaktadr:
\layout Subsubsection*
run
\layout Standard
Parametre olarak verilen komutu yeni bir kabuk amadan altrr.
Komutun dn deerini dndrr.
\layout Standard
rnek:
\layout LyX-Code
run("/sbin/start-stop-daemon --start --quiet --exec /usr/sbin/cpufreqd")
\layout Subsubsection*
checkDaemon
\layout Standard
Verilen pid dosyasnn gsterdii servisin alp almadna bakar.
\layout Standard
rnek:
\layout LyX-Code
def status():
\layout LyX-Code
return checkDaemon("/var/run/kdm.pid")
\layout Subsubsection*
loadEnvironment
\layout Standard
evre deikenlerini /etc/profile.env dosyasndan okuyup alan sre iin
geerli klar.
Bylece burda tanml olan deikenleri kullanan servisleri ayr bir kabuk
balatmadan altrabilirsiniz.
\layout Subsubsection*
config
\layout Standard
Bu bir Python szlk deikeni olup, /etc/conf.d/betikpaketad dosyasndaki
isim=deer biimindeki ayarlar iermitir.
Eer kullandnz ayar dosyas ad betik adndan farklysa serviceConf
deikenine dosya adn verebilirsiniz (gene /etc/conf.d iinde).
\the_end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment