\documentstyle[linuxdoc-sgml,isolatin,qwertz,null]{book}
\input{epsf.tex}
\pagestyle{headings}
\title{ 1. Linux Nedir}
\author{T\"{u}rkiye Linux Kullan\i{}c\i{}lar\i{} Grubu, http://www.linux.org.tr}
\date{v0.1 Temmuz 1997}
\abstract{ }


\begin{document}
\raggedright
\maketitle

\chapter{Linux Nedir ?}



Linux, serbest\c{c}e da\u{g}\i{}t\i{}labilen, \c{c}okg\"{o}revli, \c{c}ok kullan\i{}c\i{}l\i{} UNIX
i\c{s}letim sistemi t\"{u}revidir. Linux, \.{I}nternet \"{u}zerinde ilgili ve merakl\i{}
bir\c{c}ok ki\c{s}i taraf\i{}ndan ortak olarak geli\c{s}tirilmekte olan ve ba\c{s}ta
IBM-PC uyumlu ki\c{s}isel bilgisayarlar olmak \"{u}zere bir\c{c}ok platformda
\c{c}al\i{}\c{s}abilen ve herhangi bir maliyeti olmayan bir i\c{s}letim sistemidir.

UNIX 70'li y\i{}llar\i{}n ortalar\i{}nda b\"{u}y\"{u}k bilgisayarlar \"{u}zerinde \c{c}ok
kullan\i{}c\i{}l\i{} bir i\c{s}letim sistemi olarak geli\c{s}tirilmi\c{s}tir. Zaman
i\c{c}erisinde yay\i{}lm\i{}\c{s} ve bir\c{c}ok t\"{u}revi ortaya \c{c}\i{}km\i{}\c{s}t\i{}r. UNIX ismi UNIX
Research Laboratories INC \c{s}irketinin tescilli markas\i{} oldu\u{g}undan dolay\i{}
bir\c{c}ok \c{s}irket, ayn\i{} temele dayanan i\c{s}letim sistemleri i\c{c}in de\u{g}i\c{s}ik
isimler kullanagelmi\c{s}lerdir. \"{O}rnek olarak

\begin{itemize}
\item  Hewlett-Packard HP-UX 
\item  IBM AIX 
\item  Sun Microsystems SunOS
\end{itemize}


kullanmaktad\i{}rlar. Bug\"{u}n ki\c{s}isel bilgisayarlardan s\"{u}per bilgisayarlara
kadar bi\c{c}ok bilgisayar i\c{c}in yaz\i{}lm\i{}\c{s} bulunan UNIX t\"{u}revleri mevcuttur.
Ne var ki bu t\"{u}revlerin \c{c}o\u{g}u geli\c{s}imi belirli bir noktada durmu\c{s} ve
y\"{u}ksek fiyatla sat\i{}lan ticari yaz\i{}l\i{}mlard\i{}r.

Linux, temel olarak Finlandiya \"{U}niversitesinde \"{o}\u{g}renci olan Linus
Torvalds'\i{}n ve \.{I}nternet \"{u}zerinde merakl\i{} bir \c{c}ok yaz\i{}l\i{}mc\i{}n\i{}n
katk\i{}lar\i{}  ile geli\c{s}tirilmi\c{s}tir. Linux geli\c{s}imi a\c{c}\i{}k bir \c{s}ekilde
yap\i{}lmaktad\i{}r. Bunun anlam\i{}, i\c{s}letim sisteminin her a\c{s}amas\i{} a\c{c}\i{}k olarak
\.{I}nternet \"{u}zerinde yay\i{}nlanmakta, d\"{u}nyan\i{}n d\"{o}rt bir yan\i{}nda kullan\i{}c\i{}lar
taraf\i{}ndan test edilmekte, hatalar\i{} ve eksiklikleri tesbit edilerek
d\"{u}zeltilmekte ve geli\c{s}tirilmektedir. Zaman zaman bu deneme a\c{s}amalar\i{}
belirli bir noktada durdurulur ve g\"{u}venilir bir i\c{s}letim sistemi
sunulup, geli\c{s}tirme i\c{c}in ayr\i{} bir seriye devam edilir. Geli\c{s}tirmede yer
alan bu a\c{c}\i{}kl\i{}k Linux'un en b\"{u}y\"{u}k avantajlar\i{}ndan biridir. Geli\c{s}imi
evrimseldir, hatalar an\i{}nda kullan\i{}c\i{}lar taraf\i{}ndan tesbit edilip rapor
edilmekte ve bir\c{c}ok ki\c{s}inin katk\i{}s\i{}yla d\"{u}zeltilmektedir. Baz\i{} i\c{s}letim
sistemi s\"{u}r\"{u}mleri saatler i\c{c}erisinde g\"{u}ncellenebilmektedir.

Linux, Andy Tannenbaum taraf\i{}ndan geli\c{s}tirilmi\c{s} olan Minix i\c{s}letim
sistemine dayanmaktad\i{}r. Linus Torvalds bo\c{s} zamanlar\i{}nda Minix'ten daha
iyi bir Minix i\c{s}letim sistemi yaratmak d\"{u}\c{s}\"{u}ncesiyle 1991 A\u{g}ustos
sonlar\i{}nda ilk \c{c}al\i{}\c{s}an Linux \c{c}ekirde\u{g}ini olu\c{s}turdu. 5 Ekim 1991
tarihinde 0.02 s\"{u}r\"{u}m\"{u} Linux ilk defa tan\i{}t\i{}ld\i{}. Linus, comp.os.minix
haber grubuna g\"{o}nderdi\u{g}i yaz\i{}da yeni bir i\c{s}letim sistemi geli\c{s}tirmekte
oldu\u{g}unu ve ilgilenen herkesin yard\i{}m\i{}n\i{} bekledi\u{g}ini yazm\i{}\c{s}t\i{}. \.{I}\c{s}letim
sisteminin \c{c}ekirde\u{g}i i\c{c}in verilen numaralar k\i{}sa s\"{u}rede bir standart
kazand\i{}. a.x.y seklinde belirtilen \c{c}ekirdek t\"{u}revlerinde y bulunulan
seviyeyi, x geli\c{s}im a\c{s}amas\i{}n\i{} g\"{o}stermektedir. Tek say\i{}l\i{} x'ler
geli\c{s}tirme a\c{s}amalar\i{}n\i{} \c{c}ift say\i{}l\i{} x' ler ise g\"{u}venilir Linux
\c{c}ekirdeklerini g\"{o}stermektedirler. a ise de\u{g}i\c{s}ik Linux s\"{u}r\"{u}mlerini
belirtir. Bu yaz\i{}n\i{}n haz\i{}rland\i{}\u{g}\i{} A\u{g}ustos 1997 i\c{c}erisinde en son
g\"{u}venilir (kararl\i{}) Linux \c{c}ekirde\u{g}i 2.0.30, en son geli\c{s}im a\c{s}amas\i{}ndaki
\c{c}ekirdek ise 2.1.47'dir.

Linux ger\c{c}ekten son y\i{}llarda h\i{}zl\i{} bir geli\c{s}me g\"{o}stermi\c{s}, \c{c}esitli
\"{u}lkelerden bir\c{c}ok kullan\i{}c\i{}ya eri\c{s}mi\c{s} ve yaz\i{}l\i{}m deste\u{g}i g\"{u}nden g\"{u}ne
artm\i{}\c{s}t\i{}r. De\u{g}i\c{s}ik kurulu\c{s}lar Linux sistemi ve uygulama
yaz\i{}l\i{}mlar\i{}n\i{} biraraya getirerek da\u{g}\i{}t\i{}mlar olu\c{s}turmu\c{s}lar ve
kullan\i{}m\i{}n\i{} yayg\i{}nla\c{s}t\i{}rm\i{}\c{s}lard\i{}r.






\section{Linux'un Destekledi\u{g}i Donan\i{}mlar}



\begin{itemize}
\item  Linux \c{s}u anda ba\c{s}ta IBM-PC uyumlu ki\c{s}isel bilgisayarlar olmak \"{u}zere
Apple, Atari ve Amiga gibi 68000 tabanl\i{} bilgisayarlar \"{u}zerinde, Sun
Sparc i\c{s}lemcili i\c{s} istasyonlar\i{}, Alpha i\c{s}lemcili ki\c{s}isel bilgisayarlar,
MIPS, PowerPC, HP PA-RISC ve ARM mimarilerinde \c{c}al\i{}\c{s}maktad\i{}r.
\item  IBM uyumlu ki\c{s}isel bilgisayarlar \"{u}zerinde 80386 ve \"{u}zeri (80486
80586 Pentium PentiumPro ve t\"{u}revleri) de\u{g}i\c{s}ik \"{u}reticilerin i\c{s}lemcileri
ile sorunsuz olarak \c{c}al\i{}\c{s}maktad\i{}r. 80286 ve 8086 i\c{s}lemcili
bilgisayarlar i\c{c}in s\i{}n\i{}rl\i{} kabiliyette Linux uygulamalar\i{} mevcuttur.
\item  PCI, VESA, ISA ve MCA mimarilerinde her t\"{u}rl\"{u} anakart\i{} desteklemektedir.
\item  Teorik olarak 4 Gbyte'a kadar RAM desteklenmektedir.
\item  AT uyumlu diskler (IDE, EIDE ve 16 bitlik MFM,RLL veya ESDI)
desteklenmektedir. Kontrol kart\i{}na uyumlu destek bulundu\u{g}u s\"{u}rece SCSI
diskler ve di\u{g}er cihazlar desteklenmektedir.
\item  IDE-ATAPI CD-ROM s\"{u}r\"{u}c\"{u}leri, ve baz\i{} \"{o}zel CD-ROM kontrol kartlar\i{}
desteklenmektedir.
\item  Metin ekranlarda CGA, EGA, VGA, Hercules veya uyumlu kartlar
desteklenmektedir. X Window ortam\i{}nda genel VGA ve SVGA uyumlu kartlar
ve S3, ET4000, 8514/A, ATI MACH8, ATI MACH32 gibi bir\c{c}ok g\"{o}r\"{u}nt\"{u} kart\i{}
desteklenmektedir.
\item  Bir\c{c}ok 10 ve 100 Mbit ethernet kart\i{}, ISDN, ATM, FDDI, SLIP, CSLIP,
PPP deste\u{g}i verilmektedir.
\item  Ba\c{s}ta SoundBlaster, Gravis Ultrasound olmak \"{u}zere bir\c{c}ok ses kart\i{}
desteklenmektedir.
\end{itemize}


Linux alt\i{}nda hangi donan\i{}mlar\i{}n desteklendi\u{g}i ile ilgili ayr\i{}nt\i{}l\i{}
bilgiyi {\em Hardware-HOWTO\/}'dan alabilirsiniz. HOWTO d\"{o}k\"{u}manlar\i{} hakk\i{}nda
daha geni\c{s} bilgi ve nereden temin edece\u{g}iniz kitab\i{}n  sonunda detayl\i{}ca
anlat\i{}lm\i{}\c{s}t\i{}r.

Makinan\i{}zda Linux \c{c}al\i{}\c{s}t\i{}rmak i\c{c}in kullanaca\u{g}\i{}n\i{}z uygulamalara ba\u{g}l\i{}
olarak en az bir 386SX i\c{s}lemci ve 4 Mbyte RAM'a ihtiya\c{c} duyacaks\i{}n\i{}z.
Sabit disk \"{u}zerinde ise en az 40 Mbyte'lik bir alan ay\i{}rman\i{}z
gerekecektir. Rahat bir kullan\i{}m i\c{c}in en az 8 Mbyte RAM ve 200 Mbyte
sabit disk ve bir 486 i\c{s}lemci \"{o}nerilmektedir.






\section{Linux'un Kullan\i{}m Ama\c{c}lar\i{}}

\"{U}cretsiz olarak da\u{g}\i{}t\i{}l\i{}yor ve geli\c{s}iminin hala devam ediyor olmas\i{}
bi\c{c}cok ki\c{s}inin Linux'un profesyonel alanlarda kullan\i{}lamayaca\u{g}\i{}n\i{}n
d\"{u}\c{s}\"{u}nmesine yol a\c{c}maktad\i{}r. Oysa Linux i\c{s}letim sistemini kullanan
bilgisayarlar \"{o}zel kullan\i{}m ba\c{s}ta olmak \"{u}zere bir\c{c}ok alanda yayg\i{}n
olarak kullan\i{}lmaktad\i{}rlar.




\subsection{Ki\c{s}isel Kullan\i{}m}



Linux evinde veya i\c{s}inde UNIX i\c{s}letim sistemi alt\i{}nda \c{c}al\i{}\c{s}mak
isteyenler i\c{c}in ideal bir platformdur. \"{O}zellikle i\c{s}i veya e\u{g}itimi
s\i{}ras\i{}nda UNIX platformlar alt\i{}nda \c{c}al\i{}\c{s}mak, uygulamalar kullanmak
veya yaz\i{}l\i{}m geli\c{s}tiren ki\c{s}iler kendi ki\c{s}isel bilgisayarlar\i{}nda benzer
ortam\i{} yakalayabilmekte ve i\c{s}lerini kendi ki\c{s}isel bilgisayarlar\i{}nda
ger\c{c}ekle\c{s}tirebilmektedirler. Bunlara ek olarak Linux alt\i{}nda yer alan
uygulamalar giderek s\i{}radan bir kullan\i{}c\i{} i\c{c}in bile bu i\c{s}letim sisteminin
ilgi \c{c}ekici hale gelmesini sa\u{g}lamaktad\i{}r. Geli\c{s}imleri hen\"{u}z tamamlanmam\i{}\c{s}
olmas\i{}na ra\u{g}men, herhangi bir ki\c{s}isel bilgisayardan beklenebilecek yaz\i{}
edit\"{o}rleri, hesap cetvelleri, \c{c}izim yaz\i{}l\i{}mlar\i{}, veri tabanlar\i{} bir\c{c}ok
ihtiyaca cevap verecek d\"{u}zeye gelmi\c{s}tir. \"{O}rne\u{g}in LaTeX kullan\i{}c\i{}lar\i{}
MS-DOS alt\i{}nda bulduklar\i{} deste\u{g}in \c{c}ok daha fazlas\i{}n\i{} Linux alt\i{}nda 
bulabilmektedirler.




\subsection{Internet Sunucusu}



Linux do\u{g}rudan TCP/IP deste\u{g}i ile gelmektedir. Bu y\"{o}n\"{u} ile TCP/IP
temelli bilgisayar a\u{g}lar\i{}nda hem istemci hem de sunucu olarak yayg\i{}n
kullan\i{}m bulmu\c{s}tur. \"{U}zerinde hali haz\i{}rda bulunan servislerin
\c{c}e\c{s}itlili\u{g}i, yeni \c{c}\i{}kan servislere h\i{}zl\i{} ayak uydurmas\i{}, kolay
konfig\"{u}re edilebilmesi ve \"{o}zellikle de d\"{u}\c{s}\"{u}k maliyeti sebebi ile yayg\i{}n
olarak \.{I}nternet servislerinin verilmesi amac\i{}yla kullan\i{}lmaktad\i{}r.
Zamanla verdi\u{g}i a\u{g} servisleri ba\c{s}ka protokollere destek verecek sekilde
geni\c{s}letilmi\c{s}tir. \c{S}u anda Linux

\begin{itemize}
\item WWW sunucu 
\item DNS sunucu 
\item NFS sunucu 
\item NIS sunucu 
\item X Window sunucu 
\item BOOTP sunucu 
\item SMTP sunucu 
\item FTP sunucu 
\item LIST sunucu 
\item NEWS sunucu
\end{itemize}


gibi yayg\i{}n TCP/IP servislerinin yan\i{}s\i{}ra

\begin{itemize}
\item  NOVELL sunucu (Novell protokol\"{u} kullanarak disk ve yaz\i{}c\i{} servisi) 
\item  SAMBA sunucu (Windows 3.1, Windows95, Windows NT ve 
WfW i\c{c}in disk ve yaz\i{}c\i{} servisi)
\item  APPLETALK sunucu (MacOS kullanan Apple makinalar i\c{c}in 
disk ve yaz\i{}c\i{} servisi)
\end{itemize}


verebilmektedir.




\subsection{A\u{g} Eleman\i{}}



Linux yaz\i{}l\i{}m deste\u{g}i ile bir\c{c}ok a\u{g} eleman\i{}n\i{}n yerine ge\c{c}ebilecek bir
alternatif olarak kullan\i{}labilmektedir. Birden fazla a\u{g}\i{}n birbirine
ba\u{g}lanmas\i{} amac\i{}yla bir {\em y\"{o}nlendirici (router)\/} olarak da
kullan\i{}labilmektedir. \"{O}zellikle farkl\i{} protokoller aras\i{} bir ge\c{c}i\c{s}
eleman\i{} olarak yayg\i{}n \c{s}ekilde Linux'tan yararlan\i{}lmaktad\i{}r. 
Ay\i{}rca y\"{o}nlendirici olarak kullan\i{}ld\i{}\u{g}\i{}nda kolayl\i{}kla g\"{u}venlik amac\i{}yla
{\em firewall (alev duvar\i{})\/} olarak konfig\"{u}re edilebilmektedir. Buna ek
olarak bir a\u{g} \"{u}zerinde bulunan iki segman\i{}n trafi\u{g}ini birbirinden
ay\i{}ran bir {\em k\"{o}pr\"{u} (bridge)\/} olarak da hizmet verebilmektedir. Bir\c{c}ok
kurumda bir veya daha \c{c}ok modemin ba\u{g}lanmas\i{} amac\i{}yla bir {\em terminal
sunucu (terminal server)\/} olarak Linux kullan\i{}lmaktad\i{}r.






\section{Nereden Linux Bulabilirim ?}



Linux i\c{s}letim sistemiminin temelini olu\c{s}turan \c{c}ekirdek, bu \c{c}ekirde\u{g}in
kulland\i{}\u{g}\i{} destek k\"{u}t\"{u}phaneleri ve uygulama yaz\i{}l\i{}mlar\i{} bir araya
getirilerek, y\"{u}kleme yaz\i{}l\i{}mlar\i{} da eklenerek Linux da\u{g}\i{}t\i{}mlar\i{} meydana
getirilmektedir. Bu da\u{g}\i{}t\i{}mlar temel olarak bir kullan\i{}c\i{}n\i{}n Linux
kullanmak i\c{c}in ihtiya\c{c} duyabilece\u{g}i bir \c{c}ok yaz\i{}l\i{}m\i{} bir araya
getirirler. Bu da\u{g}\i{}t\i{}mlar\i{}n \c{c}o\u{g}u \.{I}nternet \"{u}zerinde anonim FTP
ar\c{s}ivlerinde bulunabilmektedirler. \.{I}nternet eri\c{s}imi bulunmayan
ki\c{s}ilerinde (veya Internet'ten 120 Mbyte kopyalamak istemeyen
ki\c{s}ilerin) yararlanabilmesi i\c{c}in \c{c}esitli CD-ROM \c{s}irketleri taraf\i{}ndan
CD-ROM \"{u}zerinde da\u{g}\i{}t\i{}mlar meydana getirilmi\c{s}tir.

Linux da\u{g}\i{}t\i{}mlar\i{} ve bunlar\i{}n nereden temin edilebilece\u{g}i hakk\i{}nda
detayl\i{} bilgi, {\em Linux Kurulumu\/} ba\c{s}l\i{}\u{g}\i{} alt\i{}nda bulunabilir.




\subsection{Dok\"{u}man Temini}



Linux hakk\i{}nda yaz\i{}lan kitaplar\i{}n say\i{}s\i{} g\"{u}n ge\c{c}tik\c{c}e artmaktad\i{}r. Yine
de en g\"{u}ncel bilgi \.{I}nternet \"{u}zerinde bulunmaktad\i{}r. Elektronik ortamda
bulunan iki temel d\"{o}k\"{u}man \c{c}e\c{s}idi bulunmaktad\i{}r. Bunlar:

\begin{enumerate}
\item \url{http://w3.metu.edu.tr/ldp}{Linux Documentation Project}
\item \url{ftp://ftp.metu.edu.tr/pub/sunsite/docs/HOWTO/}{NASIL (HOWTO) d\"{o}k\"{u}manlar\i{}d\i{}r}
\end{enumerate}


NASIL d\"{o}k\"{u}manlar\i{}n\i{}n bir k\i{}sm\i{}n\i{}n T\"{u}rk\c{c}eye \c{c}evrilmesi i\c{s}lemi devam
etmektedir. \c{S}u ana kadar \c{c}evrilen d\"{o}k\"{u}manlar\i{} 
\url{http://linux.org.tr}{Linux Kullan\i{}c\i{}lar\i{}} Grubu WWW
sayfas\i{}ndan bulabilirsiniz.






\section{Yaz\i{}l\i{}m \"{O}zellikleri}



Bir i\c{s}letim sistemi, ne kadar m\"{u}kemmel olursa olsun, uygulama
yaz\i{}l\i{}mlar\i{}n\i{}n \c{c}oklu\u{g}u ve kalitesi ile varolabilirler. Herhangi bir
Linux da\u{g}\i{}t\i{}m\i{} i\c{c}erisinde, de\u{g}i\c{s}ik ama\c{c}lara hizmet eden bir\c{c}ok yaz\i{}l\i{}m
bulunmaktad\i{}r. Ancak her ge\c{c}en g\"{u}n bu da\u{g}\i{}t\i{}mlarda yer almayan yeni
yeni yaz\i{}l\i{}mlar \c{c}\i{}kmaktad\i{}r.

UNIX makinalar \"{u}zerinde yer alan uygulamalar\i{}n \c{c}o\u{g}u, de\u{g}i\c{s}ik
platformlar alt\i{}nda bulundu\u{g}undan \c{c}al\i{}\c{s}t\i{}r\i{}labilir (executable) olarak
da\u{g}\i{}t\i{}lmaz, kaynak kodu \c{s}eklinde sunulurlar. S\"{o}zkonusu yaz\i{}l\i{}m\i{}
kullanmak isteyen bir kullan\i{}c\i{} bu kaynak kodunu kendi platformunda
derleyerek \c{c}al\i{}\c{s}t\i{}r\i{}r. Bu t\"{u}r yaz\i{}l\i{}mlar\i{}n bir\c{c}o\u{g}u Linux alt\i{}nda
kolayl\i{}kla \c{c}al\i{}\c{s}t\i{}r\i{}labilmektedir. Bu t\"{u}r yaz\i{}l\i{}mlar\i{} \.{I}nternet \"{u}zerinde
\c{c}e\c{s}itli FTP ar\c{s}ivlerinde bulmak m\"{u}mk\"{u}nd\"{u}r.

Linux'a \"{o}zel veya Linux \"{u}zerinde geli\c{s}tirilen yaz\i{}l\i{}mlar i\c{c}in standart
baz\i{} FTP ar\c{s}ivleri vard\i{}r. Bunlar\i{}n en bilineni
\url{ftp://sunsite.unc.edu/pub/Linux}{Sunsite FTP ar\c{s}ividir.} 
Burada \c{c}e\c{s}itli dizinler alt\i{}nda konular\i{}na g\"{o}re
ayr\i{}lm\i{}\c{s} bir durumda elektronik devre tasar\i{}m yaz\i{}l\i{}mlar\i{}ndan oyun
programlar\i{}na kadar bir\c{c}ok de\u{g}i\c{s}ik yaz\i{}l\i{}m bulunmaktad\i{}r. Bu ar\c{s}ivin
T\"{u}rkiye'de yeralan bir kopyas\i{} \url{ftp://ftp.metu.edu.tr:/pub/linux/sunsite}{} adresinde vard\i{}r.

Linux'un bu denli sevilmesi ve yayg\i{}nla\c{s}mas\i{} \c{c}esitli \c{s}irketlerin
(Macintosh, Sun, SSC gibi) Linux \"{u}zerinde \c{c}al\i{}\c{s}an ticari yaz\i{}l\i{}mlar
geli\c{s}tirmesi sonucunu verdi. Bu konuda detayl\i{} bilgi i\c{c}in
{\em Commercial-HOWTO\/} d\"{o}k\"{u}man\i{}ndan yararlanabilirsiniz.

Linux \"{u}zerinde bulunan uygulamalar\i{}n ve yaz\i{}l\i{}mlar\i{}n listeleri i\c{c}in
a\c{s}a\u{g}\i{}daki adreslerden yararlanabilirsiniz:

\begin{itemize}
\item  \url{http://www.redhat.com/linux-info/linux-app-list/linapps.html}{Linux Applications and Utilities}
\item  \url{http://sal.kachinatech.com}{Scientific Applications on Linux} 
\item  \url{http://www.execps.com/lsm}{Linux Software Map}
\end{itemize}





\subsection{Temel Komutlar}



Daha \"{o}nce UNIX tabanl\i{} bir i\c{s}letim sisteminde \c{c}al\i{}\c{s}anlar i\c{c}in Linux,
\"{o}\u{g}renilmesi \c{c}ok kolay bir sistem olacakt\i{}r. Standart bir UNIX
sisteminde yeralan hemen hemen t\"{u}m komutlar, Linux'a ta\c{s}\i{}nm\i{}\c{s}t\i{}r.
Onlarca \c{c}e\c{s}it kabu\u{g}un yan\i{} s\i{}ra, {\tt sed}, {\tt awk} gibi programc\i{}n\i{}n i\c{s}ini
kolayla\c{s}t\i{}ran diller, {\tt ls, less, finger} gibi temel her t\"{u}rl\"{u} komut,
Linux'ta vard\i{}r.

A\u{g} ve \.{I}nternet uygulamalar\i{} i\c{c}in {\tt elm} ve {\tt pine} (Pine Is Not Elm :-)
yan\i{}nda metin edit\"{o}rleri olarak {\tt vi, vim} (vi'\i{}n daha geli\c{s}mi\c{s} s\"{u}r\"{u}m\"{u}),
{\tt pico} ve {\tt joe} say\i{}labilir. Edit\"{o}rlerden, bizde fazla bilinmeyen Emacs da
Linux alt\i{}nda denemeye de\u{g}er programlardand\i{}r. Kelime i\c{s}lem
programlar\i{}ndan {\tt troff, groff} (GNU troff) ve daha modern metin i\c{s}leme
yaz\i{}l\i{}mlar\i{}ndan TeX ve LaTeX say\i{}labilir.

Baz\i{} program isimlerinin (GNU-tar, GNU-bash gibi) ba\c{s}\i{}nda g\"{o}rebilece\u{g}iniz
{\em GNU\/} (Gnu is Not UNIX!), Linux i\c{c}in de yaz\i{}l\i{}m ve programlar
\"{u}reten bir kurulu\c{s}tur. GNU, lisans\i{}n\i{} ve yazar\i{}n\i{} korumak ko\c{s}uluyla
programlar\i{} kaynak koduyla birlikte Linux kullan\i{}c\i{}lar\i{}na da\u{g}\i{}t\i{}r. GNU
{\tt bash} ve {\tt tcsh}, Linux alt\i{}nda en \c{c}ok ra\u{g}bet edilen iki kabuk
ismidir. Di\u{g}er kabuklar aras\i{}nda {\tt zsh}, {\tt ash}, {\tt ksh} ve {\tt csh}
say\i{}labilir. Kabuklar hakk\i{}nda daha geni\c{s} bilgiyi, {\em Bash\/} konu ba\c{s}l\i{}\u{g}\i{}
alt\i{}nda bulabilirsiniz.






\subsection{Uygulama Programlar\i{}}



Linux \"{u}zerinde ver taban\i{} uygulamalar\i{} ortalama bir kullan\i{}c\i{}n\i{}n
ihtiyac\i{}n\i{} kar\c{s}\i{}layabilir. \url{http://www.postgresql.org}{Postgres}, {\tt Mbase}, {\tt msql} ve {\tt Ingres} gibi profesyonel
yaz\i{}l\i{}mlar Linux ve di\u{g}er platformlarda istemci/sunucu bazda g\"{o}rev
yapabilirler. \"{O}zellikle Postgres, uygulama kolayl\i{}\u{g}\i{} ve C, perl, tcl
gibi bir\c{c}ok dile y\"{o}nelik arabirimiyle g\"{o}ze \c{c}arpar.

M\"{u}hendislik yaz\i{}l\i{}mlar\i{} aras\i{}nda {\tt gnuplot} (grafiksel veri analiz
yaz\i{}l\i{}m\i{}), {\tt xspread} ve {\tt xfractint} (fraktal yaratma program\i{})
say\i{}labilir.

Do\u{g}ru se\c{c}ilmi\c{s} bir donan\i{}m \"{u}zerinde kurulan bir Linux makinas\i{}, hemen
her t\"{u}r \c{c}okluortam (multimedia) uygulamalar\i{}n\i{} rahatl\i{}kla
\c{c}al\i{}\c{s}t\i{}rabilir. En az Pentium tabanl\i{}, 32Mbayt RAM ve 2GB sabit diske
sahip makina yard\i{}m\i{}yla ticari olarak sat\i{}lan \c{c}okluortam uygulamalar\i{}n\i{}
kullanabilirsiniz. Linux, hemen her t\"{u}rl\"{u} ses kart\i{}n\i{} destekledi\u{g}inden
ses dosyalar\i{}n\i{}n, workman, Cdplayer gibi programlar yard\i{}m\i{}yla kolayca
\c{c}al\i{}nmas\i{} m\"{u}mk\"{u}n olur. MIDI edit\"{o}rleri ve bir sentezleyici ile kendi
m\"{u}zik st\"{u}dyonuzu kurabilirsiniz.

Biraz oyun oynamak m\i{} istediniz ? Doom, Quake, Abuse, Xtetris, FreeCiv(ya
da CivNet), Imaze ve benzeri onlarca oyun Linux'ta da var. ODT\"{U}'de
y\"{u}zlerce \"{o}\u{g}renciyi bilgisayar ba\c{s}\i{}na m\i{}hlayan MUD (Multi User Dungeon)
oyunlar\i{}n\i{} sunan makinalar\i{}n birk\i{}sm\i{} Linux idi.

Bu oyunlar\i{} \c{c}e\c{s}itli ftp adrteslerinden \"{u}cretsiz temin edebilirsiniz.




\subsection{X Window Arabirimi}



Linux i\c{s}letim sistemi alt\i{}nda X Window sistemi ile Windows alt\i{}ndaki
gibi grafik arabirimiyle birlikte \c{c}al\i{}\c{s}abilirsiniz. Windows ile u\u{g}ra\c{s}an
herkes rahatl\i{}kla X Window'a ge\c{c}i\c{s} yapabilir. X ile ekranda ayn\i{} anda
birden fazla pencere a\c{c}\i{}labilir, fare yard\i{}m\i{}yla birden fazla uygulama
ayn\i{} anda kontrol edilebilir.

Pek\c{c}ok uygulaman\i{}n (\"{o}zellikle \.{I}nternet tabanl\i{}) X \"{u}zerinde \c{c}al\i{}\c{s}an
s\"{u}r\"{u}mleri vard\i{}r. Bu sayede metin tabanl\i{} ekrana (vt100) d\"{o}nmeden her
i\c{s}inizi X yard\i{}m\i{}yla tamamlayabilme \c{s}ans\i{}n\i{}z olur. Bu sayede Linux, bir
i\c{s} istasyonu g\"{o}r\"{u}n\"{u}m\"{u}ne ve kullan\i{}\c{s}l\i{}l\i{}\u{g}\i{}na sahip olacakt\i{}r.

X pencere denetleyici (window manager - wm) kullan\i{}c\i{} ile X aras\i{}nda
bekler ve klavye ile fareden ald\i{}\u{g}\i{} emirleri ekranda yerine getirir. Bu
emirler, pencerelerin a\c{c}\i{}lmas\i{}, kapat\i{}lmas\i{} ve yerlerinin
de\u{g}i\c{s}tirilmesi gibi komutlard\i{}r. S\i{}k\c{c}a kullan\i{}lan pencere
denetleyicileri {\tt fvwm}, {\tt twm} ve {\tt olwm}'dir.




\section{Linux ve Di\u{g}er \.{I}\c{s}letim Sistemleri}



Linux ve di\u{g}er i\c{s}letim sistemleri aras\i{}ndaki ili\c{s}kiyi, benzerlikleri ve
farkl\i{}l\i{}klar\i{} bilmek \"{o}nemlidir. Linux i\c{s}letim sistemi, di\u{g}er sistemler
ile birlikte ayn\i{} sabit diski payla\c{s}abilir. UNIX'i \"{o}\u{g}renmek i\c{c}in
kesinlikle en kolay ve ucuz yol olan Linux, di\u{g}er i\c{s}letim sistemlerine
kar\c{s}\i{} her zaman g\"{u}\c{c}l\"{u} bir alternatif olmaktad\i{}r. \.{I}nternet servis
sa\u{g}lay\i{}c\i{}lar\i{}n\i{}n b\"{u}y\"{u}k \c{c}o\u{g}unlu\u{g}u, Linux kullanmakta, \.{I}nternet
ba\u{g}lant\i{}lar\i{}n\i{}, e-posta ve haber grubu al\i{}\c{s}-veri\c{s}ini Linux sayesinde
yapmaktad\i{}r.

Bir ki\c{s}isel bilgisayar\i{} sat\i{}n ald\i{}\u{g}\i{}n\i{}z zaman \c{c}ok b\"{u}y\"{u}k ihtimalle
\"{u}zerinde MS-DOS veya t\"{u}revi bir i\c{s}letim sistemi y\"{u}klenmi\c{s} oldu\u{g}unu
g\"{o}receksiniz. Her kullan\i{}c\i{} o veya bu \c{s}ekilde MS-DOS ile tan\i{}\c{s}\i{}r.
MS-DOS,  \"{u}zerinde en fazla program yaz\i{}lan i\c{s}letim sistemi olmu\c{s}, bu
y\"{u}zden modern i\c{s}letim sistemleri \c{c}\i{}kmadan \"{o}nce her kullan\i{}c\i{}n\i{}n
kurtar\i{}c\i{}s\i{} g\"{o}z\"{u}yle bak\i{}lm\i{}\c{s}t\i{}r. Fakat MS-DOS arabirimi programlan\i{}rken
ileriyi d\"{u}\c{s}\"{u}nemeyen programc\i{}lar, bu i\c{s}letim sistemine Linux'ta olan
baz\i{} hayati \"{o}zellikleri kazand\i{}ramam\i{}\c{s}lard\i{}r. MS-DOS, \c{c}ok kullan\i{}c\i{}l\i{} bir
sistem de\u{g}ildir ve ayn\i{} anda birden \c{c}ok i\c{s}i yapamaz. \.{I}sterseniz
\c{c}al\i{}\c{s}t\i{}r\i{}labilecek en geni\c{s} program\i{}n b\"{u}y\"{u}kl\"{u}\u{g}\"{u}n\"{u} g\"{o}rmek i\c{c}in {\tt mem}
komutunu kullanmay\i{} deneyin. Linux, sadece \"{u}zerindeki haf\i{}za ile
s\i{}n\i{}rl\i{}d\i{}r. 80x86 tabanl\i{} mikroi\c{s}lemcinin her \"{o}zelli\u{g}ini sonuna kadar
kullan\i{}r. Bunun sonucu olarak verimli bir i\c{s}letim sistemi say\i{}labilir.

T\"{u}m bu olumsuzluklara ra\u{g}men yine de MS-DOS kullanmak istiyorsunuz. Onun
da kolay\i{}n\i{} bulmu\c{s} Linux programc\i{}lar\i{}. \"{U}cretsiz da\u{g}\i{}t\i{}lan MS-DOS ve
Windows em\"{u}lat\"{o}r\"{u} yard\i{}m\i{}yla MS-DOS alt\i{}nda \c{c}al\i{}\c{s}an programlar\i{}n hemen
hepsi Linux'la birlikte de \c{c}al\i{}\c{s}abilir. {\tt WinWord 2.0, sysinfo, Civilization ve Qbasic} Linux alt\i{}nda sorunsuz \c{c}al\i{}\c{s}an
MS-DOS/Windows programlar\i{}ndan birka\c{c}\i{}.

Profesyonel bir yat\i{}r\i{}m say\i{}labilecek Windows NT'nin
\c{c}okg\"{o}revlilik ve haf\i{}zay\i{} m\"{u}kemmel kullanma gibi \"{o}zellikleri vard\i{}r.
Buna kar\c{s}\i{}l\i{}k fiyat\i{} olduk\c{c}a y\"{u}ksektir ve \c{c}al\i{}\c{s}mak i\c{c}in gayet y\"{u}ksek
standartl\i{} bir makina ister.

IBM firmas\i{}n\i{}n geli\c{s}tirdi\u{g}i OS/2 de NT'ye benzer \c{s}ekilde \c{c}okg\"{o}revli
i\c{s}letim sistemi olup fiyat/performans oran\i{} a\c{c}\i{}s\i{}ndan makul
say\i{}labilecek bir i\c{s}letim sistemi olarak g\"{o}ze \c{c}arpar.

Linux, herkese g\"{o}re bir i\c{s}letim sistemi de\u{g}ildir. UNIX'i
benimsemeyen bir kullan\i{}c\i{}dan Linux'u kullanmas\i{}n\i{} bekleyemezsiniz.
\.{I}nternet'in kendisi UNIX tabanl\i{} oldu\u{g}u i\c{c}in Linux bu alanda yukar\i{}da
s\"{o}z\"{u} ge\c{c}en sistemlerden daha avantajl\i{} bir duruma gelir. Da\u{g}\i{}t\i{}m\i{} tek
firmayla sabit olmad\i{}\u{g}\i{} i\c{c}in geli\c{s}tirilme a\c{s}amas\i{}nda d\"{u}nyan\i{}n d\"{o}rt bir
yan\i{}ndan katk\i{} ve destek gelir. UNIX'e belirli bir standart getirilmesi
i\c{c}in yap\i{}lan \c{c}al\i{}\c{s}malara uyan Linux, POSIX standard\i{}n\i{} destekler.

RedHat, Caldera gibi \c{c}e\c{s}itli Linux s\"{u}r\"{u}mleri da piyasada sat\i{}lmakta,
\c{c}ok zengin bir d\"{o}k\"{u}man ve ar\c{s}iv kayna\u{g}\i{} ile kullan\i{}c\i{}lara
sunulmaktad\i{}r. 80x86 tabanl\i{} i\c{s}lemciler \"{u}zerinde kurulabilen ve
\.{I}nternet \"{u}zerinde bedava da\u{g}\i{}t\i{}lan di\u{g}er i\c{s}letim sistemlerinden birisi
FreeBSD'dir. FreeBSD, bir grup programc\i{} taraf\i{}ndan BSD standart\i{}n\i{}
80x86 bilgisayarlara ta\c{s}\i{}mak \"{u}zere geli\c{s}tirilmi\c{s}tir ve  Linux ile b\"{u}y\"{u}k
benzerlikleri bulunur.

Linux i\c{s}letim sisteminin g\"{u}venilir ve sa\u{g}lam yap\i{}s\i{}ndan haberdar
olmayan, hatta bu ger\c{c}e\u{g}i bilerek \"{u}cretli sistemlerdem medet uman
ki\c{s}iler vard\i{}r. Sabit fikirli olmadan \"{o}nce bu sistem hakk\i{}nda daha
fazla verinin da\u{g}\i{}t\i{}lmas\i{}, kullan\i{}c\i{}lar\i{}n bilin\c{c}lendirilmesi
gereklidir. Bu da ancak, Linux'un yapabildiklerini g\"{o}stermekle
olabilir.




\section{T\"{u}rkiye'de ve D\"{u}nyada Linux }



E\u{g}er Linux'u sever ve bu sistemin yayg\i{}nla\c{s}mas\i{}nda, bihaber
kullan\i{}c\i{}lara tan\i{}t\i{}m\i{}nda \"{o}nc\"{u}l\"{u}k etmek isterseniz, bu b\"{o}l\"{u}m tam size
g\"{o}redir.

Hen\"{u}z t\"{u}zel ki\c{s}ili\u{g}i olmayan
\url{http://www.linux.org.tr}{T\"{u}rkiye Linux Kullan\i{}c\i{}lar\i{} Grubu sayfas\i{}} T\"{u}rkiye'de Linux \c{c}al\i{}\c{s}malar\i{} i\c{c}in iyi
bir ba\c{s}lang\i{}\c{c} noktas\i{}d\i{}r.
T\"{u}rk\c{c}e ve \.{I}ngilizce T\"{u}rkiye'deki en geni\c{s} kapsaml\i{} Linux sunucusunun
geni\c{s}lemesinde yeni fikirlere, \c{c}\"{o}z\"{u}m \"{o}nerilerine ihtiya\c{c} vard\i{}r. Bu da
ancak Linux seven bir kitlenin varl\i{}\u{g}\i{}yla m\"{u}mk\"{u}nd\"{u}r.

D\"{u}nyada ve T\"{u}rkiye'de \.{I}nternet Servis Sa\u{g}lay\i{}c\i{}lar\i{} (\.{I}SS) Linux'u
uzunca bir s\"{u}redir ticari olarak kullan\i{}yorlar. Uygulama yaz\i{}l\i{}mlar\i{} da
bu y\"{o}nde kullan\i{}c\i{}lar\i{}n hizmetine sunuluyor. Fakat g\"{u}venlik sorunlar\i{}
nedeniyle Linux kullanan servis sa\u{g}lay\i{}c\i{}lar\i{}, m\"{u}\c{s}terilerini bu
hizmetten yoksun tutuyorlar. A\c{c}\i{}k sistem kavram\i{}n\i{}n yayg\i{}nla\c{s}mas\i{} da bu
sebepten dolay\i{} sekteye u\u{g}ruyor. 
\url{http://www.10mb.com/linux/}{http://www.10mb.com/linux/}
adresinde, ticari uygulama yaz\i{}l\i{}mlar\i{}na destek veren bir proje
yeralmakta.

SSC (Specialized Systems Consultants - http://www.scc.com), ``Linux Journal'' ad\i{}nda bir
dergiyi ba\c{s}ar\i{}yla da\u{g}\i{}t\i{}yor. Tiraj\i{} onbinleri bulan bu ayl\i{}k dergide bu
i\c{s}letim sistemini aktif kullanan herkes i\c{c}in, her konuda, her d\"{u}zeyde
makale bulmak m\"{u}mk\"{u}nd\"{u}r. 




\section{Linux ve Donan\i{}m Deste\u{g}i}



Bir i\c{s}letim sisteminin t\"{u}m kartlar\i{} tan\i{}mas\i{}, t\"{u}m sabit disklerle
\c{c}al\i{}\c{s}abilmesi, t\"{u}m giri\c{s}/\c{c}\i{}k\i{}\c{s} kartlar\i{}yla uyum i\c{c}inde \c{c}al\i{}\c{s}mas\i{} m\"{u}mk\"{u}n
de\u{g}ildir. Bu konuda \c{c}ok iddal\i{} olan tak-\c{c}al\i{}\c{s}t\i{}r sistemine sahip
Windows95 bile bazen yetersiz kalabilmekte. Linux da piyasada yeralan
hemen hemen b\"{u}t\"{u}n donan\i{}mlarla birlikte \c{c}al\i{}\c{s}abilir.

Linux, \"{u}zerinde matematiksel i\c{s}lemci olsun veya olmas\i{}n Intel
386SX/DX, 486SX/DX/SX2/DX2/DX4, Pentium ve PentiumPro i\c{s}lemcilerde sorunsuz
\c{c}al\i{}\c{s}\i{}r. Bunlarla beraber (Cyrix 486 tabanl\i{} i\c{s}lemcilerinde nadiren sorun
\c{c}\i{}karsa da) AMD, Cyrix gibi firmalar\i{}n i\c{s}lemcileri de Linux taraf\i{}ndan
desteklenir. Matematik i\c{s}lemcisi olmayan bilgisayarlarda Linux'un beyni
say\i{}lan \c{c}ekirdek, matematik i\c{s}lemcisine gerek duyulan kod par\c{c}alar\i{}nda
bu i\c{s}lemciyi em\"{u}le edebilir. Burada belirtilen IBM uyumlu PCler d\i{}\c{s}\i{}nda
ALPHA, PowerPC, MIPS, farkl\i{} Sparc modelleri, PA-RISC gibi bir\c{c}ok farkl\i{}
i\c{s}lemciye de ba\c{s}ar\i{}l\i{} bir \c{s}ekilde ta\c{s}\i{}nm\i{}\c{s}t\i{}r.

Linux, ki\c{s}isel bilgisayarlarda kullan\i{}lan ISA, VLB (Vesa Local Bus -
yerel veri yolu), EISA, MCA (IBM Microchannel) veya PCI veriyolu 
mimarisi ile \c{c}al\i{}\c{s}abilirler.

Linux, SMP (symmetric multi processor) olarak da bilinen birden fazla
i\c{s}lemcili bilgisayarlar \"{u}zerinde de \c{c}al\i{}\c{s}abilir ve birden fazla i\c{s}lemciyi
en verimli \c{s}ekilde kullan\i{}r.

Ki\c{s}isel bilgisayarlar\i{}n kulland\i{}\u{g}\i{} 80x86 tabanl\i{} i\c{s}lemciler d\i{}\c{s}\i{}nda,
ta\c{s}\i{}nan ve sorunsuzca  \c{c}al\i{}\c{s}t\i{}\u{g}\i{} bilinen i\c{s}lemciler ve bilgisayarlar
ile konu hakk\i{}nda daha fazla bilgi al\i{}nabilecek \.{I}nternet adresleri
a\c{s}a\u{g}\i{}da verilmi\c{s}tir.

\begin{itemize}
\item  \url{http://www-users.informatik.rwth-aachen.de/~hn/linux68k.html}{Linux/68000}
\item  \url{http://www.waldorf-gmbh.de/linux-mips-faq.html}{Linux/MIPS}
\item  \url{ftp://sunsite.unc.edu/pub/Linux/docs/ports/Linux-PowerPC-FAQ.gz}{Linux/PowerPC} 
\item  \url{http://www.ph.kcl.ac.uk/~amb/linux.html}{Linux for Acorn} 
\item  \url{http://www.mklinux.apple.com}{MacLinux} 
\item  \url{http://www-c724.uibk.ac.at/XL/}{Compaq Deskpro XL} 
\item  \url{ftp://invaders.dcrl.nd.edu/pub/misc/}{IBM PS/2 MCA systems} 
\item  \url{http://domen.uninett.no/~hta/linux/aero-faq.html}{Compaq Contura Aero} 
\item  \url{http://peipa.essex.ac.uk/tp-linux/tp-linux.html}{IBM ThinkPad}
\item  \url{http://lena.fnet.fr/}{Linux/MIPS}
\item  \url{http://www.azstarnet.com/~axplinux/}{Linux/Alpha}
\item  \url{http://www.osf.org/mall/os/pa-mklinux/index.html}{HP PA-RISC}
\item  \url{http://www.geog.ubc.ca/sparclinux.html}{SPARC/Linux}
\end{itemize}


Linux, metin modu kullan\i{}rken t\"{u}m ekran kartlar\i{}yla (Hercules, CGA, EGA,
CGA, IBM monokrom) sorunsuz \c{c}al\i{}\c{s}\i{}r. X Window \c{c}al\i{}\c{s}t\i{}rmak isterseniz
h\i{}zland\i{}r\i{}lm\i{}\c{s} bir SVGA kart \"{o}nerilir. S\"{u}rekli yenileri eklense de a\c{s}a\u{g}\i{}da 
\c{s}u anda desteklenen kartlar\i{}n tam listesi vard\i{}r.

\begin{itemize}
\item Hercules mono
\item VGA / VGA Mono
\item EGA
\item ARK Logic ARK1000PV/2000PV, ARK1000PV/VL
\item ATI VGA Wonder, ATI Mach32, ATI Mach8, ATI Mach64
\item Cirrus 542x, 543x, 62x5, 6420/6440
\item OAK OTI-037/67/77/87
\item Trident TVGA8900, TVGA8800, TVGA9xxx
\item Tseng ET3000/ET4000/W32, ET4000/W32/W32i/W32p, ET4000AX
\item IBM 8514/A, IBM XGA, XGA-II
\item IIT AGX-010/014/015/016 (16 bpp)
\item Oak OTI-087, OTI-067, OTI-077
\item S3 911, 924, 801, 805, 928, 864, 964, Trio32, Trio64, 868, 968
\item Weitek P9000 (16/32 bpp)
\item Diamond Viper VLB/PCI
\item Orchid P9000
\item Western Digital PVGA1, WD90C00/10/11/24/30/31/33
\item Avance Logic AL2101/2228/2301/2302/2308/2401
\item Chips \& Technologies 65520/65530/65540/65545
\item Compaq AVGA
\item Genoa GVGA
\item MCGA (320x200)
\item MX MX68000/MX68010
\item NCR 77C22, 77C22E, 77C22E+
\item RealTek RTG3106
\item Video 7 / Headland Technologies HT216-32
\item Western Digital/Paradise PVGA1, WD90C00/10/11/24/30/31/33
\item Hyundai HGC-1280
\item Sigma LaserView PLUS
\end{itemize}





\subsection{Sabit Diskler ve Sabit Disk Denetleyicileri}



Linux, standart IDE, baz\i{} ESDI, hemen hemen t\"{u}m SCSI ve nadiren
kullan\i{}lsa da MFM ve RLL denetleyicilerini desteklerler. Asl\i{}nda Linux
\c{c}al\i{}\c{s}t\i{}rmak i\c{c}in sabit diske gerek yoktur. A\u{g} \"{u}zerinden, Bootp
protokol\"{u} yard\i{}m\i{}yla Linux y\"{u}kl\"{u} ba\c{s}ka bir bilgisayar\i{}n kaynaklar\i{}n\i{}
kullanmak m\"{u}mk\"{u}nd\"{u}r. Sabit disk denetleyiciniz en az 16 bit olmal\i{}d\i{}r.
Genellikle MS-DOS alt\i{}nda sorunsuz \c{c}al\i{}\c{s}an her sabit diski Linux da
g\"{o}rebilir.

Sabit disk \"{u}zerinde Linux i\c{c}in bir miktar yer ay\i{}rmal\i{}s\i{}n\i{}z. Birden
fazla disk de kullanabilirsiniz, Linux her diski ayr\i{} bir dizin
alt\i{}ndan eri\c{s}ebilir. Bu konuda daha geni\c{s} bilgiyi Linux kurulumu
b\"{o}l\"{u}m\"{u}nde bulabilirsiniz.

Sabit diskler, denetleyicileri desteklendi\u{g}i s\"{u}rece Linux alt\i{}nda
kullan\i{}labilirler. Art\i{}k neredeyse t\"{u}m CD-ROM'lar SCSI denetleyicilerle
\c{c}al\i{}\c{s}\i{}yorlar. Bir SCSI denetleyiciniz varsa makinan\i{}z CD-ROM'u da
tan\i{}yacakt\i{}r. Linux, CD-ROM'lar\i{}n standart iso9660 dosya sistemini de
tan\i{}r.



Desteklenenen kartlar,

\begin{itemize}
\item AMI Fast Disk VLB/EISA
\item Adaptec AVA-1505/1515, AHA-1510/152x, AHA-154x, AHA-174x, AHA-274x, AHA-2940/3940, ACB-40xx
\item Always IN2000
\item BusLogic (ISA/EISA/VLB/PCI)
\item DPT PM2001, PM2012A (EATA-PIO)
\item DTC 329x (EISA) (Adaptec 154x compatible)
\item Future Domain TMC-16x0, TMC-3260 (PCI), TMC-8xx, TMC-950
\item Media Vision Pro Audio Spectrum 16 SCSI (ISA)
\item NCR 5380 generic, 53c400, 53c406a, 53c7x0, 53c8x0 (PCI)
\item Qlogic / Control Concepts SCSI/IDE (FAS408) (ISA/VLB)
\item Seagate ST-01/ST-02 (ISA)
\item SoundBlaster 16 SCSI-2 (ISA)
\item Trantor T128/T128F/T228 (ISA)
\item UltraStor 14F (ISA), 24F (EISA), 34F (VLB)
\item Western Digital WD7000 SCSI
\item AMD AM53C974, AM79C974 (PCI)
\item Adaptec SCSI-MFM/RLL bridgeboard
\item Iomega PC2/2B
\item Qlogic (ISP1020) (PCI)
\item Ricoh GSI-8
\end{itemize}







\subsection{Ethernet Kartlar\i{}}



Piyasada \c{c}ok \c{c}e\c{s}itli ethernet kartlar\i{} vard\i{}r. Genellikle yayg\i{}n olarak
kullan\i{}lanlar 3Com veya NE2000 uyumlulard\i{}r. A\c{s}a\u{g}\i{}da desteklenen
ethernet kartlar\i{}n bir listesi yeralmaktad\i{}r. PCMCIA, Tokenring, ISDN,
AX25 kartlar\i{}n\i{}n uyumlu olanlar\i{}, \c{c}ok nadir kullan\i{}ld\i{}klar\i{} i\c{c}in
burada belirtilmeyecektir.

\begin{itemize}
\item 3Com 3C501, 3Com 3C503, 3C505, 3C507, 3C509/3C509B (ISA) / 3C579 (EISA)
\item AMD LANCE (79C960) / PCnet-ISA/PCI (AT1500, HP J2405A,
\item NE1500, NE2100, NE2000, NE1000
\item AT\&T GIS WaveLAN
\item Allied Telesis AT1700
\item Ansel Communications AC3200 EISA
\item Apricot Xen-II
\item Cabletron E21xx
\item DEC DE425 (EISA) / DE434/DE435 (PCI), DEC DEPCA
\item HP PCLAN 27245,  27247, 27252A, 10/100VG PCLAN
\item Intel EtherExpress, EtherExpress Pro
\item New Media Ethernet
\item Racal-Interlan NI5210, NI6510
\item PureData PDUC8028, PDI8023
\item SEEQ 8005
\item SMC Ultra
\item Schneider \& Koch G16
\item Western Digital WD80x3
\item Zenith Z-Note / IBM ThinkPad 300 built-in adapter
\end{itemize}







\subsection{Ses Kartlar\i{}}



Linux \"{u}zerinde hemen her t\"{u}rl\"{u} ses kart\i{} deste\u{g}i var. SoundBlaster16
ses kartlar\i{}n\i{}n \"{u}zerinde ASP \c{c}ipi veya 4.11 ve 4.12 DSP (digital signal
processor - say\i{}sal ses i\c{s}leyici) bulunanlar\i{} Linux \"{u}zerinde
kullanamazs\i{}n\i{}z.

Desteklenen ses kartlar\i{},

\begin{itemize}
\item 6850 UART MIDI
\item Adlib (OPL2)
\item Audio Excell DSP16
\item Aztech Sound Galaxy NX Pro
\item Crystal CS4232
\item CHO-PSS (Orchid SoundWave32, Cardinal DSP16)
\item Ensoniq SoundScape
\item AWE 32 
\item Gravis Ultrasound, Gravis Ultrasound MAX
\item Logitech SoundMan Games, Logitech SoundMan Wave
\item Logitech SoundMan 16 (PAS-16 uyumlu)
\item MPU-401 MIDI
\item MediaTriX AudioTriX Pro
\item Media Vision Premium 3D (Jazz16), Pro Sonic 16 (Jazz), Pro Audio Spectrum 16
\item Microsoft Sound System (AD1848)
\item OAK OTI-601D cards (Mozart)
\item OPTi 82C928/82C929 cards (MAD16/MAD16 Pro)
\item Sound Blaster, Sound Blaster Pro, Sound Blaster 16
\item Turtle Beach Wavefront cards (Maui, Tropez)
\item Wave Blaster
\end{itemize}





\subsection{Fare}



Linux, {\tt Microsoft serial mouse, Mouse Systems serial mouse, Logitech
Mouseman serial mouse, Logitech serial mouse, ATI XL Inport busmouse,
Microsoft busmouse, Logitech busmouse} ve {\tt PS/2 mouse} destekler.

Genellikle kullanaca\u{g}\i{}n\i{}z farenin t\"{u}r\"{u} Microsoft ya da Mouse Systems 
serial mouse olacakt\i{}r.




\subsection{Modem, Yaz\i{}c\i{} ve Oyun \c{C}ubu\u{g}u}



Hem internal (kasa i\c{c}ine tak\i{}lan) hem de external (kasan\i{}n d\i{}\c{s}\i{}nda kalan)
t\"{u}m modemler Linux taraf\i{}ndan desteklenir. Ayn\i{} \c{s}ekilde paralel veya
seri porta tak\i{}lan her yaz\i{}c\i{} ve \c{c}izici desteklenir. \.{I}sterseniz bunlar\i{}
yerel bir a\u{g} \"{u}zerinden birden fazla makinaya payla\c{s}t\i{}rabilirsiniz. Linux
alt\i{}nda {\tt lpr} yaz\i{}l\i{}m\i{}, yaz\i{}c\i{}lara eri\c{s}imi sa\u{g}lamak i\c{c}in kullan\i{}l\i{}r.

Oyun \c{c}ubuklar\i{} i\c{c}in s\"{u}r\"{u}c\"{u}ler ister do\u{g}rudan \c{c}ekirde\u{g}e eklenebilir,
istenirse de mod\"{u}l olarak derlenebilir.

A\c{s}a\u{g}\i{}da, Linux'un destekledi\u{g}i giri\c{s}/\c{c}\i{}k\i{}\c{s} kartlar\i{}n\i{}n geni\c{s} bir listesi
vard\i{}r.

\begin{itemize}
\item AST FourPort and clones
\item Accent Async-4
\item Arnet Multiport-8
\item Bell Technologies HUB6
\item Boca BB-1004, 1008, BB-2016, IO/AT66, IO 2by4
\item Computone ValuePort
\item DigiBoard PC/X (4, 8, 16 port)
\item Comtrol Hostess 550 (4, 8 port)
\item PC-COMM 4-port (4 port)
\item SIIG I/O Expander 4S (4 port, uses 4 IRQ's)
\item STB 4-COM (4 port)
\item Twincom ACI/550
\item Usenet Serial Board II (4 port)
\item Cyclades Cyclom-8Y/16Y (8, 16 port) (ISA/PCI)
\item Stallion EasyIO, EasyConnection 8/32, 8/64
\end{itemize}





\section{Linux Avantaj ve Dezavantajlar\i{}}



Pek\c{c}ok insan, ``neden Linux?'' diye sorabilir. Belki de cevap \"{o}nce
kullan\i{}c\i{}n\i{}n kendini tan\i{}mas\i{} ile bulunabilir. De\u{g}i\c{s}ik yerlerde Linux
kullan\i{}lmas\i{} ve bunun sonu\c{c}lar\i{} hakk\i{}nda g\"{o}zlemlediklerimizin \i{}\c{s}\i{}\u{g}\i{}
alt\i{}nda \c{c}ok kabaca:

E\u{g}er,

Bilgisayarla ili\c{s}kiniz belirli paket programlara dayan\i{}yorsa,
bilgisayar kullanmak i\c{c}in bilgisayar konusunda bilgi sahibi olman\i{}z
gerekti\u{g}ine inanm\i{}yorsan\i{}z, bilgisayar ile u\u{g}ra\c{s}mak ho\c{s}unuza
gitmiyorsa, sorunlar\i{}n\i{}z\i{} kendi ba\c{s}\i{}n\i{}za \c{c}\"{o}zmeyi denemekten
ho\c{s}lanm\i{}yorsan\i{}z, bir sorun \c{c}\i{}kt\i{}\u{g}\i{}nda para vererek de olsa bu
sorununuzu birisi arac\i{}l\i{}\u{g}\i{} ile \c{c}\"{o}zmek istiyorsan\i{}z

Linux kesinlikle size g\"{o}re de\u{g}il.

Ama e\u{g}er,

Bilgisayar\i{}n\i{}zla ilgilenmekten ho\c{s}lan\i{}yorsan\i{}z, bilgisayarda \c{c}\i{}kan
problemlerle u\u{g}ra\c{s}mak ho\c{s}unuza gidiyorsa, di\u{g}er i\c{s}letim sistemlerinin
sizi s\i{}kt\i{}\u{g}\i{}na ve s\i{}n\i{}rlad\i{}\u{g}\i{}na inan\i{}yorsan\i{}z, donan\i{}m\i{}n\i{}zdan daha \c{c}ok
performans istiyorsan\i{}z, UNIX i\c{s}letim sistemi ile \c{c}al\i{}\c{s}may\i{}
seviyorsan\i{}z

Linux size g\"{o}re olabilir.




\subsection{Avantajlar\i{}}



UNIX i\c{s}letim sistemine sahip bir bilgisayar kullanmak istiyorsan\i{}z ve
bu i\c{s}letim sisteminde platforma ba\u{g}\i{}ml\i{} bir yaz\i{}l\i{}m kullanm\i{}yorsan\i{}z,
Linux ideal bir \c{c}\"{o}z\"{u}md\"{u}r.

Linux \"{u}cretsizder. Sadece i\c{s}letim sisteminin maliyeti a\c{c}\i{}s\i{}ndan de\u{g}il,
verdi\u{g}i performans i\c{c}in ihtiya\c{c} duydu\u{g}u donan\i{}m a\c{c}\i{}s\i{}ndan da \c{c}ok
ucuzdur. \"{U}st\"{u}ne \"{u}stl\"{u}k \c{c}ok kullan\i{}lan ve bol yedek par\c{c}as\i{} bulunan bir
platform alt\i{}nda \c{c}al\i{}\c{s}t\i{}\u{g}\i{} i\c{c}in belirli bir Linux sisteminin
performans\i{}n\i{} art\i{}rmak i\c{c}in yap\i{}lmas\i{} gereken yat\i{}r\i{}m ba\c{s}ka bir UNIX i\c{s}
istasyonunu ayn\i{} oranda geli\c{s}tirmek i\c{c}in gereken yat\i{}r\i{}ma g\"{o}re \c{c}ok
d\"{u}\c{s}\"{u}kt\"{u}r. Herhangi bir Sun bilgisayar\i{}n hafizas\i{}n\i{} iki kat\i{}na \c{c}\i{}karmak
i\c{c}in harcanacak para ile bir Linux-PC'nin hafizas\i{}n\i{} iki kat\i{}na
\c{c}\i{}karmak i\c{c}in harcanmas\i{} gereken paray\i{} k\i{}yaslamay\i{} deneyin. Fakat
\c{s}irketler baz\i{}nda Linux'un bedava bir i\c{s}letim sistemi olmas\i{} genelde
g\"{o}zard\i{} edilir.

Bir Linux makine bu sayede sadece i\c{s}letim sistemi a\c{c}\i{}s\i{}ndan de\u{g}il
donan\i{}m olarak da ucuza gelmektedir.

Linux h\i{}zla geli\c{s}tirilmektedir. Bu geli\c{s}imin en b\"{u}y\"{u}k yarar\i{},
eksikliklerin kullan\i{}c\i{}lar\i{}n talepleri ve \c{c}abalar\i{} sonucunda h\i{}zla
giderilmesidir. Linux di\u{g}er t\"{u}m i\c{s}letim sistemlerine g\"{o}re belirli bir
donan\i{}m i\c{c}in daha h\i{}zl\i{} destek verebilmektedir.

Linux \c{c}ok de\u{g}i\c{s}ik donan\i{}mlar ve servisler icin \"{o}zel olarak haz\i{}rlan\i{}r.
\.{I}\c{s}letim sisteminin temelini olu\c{s}turan \c{c}ekirdek kullan\i{}c\i{} taraf\i{}ndan da
derlenebildi\u{g}i i\c{c}in, bu derleme s\i{}ras\i{}nda sadece kullan\i{}m amac\i{}na
y\"{o}nelik alt programlarla donat\i{}l\i{}r. Bu genel olarak daha sistemin
performans\i{}n\i{} art\i{}rmaktad\i{}r. (\"{O}rnek olarak SCSI donan\i{}m\i{}n\i{}z yoksa
\c{c}ekirde\u{g}inizde SCSI ile ilgili alt programlara yer vermezsiniz)






\subsection{Dezavantajlar\i{}}



Linux'un serbest\c{c}e da\u{g}\i{}t\i{}l\i{}yor olmas\i{} bir \c{c}ok ki\c{s}inin bu i\c{s}letim
sistemine g\"{u}venmemesine yol a\c{c}m\i{}\c{s}t\i{}r. ``Ciddi bir \c{s}ey olsa, bedava
olmazd\i{} !'' kan\i{}s\i{} olduk\c{c}a yayg\i{}nd\i{}r.

Linux'un s\"{u}rekli geli\c{s}iyor olmas\i{} en b\"{u}y\"{u}k dezavantajlar\i{}ndan biridir.
Hen\"{u}z t\"{u}m ihtiya\c{c}lara cevap vermemesi (hala Windows95 programlar\i{}n\i{}
\c{c}al\i{}\c{s}t\i{}ram\i{}yor :) ), geli\c{s}imin baz\i{} a\c{s}amalar\i{}nda topyek\"{u}n de\u{g}i\c{s}iklikler
yap\i{}lmas\i{}, geli\c{s}imi takip etmek i\c{c}in bazen s\"{u}rekli yenileme yap\i{}lmas\i{},
bir\c{c}ok kullan\i{}c\i{}n\i{}n bu i\c{s}letim sistemine g\"{u}venmemesine yol a\c{c}m\i{}\c{s}t\i{}r.

Linux herhangi bir ticari destek alt\i{}nda geli\c{s}memektedir. Bunun en
b\"{u}y\"{u}k yarar\i{} i\c{s}letim sisteminin ticari kayg\i{}lar ta\c{s}\i{}mamas\i{}d\i{}r. Ancak
bunun yan\i{}s\i{}ra di\u{g}er i\c{s}letim sistemlerinde olan teknik destek, da\u{g}\i{}t\i{}m
ve d\"{o}k\"{u}mantasyon alanlar\i{}nda eksikleri vard\i{}r. \"{O}zellikle teknik destek
eksikli\u{g}i, anahtar teslim \c{c}\"{o}z\"{u}mlere al\i{}\c{s}m\i{}\c{s} kullan\i{}c\i{}lar\i{}n \c{c}oklu\u{g}u
Linux kullan\i{}c\i{}lar\i{}n\i{}n say\i{}s\i{}n\i{} s\i{}n\i{}rlayan temel fakt\"{o}rler
olmu\c{s}lard\i{}r.

Bu konudaki eksikli\u{g}i gidermek i\c{c}in \c{c}e\c{s}itli g\"{o}n\"{u}ll\"{u} kurulu\c{s}lar,
kullan\i{}c\i{} gruplar\i{} olu\c{s}mu\c{s}tur. Zamanla Linux teknik deste\u{g}i ticari bir
konu olarak ortaya \c{c}\i{}km\i{}\c{s}t\i{}r. \c{S}u anda t\"{u}m d\"{u}nyada Linux \c{c}\"{o}z\"{u}mleri
konusunda teknik destek veren dan\i{}\c{s}manlar bulunmaktad\i{}r. Bu ki\c{s}iler ve
kurumlar hakk\i{}nda ayr\i{}nt\i{}l\i{} bilgiyi {\em Consultants-HOWTO\/} d\"{o}k\"{u}man\i{}nda
bulabilirsiniz.

Linux i\c{s}letim sistemini geli\c{s}tirenlerin ticari kayg\i{}lar g\"{u}tmemeleri
baz\i{} ticari yaz\i{}l\i{}mlar\i{}n Linux \"{u}zerinde geli\c{s}memesine sebep olmu\c{s}tur.
Linux \"{u}zerinde belirli konularda di\u{g}er i\c{s}letim sistemlerinden a\c{s}a\u{g}\i{}
kalmayan yaz\i{}l\i{}mlar bulunmas\i{}na ra\u{g}men, belirli baz\i{} konularda \c{c}ok
zay\i{}f kalm\i{}\c{s}t\i{}r. ( Mesela oyunlar :) )

Linux \"{u}zerinde yer alan \c{c}\"{o}z\"{u}mlerin hepsi, basit kullan\i{}c\i{}lar\i{}n rahat\c{c}a
kullanabilece\u{g}i d\"{u}zeyde de\u{g}ildir. Baz\i{} \c{c}\"{o}z\"{u}mler kullan\i{}c\i{}lar\i{}n belirli
bir yaz\i{}l\i{}m ve i\c{s}letim sistemi bilgisine sahip olmalar\i{}n\i{}
gerektirmektedir.

Sonu\c{c} olarak: Biz uzun s\"{u}re Linux kulland\i{}k ve \c{c}ok zevk ald\i{}k. Di\u{g}er
i\c{s}letim sistemleri ile yapamad\i{}\u{g}\i{}m\i{}z bir\c{c}ok uygulamay\i{} Linux sayesinde
ger\c{c}ekle\c{s}tirdik. Belirli bir donan\i{}m ile g\"{o}sterdi\u{g}i performans\i{}n bir
\c{c}ok i\c{s}letim sisteminin \"{u}zerinde oldu\u{g}unu g\"{o}rd\"{u}k. Ne var ki her uygulama
i\c{c}in Linux'un ideal bir \c{c}\"{o}z\"{u}m olarak ortaya \c{c}\i{}kmad\i{}\u{g}\i{}n\i{}n bilincinde
olmak gerekir. Belki ilerleyen senelerde \"{u}zerinde geli\c{s}tirilen uygulama
yaz\i{}l\i{}mlar\i{} daha \c{c}ok ki\c{s}iyi ba\c{s}ka i\c{s}letim sistemleri kullanmaktan
vazge\c{c}irecektir.






\chapter{Linux Kurulumu ve Ba\c{s}lang\i{}\c{c}}



Linux hakk\i{}nda ilk d\"{o}k\"{u}manlar yaz\i{}ld\i{}\u{g}\i{}nda, Linux \c{c}al\i{}\c{s}t\i{}rabilecek
bilgisayarlar\i{}n \"{o}zellikleri \"{o}nemliydi. Linux 32 bitlik bir i\c{s}letim
oldu\u{g}undan en az 80386SX i\c{s}lemcilerle \c{c}al\i{}\c{s}maktad\i{}r. 8086 ve 80286
i\c{s}lemcili IBM-PC uyumlu ki\c{s}isel bilgisayarlar Linux taraf\i{}ndan
desteklenmemektedir. Haf\i{}za olarak en az 4 Mbyte RAM (yo\u{g}un i\c{s}lemler
i\c{c}in 12 veya 16) tavsiye edilmektedir. Teknik olarak 2 Mbyte ile de
\c{c}al\i{}\c{s}abilmesi gerekir. Pratik olarak bug\"{u}n piyasada bulunan hemen hemen
her IBM-PC uyumlu ki\c{s}isel bilgisayarda Linux \c{c}al\i{}\c{s}abilmektedir.

8 Mbyte RAM'a sahip herhangi bir 486 \"{u}zerinde hemen hemen her t\"{u}rl\"{u} uygulama rahatl\i{}kla \c{c}al\i{}\c{s}t\i{}r\i{}labilmektedir. Tabii ki daha fazla RAM ve daha h\i{}zl\i{} i\c{s}lemciler sistemin genel olarak daha h\i{}zl\i{} \c{c}al\i{}\c{s}mas\i{}n\i{} sa\u{g}layacaklard\i{}r. 

Linux taraf\i{}ndan desteklenen donan\i{}mlar her ge\c{c}en g\"{u}n de\u{g}i\c{s}iyor. Bilgisayar\i{}n\i{}zda bulunan herhangi bir donan\i{}m\i{}n desteklenip desteklenmedi\u{g}ini {\em Hardware-HOWTO\/} dosyas\i{}ndan \"{o}\u{g}renebilirsiniz.

Yine de daha \"{o}nce yaz\i{}lanlar\i{} k\i{}saca tekrar edersek, 

\begin{enumerate}
\item Ki\c{s}isel bilgisayarlarda INTEL, AMD, CYRIX \c{s}irketlerinin t\"{u}m 80386, 486, 586, 686, Pentium, PentiumPro i\c{s}lemcileri 
\item T\"{u}m IDE, MFM, RLL sabit diskler
\item \c{C}o\u{g}u SCSI sabit disk denet\c{c}ileri
\item \c{C}o\u{g}u ethernet ve G/\c{C} kartlar\i{}
\item Bir\c{c}ok VGA, SVGA, EGA, HERCULES g\"{o}r\"{u}nt\"{u} kartlar\i{} 
\end{enumerate}


Linux taraf\i{}ndan desteklenmektedir.

Linux ba\c{s}ka i\c{s}letim sistemleri ile ayn\i{} sabit diskte
bulunabilir. Makinan\i{}za Linux y\"{u}klemek i\c{c}in mevcut i\c{s}letim sisteminizi
kald\i{}rmak zorunda de\u{g}ilsiniz. Fakat yine de Linux y\"{u}kleyebilece\u{g}iniz bir miktar
alan ay\i{}rmak zorundas\i{}n\i{}z. Bir bilgisayara Linux y\"{u}klemek i\c{c}in bilgisayar\i{}n\i{}z
\"{u}zerinde bir ba\c{s}ka i\c{s}letim sisteminin bulunmas\i{}na gerek yoktur, Linux
tam anlam\i{}yla kendi ba\c{s}\i{}na \c{c}al\i{}\c{s}abilen bir i\c{s}letim sistemidir.

``Linux sabit disk \"{u}zerinde ne kadar yer kaplar?'' sorusuna kesin bir cevap
vermek olduk\c{c}a zor, zira bu hangi yaz\i{}l\i{}mlar\i{} y\"{u}kleyece\u{g}inize ve ne kadar
kullan\i{}c\i{} alan\i{} istedi\u{g}inize \c{c}ok ba\u{g}l\i{}d\i{}r. Yine de kaba rakamlar vermek
gerekirse, 40 Mbyte'l\i{}k bir alana \c{c}al\i{}\c{s}\i{}labilir durumda ve i\c{s}inizin
\c{c}o\u{g}unu g\"{o}rebilecek bir Linux kurulabilir. T\"{u}m paketleri y\"{u}klemeye
kalkt\i{}\u{g}\i{}n\i{}zda ise kabaca 250 Mbyte kadar yer kaplayacakt\i{}r.

Linux, \c{c}ok \c{c}e\c{s}itli gruplar taraf\i{}ndan s\"{u}rekli geli\c{s}tirilen bir i\c{s}letim
sistemidir. Belirli ki\c{s}iler ve topluluklar Linux i\c{c}in geli\c{s}tirilen
temel i\c{s}letim sistemini ve uygulama yaz\i{}l\i{}mlar\i{}n\i{} bir araya getirerek
da\u{g}\i{}t\i{}mlar olu\c{s}tururlar. Bir Linux da\u{g}\i{}t\i{}m\i{} temel olarak bir makineye
Linux kurmak ve o bilgisayar \"{u}zerinde Linux'la \c{c}al\i{}\c{s}mak i\c{c}in gerekecek
t\"{u}m yaz\i{}l\i{}mlar\i{} ve paketleri i\c{c}erir, bu yaz\i{}l\i{}mlar\i{}n y\"{u}klenmesi i\c{c}in
bir y\"{u}kleme yaz\i{}l\i{}m\i{} sa\u{g}lar.

\c{S}u an mevcut \c{c}ok \c{c}e\c{s}itli Linux da\u{g}\i{}t\i{}mlar\i{} mevcuttur. Bu da\u{g}\i{}t\i{}mlar
i\c{c}erdikleri paketler ve y\"{u}kleni\c{s} \c{s}ekilleri a\c{c}\i{}s\i{}ndan baz\i{} ufak tefek
farkl\i{}l\i{}klar g\"{o}sterseler de temelde ayn\i{} i\c{s}letim sistemini y\"{u}klerler. Bir
Linux da\u{g}\i{}t\i{}m\i{} bir araya getirildi\u{g}i zamandaki g\"{u}ncel i\c{s}letim sistemini
i\c{c}ermektedir. \"{O}rnek olarak Linux i\c{s}letim sisteminin temeli olan \c{c}ekirdek
neredeyse her hafta yenilenerek  geli\c{s}tirilmektedir. Oysa da\u{g}\i{}t\i{}mlar
senede ancak birka\c{c} kere olu\c{s}turulurlar.

Linux da\u{g}\i{}t\i{}mlar\i{} geleneksel olarak 3.5" lik disketler halinde
haz\i{}rlan\i{}r. (her biri bir 3.5" lik diskete s\i{}\u{g}abilecek seri dizinler
\c{s}eklinde). Her konu ile ilgili bir seri disket bulunur (\"{o}rnek olarak n
serisi a\u{g} uygulamalar\i{} i\c{c}in n1,n2,n3... \c{s}eklinde)




\section{Mevcut Da\u{g}\i{}t\i{}mlar}



Yayg\i{}n olarak kullan\i{}lan da\u{g}\i{}t\i{}mlar a\c{s}a\u{g}\i{}da yer almaktad\i{}rlar.
Burada anlat\i{}lacak olan kurulum bilgileri, Linux Slackware da\u{g}\i{}t\i{}m\i{}na 
sahip oldu\u{g}unuz farzedilerek haz\i{}rlanm\i{}\c{s}t\i{}r.






\subsection{Slackware}



Belki de en yayg\i{}n olarak yer alan da\u{g}\i{}t\i{}m Slackware da\u{g}\i{}t\i{}m\i{}d\i{}r. Bu
d\"{o}k\"{u}man boyunca anlat\i{}lacak olan komutlar ve sistem \"{o}zellikleri Slackware da\u{g}\i{}t\i{}m\i{}na g\"{o}re
d\"{u}zenlenmi\c{s}tir. Di\u{g}er da\u{g}\i{}t\i{}mlar i\c{c}in anlat\i{}lan i\c{s}lemlerin kar\c{s}\i{}l\i{}klar\i{}
i\c{c}in da\u{g}\i{}t\i{}m hakk\i{}ndaki a\c{c}\i{}klamalara ba\c{s}vurabilirsiniz. Slackware
da\u{g}\i{}t\i{}mlar\i{}n\i{}n temin edilebilece\u{g}i yerler,

\begin{itemize}
\item \url{http://www.cdrom.com/titles/slackware.html}{Slackware da\u{g}\i{}t\i{}c\i{}s\i{} Walnut Creek} 
\item \url{http://ftp.cdrom.com/pub/slackware}{Orjinal Slackware FTP ar\c{s}ivi}
\end{itemize}


T\"{u}rkiye i\c{c}erisinde Slackware Da\u{g}\i{}t\i{}m\i{} bulunduran baz\i{} FTP ar\c{s}ivleri:
\begin{itemize}
\item \url{ftp://ftp.metu.edu.tr/pub/linux/sunsite/distributions/slackware}{Orta Do\u{g}u Teknik \"{U}niversitesi}
\item \url{ftp://ftp.ege.edu.tr/pub/Linux/}{Ege \"{U}niversitesi}
\item \url{ftp://ftp.akdeniz.edu.tr/pub/linux}{Akdeniz \"{U}niversitesi} 
\item \url{ftp://ftp.itu.edu.tr/pub/linux/sunsite/distributions/slackware}{\.{I}stanbul Teknik \"{U}niversitesi} 
\end{itemize}





\subsection{Red-Hat}



{\bf Genel da\u{g}\i{}t\i{}m}

\begin{verbatim}
Red Hat Software 
3201 Yorktown Rd, Suite 123 DeKalb Center 
Durham, NC 27713 
Internet adresi :  redhat@redhat.com 
\end{verbatim}


\url{http://www.redhat.com}{RED-HAT Linux da\u{g}\i{}t\i{}m\i{} WWW sayfas\i{}}

\url{ftp://ftp.redhat.com/pub}{Orjinal RED-HAT FTP ar\c{s}ivi}

{\bf T\"{u}rkiye i\c{c}erisinde Red Hat da\u{g}\i{}t\i{}m\i{} bulunduran FTP ar\c{s}ivleri}

\url{ftp://ftp.ege.edu.tr/pub/linux/redhat}{Ege \"{U}niversitesi}

\url{ftp://ftp.metu.edu.tr/pub/linux/redhat}{ODT\"{U}}




\subsection{Debian }



{\bf Genel da\u{g}\i{}t\i{}m} 

\begin{verbatim}
The Debian Linux Association 
Software in the Public Interest 
P.O. Box 70152
Pt. Richmond CA 94807-0152 
\end{verbatim}


\url{http://www.debian.org}{Debian Linux da\u{g}\i{}t\i{}m\i{} WWW sayfas\i{}}

\url{ftp://ftp.debian.org/debian}{Orjinal Debian FTP ar\c{s}ivi}

{\bf T\"{u}rkiye i\c{c}erisinde Debian da\u{g}\i{}t\i{}m\i{} bulunduran FTP ar\c{s}ivleri}

\url{ftp://ftp.metu.edu.tr/pub/linux/distributions/debian}{ODT\"{U}}




\subsection{InfoMagic }



{\bf Genel da\u{g}\i{}t\i{}m}

\begin{verbatim}
InfoMagic, Inc.  
PO Box 30370. Flagstaff, AZ 86003-0370 
Tel: (800)-800-6613 (siparis)
(520)-526-9852 (teknik destek) 
Fax: (520)-526-9573 
Internet adresi : info@infomagic.com 
\end{verbatim}


\url{http://www.infomagic.com}{InfoMagic WWW sayfas\i{}}

Bu konuda daha ayr\i{}nt\i{}l\i{} ve g\"{u}ncel bilgi i\c{c}in {\em Distribution-HOWTO\/}'dan yararlanabilirsiniz.






\section{Ne \c{S}ekilde Bulabilirim ?}



Geleneksel olarak da\u{g}\i{}t\i{}mlar\i{}n disketler ile yap\i{}ld\i{}\u{g}\i{}n\i{}
s\"{o}ylemi\c{s}tik. Ancak g\"{u}n\"{u}m\"{u}zde 100'den fazla disketle da\u{g}\i{}t\i{}m pek pratik
olmamaktad\i{}r. Linux kurdu\u{g}unuz yere ba\u{g}l\i{} olarak de\u{g}i\c{s}ik alternatifleriniz
olabilir.




\subsection{CD-ROM}



\c{C}e\c{s}itli da\u{g}\i{}t\i{}mlara ait CD-ROM'lar \c{c}e\c{s}itli d\"{u}kkanlarda
sat\i{}lmaktad\i{}rlar. Linux asl\i{}nda \"{u}cretsiz bir i\c{s}letim sistemidir. Al\i{}nan
\"{u}cret CD'nin bas\i{}m\i{} da\u{g}\i{}t\i{}m\i{}, ambalaj\i{}n\i{} kar\c{s}\i{}lamas\i{} i\c{c}in
al\i{}nmaktad\i{}r. fiyatlar\i{} kabaca 10\$-30\$ mertebesinde 
(bazen birka\c{c} y\"{u}z
dolar\i{} da bulabiliyor) de\u{g}i\c{s}mektedir. Baz\i{} da\u{g}\i{}t\i{}mlarda telif
kitaplar\i{}n bulunmas\i{} bu da\u{g}\i{}t\i{}mlar\i{} daha pahal\i{} yapabilmektedir. E\u{g}er
herhangi bir \c{s}ekilde bir Internet eri\c{s}iminiz yoksa ve bir akademik
\c{c}evrede de\u{g}ilseniz en pratik Linux elde etme y\"{o}ntemi CD-ROM'lard\i{}r.

T\"{u}rkiye i\c{c}erisinde Linux da\u{g}\i{}t\i{}m\i{} bulunduran CD-ROM sat\i{}c\i{}lar\i{},

{\tt ADA Multimedia Center\\ 
Tunus Cad. 70/2 Kavakl\i{}dere Ankara\\ 
Tel : (312) 467 37 28\\ 
(312) 467 33 32\\ }




\subsection{\.{I}nternet}



T\"{u}m Linux da\u{g}\i{}t\i{}mlar\i{} Internet \"{u}zerinde anonim FTP hizmeti ile
sunulmaktad\i{}r. Ancak bireysel olarak da\u{g}\i{}t\i{}m\i{}n t\"{u}m disketlerini bu
yolla almak \c{c}ok pratik olmayacakt\i{}r. \"{O}rnek olarak son slackware
da\u{g}\i{}t\i{}m\i{} 110 Mbyte civar\i{}nda yer kaplamaktad\i{}r. Internet arac\i{}yla
da\u{g}\i{}t\i{}m elde etmek, yerel kullan\i{}c\i{}lar\i{}na yeni da\u{g}\i{}t\i{}mlar sunmak
isteyen sistem sorumlular\i{} i\c{c}in ilgin\c{c} bir \c{c}\"{o}z\"{u}m olmaktad\i{}r.




\subsection{NFS}



Bir yerel bilgisayar a\u{g}\i{}na sahip kurumlarda payla\c{s}\i{}lan bir disk alan\i{} \"{u}zerinden Linux y\"{u}klemek m\"{u}mk\"{u}nd\"{u}r. Bu sayede CD-ROM veya Internet arac\i{}l\i{}\u{g}\i{} ile elde edilen bir da\u{g}\i{}t\i{}m kurumda ortak bir disk alan\i{}na yerle\c{s}tirilir ve a\u{g}a ba\u{g}l\i{} makinalara y\"{u}kleme yap\i{}labilir. 

Bir\c{c}ok kurumda Linux y\"{u}klemek i\c{c}in, ge\c{c}ici olarak bir ethernet kart\i{}
tak\i{}l\i{}r, bilgisayar a\u{g} deste\u{g}i veren bir \c{s}ekilde a\c{c}\i{}l\i{}r ve Linux
disketleri bu \c{s}ekilde a\u{g} \"{u}zerinden yap\i{}l\i{}r.




\subsection{Sabit Disk}



Herhangi bir \c{s}ekilde Linux da\u{g}\i{}t\i{}m\i{} disketleri bir sabit diske de
kopyalanm\i{}\c{s} olabilir. Bu durumda mevcut sabit disk \"{u}zerindeki disketler
kullan\i{}larak da y\"{u}kleme yap\i{}labilir. Bu y\"{o}ntem yine daha \c{c}ok e\u{g}itim
kurumlar\i{}nda ba\c{s}ka kaynaklardan elde edilmi\c{s} bir Linux da\u{g}\i{}t\i{}m\i{}n\i{}
kopyalamak i\c{c}in kullan\i{}l\i{}r.

Bir kullan\i{}c\i{} makinesine Linux y\"{u}klerken t\"{u}m \"{o}zelliklerini y\"{u}klemek
istemeyebilir. Y\"{u}kledi\u{g}i yaz\i{}l\i{}mlar\i{}n baz\i{}lar\i{}n\i{}n gereksiz oldu\u{g}unu
d\"{u}\c{s}\"{u}n\"{u}yorsa ileride baz\i{} uygulamalar\i{} kald\i{}rabilir veya sonradan gerekli
g\"{o}rd\"{u}\u{g}\"{u} yaz\i{}l\i{}mlar\i{} da\u{g}\i{}t\i{}m disketlerinden rahatl\i{}kla ekleyebilir.

Linux sadece da\u{g}\i{}t\i{}mlarda bulunan yaz\i{}l\i{}mlarla s\i{}n\i{}rl\i{} bir i\c{s}letim sistemi
de\u{g}ildir. Da\u{g}\i{}t\i{}mlarda bulunan yaz\i{}l\i{}mlara ek olarak \c{c}ok \c{c}e\c{s}itli ba\c{s}ka
uygulamalar mevcuttur. (\"{O}rnek olarak Netscape hi\c{c} bir Linux da\u{g}\i{}t\i{}m\i{}nda
bulunmamaktad\i{}r). Bu ek yaz\i{}l\i{}mlar\i{}n bir\c{c}o\u{g}u \.{I}nternet \"{u}zerinde FTP
ar\c{s}ivlerinde bulunmaktad\i{}rlar. Kitab\i{}n sonundaki ek,  Linux uygulama
yaz\i{}l\i{}mlar\i{}n\i{}n nerede bulundu\u{g}u hakk\i{}nda biraz bilgi veriyor.

CD-ROM \"{u}zerindeki da\u{g}\i{}t\i{}mlarda, da\u{g}\i{}t\i{}mlar\i{}n yan\i{}s\i{}ra bir \c{c}ok tan\i{}nm\i{}\c{s} FTP
ar\c{s}ivinde yer alan yaz\i{}l\i{}mlar ve \c{c}e\c{s}itli d\"{o}k\"{u}manlarda yer al\i{}r. \.{I}nternet
ba\u{g}lant\i{}s\i{} olan bir kurumda \c{c}al\i{}\c{s}mayan (veya bu t\"{u}r bir kuruma eri\c{s}imi
bulunmayan) birisi i\c{c}in bir CD-ROM \c{c}ok iyi bir \c{c}\"{o}z\"{u}md\"{u}r.

\.{I}nternet ba\u{g}lant\i{}s\i{} bulunan (\"{o}zellikle akademik) kurumlarda g\"{u}ncel
da\u{g}\i{}t\i{}mlar\i{}n \.{I}nternet \"{u}zerinden aktar\i{}lmas\i{} ve buradaki kullan\i{}c\i{}lara
NFS ve sabit disk \"{u}zerinde aktar\i{}lmas\i{} daha pratik bir uygulamad\i{}r. Ayn\i{}
kurumlar kendi \c{c}al\i{}\c{s}ma alanlar\i{} ile ilgili bulduklar\i{} ek yaz\i{}l\i{}mlar\i{} da
FTP ar\c{s}ivlerinden toparlayabilir ve kullan\i{}c\i{}lar\i{}na bu ek yaz\i{}l\i{}mlar\i{}
sunabilirler.




\section{Sabit Disk \"{U}zerinde Linux \.{I}\c{c}in Yer A\c{c}mak}



Linux i\c{s}letim sistemini y\"{u}klemek i\c{c}in sabit diskiniz \"{u}zerinde Linux
i\c{c}in bir miktar yer ay\i{}rmak zorundas\i{}n\i{}z. Herhangi bir sabit disk
bir i\c{s}letim sisteminde kullan\i{}labilmesi i\c{c}in ilk olarak b\"{o}l\"{u}mlere
(partition) ayr\i{}l\i{}r. Daha sonra bu b\"{o}l\"{u}mler i\c{s}letim sistemine uygun
\c{s}ekilde formatlan\i{}r. Linux i\c{s}letim sistemi kendi disk format\i{}n\i{} (ext2) kullan\i{}r.
En y\"{u}ksek verimi sabit disk \"{u}zerinde, kendi b\"{o}l\"{u}m\"{u}nde, kendi disk
format\i{} alt\i{}nda \c{c}al\i{}\c{s}t\i{}\u{g}\i{} zaman verebilir. E\u{g}er ayr\i{} bir b\"{o}l\"{u}mlendirme
yap\i{}lam\i{}yorsa, tavsiye edilmese bile MS-DOS formatl\i{} bir disk \"{u}zerinde
de Linux kurulabilir (UMSDOS) ancak bu sistemin performans\i{} di\u{g}erine
g\"{o}re olduk\c{c}a d\"{u}\c{s}\"{u}k olacakt\i{}r. Bu d\"{o}k\"{u}man\i{}n geriye kalan t\"{u}m k\i{}s\i{}mlar\i{}nda
bilgisayar\i{}n\i{}za Linux y\"{u}klemek i\c{c}in sabit disk \"{u}zerinde Linux'a \"{o}zg\"{u}
bir b\"{o}l\"{u}m ayr\i{}laca\u{g}\i{} ve bu b\"{o}l\"{u}me y\"{u}klenece\u{g}i kabul edilecektir. MS-DOS
formatl\i{} bir disk hiyerar\c{s}isi alt\i{}na Linux kurmak i\c{c}in {\em UMSDOS-HOWTO\/}
d\"{o}k\"{u}man\i{}ndan yararlanabilirsiniz.  E\u{g}er bilgisayar\i{}n\i{}z\i{} bir s\"{u}redir
kullan\i{}yorsan\i{}z, b\"{u}y\"{u}k bir ihtimalle sabit diskinizin t\"{u}m\"{u}n\"{u} kulland\i{}\u{g}\i{}n\i{}z
i\c{s}letim sistemi i\c{c}in ayr\i{}m\i{}\c{s} durumdas\i{}n\i{}zd\i{}r. MS-DOS kullan\i{}yorsan\i{}z
diskiniz bir (sadece C:) veya birden fazla (C: D: ..) b\"{o}l\"{u}me ayr\i{}lm\i{}\c{s}
durumda olabilir. MS-DOS alt\i{}nda  bir disk \"{u}zerinde en fazla 4 temel
b\"{o}l\"{u}m olabilir (primary partition). E\u{g}er daha fazla b\"{o}l\"{u}me ihtiya\c{c}
varsa temel b\"{o}l\"{u}mlerden biri geni\c{s}letilmi\c{s} bir b\"{o}l\"{u}m olarak ayr\i{}l\i{}r
(extended partition) ve bu b\"{o}l\"{u}m \"{u}zerinde mant\i{}ksal b\"{o}l\"{u}mler  ayr\i{}l\i{}r
(logical partitions).

Bilgisayar\i{}n\i{}zda birden fazla b\"{o}l\"{u}m varsa bir b\"{o}l\"{u}m\"{u} bo\c{s}alt\i{}p bu b\"{o}l\"{u}m\"{u}
Linux i\c{c}in ay\i{}rabilirsiniz. E\u{g}er tek b\"{o}l\"{u}m\"{u}n\"{u}z varsa, veya mevcut
b\"{o}l\"{u}mlerinizden birini t\"{u}m\"{u}yle harcamak istemiyorsan\i{}z diskinizi yeniden
b\"{o}l\"{u}mlemeniz gerekecektir. Klasik olarak bu durumda b\"{o}lmek istedi\u{g}iniz
b\"{o}l\"{u}mdeki yaz\i{}l\i{}mlar\i{}n yede\u{g}ini alman\i{}z, daha sonra MS-DOS alt\i{}nda
{\em fdisk\/} yaz\i{}l\i{}m\i{} yard\i{}m\i{} ile s\"{o}zkonusu b\"{o}l\"{u}m\"{u} silmeniz, yeni boyutu ile
yeniden yaratman\i{}z, bu b\"{o}l\"{u}m\"{u} format komutu ile formatlaman\i{}z ve yede\u{g}ini
ald\i{}\u{g}\i{}n\i{}z yaz\i{}l\i{}mlar\i{} yeniden yerle\c{s}tirmeniz gerekecektir (\c{C}ok i\c{s} :) )

Baz\i{} yaz\i{}l\i{}mlar mevcut b\"{o}l\"{u}m\"{u}n\"{u}z\"{u} iki par\c{c}aya ay\i{}rabilirler. \"{O}rnek
olarak {\em fips\/} bu ama\c{c}la kullan\i{}lan bir yaz\i{}l\i{}md\i{}r. (Diskiniz \"{u}zerinde
i\c{s}lem yapan her yaz\i{}l\i{}m az da olsa disk \"{u}zerindeki bilgilere zarar verme
riski ta\c{s}\i{}r. Bu t\"{u}r yaz\i{}l\i{}mlar ile \c{c}al\i{}\c{s}madan \"{o}nce \"{o}nemli oldu\u{g}unu
d\"{u}\c{s}\"{u}nd\"{u}\u{g}\"{u}n\"{u}z bilgilerin yede\u{g}ini almaya \"{o}zen g\"{o}sterin). fips, defrag
program\i{} kullan\i{}ld\i{}ktan sonra b\"{o}l\"{u}m\"{u}n\"{u}z\"{u} sizin belirleyece\u{g}iniz boyutlarda
iki b\"{o}l\"{u}me ay\i{}rabilir.

E\u{g}er bilgisayaran\i{}z\i{} yeni al\i{}yorsan\i{}z veya yeni bir disk al\i{}yorsan\i{}z,
bu diskin tamam\i{}n\i{} veya bir b\"{o}l\"{u}m\"{u}n\"{u} Linux i\c{c}in kullanabilirsiniz. Bu
ama\c{c}la diskinizde sadece Linux kullanmak istemedi\u{g}iniz b\"{o}l\"{u}mleri ay\i{}rman\i{}z
(ve gerisini bo\c{s} b\i{}rakman\i{}z) yeterlidir. Linux b\"{o}l\"{u}mlerinin Linux alt\i{}ndan
formatlanmas\i{} gerekecektir.

Linux sabit disk \"{u}zerinde bir b\"{o}l\"{u}mden fazlas\i{}n\i{} kullanabilir. \"{O}zel
olarak normal dosyalar\i{}n yaz\i{}lmad\i{}\u{g}\i{}, haf\i{}za gereken i\c{s}ler s\i{}ras\i{}nda
ge\c{c}ici bir alan olmas\i{} amac\i{}yla Linux bir takas alan\i{}na (swap space)
ihtiya\c{c} duyar. Bu takas alan\i{} i\c{c}in en verimlisi sadece takas i\c{s}lemi i\c{c}in
ayr\i{}lm\i{}\c{s} k\"{u}\c{c}\"{u}k bir disk b\"{o}l\"{u}m\"{u} yaratmakt\i{}r.

Yo\u{g}un olarak Linux kullanan yerler i\c{c}in standart olarak da\u{g}\i{}t\i{}mdan
gelen i\c{s}letim sistemini ayr\i{} bir b\"{o}l\"{u}me y\"{u}klemeleri kullan\i{}c\i{} alanlar\i{}
({\tt /home}) ve sonradan y\"{u}klenen yaz\i{}l\i{}mlar ({\tt /usr/local}) i\c{c}in ayr\i{} bir alan
ay\i{}rmalar\i{} tavsiye edilebilir. Bu sayede, i\c{s}letim sistemi g\"{u}ncellemek
son derece kolayla\c{s}\i{}r, yeni i\c{s}letim sistemi y\"{u}klerken sadece i\c{s}letim
sisteminin bulundu\u{g}u b\"{o}l\"{u}m \"{u}zerinde i\c{s}lem yap\i{}l\i{}r ve bu sayede kullan\i{}c\i{}
alanlar\i{}n\i{}n veya sonradan (da\u{g}\i{}t\i{}m d\i{}\c{s}\i{}) y\"{u}klenen yaz\i{}l\i{}mlar\i{}n zarar
g\"{o}rmeleri engellenebilir.

Her bir b\"{o}l\"{u}m i\c{c}in ne kadar yer ayr\i{}laca\u{g}\i{} hakk\i{}nda \c{c}ok \c{s}ey
yaz\i{}lm\i{}\c{s}t\i{}r. Ne var ki yaz\i{}lanlar\i{}n bir\c{c}o\u{g}u sabit disklerin nadiren 200
Mbyte s\i{}n\i{}r\i{}n\i{} ge\c{c}ti\u{g}i g\"{u}nlerden kalmaktad\i{}r. Linux'un kaplayaca\u{g}\i{} alan,
hangi paketleri  kullanaca\u{g}\i{}n\i{}za \c{c}ok ba\u{g}l\i{}d\i{}r. Kabaca her disketin
2-3 Mbyte aras\i{}nda yer kaplayaca\u{g}\i{}n\i{} d\"{u}\c{s}\"{u}nerek, y\"{u}klemek istedi\u{g}iniz
disketleri hesaplayarak kaba bir tablo \c{c}\i{}karabilirsiniz. Tecr\"{u}beli bir
Linux kullan\i{}c\i{}s\i{} hangi yaz\i{}l\i{}mlar\i{} kullan\i{}p hangilerini kullanmad\i{}\u{g}\i{}n\i{}
daha iyi belirleyebilecek durumda olacakt\i{}r. Dolay\i{}s\i{} ile yeni bir
kullan\i{}c\i{} ortalama olarak 200 - 300 Mbyte kadar bir yer ay\i{}rmak
isteyecektir. Bu, g\"{u}n\"{u}m\"{u}z\"{u}n disk kapasiteleri d\"{u}\c{s}\"{u}n\"{u}l\"{u}nce o kadar b\"{u}y\"{u}k
bir alan de\u{g}ildir.

Takas alan\i{} konusunda da \c{c}ok \c{s}ey yaz\i{}lm\i{}\c{s}t\i{}r. Bir\c{c}ok kaynak takas
b\"{o}l\"{u}m\"{u} i\c{c}in ayr\i{}lmas\i{} gereken alan\i{}n\i{}n ger\c{c}ek haf\i{}zan\i{}n 2 kat\i{}n\i{}n
biraz fazlas\i{} olarak kabul etmektedir. Pratikte 10-60 Mbyte aras\i{}nda
bir alan fazlas\i{}yla yeterli kalmaktad\i{}r. Ancak takas b\"{o}lmeleri 128
megabaytdan daha b\"{u}y\"{u}k olamaz. E\u{g}er 128 megabaytdan daha b\"{u}y\"{u}k takas
alan\i{} gerekiyorsa birden fazla takas b\"{o}lmesi yaratmal\i{}s\i{}n\i{}z. Toplam 16
tane takas b\"{o}lmeniz olabilir.

Takas alan\i{} kullan\i{}rken, bir seferde daha fazla uygulama \c{c}al\i{}\c{s}man\i{}z\i{}
sa\u{g}layacak \c{s}ekilde Linux kullan\i{}lmayan sayfalar\i{} haf\i{}zadan diske
ta\c{s}\i{}r. Ancak, takas i\c{s}lemi genelde yava\c{s} oldu\u{g}undan ger\c{c}ek fiziksel
haf\i{}zan\i{}n yerini dolduramaz. Ama \c{c}ok fazla haf\i{}za isteyen uygulamalar
(X Window System gibi) e\u{g}er yeteri kadar fiziksel haf\i{}zan\i{}z yoksa takas
alan\i{}na bel ba\u{g}lar.

Tercih olarak, 1.2 Gbyte'l\i{}k bir disk \"{u}zerinde,

{\bf Linux nedir denemek isteyen bir ki\c{s}i i\c{c}in}

\begin{itemize}
\item B\"{o}l\"{u}m 1: DOS              1000 Mbyte  
\item B\"{o}l\"{u}m 2: Linux                    180-200 Mbyte
\item B\"{o}l\"{u}m 3: Linux 'swap' b\"{o}l\"{u}m\"{u}      10-20 Mbyte
\end{itemize}


{\bf \.{I}\c{s}inde arada s\i{}rada Linux kullanan birisi i\c{c}in}

\begin{itemize}
\item B\"{o}l\"{u}m 1: DOS                      400 Mbyte 
\item B\"{o}l\"{u}m 2: Linux                    400 Mbyte
\item B\"{o}l\"{u}m 3: Linux takas b\"{o}l\"{u}m\"{u}       32 Mbyte  
\item B\"{o}l\"{u}m 4: DOS (DOS alt\i{}nda D: olarak g\"{o}z\"{u}kecek) 400 Mbyte
\end{itemize}


{\bf \.{I}nternet \"{u}zerinde sadece Linux kullan\i{}lan bir bilgisayar i\c{c}in}

\begin{itemize}
\item B\"{o}l\"{u}m 1: Linux                            100 Mbyte
\item B\"{o}l\"{u}m 2: Linux takas b\"{o}l\"{u}m\"{u}       60 Mbyte 
\item B\"{o}l\"{u}m 3: Linux /usr               400 Mbyte 
\item B\"{o}l\"{u}m 4: Linux /home                      600 Mbyte 
\end{itemize}







\section{Bilgisayarin Linux ile A\c{c}\i{}lmas\i{}}



Bilgisayar\i{}n sabit diski \"{u}zerinde yer ay\i{}rd\i{}ktan, bir Linux da\u{g}\i{}t\i{}m\i{}
bulduktan sonra art\i{}k Linux y\"{u}klemek i\c{c}in yap\i{}lmas\i{} gereken, y\"{u}kleme
yapman\i{}za yard\i{}mc\i{} olmaya yetecek \c{s}ekilde bilgisayar\i{}n\i{}z\i{} Linux alt\i{}nda
\c{c}al\i{}\c{s}t\i{}rmakt\i{}r. Bu ama\c{c}la {\em boot\/} ve {\em root disketi\/} ad\i{} verilen iki disket
kullan\i{}lmas\i{} yeterlidir.Bu disketlerden boot disketi bilgisayar\i{}n\i{}z
\"{u}zerindeki donan\i{}ma uygun bir Linux \c{c}ekirde\u{g}i (kernel) i\c{c}erir ve
bilgisayar\i{}n Linux ile a\c{c}\i{}lmas\i{}n\i{} sa\u{g}lar, root disketi ad\i{} verilen di\u{g}eri
ise makinan\i{}z Linux olarak a\c{c}\i{}ld\i{}\u{g}\i{} zaman \c{c}al\i{}\c{s}t\i{}raca\u{g}\i{} yaz\i{}l\i{}mlar\i{} i\c{c}eren
ve Linux' un \c{c}al\i{}\c{s}mas\i{} i\c{c}in gereken sistem programlar\i{}n\i{} i\c{c}erir. Bu
iki disketi, MS-DOS alt\i{}ndaki sistem disketine benzetmek m\"{u}mk\"{u}nd\"{u}r.

Boot ve root disketleri, Linux da\u{g}\i{}t\i{}m\i{} ile birlikte gelirler. E\u{g}er
bir CD-ROM da\u{g}\i{}t\i{}m\i{} ullan\i{}yorsan\i{}z, b\"{u}y\"{u}k ihtimal disketler CD-ROM
ile beraber geleceklerdir. E\u{g}er da\u{g}\i{}t\i{}m\i{} \.{I}nternet'ten al\i{}yorsan\i{}z bu
disketler bir disket g\"{o}r\"{u}nt\"{u}s\"{u} olarak bulunacaklard\i{}r. Yapman\i{}z gereken
bu disket g\"{o}r\"{u}nt\"{u}lerini normal disketlere bu ama\c{c} i\c{c}in yaz\i{}lm\i{}\c{s} bir
yaz\i{}l\i{}mla aktarmak ve a\c{c}\i{}l\i{}\c{s} disketlerini olu\c{s}turmakt\i{}r. Bunun i\c{c}in 
{\tt RAWRITE.EXE} program\i{}n\i{} kullanabilirsiniz. 

Root disketi i\c{c}in genelde bir veya iki se\c{c}enek bulunmaktad\i{}r. Genelde
kullan\i{}lan disket {\tt color.gz} ad\i{}n\i{} al\i{}r.

Boot disketi i\c{c}in ayn\i{} \c{s}eyi s\"{o}ylemek m\"{u}mk\"{u}n de\u{g}ildir. Zira boot disketi
Linux \c{c}ekirde\u{g}ini i\c{c}ermektedir. Her i\c{s}letim sistemi, o i\c{s}letim sistemi
alt\i{}nda \c{c}al\i{}\c{s}acak olan bilgisayar \"{u}zerindeki donan\i{}ma eri\c{s}ebilmek i\c{c}in
baz\i{} destekler i\c{c}erir. Ne var ki her donan\i{}m kendisine g\"{o}re bir tak\i{}m
farkl\i{}l\i{}klar g\"{o}sterir. Linux bilgisayar\i{}n\i{}z \"{u}zerinde bulunan bir\c{c}ok
donan\i{}m i\c{c}in destek verebilir, ne var ki t\"{u}m donan\i{}m deste\u{g}ini tek bir
\c{c}ekirdekte toplamak \c{c}ekirde\u{g}in gereksiz yere b\"{u}y\"{u}mesine ve hantalla\c{s}mas\i{}na
neden olacakt\i{} (Bilgisayar\i{}n\i{}zda ses kart\i{} donan\i{}m\i{} yoksa \c{c}ekirde\u{g}in
ses kart\i{} deste\u{g}ine ihtiyac\i{}n\i{}z olmayacakt\i{}r, yap\i{}lan sadece gereken
destekleri ekleyerek \c{c}ekirde\u{g}in verimini art\i{}rmak demektir). Linux
\c{c}ekirde\u{g}i gerekti\u{g}inde destek verdi\u{g}i donan\i{}mlar\i{} destekleyecek \c{s}ekilde
g\"{u}ncellenebilir. Ancak Linux y\"{u}kleyebilmek i\c{c}in, se\c{c}ece\u{g}iniz y\"{u}kleme
y\"{o}ntemine g\"{o}re baz\i{} donan\i{}mlara destek vermesi gereklidir. \"{O}rnek vermek
gerekirse, NFS \"{u}zerinden Linux y\"{u}klemek i\c{c}in \c{c}ekirdek i\c{c}erisinde mutlaka
a\u{g} (network) deste\u{g}inin olmas\i{} gerekmektedir ama ses kart\i{} deste\u{g}inin
olmas\i{}na gerek yoktur. Linux y\"{u}kledikten sonra derleyece\u{g}iniz bir
\c{c}ekirde\u{g}e ses kart\i{} deste\u{g}i vermesini sa\u{g}layabilirsiniz.

Bir i\c{s}letim sisteminin sabit diske y\"{u}klenme a\c{s}amas\i{}nda kullan\i{}c\i{}ya
sa\u{g}layaca\u{g}\i{} en b\"{u}y\"{u}k kolayl\i{}k, deneyimli kullan\i{}c\i{}lar i\c{c}in t\"{u}m paketleri
kurmadan \"{o}nce sormak, Linux'u bilmeyen ve sabit diskine Linux kurmak
isteyen yeni kullan\i{}c\i{}lar i\c{c}in ise kurulum a\c{s}amas\i{}n\i{} m\"{u}mk\"{u}n olan en az
soru ile bitirip daha \"{o}nceden belirlenmi\c{s} birtak\i{}m paketleri otomatik
olarak y\"{u}klemektir.

\c{C}ok farkl\i{} donan\i{}mlar\i{}n olmas\i{} Linux y\"{u}kleyebilmek i\c{c}in bir dizi boot
disketinin olu\c{s}mas\i{}na neden olmu\c{s}tur. G\"{u}ncel bir Linux da\u{g}\i{}t\i{}m\i{}nda hangi
boot disketlerinin hangi donan\i{}mlara destek verebildi\u{g}ini g\"{o}rmek i\c{c}in
ilgili da\u{g}\i{}t\i{}mla gelen {\tt README} dosyalar\i{}na bakmak gerekecektir. \c{S}u anki
Slackware da\u{g}\i{}t\i{}m\i{} ile gelen boot disketlerinden baz\i{}lar\i{}

\begin{itemize}
\item {\bf bare.i}  IDE sabit disklere, sabit disk veya IDE/ATAPI CD-ROM'lardan y\"{u}kleme yapmak i\c{c}in
\item {\bf net.i} IDE sabit disklere, NFS \"{u}zerinden y\"{u}kleme yapmak i\c{c}in
\item {\bf scsinet.s}  SCSI sabit disklere, NFS \"{u}zerinden y\"{u}kleme yapmak i\c{c}in. Buna ek olarak de\u{g}i\c{s}ik SCSI denet\c{c}ileri i\c{c}in 25 kadar de\u{g}i\c{s}ik boot disketi bulunmaktad\i{}r.
\item {\bf xt.i} Bu a\c{c}\i{}l\i{}\c{s} disketinde sadece IDE ve XT sabit disk s\"{u}r\"{u}c\"{u}leri vard\i{}r.    
\end{itemize}


Boot disketleri hakk\i{}nda geni\c{s} bilgi i\c{c}in {\em Bootdisk-HOWTO\/} d\"{o}k\"{u}man\i{}ndan
yararlanabilirsiniz.

Boot ve root disketlerinizi de elde ettikten sonra art\i{}k bilgisayar ilk
defa Linux alt\i{}nda \c{c}al\i{}\c{s}mak i\c{c}in haz\i{}rd\i{}r. Boot disketini takarak sistemi
a\c{c}\i{}n (PC'nin a\c{c}\i{}lma s\i{}ras\i{}n\i{}n A:,C: olmas\i{}na dikkat edin). Disket a\c{c}\i{}l\i{}r
a\c{c}\i{}lmaz yakla\c{s}\i{}k bir sayfal\i{}k bir mesaj verecek ve kullan\i{}c\i{}dan ek bir
parametre isteyip istemedi\u{g}ini soracakt\i{}r. Bu noktada \c{c}al\i{}\c{s}acak olan
\c{c}ekirde\u{g}e bir\c{c}ok ek parametre verilebilir. E\u{g}er her\c{s}ey yolunda giderse
bu noktada \"{o}zel bir parametre belirtmeye gerek kalmayacakt\i{}r. Boot
disketi parametreleri hakk\i{}nda {\em BootPrompt-HOWTO\/} i\c{c}erisinde detayl\i{} bilgi
bulabilirsiniz. Bu a\c{s}amay\i{} ge\c{c}tikten sonra \c{c}ekirdek y\"{u}klenmeye ba\c{s}layacak
ve bir dizi mesaj ge\c{c}ecektir. Bu mesajlar \c{c}ekirde\u{g}inizin bilgisayar
\"{u}zerindeki donan\i{}mlar\i{} tan\i{}mas\i{} ve \c{c}e\c{s}itli hizmetleri \c{c}al\i{}\c{s}t\i{}rmas\i{}
ile ilgili mesajlard\i{}r. \c{C}ekirde\u{g}in donan\i{}m\i{}n\i{}z\i{} ne \c{s}ekilde tan\i{}d\i{}\u{g}\i{} bu
mesajlardan anla\c{s}\i{}l\i{}r. Y\"{u}kleme yapabilmek i\c{c}in \c{c}ekirde\u{g}in sabit diskinizi
ve a\u{g} ba\u{g}lant\i{}s\i{} kullanacaksan\i{}z ethernet kart\i{}n\i{}z\i{} do\u{g}ru olarak tan\i{}m\i{}\c{s}
olmas\i{} gerekecektir.

Daha sonra kullan\i{}c\i{}dan root disketini y\"{u}klemesi i\c{c}in bir mesaj
\c{c}\i{}kacakt\i{}r. Bu a\c{s}amada boot disketi yerine root disketi tak\i{}lmal\i{}d\i{}r. K\i{}sa
bir y\"{u}klemeden sonra bir mesaj \c{c}\i{}kacak ve ard\i{}ndan

\begin{verbatim}
login:
\end{verbatim}


mesaj\i{} ile kar\c{s}\i{}la\c{s}\i{}lacakt\i{}r. Tebrikler ! Art\i{}k Linux alt\i{}nda \c{c}al\i{}\c{s}maya
ba\c{s}layabilirsiniz. Bilgisayar \c{s}u anda sizden bir kullan\i{}c\i{} ismi
beklemektedir. 'root' yazarak sisteme girin.




\subsection{\"{O}n Haz\i{}rl\i{}klar}



Slackware da\u{g}\i{}t\i{}m\i{}nda y\"{u}kleme i\c{s}i i\c{c}in 

\begin{verbatim}
setup
\end{verbatim}


isimli bir yaz\i{}l\i{}m bulunmaktad\i{}r. Y\"{u}klemenin her a\c{s}amas\i{} bu yaz\i{}l\i{}m taraf\i{}ndan y\"{u}r\"{u}t\"{u}lebilir. Ancak ilk olarak Linux i\c{c}in disk alanlar\i{}n\i{}n tan\i{}mlanmas\i{} gerekmektedir. Bu ama\c{c}la 

\begin{verbatim}
fdisk
\end{verbatim}


program\i{} kullan\i{}l\i{}r. Linux alt\i{}nda bir bilgisayar ba\u{g}l\i{} her t\"{u}rl\"{u} cihaza bir dosya gibi eri\c{s}mek m\"{u}mk\"{u}nd\"{u}r. Her cihaza kar\c{s}\i{}l\i{}k gelen bir sistem dosyas\i{} mevcuttur. Cihazlarla ilgili dosyalar {\tt /dev} dizini alt\i{}nda yer al\i{}rlar. Burada IDE sabit diskler "hd" SCSI sabit diskler "sd" olarak isimlendirilirler. Ayn\i{} anda bir bilgisayarda birden fazla disk ba\u{g}lanm\i{}\c{s} olabilir. Diskler s\i{}rayla a b c d olarak isimlendirilirler. Her disk \"{u}zerinde birden fazla b\"{o}l\"{u}m yer alabilir. bu b\"{o}l\"{u}mler ise 1 2 3 4 olarak numaraland\i{}r\i{}l\i{}rlar. \"{O}rnek olarak 

\begin{itemize}
\item {\tt /dev/hda}, bir numaral\i{} IDE (Primary Master) diski
\item {\tt /dev/hda1}, bir numaral\i{} IDE diskin ilk b\"{o}l\"{u}m\"{u} ( DOS alt\i{}nda C:)
\item {\tt /dev/hda2}, bir numaral\i{} IDE diskin ikinci b\"{o}l\"{u}m\"{u}n\"{u}
\item {\tt /dev/hdb}, iki numaral\i{} IDE (Primary Slave) diski
\item {\tt /dev/hdc}, \"{u}\c{c} numaral\i{} IDE (Secondary Master) diski 
\item {\tt /dev/hdd}, d\"{o}rt numaral\i{} IDE (Secondary Slave) diski   
\item {\tt /dev/sdb3}, ikinci SCSI sabit diskin \"{u}\c{c}\"{u}nc\"{u} b\"{o}l\"{u}m\"{u}n\"{u}  
\end{itemize}


g\"{o}stermektedir. Birden fazla sabit diskiniz varsa hangi sabit disk'le
ilgilenece\u{g}inizi belirtmeniz gerekir. E\u{g}er iki sabit diskiniz varsa
fdisk'i kullan\i{}rken dikkat edin, her an yanl\i{}\c{s} bir diski formatlama
\c{s}ans\i{}n\i{}z var.

\begin{verbatim}
# fdisk /dev/hda 
\end{verbatim}


Bu noktadan sonra art\i{}k fdisk ile istedi\u{g}iniz b\"{o}l\"{u}mleri tan\i{}mlaman\i{}z
m\"{u}mk\"{u}nd\"{u}r.

fdisk komutu harddisk b\"{o}l\"{u}mlerinin d\"{u}zenlenmesi i\c{c}in kullan\i{}lan
bir yaz\i{}l\i{}md\i{}r. Komut sat\i{}r\i{}ndan genelde tek harflik komutlarla
kullan\i{}l\i{}r. E\u{g}er komut sat\i{}r\i{}nda bir parametre verilmezse fdisk ilk
buldu\u{g}u disk \"{u}zerinde i\c{s}lem yapacakt\i{}r. Birden fazla disk mevcutsa komut
sat\i{}r\i{}nda istenilen diskin belirtilmesi gerekecektir. A\c{s}a\u{g}\i{}daki \"{o}rnekte fdisk
herhangi bir parametre ile \c{c}a\u{g}r\i{}lmam\i{}\c{s} ve sistemde bulunan \"{o}ncelikli
disk olarak bir numaral\i{} SCSI disk ({\tt /dev/sda}) se\c{c}ilmi\c{s}tir.

fdisk, komutunun yan\i{}nda baz\i{} parameteler al\i{}r:

\begin{itemize}
\item {\tt /fdisk -v} : Fdisk program\i{}n\i{}n s\"{u}r\"{u}m\"{u} ekrana gelir.
\item {\tt fdisk -l} : {\tt /dev/hda, /dev/hdb, /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd, /dev/sde, /dev/sdf, /dev/sdg} ve {\tt /dev/sdh} disklerinin (varsa) b\"{o}l\"{u}mlendirme tablosunu ekrana yazar ve \c{c}\i{}kar.
\item {\tt fdisk -s {$<$}disk-b\"{o}l\"{u}m\"{u}{$>$}} : E\u{g}er bir DOS b\"{o}l\"{u}m\"{u} de\u{g}ilse (b\"{o}l\"{u}m numaras\i{} 10'dan b\"{u}y\"{u}k) , s\"{o}zkonusu disk b\"{o}l\"{u}m\"{u}n\"{u}n b\"{u}y\"{u}kl\"{u}\u{g}\"{u} bayt cinsinden ekrana yaz\i{}l\i{}r.
\end{itemize}


A\c{s}a\u{g}\i{}da, fdisk yaz\i{}l\i{}m\i{}n\i{}n kullan\i{}m\i{} hakk\i{}nda \"{o}rnek bir fdisk \c{c}al\i{}\c{s}mas\i{}
yeral\i{}yor.




\subsection{\"{O}rnek FDISK \c{C}al\i{}\c{s}mas\i{}}



Bu \"{o}rnek i\c{c}erisinde 1 Gbyte'l\i{}k SCSI sabit disk'e sahip bir makine \"{u}zerinde LINUX i\c{c}in gerekli k\i{}s\i{}mlar\i{}n ayr\i{}lmas\i{} ad\i{}m ad\i{}m incelenmi\c{s}tir. S\"{o}zkonusu sabit disk \"{u}zerinde kullan\i{}c\i{} \"{o}nceden 400 Mbyte'l\i{}k bir kullan\i{}c\i{} alan\i{} tan\i{}mlam\i{}\c{s} ve geri kalan alan\i{} LINUX i\c{c}in ay\i{}rm\i{}\c{s}t\i{}. D\"{u}\c{s}\"{u}n\"{u}len da\u{g}\i{}l\i{}m:

\begin{itemize}
\item 400 Mbyte DOS
\item 250 Mbyte LINUX i\c{s}letim sistemi
\item 60 Mbyte Takas alan\i{}
\end{itemize}


ve geri kalan alan LINUX alt\i{}nda kullan\i{}c\i{} alan\i{}. 

fdisk program\i{} \c{c}al\i{}\c{s}\i{}r \c{c}al\i{}\c{s}maz ilk i\c{s} olarak mevcut b\"{o}l\"{u}mler hakk\i{}nda bilgi almak i\c{c}in p komutunu ( Print Partition Info) kullan\i{}yoruz.

\begin{verbatim}
Command (m for help): p

Disk /dev/sda: 34 heads, 61 sectors, 1017 cylinders
Units = cylinders of 2074 * 512 bytes

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/sda1   *        1        1      395   409584+   6  DOS 16-bit >=32M
\end{verbatim}


Bu tablo bize sadece tek b\"{o}l\"{u}m ayr\i{}ld\i{}\u{g}\i{}n\i{}, ayr\i{}lan alan\i{}n DOS format\i{}nda oldu\u{g}unu, boot edecek b\"{o}l\"{u}m oldu\u{g}unu belirtiyor. B\"{o}l\"{u}m\"{u}n ad\i{} {\tt /dev/sda1}, yani ilk SCSI sabit disk \"{u}zerinde tan\i{}mlanan ilk b\"{o}l\"{u}m. \.{I}lk i\c{s} olarak LINUX i\c{s}letim sistemi i\c{c}in yeni bir b\"{o}l\"{u}m yaratmal\i{}y\i{}z.

\begin{verbatim}
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (396-1017): 396
Last cylinder or +size or +sizeM or +sizeK ([396]-1017): +250M
\end{verbatim}


n komutu ile kendimize yeni bir b\"{o}l\"{u}m yaratt\i{}k. \.{I}lk se\c{c}enek temel bir disk b\"{o}l\"{u}m\"{u}m\"{u} yoksa geli\c{s}mi\c{s} bir disk b\"{o}l\"{u}m\"{u} \"{u}zerinde mi i\c{s}lem yapaca\u{g}\i{}m\i{}z\i{} sordu. Temel bir b\"{o}l\"{u}m i\c{c}in p komutunu girdik. Daha sonra hangi b\"{o}l\"{u}m\"{u} yarataca\u{g}\i{}m\i{}z\i{} sordu. Halen mevcut 1 b\"{o}l\"{u}m var, bu b\"{o}l\"{u}m ikinci b\"{o}l\"{u}m olacak bu y\"{u}zden 2 yazd\i{}k.

B\"{o}l\"{u}m\"{u}n ba\c{s}lang\i{}\c{c} adresini giriyoruz. Bu de\u{g}er otomatik olarak bir \"{o}nceki b\"{o}l\"{u}m\"{u}n biti\c{s} de\u{g}erinden hesaplanmaktad\i{}r. Sadece onayl\i{}yoruz. Daha sonra istedi\u{g}imiz boyutu belirtiyoruz. +250M tan\i{}m\i{} 250 Mbyte'l\i{}k bir k\i{}s\i{}m istedi\u{g}imizi belirtiyor. Yaratt\i{}\u{g}\i{}m\i{}z bu b\"{o}l\"{u}m\"{u} p komutu ile inceliyoruz

\begin{verbatim}
Command (m for help): p

Disk /dev/sda: 34 heads, 61 sectors, 1017 cylinders
Units = cylinders of 2074 * 512 bytes

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/sda1   *        1        1      395   409584+   6  DOS 16-bit >=32M
/dev/sda2          396      396      642   256139   83  Linux native
\end{verbatim}


fdisk yarat\i{}lan her b\"{o}l\"{u}m\"{u} otomatik olarak (LINUX native) olarak yaratmaktad\i{}r. \c{S}imdi takas alan\i{} i\c{c}in 60 Mbyte'l\i{}k 3. temel b\"{o}l\"{u}m\"{u} tan\i{}mlayal\i{}m: 

\begin{verbatim}
                                             
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (643-1017): 643
Last cylinder or +size or +sizeM or +sizeK ([643]-1017): +60M

Command (m for help): p

Disk /dev/sda: 34 heads, 61 sectors, 1017 cylinders
Units = cylinders of 2074 * 512 bytes

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/sda1   *        1        1      395   409584+   6  DOS 16-bit >=32M
/dev/sda2          396      396      642   256139   83  Linux native
/dev/sda3          643      643      702    62220   83  Linux native
\end{verbatim}


Dikkat edilecek olursa bu b\"{o}l\"{u}m de {\em LINUX native\/} olarak tan\i{}mland\i{}. LINUX taraf\i{}ndan takas b\"{o}l\"{u}m\"{u} olarak kullan\i{}lacak olan b\"{o}l\"{u}mler farkl\i{} bir yap\i{}ya sahiptirler ve ayr\i{}ca tan\i{}mlanmalar\i{} gerekmektedir. Bu ama\c{c}la t komutu ile herhangi bir b\"{o}l\"{u}m\"{u}n tipini de\u{g}i\c{s}tirmek m\"{u}mk\"{u}nd\"{u}r. (Tip de\u{g}i\c{s}tirmekle o  b\"{o}l\"{u}m\"{u}n yap\i{}s\i{} (format\i{}) de\u{g}i\c{s}mi\c{s} olmuyor, format sonradan yap\i{}lan bir i\c{s}lemdir)

\begin{verbatim}
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 82
Changed system type of partition 3 to 82 (Linux swap)

Command (m for help): p

Disk /dev/sda: 34 heads, 61 sectors, 1017 cylinders
Units = cylinders of 2074 * 512 bytes

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/sda1   *        1        1      395   409584+   6  DOS 16-bit >=32M
/dev/sda2          396      396      642   256139   83  Linux native
/dev/sda3          643      643      702    62220   82  Linux swap
\end{verbatim}


Yukar\i{}da yap\i{}lan i\c{s}lemle 3 numaral\i{} b\"{o}l\"{u}m\"{u}n tipini Linux swap olarak de\u{g}i\c{s}tirmi\c{s} olduk. \c{S}u anda \"{u}\c{c} farkl\i{} t\"{u}rden alan\i{}m\i{}z mevcut. Son b\"{o}l\"{u}m\"{u} de yine n komutu ile ekleriz.

\begin{verbatim}
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
p
Partition number (1-4): 4
First cylinder (703-1017): 703
Last cylinder or +size or +sizeM or +sizeK ([703]-1017): 1017

Command (m for help): p

Disk /dev/sda: 34 heads, 61 sectors, 1017 cylinders
Units = cylinders of 2074 * 512 bytes

   Device Boot   Begin    Start      End   Blocks   Id  System
/dev/sda1   *        1        1      395   409584+   6  DOS 16-bit >=32M
/dev/sda2          396      396      642   256139   83  Linux native
/dev/sda3          643      643      702    62220   82  Linux swap
/dev/sda4          703      703     1017   326655   83  Linux native
\end{verbatim}


Bu \"{o}rnekte boyut Mbyte cinsinden verilmedi. Zaten ama\c{c} kalan alan\i{} t\"{u}m\"{u}yle kullan\i{}c\i{} alan\i{} olarak ay\i{}rmakt\i{}. Bu nedenle son silindirin numaras\i{}n\i{}n girilmesi yeterli oldu. Art\i{}k yap\i{}lmas\i{} gereken bu bilginin diske yaz\i{}lmas\i{}d\i{}r. \c{S}u ana kadar yap\i{}lan hi\c{c} bir
de\u{g}i\c{s}iklik sistem \"{u}zerinde herhangi bir etki yapmam\i{}\c{s}t\i{}r. Ancak b\"{o}l\"{u}mleme bilgisi diske yaz\i{}ld\i{}ktan sonra geri d\"{o}n\"{u}\c{s} yoktur. {\bf L\"{u}tfen  yapt\i{}\u{g}\i{}n\i{}z de\u{g}i\c{s}iklikleri bir kez daha g\"{o}zden ge\c{c}irin!}

\begin{verbatim}
Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
(Reboot to ensure the partition table has been updated.)
Syncing disks.
Reboot your system to ensure the partition table is updated.
\end{verbatim}


Sabit diski b\"{o}l\"{u}mleme esnas\i{}nda kar\c{s}\i{}la\c{s}\i{}lan baz\i{} sorunlar vard\i{}r. Bunlar\i{}n en \"{o}nemlisi Linux'un nas\i{}l \c{c}al\i{}\c{s}t\i{}r\i{}laca\u{g}\i{} ile ilgilidir. Linux a\c{c}mak i\c{c}in belli ba\c{s}l\i{} \"{u}\c{c} y\"{o}ntem vard\i{}r:

\begin{itemize}
\item LILO ile bir boot men\"{u}s\"{u}nden 
\item DOS alt\i{}ndan {\tt LOADLIN} isimli bir yaz\i{}l\i{}mla
\item Y\"{u}klemek i\c{c}in yap\i{}ld\i{}\u{g}\i{} gibi bir boot diskiyle 
\end{itemize}


Son iki y\"{o}ntem herhangi bir s\i{}n\i{}rlama getirmezken ilk y\"{o}ntemin bir s\i{}n\i{}rlamas\i{} vard\i{}r. LILO isimli yaz\i{}l\i{}m ile kullan\i{}ld\i{}\u{g}\i{} zaman bilgisayar a\c{c}\i{}ld\i{}\u{g}\i{} zaman minik bir yaz\i{}l\i{}m \c{c}al\i{}\c{s}t\i{}r\i{}r ve gerekti\u{g}inde Linux \c{c}ekirde\u{g}ini y\"{u}kler. Ancak \c{c}ekirdek y\"{u}klenmesine kadar ge\c{c}en s\"{u}re i\c{c}erisinde sistemin BIOS komutlar\i{} \c{c}al\i{}\c{s}\i{}r. Bu komutlar\i{}n \"{o}nemli bir s\i{}n\i{}rlamas\i{} bir disk \"{u}zerindeki bir yaz\i{}l\i{}m\i{} belirleyen \"{u}\c{c} parametreden (silindir say\i{}s\i{}, kafa numaras\i{}, sekt\"{o}r numaras\i{}) silindir say\i{}s\i{}n\i{}n en fazla 1024 ile s\i{}n\i{}rl\i{} olmas\i{}d\i{}r. Bu bak\i{}mdan LILO kullan\i{}lacaksa Linux \c{c}ekirde\u{g}inin yer alaca\u{g}\i{} b\"{o}l\"{u}m bu 1024 numaral\i{} silindir s\i{}n\i{}r\i{}n\i{}n alt\i{}nda kalmal\i{}d\i{}r. Bu s\i{}n\i{}rlama tamam\i{}yla DOS'un kulland\i{}\u{g}\i{} BIOS'un bir s\i{}n\i{}rlamas\i{}d\i{}r. Yeni BIOS'lar bu s\i{}n\i{}rlamadan kurtulmak i\c{c}in LBA ad\i{} verilen bir y\"{o}ntem kullan\i{}rlar. Bu y\"{o}ntemin temelinde BIOS'ta kafa say\i{}s\i{} i\c{c}in gereksiz yere ayr\i{}lan k\i{}s\i{}mlar\i{}n silindir say\i{}s\i{}n\i{} belirtmek i\c{c}in kullan\i{}lmas\i{}d\i{}r. (BIOS, bir sabit disk i\c{c}in 64'e kadar kafa kabul edebilmektedir. Pratik olarak 15 kafadan fazla sabit diskin \"{u}retilmesi \c{c}ok zor oldu\u{g}u i\c{c}in yap\i{}lan kafa say\i{}s\i{}n\i{} iki veya d\"{o}rt ile \c{c}arparak, silindir say\i{}s\i{}n\i{} iki veya d\"{o}rde b\"{o}lmektir.) B\"{o}ylelikle 1654 silindirli 16 kafal\i{} bir sabit disk, LBA olarak 827 silindirli ve 32 kafal\i{} olarak tan\i{}mlanabilmektedir. \.{I}kinci durumda bu disk \"{u}zerinde tan\i{}mlanabilecek her b\"{o}l\"{u}m\"{u}n yukar\i{}da belirtilen s\i{}n\i{}rlama i\c{c}erisinde kalaca\u{g}\i{}na dikkat ediniz.






\subsection{Setup Program\i{}}



Disk \"{u}zerindeki tan\i{}mlamalar\i{} da bitirdikten sonra art\i{}k setup yaz\i{}l\i{}m\i{}
\c{c}al\i{}\c{s}t\i{}r\i{}labilir. Setup Linux y\"{u}klemek i\c{c}in gereken temel bir\c{c}ok
i\c{s}lemi yapabilir. Ok tu\c{s}lar\i{} yard\i{}m\i{} ile men\"{u}ler aras\i{}nda gezerek
i\c{s}lemleri tamamlayabilirsiniz. Burada yukar\i{}dan a\c{s}a\u{g}\i{}ya do\u{g}ru bir s\i{}ra
izleyebilirsiniz.

\c{S}u anki g\"{u}ncel Slackware da\u{g}\i{}t\i{}m\i{}n\i{}n setup komutu \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}nca ekrana
gelen men\"{u}leri a\c{s}a\u{g}\i{}dad\i{}r.

\begin{verbatim}
                  Welcome to Slackware Linux Setup.                                    
                                                                          
     Hint: If you have trouble using the arrow keys on your keyboard,     
     you can use ''+'', ''-'', and TAB instead. Which option would you like?  

           HELP       Read the Slackware Setup HELP file                
           KEYMAP     Remap your keyboard                              
           MAKE TAGS  Tagfile customization program                    
           TARGET     Select target directory [now: /]                 
           SOURCE     Select source media                              
           DISK SETS  Decide which disk sets you wish to install       
           INSTALL    Install selected disk sets                       
           CONFIGURE  Reconfigure your Linux system                    
           PKGTOOL    Install or remove packages with Pkgtool          
           EXIT       Exit Slackware Linux Setup                      

                            <  OK  >      <Cancel>   
\end{verbatim}




\begin{itemize}
\item {\bf HELP Men\"{u}s\"{u}} : Setup program\i{} hakk\i{}nda baz\i{} ipu\c{c}lar\i{} verecektir. 
\item {\bf KEYMAP Men\"{u}s\"{u}} : Bu men\"{u} ile  Amerikan klavye d\i{}\c{s}\i{}nda bir klavye tan\i{}mlamak m\"{u}mk\"{u}n olacakt\i{}r. Hen\"{u}z t\"{u}rk\c{c}e q veya f klavye deste\u{g}i bulunmamaktad\i{}r. 
\item {\bf MAKE TAGS Men\"{u}s\"{u}} : Bu men\"{u} yard\i{}m\i{} ile da\u{g}\i{}t\i{}m disketlerinde \"{o}zel uzant\i{}l\i{} dosyalar haz\i{}rlayarak hangi paketlerin y\"{u}klenece\u{g}ini otomatik olarak belirlemek m\"{u}mk\"{u}nd\"{u}r. Bu sayede e\u{g}er benzer makinalar y\"{u}klenecekse y\"{u}klenecek paketler bir kere belirlenir ve bir daha men\"{u}lerden ekstradan paketlerin se\c{c}ilmesine gerek kalmaz. 
\item {\bf ADDSWAP Men\"{u}s\"{u}} : fdisk ile ay\i{}rd\i{}\u{g}\i{}n\i{}z takas b\"{o}l\"{u}m\"{u}n\"{u} uygun \c{s}ekilde formatlar ve bu b\"{o}l\"{u}m\"{u} kullan\i{}ma a\c{c}ar. Setup yaz\i{}l\i{}m\i{} hangi disk b\"{o}l\"{u}m\"{u}n\"{u}n takas b\"{o}l\"{u}m\"{u} olarak ayr\i{}ld\i{}\u{g}\i{}n\i{} otomatik olarak bulacakt\i{}r. Daha sonra s\"{o}zkonusu alanlar\i{} formatlayacak ve bu takas alan\i{}n\i{} sistem belle\u{g}ine ekleyecektir. (Her ad\i{}mda bir onay isteyecektir)
\item {\bf TARGET Men\"{u}s\"{u}} : Linux'un hangi b\"{o}l\"{u}me y\"{u}klenece\u{g}ini belirler. Bu men\"{u}ye girildi\u{g}i zaman Linux'un disk format\i{}na (ext2) sahip (sabit disk b\"{o}l\"{u}m\"{u} numaras\i{} 83 olan) t\"{u}m disk b\"{o}l\"{u}mleri g\"{o}sterilecek ve i\c{c}erlerinden hangisine Linux kurulmas\i{} istenilece\u{g}i sorulacakt\i{}r. Bu a\c{s}amadan sonra o disk b\"{o}l\"{u}m\"{u} kullan\i{}c\i{} isterse formatlanacakt\i{}r. Burada iki format se\c{c}ene\u{g}i vard\i{}r. Bu se\c{c}eneklerin ikincisinde disk \"{o}nce hatalar i\c{c}in taranacak daha sonra formatlanacakt\i{}r. E\u{g}er Linux disk format\i{}nda ba\c{s}ka b\"{o}l\"{u}mler varsa bu b\"{o}l\"{u}mlerin kullan\i{}lmas\i{}n\i{}n istenip istenmedi\u{g}i sorulacakt\i{}r. Bu sayede disk hiyerar\c{s}isinin herhangi bir k\i{}sm\i{}n\i{} bu ek disk b\"{o}l\"{u}mleri \"{u}zerine kurmak m\"{u}mk\"{u}nd\"{u}r. Son olarak Linux taraf\i{}ndan desteklenen ba\c{s}ka disk b\"{o}l\"{u}mleri varsa (\"{O}rne\u{g}in DOS) bu b\"{o}l\"{u}mlere Linux alt\i{}ndan eri\c{s}im yap\i{}lmas\i{}n\i{}n istenip istenmedi\u{g}i sorulacak ve bu b\"{o}l\"{u}mler i\c{c}in hiyerar\c{s}i i\c{c}erisinde bir dizin atanmas\i{} istenecektir.
\item {\bf SOURCE Men\"{u}s\"{u}} : Bu men\"{u} Linux da\u{g}\i{}t\i{}m\i{}n\i{}n nerede aranmas\i{} gerekti\u{g}ini belirler. Buradaki se\c{c}enekler

\begin{verbatim}
             SOURCE MEDIA SELECTION                      
                                                                 
       Where do you plan to install Slackware Linux from?            
                                                               
                                                                   
              1 Install from a hard drive partition
              2 Install from floppy disks                  
              3 Install via NFS 
              4 Install from a pre-mounted directory
              5 Install from CD-ROM
\end{verbatim}

     
\begin{itemize}
\item {\em 1 Numaral\i{} se\c{c}enek\/}, Linux da\u{g}\i{}t\i{}m\i{}n\i{} bir sabit disk b\"{o}l\"{u}m\"{u}nde aramak i\c{c}in kullan\i{}lacakt\i{}r. Bu se\c{c}enekle \"{o}rnek olarak DOS k\i{}sm\i{}nda bulunan da\u{g}\i{}t\i{}m disketlerinden y\"{u}kleme yap\i{}labilir. 
\item {\em 2 Numaral\i{} se\c{c}enek\/}, disketlerden y\"{u}kleme yapmakt\i{}r. \c{C}al\i{}\c{s}\i{}r bir sistemi birka\c{c} disketle olu\c{s}turmak m\"{u}mk\"{u}nd\"{u}r. Ancak g\"{u}n\"{u}m\"{u}zde pek tercih edilen bir y\"{o}ntem de\u{g}ildir. 
\item {\em 3 Numaral\i{} se\c{c}enek\/}, NFS \"{u}zerinden y\"{u}kleme yapmak i\c{c}in kullan\i{}lmaktad\i{}r. Burada bilgisayar\i{}n bir yerel bilgisayar a\u{g}\i{}na ba\u{g}l\i{} olmas\i{}, Bu bilgisayar a\u{g}\i{} \"{u}zerindeki bir sunucu \"{u}zerinde eri\c{s}im izni bulunan bir dizin alt\i{}nda da\u{g}\i{}t\i{}m disketlerinin bulunmas\i{} gerekmektedir. Bu se\c{c}enekle y\"{u}kleme yapmak i\c{c}in boot disketi i\c{c}erisinde yer alan diskette a\u{g} deste\u{g}inin bulunmas\i{} gerekmektedir. Bu se\c{c}ene\u{g}in ard\i{}ndan bilgisayar\i{}n (ge\c{c}ici) IP numaras\i{} varsa a\u{g} \"{u}zerindeki y\"{o}nlendirici'nin (router-gateway) IP numaras\i{}, a\u{g} maskesi (subnet mask), NFS sunucusu IP numaras\i{} ve sunucu \"{u}st\"{u}nde da\u{g}\i{}t\i{}m disketlerinin bulundu\u{g}u hiyerar\c{s}i gibi a\u{g} ile ilgili parametreler sorulacakt\i{}r. Bu sorular\i{}n cevab\i{}n\i{} sistem yetkilisinden \"{o}\u{g}renmeniz ve onun onay\i{}n\i{} alman\i{}z gerekecektir. 
\item {\em 4 Numaral\i{} se\c{c}enek\/}, asl\i{}nda 1 numaral\i{} se\c{c}ene\u{g}e \c{c}ok benzemektedir. Aradaki fark bu durumda sistem hiyerar\c{s}isine ba\u{g}lanm\i{}\c{s} (mounted) bir dizin i\c{c}erisinde da\u{g}\i{}t\i{}m disketlerinin bulunmas\i{}d\i{}r. 
\item {\em 5 Numaral\i{} se\c{c}enek\/} ise CD-ROM'dan y\"{u}kleme yapmak i\c{c}indir. 
\end{itemize}

\item {\bf DISKSETS Men\"{u}s\"{u}} Art\i{}k nereye ve nereden y\"{u}kleyece\u{g}iniz belirlenmi\c{s}tir. S\i{}ra y\"{u}klemek istedi\u{g}iniz disket serilerini se\c{c}meye gelmi\c{s}tir. Disk serileri:
\end{itemize}


\begin{verbatim}
    CUS         Also prompt for CUSTOM disk sets
    A           Base Linux system
    AP          Various Applications that do not need X
    D           Program Development (C, C++, Lisp, Perl, etc.)
    E           GNU Emacs
    F           FAQ lists, HOWTO documentation
    K           Linux kernel source
    N           Networking (TCP/IP, UUCP, Mail, News)
    T           TeX typesetting software 
    TCL         Tcl/Tk script languages
    X           XFree86 X Window System
    XAP         X Applications                
    XD          X Server development kit
    XV          XView (OpenLook Window Manager, apps)
    Y           Games (that do not require X)
\end{verbatim}


\begin{enumerate}
\item {\bf A Serisi (8 disket)} : Temel i\c{s}letim sistemi bu disketlerde yer al\i{}r. Temel disk hiyerar\c{s}isi yarat\i{}l\i{}r, sistemin \c{c}al\i{}\c{s}mas\i{} i\c{c}in hayati olan yaz\i{}l\i{}mlar, terminal yaz\i{}l\i{}mlar\i{}, kabuklar (shell), disk d\"{u}zenleme yaz\i{}l\i{}mlar\i{}, k\"{u}t\"{u}phaneler, Linux \c{c}al\i{}\c{s}t\i{}rmak i\c{c}in LILO ve LOADLIN bu disketlerdedir.
\item {\bf AP Serisi (5 disket)} : X Window ortam\i{} gerektirmeyen uygulama yaz\i{}l\i{}mlar. Metin edit\"{o}rleri, ghostscript, man sayfalar\i{}, midnight commander (Norton commander benzeri bir yaz\i{}l\i{}m) bu disketlerde yer al\i{}r. 
\item {\bf D Serisi (13 disket)} : T\"{u}m programlama dilleri ve destek yaz\i{}l\i{}mlar\i{} bu disketlerde yer al\i{}r. E\u{g}er kendinize yeni bir Linux \c{c}ekirde\u{g}i derlemeyi d\"{u}\c{s}\"{u}n\"{u}yorsan\i{}z bu seriye ihtiyac\i{}n\i{}z var.
\item {\bf E Serisi (8 disket)} : EMACS edit\"{o}r\"{u}. 
\item {\bf F Serisi (2 disket)} : Linux hakk\i{}nda bir\c{c}ok d\"{o}k\"{u}man ve a\c{c}\i{}klama bu disketlerde yer almaktad\i{}r. Yeni ba\c{s}layan birisinin bu disketleri mutlaka y\"{u}klemesi gerekir. S\"{o}z konusu d\"{o}k\"{u}manlar s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s} halde 

\begin{verbatim}
/usr/doc
/usr/doc/faq 
/usr/doc/faq/HOWTO 
\end{verbatim}


dizinlerine y\"{u}klenecektir. Bir\c{c}ok kullan\i{}c\i{} cevap arad\i{}\u{g}\i{} sorular\i{}n bir\c{c}o\u{g}unun zaten makinelerinde yaz\i{}l\i{} oldu\u{g}unu sonradan \"{o}\u{g}renince \c{c}ok \c{s}a\c{s}\i{}rmaktad\i{}r. D\"{o}k\"{u}manlar s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s} olduklar\i{}ndan 

\begin{verbatim}
zless
\end{verbatim}


gibi s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s} dosyalar\i{} destekleyen bir yaz\i{}l\i{}mla okunmalar\i{} gerekir.
\item {\bf K Serisi (6 disket)} : \c{C}ekirde\u{g}in kaynak kodu burada bulunur. E\u{g}er kendi donan\i{}m\i{}n\i{}za uygun bir \c{c}ekirdek derlemek istiyorsan\i{}z bu seriye muhakkak ihtiya\c{c} duyacaks\i{}n\i{}z. FTP ar\c{s}ivlerinden kaynak kodu olarak bulaca\u{g}\i{}n\i{}z baz\i{} yaz\i{}l\i{}mlar da bu hiyerar\c{s}i alt\i{}nda yer alan baz\i{} dosyalara ihtiya\c{c} duyacaklard\i{}r.
\item {\bf N Serisi (6 disket)} : A\u{g} deste\u{g}i bu disketler ile sa\u{g}lanmaktad\i{}r. E-posta okuma yaz\i{}l\i{}mlar\i{}, lynx, www sunucusu, haber grubu okuma yaz\i{}l\i{}mlar\i{} bu disketlerin i\c{c}erisinde yer alan yaz\i{}l\i{}mlard\i{}r. 
\item {\bf T Serisi (9 disket)} : TeX. TeX y\"{u}klerken \"{u}\c{c} temel se\c{c}enekle kar\c{s}\i{}la\c{s}acaks\i{}n\i{}z. \.{I}lk seri se\c{c}enek hangi TeX yard\i{}mc\i{} paketlerini isteyece\u{g}inizi sorar, ikinci se\c{c}enekler hangi dil i\c{c}in makro tan\i{}mlar\i{} istedi\u{g}inizi sorar, son se\c{c}enek ise yaz\i{} tipleri hakk\i{}nda tercihlerinizi sorar. (Burada ger\c{c}ekten \c{c}ok fazla se\c{c}enek var) 
\item {\bf TCL Serisi (2 disket)} : X Window alt\i{}nda kullan\i{}m\i{} basit bir programlama dili ve bu dili ile yaz\i{}lm\i{}\c{s} baz\i{} uygulama yaz\i{}l\i{}mlar\i{} (tkdesk) 
\item {\bf X Serisi (16 disket)} : X Window deste\u{g}i. Bu disketlerin b\"{u}y\"{u}k k\i{}sm\i{} de\u{g}i\c{s}ik grafik kartlar\i{} i\c{c}in X window sunucular\i{} ve yaz\i{} karakterlerinden olu\c{s}maktad\i{}r. Linux y\"{u}kledi\u{g}iniz bilgisayar \"{u}zerindeki grafik kart\i{}n\i{} bilmeniz ve buna uygun bir sunucu se\c{c}meniz gerekmektedir. 
\item {\bf XAP Serisi (4 disket)} : X window alt\i{}nda \c{c}e\c{s}itli uygulamalar: satran\c{c}, gnuplot, xv, xfileman, windows95 benzeri X Window aray\"{u}z\"{u} bu seriler i\c{c}erisinde yer almaktad\i{}r. 
\item {\bf XD Serisi (3 disket)} : Xserver geli\c{s}tirmek i\c{c}in k\"{u}t\"{u}phaneler ve uygulama yaz\i{}l\i{}mlar\i{}
\item {\bf XV Serisi (3 disket)} : OpenLook deste\u{g}i veren yaz\i{}l\i{}mlar. Bu sayede X Window alt\i{}nda Sun bilgisayarlarda yer alan OpenWindows benzeri bir ortam kullan\i{}labilir.  
\item {\bf Y Serisi (1 disket)} : Minik birka\c{c} oyun. (\"{o}zellikle bog) 
Se\c{c}ti\u{g}iniz disk serileri ilgi alan\i{}n\i{}z\i{} genel olarak belirler. Her seri i\c{c}erisinde bir\c{c}ok yaz\i{}l\i{}m pakedi yer almaktad\i{}r. Bu paketlerden istediklerinizi y\"{u}kleyebilirsiniz.
\end{enumerate}


\begin{itemize}
\item {\bf INSTALL Men\"{u}s\"{u}} Se\c{c}ti\u{g}iniz disk serilerini belirledi\u{g}iniz kaynaktan, belirtilen hedef disk b\"{o}l\"{u}m\"{u}ne aktar\i{}r. Disk serileri i\c{c}erisinde yer alan paketleri ne \c{s}ekilde y\"{u}klemek istedi\u{g}iniz konusunda birtak\i{}m se\c{c}enekleriniz olacakt\i{}r. Bunlar:
\end{itemize}


\begin{verbatim}
    NORMAL         Use the default tagfiles for verbose prompting 
    MENU           Choose package subsystems from interactive menus 
    CUSTOM         Use custom tagfiles in the package directories 
    PATH           Use tagfiles in the subdirectories of a custom path 
    EXPERT         Choose individual packages from interactive menus 
    NONE           Use no tagfiles - install everything 
\end{verbatim}


{\bf NORMAL} : Sistem her disk serisi i\c{c}erisindeki paketleri 'gerekli (required)', 'olsa iyi olur (recommended)' ve 'se\c{c}ime ba\u{g}l\i{} (optional)' olarak s\i{}n\i{}flar. Bu se\c{c}enek ile gerekli paketler y\"{u}klenir, di\u{g}er paketler i\c{c}in k\i{}sa bir a\c{c}\i{}klama yaz\i{}l\i{}r ve kullan\i{}c\i{}n\i{}n fikri sorulur. \.{I}lk y\"{u}klemeler i\c{c}in tavsiye edilen bir se\c{c}enektir. Ancak \"{o}zellikle T serisi insan\i{}n sabr\i{}n\i{} ta\c{s}\i{}racak derecede \c{c}ok ufak tefek paket y\"{u}klemekte ve her paketi sormaktad\i{}r (mesela klingon fontlar\i{}n\i{} y\"{u}klemek isteyip istemedi\u{g}inizi soruyor, bilmeyenler i\c{c}in klingonlar uzay yolu dizisindeki k\"{o}t\"{u} uzayl\i{} yarat\i{}klard\i{}r :) ) 

{\bf MENU ve EXPERT} : Bu se\c{c}eneklerde her disk serisi y\"{u}klenmeye ba\c{s}lan\i{}rken o seride yer alan t\"{u}m paketler bir men\"{u} i\c{c}erisinde g\"{o}r\"{u}l\"{u}r. Kullan\i{}c\i{} istedi\u{g}i paketleri i\c{s}aretler ve bunlar\i{}n y\"{u}klenmesini sa\u{g}lar. 

{\bf CUSTOM ve PATH} : Daha \"{o}nce belirtilen TAGFILE dosyalar\i{} yard\i{}m\i{}yla y\"{u}kleme yapmak i\c{c}in kullan\i{}l\i{}r. Bu durumda belirli bir uzant\i{}ya sahip dosyalar i\c{c}erisinde (TAGFILE) y\"{u}klenmesi gereken yaz\i{}l\i{}mlar belirtilir. Bu se\c{c}enek ile TAGFILE' lar\i{}n uzant\i{}s\i{} belirtilir ve o uzant\i{}l\i{} dosyalarda bulunan paketler y\"{u}klenir.  

{\bf NONE} : Tembellerin se\c{c}ene\u{g}i. Her \c{s}eyi kuracakt\i{}r. Sadece belirli paketler i\c{c}in anlaml\i{}d\i{}r. Zira bir\c{c}ok paket i\c{c}erisinde i\c{c}inden se\c{c}ilmesi gereken se\c{c}enekler mevcuttur. (Mesela Xserver 10 se\c{c}enek aras\i{}ndan se\c{c}ilecektir)

Bu noktadan sonra art\i{}k y\"{u}kleme ba\c{s}layacakt\i{}r.




\subsection{Konfig\"{u}rasyon}



Y\"{u}kleme bittikten sonra yap\i{}lacak i\c{s} art\i{}k sisteminiz i\c{c}in tan\i{}t\i{}mlar\i{}n\i{}z\i{} yapmakt\i{}r. Bu i\c{s}lemin ilk a\c{s}amas\i{} sistemi a\c{c}acak bir \c{c}ekirdek belirlemektir. Bu konuda \"{u}\c{c} se\c{c}ene\u{g}iniz var:

\begin{verbatim}
    bootdisk    Use the kernel from the installation bootdisk 
    cdrom       Use a kernel from the Slackware CD 
    floppy      Install a zimage or bzimage file from a DOS floppy 
\end{verbatim}


{\bf Bootdisk} : Bu se\c{c}enekte y\"{u}klemede kulland\i{}\u{g}\i{}n\i{}z \c{c}ekirdek boot disketinden kopyalanacakt\i{}r. Sisteminizi y\"{u}kleyebildi\u{g}inize g\"{o}re bu \c{c}ekirdek ile \c{c}al\i{}\c{s}abilirsiniz. E\u{g}er bir de\u{g}i\c{s}iklik yapmam\i{}\c{s}san\i{}z bu anda s\"{u}r\"{u}c\"{u} i\c{c}erisinde boot disketi de\u{g}il root disketi bulunuyor olmal\i{}, de\u{g}i\c{s}tirmeyi unutmay\i{}n!

{\bf CD-ROM} : Slackware CD-ROM'unda bulunan \"{o}nceden derlenmi\c{s} \c{c}ekirdeklerden herhangi birini se\c{c}ebilirsiniz. 

{\bf Floppy} :  herhangi bir DOS disketinde yer alan \c{c}ekirde\u{g}i y\"{u}klemenizi sa\u{g}lar. 

Daha sonra sisteminiz i\c{c}in bir boot disketi yaratmak isteyip istemedi\u{g}iniz
sorulacakt\i{}r. Ne olursa olsun, elinizin alt\i{}nda her zaman bir boot ve root disketi
bulundurmak zorundas\i{}n\i{}z. Herhangi bir sorun oldu\u{g}unda sisteminizi a\c{c}mak
i\c{c}in bir boot disketi bulman\i{}z gerekecektir. Bunun i\c{c}in y\"{u}kleme s\i{}ras\i{}nda
kulland\i{}\u{g}\i{}n\i{}z boot ve root disketlerini de kullanabilirsiniz.

Ard\i{}ndan setup size modem, mouse, CD-ROM, bulundu\u{g}unuz zaman dilimini
soracak ve

\begin{verbatim}
liloconfig 
\end{verbatim}


yaz\i{}l\i{}m\i{} \c{c}al\i{}\c{s}acakt\i{}r. {\em LILO\/}, Linux Loader (Linux y\"{u}kleyicisi)
kelimelerinden meydana gelir. LILO Linux y\"{u}klemek i\c{c}in kullan\i{}lan
\c{c}ok pratik ve etkili bir yaz\i{}l\i{}md\i{}r. Bilgisayar a\c{c}\i{}l\i{}r a\c{c}\i{}lmaz,
boot eden ilk sabit diskin \"{u}zerinde (boot partition) kendini yazar,
bilgisayar a\c{c}\i{}l\i{}r a\c{c}\i{}lmaz, birden fazla i\c{s}letim sistemi i\c{c}in se\c{c}enek
sunabilir. Konfig\"{u}rasyon s\i{}ras\i{}nda LILO kendisinin nereye yaz\i{}laca\u{g}\i{}n\i{}
sorar, bu se\c{c}enekler aras\i{}nda

\begin{verbatim}
    1. The Master Boot Record of your first hard drive
    2. The superblock of your root Linux partition 
    3. A formatted floppy disk
\end{verbatim}


yer al\i{}r. 

{\bf 1 numaral\i{} se\c{c}enek}, bir\c{c}ok uygulamada kullan\i{}lacak olan se\c{c}enektir. MBR bir bilgisayar a\c{c}arken ilk bak\i{}lan yerdir. 

{\bf 2 numaral\i{} se\c{c}enek}, MBR'yi kullanmamaktad\i{}r. Bunun sebebi, MBR \"{u}zerinde bir ba\c{s}ka i\c{s}letim sisteminin benzer bir yaz\i{}l\i{}m\i{}n\i{}n bulunmas\i{} olabilir. (\"{o}rne\u{g}in OS/2 Bootmanager)

{\bf 3 numaral\i{} se\c{c}enek}'te LILO kendisini bir diskete y\"{u}kleyecektir. Bu disketten a\c{c}\i{}ld\i{}\u{g}\i{} zaman men\"{u} ortaya \c{c}\i{}kacakt\i{}r. 

Daha sonra boot i\c{s}lemi s\i{}ras\i{}nda \c{c}ekirde\u{g}e g\"{o}nderilecek ekstra
parametreler belirtilebilir. Bir\c{c}ok sistem i\c{c}in bu t\"{u}r bir parametre
gereksizdir. Bu parametre boot diski ile a\c{c}\i{}ld\i{}\u{g}\i{} zaman sorulan
parametrenin ayn\i{}s\i{}d\i{}r. Sonraki se\c{c}enek LILO'nun y\"{u}kleme s\i{}ras\i{}ndaki
davran\i{}\c{s}\i{}n\i{} belirler. LILO konfig\"{u}rasyonu s\i{}ras\i{}nda birden fazla boot
edebilecek sabit disk b\"{o}l\"{u}m\"{u} tan\i{}mlanabilir. Shift tu\c{s}una bas\i{}ld\i{}\u{g}\i{}
zaman LILO mevcut b\"{o}l\"{u}mler i\c{c}in bir liste \c{c}\i{}karacakt\i{}r. LILO i\c{c}in tan\i{}ml\i{}
d\"{o}rt davran\i{}\c{s} vard\i{}r:

\begin{verbatim}
    1 -- None, don't wait at all - boot straight into the first OS
    2 -- 5 seconds
    3 -- 30 seconds
    4 -- Present a prompt and wait until a choice is made without timing out
\end{verbatim}


{\bf 1 numaral\i{} se\c{c}enek} hi\c{c} beklemeden do\u{g}rudan listede belirtilen ilk i\c{s}letim sistemini y\"{u}kleyecektir. Sadece Linux bulunan bilgisayarlar i\c{c}in kullan\i{}lan se\c{c}enek budur. 

{\bf 2 ve 3 numaral\i{} se\c{c}enek}ler s\i{}ras\i{}yla 5 ve  30 saniye beklerler, e\u{g}er bu s\"{u}re i\c{c}erisinde Shift tu\c{s}una bas\i{}lmazsa ilk s\i{}rada yer alan i\c{s}letim sistemini y\"{u}klerler.

{\bf 4 numaral\i{} se\c{c}enek} bir i\c{s}letim sistemi se\c{c}ilene kadar bekler. 

Daha sonra s\i{}ras\i{}yla y\"{u}klenmesini tercih etti\u{g}iniz disk b\"{o}l\"{u}mlerini
tan\i{}tabilirsiniz. LILO her b\"{o}l\"{u}m i\c{c}in sizden ay\i{}redici bir kelime
isteyecektir. LILO y\"{u}kleme an\i{}nda sizden komut beklerken bu kelimeye
g\"{o}re i\c{s}letim sistemi y\"{u}kleyecetir.

LILO hakk\i{}nda baz\i{} \"{o}rnekler i\c{c}in {\em LILO-NASIL\/} d\"{o}k\"{u}man\i{}ndan
yararlanabilirsiniz.






\subsection{Makinay\i{} A\c{c}mak}



Linux y\"{u}kleme i\c{s}lemi sona erdi. Art\i{}k bundan sonra s\i{}ra makinan\i{}z\i{} Linux \c{c}al\i{}\c{s}acak \c{s}ekilde \c{c}al\i{}\c{s}mas\i{}n\i{} sa\u{g}lamakt\i{}r. Bunun i\c{c}in temel olarak iki de\u{g}i\c{s}ik y\"{o}ntem mevcuttur:

\begin{itemize}
\item {\bf LILO} : en \c{c}ok kullan\i{}lan en pratik a\c{c}\i{}l\i{}\c{s} \c{s}ekli. Burada bilgisayar a\c{c}\i{}ld\i{}\u{g}\i{} zaman iste\u{g}e g\"{o}re bir s\"{u}re bekler ve bu esnada shift,tab veya control tu\c{s}una bas\i{}l\i{}rsa birden fazla i\c{s}letim sistemi ile \c{c}al\i{}\c{s}t\i{}rma se\c{c}ene\u{g}i sunar. 
\item {\bf LOADLIN} : Dos alt\i{}ndan \c{c}al\i{}\c{s}an bir yaz\i{}l\i{}md\i{}r. DOS alt\i{}nda \c{c}al\i{}\c{s}\i{}rken Linux y\"{u}klemenize yarar. E\u{g}er kurulum a\c{s}amas\i{}nda {\tt LOADLIN} pakedini (A serisi disketler i\c{c}inde ) se\c{c}mi\c{s}seniz bu paket {\tt /root} dizini alt\i{}nda {\tt LOADLIN.ZIP} ismi ile kaydedilmi\c{s} olacakt\i{}r. Yapman\i{}z gereken bu yaz\i{}l\i{}m\i{} ve mevcut \c{c}ekirde\u{g}inizi ({\tt /vmlinuz} ) DOS k\i{}sm\i{}na aktarmakt\i{}r.
\end{itemize}


A\c{s}a\u{g}\i{}da yer alan \"{o}rnekte,

\begin{enumerate}
\item IDE bir sabit disk kullan\i{}ld\i{}\u{g}\i{}
\item {\tt /dev/hda1}'in DOS oldu\u{g}u
\item {\tt /dev/hda3} \"{u}zerine Linux y\"{u}klendi\u{g}i 
\item DOS k\i{}sm\i{}na (hen\"{u}z) Linux alt\i{}ndan eri\c{s}ilemedi\u{g}i 
\item Makinan\i{}n Linux olarak a\c{c}\i{}lm\i{}\c{s} oldu\u{g}u 
\end{enumerate}


varsay\i{}lm\i{}\c{s}t\i{}r.

\begin{verbatim}
linux:~# ls /root
lodlin16.txt  lodlin16.zip
linux:~# mkdir /dos
linux:~# mount -t msdos /dev/hda1 /dos
linux:~# cd /dos
linux:/dos# unzip /root/lodlin16.zip
Archive:  lodlin16.zip
 creating: loadlin/
  inflating: loadlin/readme.1st
  inflating: loadlin/loadlin.exe
  inflating: loadlin/copying
  inflating: loadlin/test.par
  inflating: loadlin/linux.bat
 extracting: loadlin/initrd.tgz
  inflating: loadlin/files
   creating: loadlin/doc/
  inflating: loadlin/doc/changes
  inflating: loadlin/doc/announce.txt
  inflating: loadlin/doc/lodlin16.lsm
  inflating: loadlin/doc/quicksta.rt
  inflating: loadlin/doc/initrd.txt
  inflating: loadlin/doc/manual.txt
  inflating: loadlin/doc/params.doc
   creating: loadlin/src/
  inflating: loadlin/src/loadlin.asm
  inflating: loadlin/src/loadlina.asm
  inflating: loadlin/src/loadlini.asm
  inflating: loadlin/src/loadlinj.asm
  inflating: loadlin/src/loadlinm.asm
  inflating: loadlin/src/makefile
 extracting: loadlin/src/srclinux.tgz
  inflating: loadlin/src/pgadjust.asm
linux:/dos# cp /vmlinuz /dos/loadlin/zimage
linux:/dos# cd loadlin
linux:/dos/loadlin# ls
copying*      files*        linux.bat*    readme.1st*   test.par*
doc/          initrd.tgz*   loadlin.exe*  src/          zimage
linux:/dos/loadlin# cat linux.bat

rem  First, ensure any unwritten disk buffers are flushed:
smartdrv /C
rem  Start the LOADLIN process:
c:\loadlin\loadlin  c:\loadlin\zimage  root=/dev/hda3  ro  vga=3
linux:/dos/loadlin# cp linux.bat /dos
\end{verbatim}


Burada verilen \"{o}rnekte yap\i{}lan s\i{}ras\i{}yla

\begin{itemize}
\item Sabit diskin DOS k\i{}sm\i{}n\i{} Linux alt\i{}ndan ula\c{s}\i{}l\i{}r yapmak
\item {\tt /root} alt\i{}nda yer alan {\tt lodlin16.zip} isimli dosyay\i{} DOS diski alt\i{}nda a\c{c}mak. Bu i\c{s}lem {\tt C:\verb+\+LOADLIN} isimli bir dizin yarat\i{}p i\c{c}erisine gereken dosyalar\i{} yerle\c{s}tirmektedir.
\item \c{C}al\i{}\c{s}an \c{c}ekirde\u{g}i ({\tt /vmlinuz}) bu dizine kopyalamak ve {\tt LINUX.BAT} dosyas\i{}n\i{} kendimize uygun hale getirmek. Bu dosya {\tt C:\verb+\+LOADLIN\verb+\+ZIMAGE} isimli bir \c{c}ekirde\u{g}i kullanarak {\tt /dev/hda3} b\"{o}l\"{u}m\"{u}nde Linux \c{c}al\i{}\c{s}t\i{}rmak i\c{c}in kullan\i{}l\i{}r.
\item {\tt LINUX.BAT} dosyas\i{}n\i{} PATH i\c{c}inde tan\i{}ml\i{} bir yere kopyalamak, mesela {\tt C:\verb+\+DOS}.
\end{itemize}


Art\i{}k bilgisayar DOS a\c{c}\i{}ld\i{}ktan sonra

\begin{verbatim}
linux
\end{verbatim}


komutu ile tekrar Linux \c{c}al\i{}\c{s}t\i{}rmak m\"{u}mk\"{u}n olacakt\i{}r.

Bilgisayar\i{}n\i{}za Linux y\"{u}kledi\u{g}iniz disketlerle her zaman bilgisayar\i{}n\i{}z\i{}
Linux olarak a\c{c}\i{}p \c{c}al\i{}\c{s}abilirsiniz.

Tavsiye edilen m\"{u}mk\"{u}nse LILO kullanmakt\i{}r. LOADLIN ise bir ikinci
alternatif olarak \c{c}ok\c{c}a kullan\i{}l\i{}r. Boot disketlerine ise genelde
son \c{c}are olarak ba\c{s}vurulur.

B\"{u}t\"{u}n bu ad\i{}mlardan sonra art\i{}k elinizde \c{c}al\i{}\c{s}maya haz\i{}r bir Linux
makine vard\i{}r. Makinay\i{} kapat\i{}p tekrar a\c{c}\i{}n. Ekranda \c{c}ekirdek mesajlar\i{}
ge\c{c}tikten sonra

\begin{verbatim}
login :
\end{verbatim}


belirecektir. Buraya {\tt root} yaz\i{}n ve sisteme girin. \.{I}lk denemeniz i\c{c}in 

\begin{verbatim}
# shutdown -rf now
\end{verbatim}


yazabilirsiniz. Linux bir makine \c{c}al\i{}\c{s}t\i{}\u{g}\i{} s\"{u}rece haf\i{}za i\c{c}erisinde bir\c{c}ok
tampon bellek a\c{c}ar. M\"{u}mk\"{u}n oldu\u{g}u kadar makineyi kapama tu\c{s}una basarak
kapatmay\i{}n. Shutdown komutu i\c{s}letim sisteminin tampon belleklerde tuttu\u{g}u
bilgileri g\"{u}ncellemesini sa\u{g}layacakt\i{}r. {\tt -r} parametresi sistemin
reboot etmesini sa\u{g}layacakt\i{}r. Bilgisayar\i{} kapatmak i\c{c}in

\begin{verbatim}
# shutdown -hf now
\end{verbatim}


komutunu kullanabilirsiniz. Burada yer alan h parametresi sistemin "halt"
edece\u{g}ini (tamamen kilitlenme) ve bir daha a\c{c}\i{}lmayaca\u{g}\i{}n\i{} belirtecektir.

E\u{g}er her\c{s}ey yolunda giderse makinan\i{}z\i{}n ba\c{s}\i{}nda oturup \c{c}al\i{}\c{s}maya
ba\c{s}layabilirsiniz.

Sistemde \c{c}al\i{}\c{s}maya ba\c{s}lamak \"{u}zere ilk i\c{s} olarak kendinize \c{c}al\i{}\c{s}mak
amac\i{}yla bir kullan\i{}c\i{} tan\i{}mlay\i{}n. Sistemde ba\c{s}ka kullan\i{}c\i{} olacaksa,
onlar i\c{c}in de hesap a\c{c}acaks\i{}n\i{}z. Kullan\i{}c\i{} hesab\i{} a\c{c}mak i\c{c}in

\begin{verbatim}
# adduser
\end{verbatim}


komutu size bu konuda yard\i{}mc\i{} olacakt\i{}r. {\tt adduser} (veya {\tt useradd})
komutu , kullan\i{}c\i{} ismi, isim ve soyad, GID (grup kimli\u{g}i), UID (kullan\i{}c\i{}
kimli\u{g}i) gibi birtak\i{}m sorular soracakt\i{}r. Bu komut hakk\i{}nda detayl\i{}
bilgiyi {\em Sistem Y\"{o}netimi\/} b\"{o}l\"{u}m\"{u} alt\i{}nda bulabilirsiniz. root kullan\i{}c\i{}s\i{}
sistem \"{u}zerinde s\i{}n\i{}rs\i{}z yetkiye sahip oldu\u{g}undan sistem dosyalar\i{}n\i{}
kazara de\u{g}i\c{s}tirmenize veya silmenize sebep olabilir.

\c{S}imdi yeni hesab\i{}n\i{}zla sisteme girebilirsiniz. Alt F1 'den Alt F6
'ya kadar olan tu\c{s}larla birden \c{c}ok ekranda (sanal ekranlar) ayn\i{} anda
\c{c}al\i{}\c{s}abilirsiniz.

Bu noktadan sonra baz\i{} uygulamalar\i{}n ayarlamalar\i{}n\i{} yapman\i{}z
gerekecektir. Art\i{}k Linux y\"{u}klemek ile ilgili bir sorunuzunun kalmam\i{}\c{s}
olmas\i{}n\i{} umuyorum. DOS kullan\i{}c\i{}lar\i{}na Linux hakk\i{}nda bilgi veren
sevimli bir d\"{o}k\"{u}man i\c{c}in {\em DOS2Linux Mini-HOWTO\/} iyi bir ba\c{s}lang\i{}\c{c}
olabilir. 

A\c{c}\i{}l\i{}\c{s} esnas\i{}nda makinan\i{}z\i{}n ismi {\tt /etc/rc.d/rc.M} dosyas\i{}nda
belirlenir. Bu dosyay\i{} uygun \c{s}ekilde de\u{g}i\c{s}tirerek makinan\i{}z\i{}n ismini
de yeniden tan\i{}mlayabilirsiniz. Makinan\i{}z\i{}n ilk ismi {\tt darkstar}
olacakt\i{}r. E\u{g}er TCP/IP a\u{g} \"{u}zerinde \c{c}al\i{}\c{s}\i{}yorsan\i{}z, {\tt /etc/HOSTNAME}
dosyas\i{}n\i{}n i\c{c}eri\u{g}ini de\u{g}i\c{s}tirerek veya hostname komutu kullan\i{}lara makina
ismi de de\u{g}i\c{s}tirilebilir.

Bunlar\i{}n d\i{}\c{s}\i{}nda konfig\"{u}rasyon gerektiren bir\c{c}ok durum vard\i{}r. Bunlar
i\c{c}in {\em NET-3 HOWTO\/} dosyas\i{}n\i{} iyice okumal\i{}s\i{}n\i{}z.




\section{LILO Konfig\"{u}rasyonu}



E\u{g}er linux ve OS/2 ile birlikte ayn\i{} disk \"{u}zerinde \c{c}al\i{}\c{s}mayacaksan\i{}z,
LILO'yu \"{o}ncelikli y\"{u}kleyici olarak diskinizdeki di\u{g}er i\c{s}letim
sistemlerinin a\c{c}\i{}l\i{}\c{s}\i{}nda rahatl\i{}kla kullanabilirsiniz. Daha \"{o}nce
de belirtti\u{g}im gibi OS/2'nin kendine \"{o}zg\"{u} \"{o}ny\"{u}kleyicisi oldu\u{g}undan
birincil \"{o}ny\"{u}kleyici olarak bunu kullan\i{}n, LILO'yu ise linux a\c{c}mak
i\c{c}in \c{c}al\i{}\c{s}t\i{}r\i{}n.

Slackware LILO kurulum i\c{s}lemi, baz\i{} \"{o}zel durumlar i\c{c}in yetersiz
kalmaktad\i{}r. Bu gibi durumlarda dosyan\i{}n el yard\i{}m\i{}yla konfig\"{u}rasyonu
gereklidir.

LILO'yu de\u{g}i\c{s}tirmek i\c{c}in {\tt /etc/lilo.conf} dosyas\i{} \"{u}zerinde
de\u{g}i\c{s}iklikler yapmal\i{}s\i{}n\i{}z. A\c{s}a\u{g}\i{}da bir LILO konfig\"{u}rasyon \"{o}rne\u{g}i
g\"{o}r\"{u}l\"{u}yor. Burada Linux b\"{o}l\"{u}m\"{u} {\tt /dev/hda2}'de , MS-DOS b\"{o}l\"{u}m\"{u}
ise {\tt /dev/hdb1}'de (ikinci sabit diskin ilk b\"{o}l\"{u}m\"{u}) bulunuyor.

\begin{verbatim}
  # LILO, /dev/hda uzerinde kurulacak.
  boot = /dev/hda

  # Linux yuklemek icin 
  image = /vmlinuz      (Cekirdegin diskteki ismi /vmlinuz)
    label = linux       (Buna "linux" ismini ver. Acilis aninda
                        ekranda "linux" yazisi gorunur)
    root = /dev/hda2    (Kok dosya sistemi olarak /dev/hda2 kullan)
    vga = ask           (VGA ekran modu icin kullanicidan komut bekle)

  # MS-DOS yuklemek icin
  other = /dev/hdb1     (MS-DOS bolumu)
    label = msdos       ("msdos" ismini ver)
    table = /dev/hdb    (ikinci surucu icin bolumlendirme tablosu)
\end{verbatim}


Yukar\i{}da bir \"{o}rne\u{g}i g\"{o}r\"{u}len {\tt /etc/lilo.conf} dosyas\i{}nda gerekli
de\u{g}i\c{s}iklik veya d\"{u}zeltmeleri yapt\i{}ktan sonra {\tt /sbin/lilo} dosyas\i{}n\i{}
root olarak \c{c}al\i{}\c{s}t\i{}r\i{}n. Bu komut LILO \"{o}ny\"{u}kleyicisini sabit diske
kuracakt\i{}r. Bundan sonra her yeni \c{c}ekirdek derlemenin ard\i{}ndan dosyada
uygun de\u{g}i\c{s}iklikleri yap\i{}p ayn\i{} komutu \c{c}al\i{}\c{s}t\i{}rmal\i{}s\i{}n\i{}z.

\c{S}imdi sistemi sabit disten tekrar a\c{c}abilirsiniz. LILO,
{\tt /etc/lilo.conf} dosyas\i{}ndaki ilk i\c{s}letim sistemini
y\"{u}kleyecektir. Ba\c{s}ka bir sistemle a\c{c}mak i\c{c}in \"{o}ny\"{u}kleme men\"{u}s\"{u}n\"{u} ekrana
getirmelisiniz. Bunun i\c{c}in makina a\c{c}\i{}l\i{}rken shift veya kontrol tu\c{s}lar\i{}na
bas\i{}l\i{} tutun. Ekrana bir a\c{c}\i{}l\i{}\c{s} istemcisi gelecektir:

\begin{verbatim}
Boot :
\end{verbatim}


Burada ya a\c{c}\i{}lmas\i{}n\i{} istedi\u{g}iniz i\c{s}letim sisteminin ismini yaz\i{}n (ilk
kurulum s\i{}ras\i{}nda MS-DOS veya linux), ya da tab tu\c{s}una basarak listeyi
ekrana getirin.

OS/2 kullanabilmek i\c{c}in Linux \"{o}ny\"{u}kleyicisini ikincil kullanman\i{}z
gerekecektir. Linux'u OS/2 \"{o}ny\"{u}kleyicisinden a\c{c}mal\i{}s\i{}n\i{}z. Bunu yapmak
i\c{c}in Linux sabit disk b\"{o}l\"{u}m\"{u}n\"{u} OS/2 fdisk kullanarak yarat\i{}n. Ard\i{}ndan
s\"{o}zkonusu b\"{o}l\"{u}m\"{u} FAT veya HPFS olarak formatlay\i{}n ki OS/2 tan\i{}yabilsin.

Bundan sonra LILO'yu linux dosya sisteminin oldu\u{g}u b\"{o}l\"{u}me
kurun. (yukar\i{}daki \"{o}rnekte {\tt /dev/hda2}). {\tt /etc/lilo.conf} dosyas\i{}n\i{}n linux
i\c{c}in kullan\i{}lan sat\i{}rlar\i{}n\i{}n son durumu \c{s}u \c{s}ekilde olacakt\i{}r:

\begin{verbatim}
       boot = /dev/hda2

       image = /vmlinuz
         label = linux
         root = /dev/hda2
\end{verbatim}


{\tt /sbin/lilo} dosyas\i{}n\i{}n \c{c}al\i{}\c{s}t\i{}r\i{}lmas\i{}n\i{}n ard\i{}ndan OS/2 \"{o}ny\"{u}kleyicisine linux b\"{o}l\"{u}m\"{u}n\"{u} tan\i{}t\i{}n. Benzer yordamlar\i{}, sorun \c{c}\i{}karan i\c{s}letim sistemleri i\c{c}in de kullanabilirsiniz.




\section{Sorun \c{C}\i{}kt\i{}\u{g}\i{}nda}



Tabii ki temennimiz sorun \c{c}\i{}kmamas\i{}, ama her nedense her zaman bu sat\i{}rlar\i{} okuyacak birka\c{c} ki\c{s}i olacakt\i{}r. Linux \"{u}zerinde kendi ihtiyac\i{}n\i{}za g\"{o}re ayarlanamayacak bir parametre yok gibidir. Bu \"{o}zelli\u{g}i sayesinde son derece esnek bir \c{c}al\i{}\c{s}ma ortam\i{} haline gelebilir. Ayn\i{} \"{o}zellik ki\c{s}ilerin \c{c}o\u{g}u zaman kendi \c{c}\"{o}z\"{u}mlerini bulmalar\i{}n\i{} da beraberinde getirmektedir. Kendi bilgisayar\i{}n\i{}zda Linux \c{c}al\i{}\c{s}mak i\c{c}in bir miktar d\"{o}k\"{u}man kar\i{}\c{s}t\i{}rman\i{}z ka\c{c}\i{}n\i{}lmazd\i{}r.

\c{C}\i{}kabilecek en \"{o}nemli sorun bilgisayar\i{}n a\c{c}\i{}lmamas\i{}d\i{}r. Bunun bir\c{c}ok sebebi olabilir. A\c{c}\i{}l\i{}\c{s} esnas\i{}nda 

\begin{enumerate}
\item \.{I}lk olarak LILO \c{c}al\i{}\c{s}\i{}r.
\item \c{C}ekirdek y\"{u}klenir.
\item Hizmet veren yaz\i{}l\i{}mlar teker teker \c{c}al\i{}\c{s}maya ba\c{s}larlar.
\end{enumerate}


Her a\c{s}ama bir\c{c}ok sat\i{}rda durumunu belirtecektir. \c{C}al\i{}\c{s}an yaz\i{}l\i{}mlar veya yaz\i{}l\i{}m par\c{c}alar\i{}n\i{}n her biri birbirinden ba\u{g}\i{}ms\i{}z oldu\u{g}u i\c{c}in a\c{c}\i{}l\i{}\c{s} s\i{}ras\i{}nda geldi\u{g}iniz nokta \c{c}ok \"{o}nemlidir. LILO \c{c}al\i{}\c{s}mad\i{}\u{g}\i{}nda veya \c{c}ekirdek y\"{u}klenirken tak\i{}l\i{}rsa boot disketi ile rahatl\i{}kla sistemi a\c{c}abilirsiniz. \"{O}rnek olarak Linux y\"{u}kl\"{u} disk b\"{o}l\"{u}m\"{u}n\"{u}z\"{u}n /dev/hda2 oldu\u{g}unu varsayal\i{}m. Boot disketi parametre istedi\u{g}inde 

\begin{verbatim}
mount root=/dev/hda2
\end{verbatim}


yazman\i{}z yeterli olacakt\i{}r. Bu durumda boot disketinde yer alan \c{c}ekirdek ile belirtti\u{g}iniz b\"{o}l\"{u}mde yer alan Linux hiyerar\c{s}isi a\c{c}\i{}lacakt\i{}r. \c{C}al\i{}\c{s}an bu sisteminiz i\c{c}erisinde art\i{}k hatan\i{}n kayna\u{g}\i{}n\i{} daha rahat bulabilirsiniz.

\c{C}ekirde\u{g}in y\"{u}kleme esanas\i{}nda tak\i{}lmas\i{} b\"{u}y\"{u}k \"{o}l\c{c}\"{u}de \c{c}ekirde\u{g}in donan\i{}m\i{} do\u{g}ru belirleyememesinden \c{c}\i{}kar. Mesela ethernet kart\i{}n\i{}z\i{} yanl\i{}\c{s} tan\i{}m\i{}\c{s} olabilir. Bunu \c{c}\"{o}zmenin temel y\"{o}ntemi \c{c}ekirdek i\c{c}erisinde kullanmayaca\u{g}\i{}n\i{}z donan\i{}mlara ili\c{s}kin destekleri kald\i{}rmak (T\"{u}m ethernet kartlar\i{}n\i{} destekleyen bir \c{c}ekirdek yerine sadece kullanman\i{}z\i{}n muhtemel oldu\u{g}u ethernet kartlar\i{}na destek veren bir \c{c}ekirdek derlemek) veya \c{c}ekirde\u{g}e yard\i{}mc\i{} olabilecek a\c{c}\i{}l\i{}\c{s} parametreleri vermek.

\c{C}ekirdek derlemek hakk\i{}nda {\em Kernel-HOWTO\/} ve boot parametreleri hakk\i{}nda {\em BootPromt-HOWTO\/} yard\i{}mc\i{} olabilirler. \c{C}al\i{}\c{s}an sisteminizde bir ar\i{}za meydana gelip de makina aniden \c{c}al\i{}\c{s}mamaya ba\c{s}larsa en son yapt\i{}\u{g}\i{}n\i{}z de\u{g}i\c{s}iklikleri g\"{o}zden ge\c{c}irin. 

Ve son olarak, sistemin \c{c}al\i{}\c{s}mamas\i{} her zaman Linux'tan kaynaklanmayabilir, donan\i{}m ile ilgili sorunlar da ya\c{s}ayabilirsiniz. Rasgele davran\i{}\c{s}lar, durup dururken \c{c}ak\i{}lmalar, panik mesajlar\i{} alt\i{}nda, bozuk sabit diskler, normalden y\"{u}ksek frekansta \c{c}al\i{}\c{s}t\i{}r\i{}lan i\c{s}lemciler ve sistem saatine g\"{o}re yava\c{s} ka\c{c}an veya bozuk RAM'lar yatabilir. 




\section{Ba\c{s}lang\i{}\c{c}ta}



Bu sat\i{}rlar\i{} okudu\u{g}unuza g\"{o}re \c{c}al\i{}\c{s}\i{}r durumda bir Linux sisteminiz
var demektir. Hala silmediniz mi yoksa? \c{S}aka bir yana, b\"{u}y\"{u}k
badireler atlatt\i{}n\i{}z. \"{O}n\"{u}n\"{u}ze say\i{}s\i{}z engeller \c{c}\i{}kabilirdi. Kurarken
elektrikler kesilebilirdi, sabit disk \c{c}izilebilirdi veya yanl\i{}\c{s} b\"{o}l\"{u}m\"{u}
formatlayabilirdiniz. \"{O}zellikle Linux Slackware da\u{g}\i{}t\i{}m\i{}n\i{} kurmak,
d\"{o}k\"{u}mantasyon olmadan veya hat\i{}rl\i{} bir arkada\c{s}\i{}n yard\i{}m\i{} olmaks\i{}z\i{}n
ger\c{c}ekten zordur.

Bu b\"{o}l\"{u}mde Linux'a k\"{u}\c{c}\"{u}k bir giri\c{s} yap\i{}lacak, daha sonra da UNIX
kullanmayanlar sistemle tan\i{}\c{s}t\i{}racakt\i{}r. B\"{o}l\"{u}m boyunca yapman\i{}z gereken
korkmadan sistem \"{u}zerinde kolayl\i{}kla gezinti yapmak ve dosyalar\i{}
kurcalamakt\i{}r.

\"{O}nceki b\"{o}l\"{u}nde sisteme girebilmek i\c{c}in \c{s}ifresi olmayan "root" kullan\i{}c\i{}y\i{}
kullanm\i{}\c{s}t\i{}n\i{}z. Bu kullan\i{}c\i{} sistemde en fazla yetkiye sahip kullan\i{}c\i{}
olup sistem g\"{o}revlisi (sorumlusu) ad\i{}n\i{} al\i{}r. E\u{g}er root d\i{}\c{s}\i{}nda bir
kullan\i{}c\i{} hesab\i{} tan\i{}mlanm\i{}\c{s}sa onu kullan\i{}n. \c{S}ifre yaz\i{}ld\i{}ktan sonra
komut istemcisine, yani k\i{}saca kabuk dedi\u{g}imiz programa girilir.
\c{S}ifre yaz\i{}l\i{}rken, ba\c{s}kalar\i{}n\i{}n g\"{o}rmemesi i\c{c}in ekrana bas\i{}lmaz.

Kullan\i{}c\i{} isimleri veya \c{s}ifrelerde b\"{u}y\"{u}k ve k\"{u}\c{c}\"{u}k harfler aras\i{}nda fark
vard\i{}r. Root, root ve ROOT, farkl\i{} kullan\i{}c\i{}lara i\c{s}aret eder. Klavyenin
en sa\u{g}\i{}ndaki Caps Lock  tu\c{s}unun yanmad\i{}\u{g}\i{}na emin olun.

Sisteme ilk giri\c{s}te, a\c{s}a\u{g}\i{}daki gibi bir sat\i{}rla kar\c{s}\i{}la\c{s}acaks\i{}n\i{}z.

\begin{verbatim}
Welcome to Linux 1.2.13.

linux login: root
password:
Last login: Thu Feb 13 12:46:35 on tty1
Linux 1.2.13.
You have mail.
linux:~#
\end{verbatim}


Genellikle komut istemcisinin sonundaki karakter, root kullan\i{}c\i{}s\i{}
i\c{c}in {\tt \#}, di\u{g}er kullan\i{}c\i{}lar i\c{c}in {\tt \$} olur. Bu
karakterden \"{o}nce de makina ismi yeral\i{}r. MS-DOS'ta oldu\u{g}u gibi burada
UNIX komutlar\i{}n\i{} girebilece\u{g}iniz kabuk (shell) \"{u}zerindesiniz.

\c{S}ifreyi de\u{g}i\c{s}tirmek i\c{c}in kullan\i{}lan komut {\tt passwd} 'dir. Bir kullan\i{}c\i{} sadece kendi \c{s}ifresini de\u{g}i\c{s}tirirken root'a herkesin \c{s}ifresini de\u{g}i\c{s}tirme yetkisi verilmi\c{s}tir. Herhangi bir sistemde hesap \c{s}ifrenizi unutursan\i{}z, bunu sadece root de\u{g}i\c{s}tirebilir. Root  
iken {\tt passwd} yaz\i{}n ve enter tu\c{s}una bas\i{}n. 

\begin{verbatim}
linux:~# passwd
Changing password for root
Enter new password: *******
Re-type new password: ******
Password changed.
linux:~# 
\end{verbatim}


\c{S}ifrenizi iyi saklay\i{}n. Root \c{s}ifresini ele ge\c{c}iren birisi sistemde
istedi\u{g}i de\u{g}i\c{s}ikli\u{g}i yapabilir. \c{S}ifre se\c{c}imi i\c{c}in {\em Linux \.{I}\c{s}letim Sisteminde G\"{u}venlik\/} konu ba\c{s}l\i{}\u{g}\i{}na g\"{o}z gezdirin.

Linux komutlar\i{} hakk\i{}nda bilgi almak i\c{c}in {\tt man} komutu
kullan\i{}l\i{}r. E\u{g}er kurulum a\c{s}amas\i{}nda man dosyalar\i{}n\i{}n kopyalanmas\i{}
sorusuna olumlu yan\i{}t verilmi\c{s}se bunlar {\tt /usr/man} dizini alt\i{}nda
bulunurlar. \"{O}rne\u{g}in {\tt passwd} komutu hakk\i{}nda daha detayl\i{} bilgi
almak i\c{c}in

\begin{verbatim}
$ man passwd
\end{verbatim}


yaz\i{}n. T\"{u}m man sayfalar\i{} {\tt /usr/man} dizini alt\i{}nda 8 ayr\i{} dizinde
saklan\i{}r (man1 .. man8). Baz\i{} komutlar\i{}n man dosyalar\i{} birden fazla dizin
alt\i{}nda bulunur, bir dosya komut hakk\i{}nda temel bilgi verirken di\u{g}eri
sistem programc\i{}lar\i{}na y\"{o}nelik olabilir. \"{O}rnek olarak {\tt mount} komutu,
hem 2, hem de 8 numaral\i{} man dosyalar\i{}yla birlikte ar\c{s}ivlenmi\c{s}tir. C
programlay\i{}c\i{}s\i{}, mount komutuna ula\c{s}mak i\c{c}in

\begin{verbatim}
$ man 2 mount 
\end{verbatim}


yazarken normal kullan\i{}c\i{}, 

\begin{verbatim}
$ man 8 mount 
\end{verbatim}


yazmal\i{}d\i{}r. Bunun yan\i{}nda ba\c{s}l\i{}\u{g}\i{}nda belirli bir anahtar s\"{o}zc\"{u}\u{g}\"{u} i\c{c}eren
t\"{u}m man dosyalar\i{}n\i{} ara\c{s}t\i{}rmak i\c{c}in {\tt apropos} komutu kullan\i{}l\i{}r.

Her komut, bir veya birden \c{c}ok parametre alabilir. \"{O}rnek olarak,

\begin{verbatim}
find . -name "*.txt" -print
\end{verbatim}


komutu, bulundu\u{g}unuz yerden itibaren t\"{u}m dosyalar\i{} ara\c{s}t\i{}racak ve bunlar\i{}n
aras\i{}ndan sonu {\tt .txt} ile bitenleri ekrana basacakt\i{}r. Parametreler
genel olarak "-" i\c{s}aretleri ve bu i\c{s}aretten sonra gelen parametre ismi
ile belirtilirler.




\section{Linux Komut Yap\i{}s\i{}}



UNIX ve benzeri i\c{s}letim sitemlerinde kullan\i{}c\i{}n\i{}n komut yazmas\i{}n\i{}
sa\u{g}layan, bu komutlar\i{} yorumlayarak gerekli i\c{s}lemleri yapan programlara
{\em kabuk\/} (shell) ad\i{} verilir. UNIX'te bir kullan\i{}c\i{} bir dizi kabuktan
istedi\u{g}ini se\c{c}ebilir. Kabuklar ile ilgili ayr\i{}nt\i{}l\i{} bilgi ileride
verilecektir. Kulland\i{}\u{g}\i{}n\i{}z kabuk ne olursa olsun, gerek kabuktan
kaynaklanan, gerekse UNIX komutlar\i{}n\i{}n hepsinin uydu\u{g}u baz\i{}
standartlardan kaynaklanan baz\i{} geleneksel yap\i{}lar vard\i{}r. Bunlar\i{}
bilmeniz ilk kez duydu\u{g}unuz bir komutun kullan\i{}m\i{}n\i{} bile kolayca
\c{c}\i{}karabilmenizin yan\i{} s\i{}ra, bir dizi genel hatadan ka\c{c}\i{}nman\i{}z\i{} da
sa\u{g}layacakt\i{}r.

\begin{itemize}
\item  UNIX'te (ve Linux'ta) b\"{u}t\"{u}n komutlar ve dosya isimlerinde
b\"{u}y\"{u}k/k\"{u}\c{c}\"{u}k harf ayr\i{}m\i{} \"{o}nemlidir. Sistem komutlar\i{}n\i{}n ve
dosyalar\i{}n \c{c}o\u{g}u k\"{u}\c{c}\"{u}k harfle yaz\i{}l\i{}r. 
\item  Komut ve dosya adlar\i{}nda kullanaca\u{g}\i{}n\i{}z baz\i{} karakterlerin gerek
dosya ve dizin yap\i{}s\i{}, gerekse kabuk ve di\u{g}er komutlar nedeniyle
baz\i{} \"{o}zel anlamlar\i{} vard\i{}r. Bu karakterlerden yeri geldik\c{c}e s\"{o}z
edilecektir. \"{O}rne\u{g}in, `/' karakteri hi\c{c}bir dosya ad\i{}nda
bulunamaz (dosya ve dizinler i\c{c}in ayra\c{c} olarak
kullan\i{}ld\i{}\u{g}\i{}ndan). `-' ile ba\c{s}layan bir dosya olu\c{s}turulabilir
olsa da silmeye kalkt\i{}\u{g}\i{}nda yeni bir UNIX kullan\i{}c\i{}s\i{}n\i{}n ba\c{s}\i{}na 
dert a\c{c}abilir.
\item  UNIX'te komutlara se\c{c}enek verirken se\c{c}enekten \"{o}nce `-' karakteri 
kullan\i{}l\i{}r.  \"{O}rne\u{g}in {\tt ls -l} 
\item  UNIX komutlar\i{} tersi istenmedik\c{c}e girdilerini {\em standart
girdiden\/} (klavye) al\i{}r, \c{c}\i{}kt\i{}lar\i{}n\i{} {\em standart \c{c}\i{}kt\i{}ya\/}
(ekran) yazar. Bu \"{o}zellik ileride anlat\i{}lacak olan y\"{o}nlendirme
ve boru (pipe) \"{o}peratorleri ile birlikte komut sat\i{}r\i{}ndan bir\c{c}ok
i\c{s}lemi kolayca yapman\i{}z\i{} sa\u{g}lar.
\item  UNIX kabuklar\i{} komut sat\i{}r\i{}ndan verilen komutu \c{c}al\i{}\c{s}t\i{}rmadan \"{o}nce
bir dizi karakteri yorumlayarak dosya ad(lar)\i{}na \c{c}evirirler. Bu 
karakterler:
\begin{itemize}
\item  {\bf *} 0 dahil herhangi bir say\i{}da karakter yerine ge\c{c}er.
\"{O}rne\u{g}in {\tt rm *} komutu b\"{u}t\"{u}n dosyalar\i{} siler, {\tt ls
-l a*} komutu `a' ile ba\c{s}layan dosyalar\i{}n listesini
verir.
\item  {\bf ?} tek bir karakter yerine ge\c{c}er. \"{O}rne\u{g}in {\tt ??} ad\i{} iki
karakterden olu\c{s}an b\"{u}t\"{u}n dosyalar anlam\i{}na gelir.
\item  {\bf []} karakterleri aras\i{}nda yaz\i{}lan liste
i\c{c}indeki herhangi bir harfe d\"{o}n\"{u}\c{s}t\"{u}r\"{u}l\"{u}r. \"{O}rne\u{g}in {\tt cp
*[abc] /tmp } komutu `a', `b' ya da `c' ile
biten b\"{u}t\"{u}n dosyalar\i{} {\tt /tmp} dizinine
kopyalayacakt\i{}r. liste i\c{c}inde aralar\i{}na `-' i\c{s}areti
koyarak aral\i{}klar verebilirsiniz. \"{O}rne\u{g}in,
{\tt [A-Z]*} b\"{u}y\"{u}k harfle ba\c{s}layan b\"{u}t\"{u}n
dosyalar anlam\i{}na gelir. Liste i\c{c}indeki `\^{}'
karakteri sonras\i{}nda belirtilen liste d\i{}\c{s}\i{}ndaki b\"{u}t\"{u}n
karakterler anlam\i{}na gelir. \"{O}rne\u{g}in
{\tt *[\^{}0-9]*} ad\i{}nda rakam olmayan
herhangi bir dosya anlam\i{}na gelecektir.
\end{itemize}
\end{itemize}





\section{Dosya ve Dizin Yap\i{}s\i{}}



UNIX alt\i{}nda baz\i{} karakterlerin \"{o}zel anlamlar\i{} vard\i{}r. 
Dizin ve dosya
isimlerinin ba\c{s}\i{}nda nokta olmas\i{} durumunda bu dosyalar gizli dosya haline
gelir ve parametresiz yaz\i{}lan {\tt ls} komutuyla g\"{o}r\"{u}nmez.

Dosya ve dizin isimleri 255 karakteri a\c{s}amazlar. 

Sisteme girince \"{o}nceden tan\i{}mlanm\i{}\c{s} bir dizin alt\i{}nda bulunursunuz. Bu
dizin normal kullan\i{}c\i{}lar i\c{c}in  genellikle {\tt /home/} ve ard\i{}ndan gelen
kullan\i{}c\i{} dizini ismidir. Bulundu\u{g}unuz dizinin ismini g\"{o}rmek i\c{c}in {\tt pwd}
(print working directory) yaz\i{}n. Temel dosya ve dizin kavramlar\i{} hakk\i{}nda
detayl\i{} bilgi alabilmek i\c{c}in MS-DOS veya, en iyisi bir UNIX kitab\i{} edinin.

\begin{verbatim}
$ pwd
/home/gorkem
$
\end{verbatim}


UNIX komut yap\i{}s\i{} DOS'a \c{c}ok benzer. Dizin de\u{g}i\c{s}tirmek i\c{c}in {\tt cd} , dizin yaratmak i\c{c}in {\tt mkdir} komutlar\i{}n\i{} sistemde s\i{}k\c{c}a kullan\i{}l\i{}r. 

\begin{verbatim}
$ cd /
$ pwd 
/
\end{verbatim}


Hiyerar\c{s}ik bir s\i{}raya sahip olan UNIX'te en \"{u}stte {\tt /} dizini
(k\"{o}k dizin) yeral\i{}r. Sistemdeki t\"{u}m di\u{g}er dosya ve dizinler bunun
alt\i{}nda toplan\i{}rlar. 
\begin{verbatim}
~
\end{verbatim}
 i\c{s}areti, kullan\i{}c\i{}n\i{}n ev dizinini
g\"{o}sterir. Ev dizinine ge\c{c}in ve {\tt mkdir} komutu ile {\tt benim} isimli
bir dizin yarat\i{}n. Dizini patikas\i{}n\i{}, bir ba\c{s}ka deyi\c{s}le k\"{o}k dizininden
itibaren ismini vererek de yaratabilirsiniz.

\begin{verbatim}
$ cd ~
$ pwd
/home/gorkem
$ mkdir /home/gorkem/benim
\end{verbatim}





\subsection{Dosya Listesi ve \.{I}\c{c}eriklerinin G\"{o}r\"{u}nt\"{u}lenmesi}



Dosya ve dizinleri g\"{o}rebilmek i\c{c}in {\tt ls} komutu kullan\i{}l\i{}r.
Parametresiz yazarak bulundu\u{g}unuz dizin hakk\i{}nda bilgi al\i{}n. Linux
alt\i{}nda de\u{g}i\c{s}ik uzant\i{}l\i{} dosyalar okunabilirli\u{g}i art\i{}rmak amac\i{}yla
farkl\i{} renkte g\"{o}r\"{u}lecektir. {\tt /etc/DIR\_{}COLORS} dosyas\i{},
dosya renklerini ayarlar. Bu dosyay\i{} de\u{g}i\c{s}tirerek belirli dosyalar i\c{c}in
istenilen renkleri g\"{o}stermesini sa\u{g}layabilirsiniz.

\begin{verbatim}
linux:~$ ls
README  article.txt     mail       typescript
adres   linux           perl
\end{verbatim}


{\tt ls} komutu {\tt -a} parametresiyle birlikte kullan\i{}l\i{}rsa normalde
g\"{o}r\"{u}kmeyen ve nokta karakteriyle ba\c{s}layan dosya ve dizinler de
g\"{o}r\"{u}k\"{u}r.

\begin{verbatim}
linux:~$ ls -a
.               .bashrc         .term           article.txt     typescript
..              .kermrc         .xinitrc                linux
.Xdefaults      .less           README  mail
.bash_history   .lessrc         adres           perl
\end{verbatim}


{\tt -l} parametresi de dosyalar hakk\i{}nda t\"{u}m bilgiyi verir. Bunlar,
dosyan\i{}n sahibi, ne zaman yarat\i{}ld\i{}\u{g}\i{}, sahibi ve grubu gibi
bilgilerdir. Dosya izinleri hakk\i{}nda daha geni\c{s} bilgi bir sonraki
b\"{o}l\"{u}mde verilmi\c{s}tir.

\begin{verbatim}
linux:~$ ls -al
total 91
drwxr-xr-x   6 gorkem   users        1024 Feb 13 12:56 .
drwxr-xr-x   4 root     root         1024 Jan  7  1980 ..
-rw-r--r--   1 gorkem   users         390 Feb 13 12:56 .Xdefaults
-rw-r--r--   1 gorkem   ftpadm        230 Feb 13 12:57 .bash_history
-rw-r--r--   1 gorkem   users           1 Feb 13 12:57 .bashrc
-rw-r--r--   1 gorkem   users         163 Nov 24  1993 .kermrc
-rw-r--r--   1 gorkem   users          34 Nov 24  1993 .less
-rw-r--r--   1 gorkem   users         114 Nov 24  1993 .lessrc
drwxr-xr-x   2 gorkem   users        1024 Jan  7  1980 .term
-rw-r--r--   1 gorkem   users          87 Feb 13 12:56 .xinitrc
-rw-r--r--   1 gorkem   users       26264 Feb 13 12:53 README
-rw-r--r--   1 gorkem   users        2795 Feb 13 12:55 adres
-rw-r--r--   1 gorkem   users       47970 Feb 13 12:53 article.txt
drwxr-xr-x   2 gorkem   users        1024 Feb 13 12:54 linux
drwxr-xr-x   2 gorkem   users        1024 Feb 13 12:54 mail
drwxr-xr-x   2 gorkem   users        1024 Feb 13 12:54 perl
-rw-r--r--   1 gorkem   users           0 Feb 13 12:57 typescript
\end{verbatim}


Yukar\i{}da her iki parametrenin de birle\c{s}tirilerek birlikte kullan\i{}m\i{}
yeralmaktad\i{}r. Dosyalar\i{}n i\c{c}eriklerini g\"{o}rmek i\c{c}in kullan\i{}lan birka\c{c}
komuttan en prati\u{g}i {\tt less}'tir. Ok tu\c{s}lar\i{} ile dosya i\c{c}inde hareket
edebilir ve q karakteri ile dosyadan \c{c}\i{}kars\i{}n\i{}z. Dosyan\i{}n i\c{c}eri\u{g}i birden
fazla sayfadan ibaretse dosya sayfalar halinde ekrana gelir. T\"{u}m dosyay\i{}
ekrana basmak i\c{c}in {\tt cat} kullan\i{}n.

\begin{verbatim}
$ cat README
\end{verbatim}


Bir dosyan\i{}n ba\c{s}\i{}ndan veya sonundan itibaren belirli miktarda sat\i{}r\i{}
ekrana getirmek de m\"{u}mk\"{u}nd\"{u}r. Bunun i\c{c}in {\tt head} ve {\tt tail} komutlar\i{}
kullan\i{}c\i{}n\i{}n hizmetine sunulmu\c{s}tur.

\begin{verbatim}
linux:~$ head -6 README  (dosyanin ilk 6 satirini ekrana basar)
This is the README file for the 28 August 1994 public release of the
Info-ZIP group's portable UnZip zipfile-extraction program (and related
utilities).

unzip512.zip    portable UnZip, version 5.12, source code distribution
unzip512.tar.Z  same as above, but compress'd tar format

linux:~$ tail -3 README (dosyanin son 3 satirini ekrana getirir)

-- Greg Roelofs (Cave Newt), UnZip maintainer/container/explainer and
   developer guy, with inspiration from David Kirschbaum
\end{verbatim}





\subsection{Dosyalar\i{}n Kopyalanmas\i{}}



Dosyalar\i{} kopyalamak i\c{c}in {\tt cp} ve bir yerden ba\c{s}ka bir dizine almak
i\c{c}in {\tt mv} komutu kullan\i{}l\i{}r. {\tt mv} komutu, ayn\i{} zamanda dosya
isimlerini de\u{g}i\c{s}tirmek \"{u}zere de i\c{s}letilebilir.

\begin{verbatim}
linux:~$ cp article.txt /tmp            
(article.txt isimli dosyayi /tmp dizinine kopyala)
linux:~$ mv article.txt /tmp/article            
(article.txt isimli dosyayi /tmp dizini altina ismini article olarak degistirerek koy
\end{verbatim}


Kopyalama i\c{s}lemi sadece dosyalar \"{u}zerinde de\u{g}il, dizinler \"{u}zerinde
de yap\i{}labilir. Farkl\i{} dosya sistemleri \"{u}zerinde olmamak kayd\i{}yla
bir dizin ve alt\i{}ndaki her\c{s}eyi, ba\c{s}ka bir dizine kopyalayabilir veya
hareket ettirebilirsiniz. Kopyalarken bu i\c{s}lem i\c{c}in {\tt -R} parametresi
kullan\i{}l\i{}r, {\tt mv} komutu i\c{c}in {\tt -r} parametresine gerek yoktur.

\begin{verbatim}
$ cp -R /home/gorkem/temp /tmp  
(/home/gorkem/temp dizinini ve icindeki her dosyayi /tmp altina kopyala)
$ mv article.txt ~/benim                
(article.txt isimli dosyayi calisma dizini altindaki benim dizinine kopyala)
\end{verbatim}





\subsection{Dosyalar\i{}n Silinmesi}



Bir daha kullan\i{}lmayacak olan dosyalar, {\tt rm} komutuyla
silinebilir. Dosyalar\i{} silerken iki kere d\"{u}\c{s}\"{u}n\"{u}n, zira Linux alt\i{}nda
silinen bir dosyan\i{}n geri d\"{o}n\"{u}\c{s}\"{u} olmaz. E\u{g}er bu t\"{u}r hatalar\i{} \c{c}ok
yap\i{}yorsan\i{}z {\tt rm} komutunu {\tt -i} parametresi ile birlikte kullan\i{}n,
bu sayede Linux, dosyay\i{} silmeden \"{o}nce kullan\i{}c\i{}n\i{}n da onay\i{}n\i{} al\i{}r.

\begin{verbatim}
linux:~$ rm -i README
rm: remove `README'? y  (sileyim mi ?)
linux:~$ 
\end{verbatim}


E\u{g}er dosya ismi {\tt -} karakteri ile ba\c{s}l\i{}yor ise, {\tt rm} komutunu
kulland\i{}\u{g}\i{}n\i{}z zaman dosya ismi bir parametre olarak alg\i{}lanacak ve
hata verecektir. Bunun i\c{c}in dosya isminden \"{o}nce {\tt --} karakterlerini
yerle\c{s}tirin.

\begin{verbatim}
linux:~$ rm -- -dosya
\end{verbatim}


Bir dizin, bo\c{s} iken {\tt rmdir} komutu ile silinebilir, e\u{g}er bo\c{s} de\u{g}ilse
bu komut i\c{s}e yaramaz. Onun yerine {\tt rm} komutunu {\tt -r} parametresiyle
kullan\i{}n.

\begin{verbatim}
linux:~$ rm mail                        
rm: mail: is a directory
linux:~$ rm -rf linux/          (linux dizinini icindekilerle birlikte silinir)
\end{verbatim}


{\tt -f} parametresi ile kullan\i{}c\i{}n\i{}n onay\i{}n\i{} almadan t\"{u}m dosyalar\i{} tek
ad\i{}mda silmek m\"{u}mk\"{u}nd\"{u}r. Bulundu\u{g}unuz dizindeki t\"{u}m dosyalar\i{} silmek
i\c{c}in * karakterini kullan\i{}n.

\begin{verbatim}
$ rm *
\end{verbatim}









\chapter{Kabuk \.{I}\c{s}lemleri}



Sisteme girdi\u{g}iniz anda kabuk program\i{}n\i{}n \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}\u{g}\i{}ndan
bahsetmi\c{s}tik. Bu andan sonra yapaca\u{g}\i{}n\i{}z t\"{u}m i\c{s}lemler bu kabuk program\i{}
taraf\i{}ndan y\"{o}netilir ve denetlenir. Kabuk, klavyeden girilen komutlar\i{}
\c{c}al\i{}\c{s}t\i{}rarak bir arabirim g\"{o}revi yapar. UNIX (ve Linux) alt\i{}nda
geli\c{s}tirilen say\i{}s\i{}z kabuk \c{c}e\c{s}idi ve bunlar\i{}n herbirinin kendine ait
\"{o}zelli\u{g}i vard\i{}r. Her programc\i{} kendi zevkine hitap eden kabu\u{g}u se\c{c}ebilir,
sistemde yeralan kullan\i{}c\i{}lar farkl\i{} kabuklar \"{u}zerinde \c{c}al\i{}\c{s}abilirler.



O an hangi kabuk \"{u}zerinde yerald\i{}\u{g}\i{}n\i{}z\i{} \"{o}\u{g}renmek i\c{c}in 
{\tt echo \$SHELL} yaz\i{}n.

\begin{verbatim}
$ echo $SHELL
/bin/bash
\end{verbatim}


S\i{}k\c{c}a kullan\i{}lan kabuklar,

{\bf sh (Shell ya da Bourne Shell):} \.{I}lk UNIX kabu\u{g}u.

{\bf ksh (Korn Shell):} sh uyumlu, bir\c{c}ok ek programlama \"{o}zelli\u{g}i i\c{c}eren bir kabuk. Bu kabuk da yayg\i{}n bir kitle taraf\i{}ndan kullan\i{}l\i{}yor.

{\bf bash(Bourne Again Shell):} Kullan\i{}m kolayl\i{}\u{g}\i{} bak\i{}m\i{}ndan en \c{c}ok ra\u{g}bet g\"{o}ren bash, GNU taraf\i{}ndan kaynak kodu olarak da\u{g}\i{}t\i{}l\i{}yor. {\em bash\/} {\em sh\/} ve {\em ksh\/} uyumlulu\u{g}unu korurken, \"{o}zellikle etkile\c{s}imli kullan\i{}ma y\"{o}nelik (komut tamamlama, gibi) bir\c{c}ok yenilik de i\c{c}erir. Bu yaz\i{}n\i{}n haz\i{}rland\i{}\u{g}\i{} 1997 Temmuz ay\i{} ba\c{s}lar\i{}nda Bash 2.0.1 s\"{u}r\"{u}m\"{u} \c{c}\i{}km\i{}\c{s}t\i{}.

{\bf csh (C shell):} Berkeley \"{U}niversitesi'nde geli\c{s}tirilen csh'in C diline benzer bir programlama yap\i{}s\i{} vard\i{}r.

{\bf tcsh:} csh'\i{}n biraz geli\c{s}tirilmi\c{s} hali.

Yukar\i{}daki kabuk programlar\i{}ndan {\tt sh, ksh ve bash} birbirleriyle
uyumludur ve yukar\i{}da en ilkelden en geli\c{s}mi\c{s}e g\"{o}re s\i{}ralanm\i{}\c{s}lard\i{}r. 
Ayn\i{} durum {\tt csh ve tcsh} i\c{c}in de ge\c{c}erlidir. Kullan\i{}lan shell
genellikle ki\c{s}isel bir tercih nedeni olsa da, b\"{u}t\"{u}n sistem scriptleri 
{\tt sh} ile yaz\i{}ld\i{}\u{g}\i{}ndan, sistem y\"{o}neticilerine {\tt sh} ailesinden bir
kabuk kullanmalar\i{} \"{o}nerilir.

Kabuk programlar\i{} genellikle {\tt /bin} dizini alt\i{}nda
yeral\i{}r.  Kullan\i{}c\i{}n\i{}n sisteme girerken hangi kabu\u{g}u kullanaca\u{g}\i{}
{\tt /etc/passwd} dosyas\i{}nda yeral\i{}r. Bunu de\u{g}i\c{s}tirmek i\c{c}in 
{\tt chsh} (change shell) komutunu kullanabilirsiniz.

\begin{verbatim}
$ chsh
Password:
Changing the login shell for cagri
Enter the new value, or press return for the default

        Login Shell [/bin/sh]: /bin/bash
$
\end{verbatim}


Sisteminizde {\em NIS\/} kullan\i{}l\i{}yorsa {\tt chsh} yerine {\tt yppasswd -s}
komutunu kullanmal\i{}s\i{}n\i{}z.




\section{Y\"{o}nlendirme}



Kullan\i{}c\i{}, ekrana yazd\i{}\u{g}\i{} bir komutun neler yapt\i{}\u{g}\i{}n\i{} en rahat \c{s}ekilde
komut taraf\i{}ndan ekrana y\"{o}nlendirilen bilgilerden anlayabilir. Program,
kullan\i{}c\i{}y\i{} bilgilendirme amac\i{}yla m\"{u}mk\"{u}n oldu\u{g}u kadar \c{c}ok, fakat
ortal\i{}\u{g}\i{} fazla kar\i{}\c{s}t\i{}rmamak i\c{c}in de m\"{u}mk\"{u}n oldu\u{g}u kadar az bilgiyi
ekrana vermelidir.






\section{Standart Girdi, \c{C}\i{}kt\i{} ve Hata }



Linux'ta, program\i{}n ekrana yaz\i{}lan bilgiyi iki s\i{}n\i{}f alt\i{}nda
toplayabiliriz. Birincisi, ola\u{g}and\i{}\c{s}\i{} bir durumu bildiren standart hata,
di\u{g}eri de her t\"{u}rl\"{u} verinin yaz\i{}ld\i{}\u{g}\i{} standart \c{c}\i{}kt\i{}. Program \c{c}al\i{}\c{s}t\i{}\u{g}\i{}
andan itibaren bu iki kanal \"{u}zerinden akan bilgiler, program\i{}n \c{c}al\i{}\c{s}t\i{}\u{g}\i{}
sanal terminale yaz\i{}l\i{}rlar. Program girdilerini ise standart girdi
arac\i{} olan klavyeden al\i{}r.

E\u{g}er bu bilgiler bir ekran boyundan (25 sat\i{}r) fazla tutuyorsa baz\i{}
sat\i{}rlar programc\i{}n\i{}n g\"{o}z\"{u}nden ka\c{c}abilir. Bunu \"{o}nlemek amac\i{}yla standart
\c{c}\i{}kt\i{} ve hata bir dosyaya yaz\i{}lacak \c{s}ekilde ayarlanabilir. Y\"{o}nlendirme
olarak da bilinen bu i\c{s}lem UNIX alt\i{}nda (DOS'ta oldu\u{g}u gibi) {\tt {$>$}} 
karakteri ile ger\c{c}ekle\c{s}tirilir.

\"{O}rnek olarak o an bulundu\u{g}unuz dizinde yeralan dosyalar\i{} ekrana getirin :

\begin{verbatim}
$ ls -al
\end{verbatim}


Bu komut, standart \c{c}\i{}kt\i{} olarak dosyalar\i{}n bilgilerini ekrana
getirecektir. Bu \c{c}\i{}kt\i{}y\i{}, bir dosyaya y\"{o}nlendirelim ve dosyan\i{}n i\c{c}eri\u{g}ine
g\"{o}z atal\i{}m:

\begin{verbatim}
linux:~$ ls -al > liste
linux:~$ cat liste
total 16
drwxr-xr-x   5 gorkem   users        1024 Feb 13 13:10 .
drwxr-xr-x   4 root     root         1024 Jan  7  1980 ..
-rw-r--r--   1 gorkem   users         390 Feb 13 12:56 .Xdefaults
-rw-r--r--   1 gorkem   ftpadm       2016 Feb 13 13:09 .bash_history
-rw-r--r--   1 gorkem   users           1 Feb 13 12:57 .bashrc
-rw-r--r--   1 gorkem   users         163 Nov 24  1993 .kermrc
-rw-r--r--   1 gorkem   users          34 Nov 24  1993 .less
-rw-r--r--   1 gorkem   users         114 Nov 24  1993 .lessrc
drwxr-xr-x   2 gorkem   users        1024 Jan  7  1980 .term
-rw-r--r--   1 gorkem   users          87 Feb 13 12:56 .xinitrc
-rw-r--r--   1 gorkem   users        2795 Feb 13 13:06 adres
-rw-r--r--   1 gorkem   users           0 Feb 13 13:10 liste
drwxr-xr-x   2 gorkem   users        1024 Feb 13 12:54 mail
drwxr-xr-x   2 gorkem   users        1024 Feb 13 12:54 perl
-rw-r--r--   1 gorkem   users           0 Feb 13 13:10 typescript
linux:~$ 
\end{verbatim}


{\tt {$>$}} karakteri standart hatay\i{} dosyaya y\"{o}nlendirmez. Bu i\c{s}lem i\c{c}in 
{\tt 2{$>$}} kullan\i{}l\i{}r. Ama hatay\i{} g\"{o}rebilmek i\c{c}in, hata yaratan bir 
komut yazmal\i{}y\i{}z, de\u{g}il mi ?

\begin{verbatim}
$ ls /deneme
/deneme : No such file or directory
$ ls /deneme 2> hata
$ cat hata
/deneme : No such file or directory
\end{verbatim}


A\c{s}a\u{g}\i{}daki komutun i\c{s}letilmesinin ard\i{}ndan standart \c{c}\i{}kt\i{} {\tt oku1} dosyas\i{}na,
standart hata ise {\tt oku2} dosyas\i{}na yaz\i{}lacakt\i{}r. Bu dosyalar\i{} komutu
\c{c}al\i{}\c{s}t\i{}rd\i{}ktan sonra incelemek suretiyle neler olup bitti\u{g}ini anlamak
m\"{u}mk\"{u}n olur.

\begin{verbatim}
$ mkdir ~/deneme           (deneme isimli bir dizin yarat)
$ touch ~/deneme/gecici    (gecici isimli bir dosya yarat)
$ cat ~/deneme 2>oku2 >oku1
\end{verbatim}


Kabuk, standart \c{c}\i{}kt\i{} ve standart girdi i\c{c}in s\i{}rayla 2 ve 1 numaralar\i{}n\i{}n
kullan\i{}m\i{}na izin verir. Yukar\i{}da yeralan son komutta, standart
hata mesajlar\i{} i\c{c}in 2 kullan\i{}larak hatalar\i{}n {\tt oku2} dosyas\i{}na
yaz\i{}lm\i{}\c{s}t\i{}r. A\c{s}a\u{g}\i{}da, \c{c}ekirdek derlemek i\c{c}in s\"{u}rekli kulland\i{}\u{g}\i{}m
program yeral\i{}yor. Y\"{o}nlendirme sayesinde ekrana gelmesi gereken mesajlar
kullan\i{}lmayan 9. sanal konsola y\"{o}nlendiriliyor.

\begin{verbatim}
# make config
# make dep > /dev/tty9
# make clean > /dev/tty9
# time make zImage > /dev/tty9
\end{verbatim}


Son sat\i{}rdaki {\tt time} komutu, kendinden sonra gelen komutun ne kadar
zaman i\c{c}inde \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}\u{g}\i{}n\i{} g\"{o}sterir. \c{C}ekirdek derlemede ge\c{c}en zaman,
makinan\i{}n g\"{u}c\"{u} hakk\i{}nda bir fikir verebilir. Peki ne hata, ne de \c{c}\i{}kt\i{}y\i{}
ekranda g\"{o}rmek istemiyorsam ne yapmal\i{}y\i{}m ? Bunun i\c{c}in standart \c{c}\i{}kt\i{}
ve hatay\i{} biraraya getirerek y\"{o}nlendirilen her \c{c}\i{}kt\i{}n\i{}n kayboldu\u{g}u
``kara deli\u{g}e'' atmak yeterlidir:

\begin{verbatim}
$ ls /deneme > /dev/null 2>&1 
\end{verbatim}


Yukar\i{}daki komutun yaz\i{}l\i{}\c{s} s\i{}ras\i{}na dikkat edin.

{\em Standart \c{c}\i{}kt\i{}\/} ya da {\em standart hata\/}y\i{} y\"{o}nlendirirken, {\tt {$>$}}
i\c{s}areti kullan\i{}rsan\i{}z: dosya yoksa, olu\c{s}turulur ve komutun \c{c}\i{}kt\i{}s\i{} dosyaya
yaz\i{}l\i{}r. Dosya varsa, i\c{c}eri\u{g}i yok olur, ve komutun \c{c}\i{}kt\i{}s\i{} dosyan\i{}n yeni
i\c{c}eri\u{g}i olur. Var olan bir dosyay\i{}n\i{}n eski i\c{c}eri\u{g}ini tamamen silmek
de\u{g}il de komutun \c{c}\i{}kt\i{}s\i{}n\i{} dosyaya eklemek istiyorsan\i{}z {\tt {$>$}{$>$}}
kullanmal\i{}s\i{}n\i{}z.  Bu durumda dosya varsa komutun \c{c}\i{}kt\i{}s\i{} dosyan\i{}n eski
i\c{c}eri\u{g}i korunarak sonuna eklenir, dosya yoksa olu\c{s}turulur ve komutun
\c{c}\i{}kt\i{}s\i{} dosyaya yaz\i{}l\i{}r. \"{O}rne\u{g}in:

\begin{verbatim}
$ echo deneme1 >>deneme.txt
$ cat deneme.txt
deneme1
$ echo deneme2 >>deneme.txt
$ cat deneme.txt
deneme1
deneme2
$
\end{verbatim}


\"{O}rnekte g\"{o}r\"{u}ld\"{u}g\"{u} gibi ilk komut {\tt deneme.txt} dosyas\i{}n\i{} olu\c{s}turdu. \.{I}kincisi ise olu\c{s}an dosyan\i{}n i\c{c}eri\u{g}ini koruyarak ikinci komutun \c{c}\i{}kt\i{}s\i{}n\i{} bu dosyan\i{}n sonuna ekliyor.

Standart hata ve \c{c}\i{}kt\i{}ya ek olarak UNIX'in destekledi\u{g}i bir y\"{o}nlendirme
daha vard\i{}r: Standart girdi sayesinde bir dosyay\i{} olu\c{s}turan sat\i{}rlar,
bir komut veya programa y\"{o}nlendirilebilir. Daha \"{o}nce bir metin editor
kullanarak haz\i{}rlam\i{}\c{s} oldu\u{g}umuz raporu patrona k\i{}sa yoldan g\"{o}ndermek
i\c{c}in,

\begin{verbatim}
$ mail -s "rapor" patron < rapor.txt
\end{verbatim}


Dosyan\i{}n i\c{c}eri\u{g}i, mail komutuna girdi olmu\c{s} ve {\tt rapor.txt} dosyas\i{}
{\tt patron} kullan\i{}c\i{}s\i{}na ``rapor'' konu ba\c{s}l\i{}\u{g}\i{}yla e-posta ile 
g\"{o}nderilmi\c{s}tir.




\section{Boru (pipe) \.{I}\c{s}lemleri}



Baz\i{} durumlarda, bir komutun \c{c}\i{}kt\i{}s\i{} di\u{g}er bir komuta
y\"{o}nlendirilebilir. Ba\c{s}ka bir deyi\c{s}le, komutun standart \c{c}\i{}kt\i{}s\i{}n\i{}
bir dosyaya de\u{g}il, bu \c{c}\i{}kt\i{}y\i{} i\c{s}leyecek ba\c{s}ka bir komuta y\"{o}nlendirmek
istiyorsunuz. Bu ama\c{c}la UNIX alt\i{}nda (yine DOS'ta oldu\u{g}u gibi) boru ({\verbar})
karakteri kullan\i{}l\i{}r. Bu karakter, kendinden \"{o}nce gelen komut veya komut
serisinin \c{c}\i{}kt\i{}s\i{}n\i{}, kendinden sonra gelen komuta g\"{o}nderir. \"{O}rne\u{g}in bir
dizinde yeralan t\"{u}m dosyalar\i{} yaz\i{}c\i{}ya aktarmak i\c{c}in,

\begin{verbatim}
$ ls -al | lpr
\end{verbatim}


komutlar\i{} kullan\i{}labilir. Art\i{}k {\tt ls -al} komutunun ekrana vermesi gereken
t\"{u}m bilgiler, {\tt lpr} komutu arac\i{}l\i{}\u{g}\i{}yla yaz\i{}c\i{}ya g\"{o}nderilmi\c{s}tir. \.{I}lk komutun
standart \c{c}\i{}kt\i{}s\i{}, ikinci komuta standart girdi olarak atan\i{}r. Di\u{g}er bir
\"{o}rnekte, {\tt README} dosyas\i{}nda ka\c{c} sat\i{}r oldu\u{g}u bulunuyor. Bir dosyadaki
veya komut \c{c}\i{}kt\i{}s\i{}ndaki sat\i{}r, karakter ve kelime say\i{}lar\i{}n\i{} bulmak i\c{c}in {\tt wc} komutunu
kullanabilirsiniz. 

\begin{verbatim}
$ who | wc -l
40
\end{verbatim}


Y\"{o}nlendirme ve pipe i\c{s}lemleri bazen insan\i{}n kafas\i{}n\i{}
kar\i{}\c{s}t\i{}rabilir. Y\"{o}nlendirme, bir programdan bir dosyaya yap\i{}labilir,
fakat bir programdan ba\c{s}ka bir programa y\"{o}nlendirme yapamazs\i{}n\i{}z. Benzer
\c{s}ekilde, iki dosyan\i{}n aras\i{}nda pipe i\c{s}lemi uygulamak m\"{u}mk\"{u}n olmaz.

\c{S}imdi de biraz kar\i{}\c{s}\i{}k bir \"{o}rnek:

\begin{verbatim}
# ps -aux | grep inetd | grep -v grep|awk '{print $2}' | xargs kill -1
\end{verbatim}


Yukar\i{}daki \"{o}rnek zorlama bir \"{o}rnek de\u{g}il, bir Linux sistem y\"{o}neticisinin
her an kullanmas\i{} gerekebilecek t\"{u}rden. Bu \"{o}rne\u{g}i burada ayr\i{}nt\i{}l\i{}
olarak a\c{c}\i{}klamayaca\u{g}\i{}z, sadece {\em pipe\/} kullanarak ne kadar fazla
say\i{}da komutun birbirine ba\u{g}lanabildi\u{g}ini g\"{o}stemek amac\i{}yla verdik.
Bu ve benzeri komutlar\i{}n ayr\i{}nt\i{}l\i{} a\c{c}\i{}klamalar\i{}n kabuk programlamayla
ilgili b\"{o}l\"{u}mde bulabilirsiniz.




\section{\c{C}okg\"{o}revlilik}



UNIX'in en b\"{u}y\"{u}k silahlar\i{}ndan biri s\"{u}re\c{c}lerdir. Her s\"{u}re\c{c} sistemde
ba\u{g}\i{}ms\i{}z \c{c}al\i{}\c{s}an, birbirini etkilemeyen ve herbiri kendi kayna\u{g}\i{}n\i{}
kullanan programd\i{}r. S\"{u}re\c{c}ler arkaplanda veya kabu\u{g}un kontrol\"{u}nde
\c{c}al\i{}\c{s}abilir. \c{C}ekirdek, her s\"{u}recin kulland\i{}\u{g}\i{} sistem kayna\u{g}\i{}ndan
haberdar olur ve bu kaynaklar\i{}n s\"{u}re\c{c}ler aras\i{}nda adilce payla\c{s}\i{}lmas\i{}ndan
sorumludur.

Bir s\"{u}re\c{c}, aksi belirtilmedik\c{c}e \c{c}al\i{}\c{s}t\i{}\u{g}\i{} s\"{u}re i\c{c}inde klavyeden bilgi
al\i{}r ve ekrana bilgi verir.

Kullan\i{}c\i{}lar\i{}n haberi bile olmadan \c{c}al\i{}\c{s}an s\"{u}re\c{c}ler, Linux makinas\i{}ndaki
G/\c{C} i\c{s}lemlerini ger\c{c}ekle\c{s}tirebilmek i\c{c}in s\"{u}rekli faaliyet i\c{c}inde
bulunurlar. Onlarca s\"{u}re\c{c}ten baz\i{}lar\i{} kullan\i{}c\i{}lar\i{}n sisteme girmesini
sa\u{g}larken (getty) baz\i{}lar\i{} da WWW ve FTP gibi \.{I}nternet tabanl\i{} istekleri
yerine getirir (httpd, ftpd).




\subsection{Arkaplanda \c{C}al\i{}\c{s}t\i{}rma}



Bir komutu arkaplanda \c{c}al\i{}\c{s}t\i{}rmak i\c{c}in, komutun sonuna {\tt \&} karakteri
getirin. Komutu girdikten sonra tekrar kabuk istemcisine d\"{u}\c{s}ecek ve kald\i{}\u{g}\i{}n\i{}z
yerden devam edebileceksiniz. Program, arkaplanda di\u{g}er s\"{u}re\c{c}lerle
\c{c}ak\i{}\c{s}madan bir s\"{u}re \c{c}al\i{}\c{s}\i{}r ve i\c{s}i bitti\u{g}inde durur.

\begin{verbatim}
$ sort buyuk_dosya > buyuk_dosya.sirali &
[1] 772
\end{verbatim}


Komutun arkaplana at\i{}lmas\i{}ndan sonra ekranda yeralan $1$ , s\"{u}recin s\i{}ra
numaras\i{}n\i{}, 772 say\i{}s\i{} ise s\"{u}re\c{c} kimli\u{g}ini (Process ID) g\"{o}sterir. 
Her program, sistem kaynaklar\i{}n\i{} biraz daha azaltt\i{}\u{g}\i{}ndan Linux'\c{c}ular\i{}n deyimiyle makina {\em yava\c{s}lar\/}.

\c{C}al\i{}\c{s}an programlar\i{}n listesini g\"{o}rmek i\c{c}in {\tt ps} komutunu kullan\i{}n. Hi\c{c}
parametre vermeden yaz\i{}l\i{}rsa sadece \"{u}zerinde \c{c}al\i{}\c{s}\i{}lan kullan\i{}c\i{}n\i{}n
s\"{u}re\c{c}leri ekrana gelir. S\i{}k kullan\i{}lan bir ba\c{s}ka parametre dizisi de {\tt uax}
tir. Bu sayede sistemdeki o anda \c{c}al\i{}\c{s}an t\"{u}m programlar daha ayr\i{}nt\i{}l\i{} 
bir \c{s}ekilde ekrana listelenir.

\begin{verbatim}
$ ps
PID TTY STAT  TIME COMMAND
   76 v02 S     0:00 -bash
  111 v02 R     0:00 ps
\end{verbatim}


\begin{verbatim}
$ ps -aux
USER       PID %CPU %MEM SIZE  RSS TTY STAT START   TIME COMMAND
bin         63  0.0  5.5   64  364  ?  S    11:12   0:00 /usr/sbin/rpc.portmap
gorkem      76  0.0  9.7  101  644 v02 S    11:12   0:00 -bash
gorkem     112  0.0  5.0   59  332 v02 R    11:16   0:00 ps -aux
root         1  0.0  5.0   56  332  ?  S    11:12   0:00 init [5]               
root         6  0.0  4.2   35  284  ?  S    11:12   0:00 bdflush (daemon)
root         7  0.0  4.2   35  284  ?  S    11:12   0:00 update (bdflush)
root        48  0.0  5.1   45  340  ?  S    11:12   0:00 /usr/sbin/crond -l10
root        59  0.0  5.5   53  364  ?  S    11:12   0:00 /usr/sbin/syslogd
root        61  0.0  5.0   44  336  ?  S    11:12   0:00 /usr/sbin/klogd
root        65  0.0  5.5   62  364  ?  S    11:12   0:00 /usr/sbin/inetd
root        67  0.0  5.8   79  388  ?  S    11:12   0:00 /usr/sbin/rpc.mountd
root        69  0.0  6.0   88  400  ?  S    11:12   0:00 /usr/sbin/rpc.nfsd
root        75  0.1  9.9  115  660 v01 S    11:12   0:00 -bash
root        77  0.0  4.6   52  304 v03 S    11:12   0:00 /sbin/agetty 38400 tty3
root        78  0.0  4.6   52  304 v04 S    11:12   0:00 /sbin/agetty 38400 tty4
root        79  0.0  4.6   52  304 v05 S    11:12   0:00 /sbin/agetty 38400 tty5
root        80  0.0  4.6   52  304 v06 S    11:12   0:00 /sbin/agetty 38400 tty6
root        81  0.0  5.5   42  368  ?  S    11:12   0:00 gpm -t ms
\end{verbatim}






Burada yeralan bilgiler s\i{}ras\i{}yla :

\begin{itemize}
\item {\em PID:\/} s\"{u}re\c{c} numaras\i{}. Her s\"{u}recin farkl\i{} bir numara almas\i{} sistem
taraf\i{}ndan d\"{u}zenlenir.
\item {\em \%CPU:\/} \.{I}\c{s}lemcinin \% olarak ne kadar\i{} s\"{u}re\c{c} taraf\i{}ndan kullan\i{}l\i{}yor ?
\item {\em \%MEM:\/} \% olarak haf\i{}zada kaplad\i{}\u{g}\i{} yer
\item {\em SIZE:\/} Program\i{}n toplam kulland\i{}\u{g}\i{} bellek alan\i{} (kilobyte)
\item {\em RSS:\/} Program\i{}n bellekte kaplad\i{}\u{g}\i{} ger\c{c}el alan. Bu de\u{g}er
payla\c{s}\i{}lan sistem k\"{u}t\"{u}phaneleri (shared library) nedeniyle 
genellikle {\tt SIZE} de\u{g}erinden k\"{u}\c{c}\"{u}kt\"{u}r.
\item {\em TTY:\/} s\"{u}recin \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}\u{g}\i{} (sanal) terminal
\item {\em STAT:\/} s\"{u}re\c{c} o s\i{}rada ne yap\i{}yor ?
\begin{itemize}
\item {\em S:\/} Uyumakta, bu durum genellikle s\"{u}recin bir
G/\c{C} i\c{s}lemi (\"{o}rne\u{g}in fare'nin hareketi ya da 
a\u{g}dan gelecek veriler) beklemesi s\i{}ras\i{}nda olur.
\item {\em R:\/} \c{C}al\i{}\c{s}abilir. \c{C}al\i{}\c{s}abilir s\"{u}re\c{c}ler, gereksinim
duyduklar\i{} b\"{u}t\"{u}n sistem kaynaklar\i{}na sahip olan
s\"{u}reclerdir. \c{C}ekirdek (tek i\c{s}lemcili bir makinada) belirli 
aral\i{}klarla bu s\"{u}re\c{c}lerden sadece birini \c{c}al\i{}\c{s}t\i{}r\i{}r.
\item {\em T:\/} Durmu\c{s}. Bu durum s\"{u}recin kullan\i{}c\i{} taraf\i{}ndan 
(\"{o}rne\u{g}in {\tt Control-Z} tu\c{s}lar\i{}na bas\i{}larak)
durdurulmas\i{}nda g\"{o}r\"{u}l\"{u}r.
\item {\em Z:\/} Zombie. Bu t\"{u}r s\"{u}re\c{c}ler, kendisini \c{c}al\i{}\c{s}t\i{}ran s\"{u}rece
mesaj b\i{}rakamad\i{}klar\i{}ndan tak\i{}lm\i{}\c{s} s\"{u}re\c{c}lerdir.
{\em \"{O}ld\"{u}r\"{u}lemezler\/} ancak sitem kaynaklar\i{}n\i{} da
kullanmazlar.
\item {\em D:\/} Kesilemez uykuda. Baz\i{} G/\c{C} i\c{s}lemleri o
s\i{}rada bu i\c{s}lemi yapan s\"{u}recin kesilmemesini gerektirir.
B\"{o}yle durumdaki s\"{u}re\c{c}leri de ilgili G/\c{C} i\c{s}lemi bitinceye 
kadar \"{o}ld\"{u}remezsiniz.
\end{itemize}
\item {\em START:\/} s\"{u}recin \c{c}al\i{}\c{s}t\i{}\u{g}\i{} zaman
\item {\em COMMAND:\/} komut sat\i{}r\i{}ndan girilen program\i{}n ismi
\end{itemize}


{\tt ps} komutuna bilgisayar \"{u}zerinde \c{c}al\i{}\c{s}t\i{}\u{g}\i{}n\i{}z her an ihtiya\c{c} duyman\i{}z
m\"{u}mk\"{u}nd\"{u}r, bu y\"{u}zden \c{c}e\c{s}itli parametrelerle kullanmay\i{} \"{o}\u{g}renmelisiniz.






\subsection{Klavye \"{U}zerinden Kesinti}



Linux (ve UNIX) alt\i{}nda, klavyeden baz\i{} tu\c{s} kombinasyonlar\i{} yard\i{}m\i{}yla
\c{c}al\i{}\c{s}makta olan program kesintiye u\u{g}rat\i{}labilir.

Klavyeden kabuk komut sat\i{}r\i{}na yaz\i{}lan bir program\i{}n uzun s\"{u}rmesi halinde,
e\u{g}er daha \"{o}nceden komutun arkas\i{}na {\tt \&} i\c{s}areti koyup arkaplanda \c{c}al\i{}\c{s}\i{}r
halde b\i{}rak\i{}lmam\i{}\c{s}sa, klavyeden yap\i{}lan bir m\"{u}dahele ile durdurulup
arkaplanda \c{c}al\i{}\c{s}\i{}r hale getirilebilir. \"{O}rnek vermek gerekirse, uzun
s\"{u}rmesi beklenen bir komutu klavyeden yazal\i{}m ve ard\i{}ndan {\tt Control-Z}
tu\c{s}lar\i{}na basal\i{}m:

\begin{verbatim}
linux:/etc/rc.d# find /usr -name "o*" -print
/usr/bin/od
/usr/lib/lilo/doc/other.fig
/usr/lib/lilo/doc/other.tex
/usr/man/man1/od.1.gz

[1]+  Stopped                 find /usr -name "o*" -print
linux:/etc/rc.d#
\end{verbatim}


Bu esnada s\"{u}recin \c{c}al\i{}\c{s}mas\i{}na ara verilmi\c{s}, fakat program tamamen
durmam\i{}\c{s}t\i{}r. Program\i{}n \c{c}al\i{}\c{s}mas\i{}n\i{} arkaplanda s\"{u}rd\"{u}rmek i\c{c}in {\tt bg}
komutunu kullan\i{}n.

\begin{verbatim}
$ bg
\end{verbatim}


Bu komutu tekrar komut sat\i{}r\i{}nda \c{c}al\i{}\c{s}acak ve klavyeden bilgi girilecek
\c{s}ekilde terminale ba\u{g}lamak i\c{c}in {\tt fg} yaz\i{}n:

\begin{verbatim}
$ fg
\end{verbatim}


Bir program\i{} \c{c}al\i{}\c{s}t\i{}rmaya ba\c{s}latt\i{}ktan sonra tamamen durdurmaya karar
vermi\c{s}seniz klavyeden {\tt Control-C} tu\c{s}lar\i{}na bas\i{}n.

Durdurulup arkaplanda \c{c}al\i{}\c{s}maya y\"{o}nlendirilen s\"{u}re\c{c}lere k\i{}saca {\em g\"{o}rev\/}
ismi verilir. T\"{u}m g\"{o}revleri g\"{o}rebilmek i\c{c}in

\begin{verbatim}
$ jobs
\end{verbatim}


yaz\i{}n. G\"{o}revler, birden fazla olduklar\i{} zaman s\i{}ra numaras\i{} ile
belirtilirler.






\subsection{S\"{u}re\c{c}lerin Sona Erdirilmesi}



Her an \c{c}al\i{}\c{s}an s\"{u}re\c{c}lerden biri veya birka\c{c}\i{}, beklenmedik d\"{o}ng\"{u}ye
girebilir. Bunun sonucu olarak sistemin kaynaklar\i{}n\i{}, \"{o}zellikle haf\i{}zay\i{}
t\"{u}ketici bir duruma gelebilir. Bu t\"{u}r k\i{}s\i{}r d\"{o}ng\"{u}ye giren s\"{u}re\c{c}leri bulup,
e\u{g}er hayati \"{o}nem ta\c{s}\i{}m\i{}yorlarsa `\"{o}ld\"{u}rmek' gerekir. S\"{u}reci \"{o}ld\"{u}rmekten
kas\i{}t, program\i{} tamamen durdurarak sistemle ili\c{s}kisini kesmektir. Bu
sayede program\i{}n haf\i{}zada kaplad\i{}\u{g}\i{} b\"{o}lge serbest kalacak, \c{c}ekirdek
de haf\i{}za d\"{u}zenlemesini tekrar yaparak ba\c{s}ka s\"{u}re\c{c}lere daha fazla yer
ay\i{}racakt\i{}r. Bir s\"{u}reci \"{o}ld\"{u}rmek i\c{c}in {\tt kill} komutu kullan\i{}l\i{}r. 
Yukar\i{}daki 67 numaral\i{} s\"{u}rece ait {\tt /usr/sbin/rpc.mountd} 
program\i{}n\i{} \"{o}ld\"{u}rmek i\c{c}in \c{s}unlar\i{} yaz\i{}n :

\begin{verbatim}
$ kill 67
\end{verbatim}


Bir\c{c}ok s\"{u}re\c{c} sizden bu mesaj\i{} ald\i{}ktan sonra, dosya sistemi \"{u}zerinde
yaratt\i{}\u{g}\i{} ge\c{c}ici dosyalar\i{}, dosyalar \"{u}zerine koydu\u{g}u kilitleri
temizlemek gibi yapmas\i{} gereken i\c{s}lemleri yaptiktan sonra \c{c}al\i{}\c{s}mas\i{}na
son verecektir. E\u{g}er \"{o}ld\"{u}rmeye \c{c}al\i{}\c{s}t\i{}\u{g}\i{}n\i{}z s\"{u}re\c{c} herhangi bir nedenle
tak\i{}lm\i{}\c{s}sa ve bu komuta tepki vermiyorsa a\c{s}a\u{g}\i{}dakini deneyin:

\begin{verbatim}
$ kill -9 67
\end{verbatim}


Art\i{}k program\i{}n sistemle ili\c{s}kisi tamamen kesilmi\c{s}tir. Kill komutu,
{\tt -9} se\c{c}ene\u{g}iyle s\"{u}rece 9 numaral\i{} sinyali g\"{o}nderir. Bu sinyali
alan s\"{u}recin yukar\i{}da s\"{o}z\"{u} edilen iki \"{o}zel durum d\i{}\c{s}\i{}nda \c{c}al\i{}\c{s}may\i{}
s\"{u}rd\"{u}rmesi olanaks\i{}zd\i{}r. {\tt -9} se\c{c}ene\u{g}ini \"{o}zellikle sistem s\"{u}re\c{c}leri
\"{u}zerinde gerekmedik\c{c}e kullanmamal\i{}s\i{}n\i{}z. Di\u{g}er sinyaller ve anlamlar\i{}
yeri geldik\c{c}e di\u{g}er b\"{o}l\"{u}mlerde anlat\i{}lacakt\i{}r.






\chapter{Dosya ve Dizin \.{I}\c{s}lemleri}



T\i{}pk\i{} MS-DOS'ta oldu\u{g}u gibi Linux dosya yap\i{}s\i{}n\i{}n da hiyerar\c{s}ik bir
yap\i{}ya sahip oldu\u{g}unu s\"{o}ylemi\c{s}tik. Temel dosya bilgisi \"{o}nceki konularda
anlat\i{}ld\i{}\u{g}\i{}ndan burada sadece dosya ve dizinlerle ilgili \"{o}zelliklere
de\u{g}inilecektir.




\section{Eri\c{s}im Haklar\i{}}



Eri\c{s}im haklar\i{}, Linux dosya sistemi g\"{u}venli\u{g}inin belkemi\u{g}ini
olu\c{s}turur. Her dosyaya ayr\i{} verilebilen eri\c{s}im izinleri sayesinde \c{c}ok
daha rahat bir sistem y\"{o}netimi ger\c{c}ekle\c{s}tirilebilir. Bu, konuya sadece
sistem g\"{o}revlisi taraf\i{}ndan yakla\c{s}\i{}ld\i{}\u{g}\i{} zaman \c{c}\i{}kart\i{}labilecek bir
sonu\c{c}tur. Kullan\i{}c\i{} baz\i{}nda eri\c{s}im haklar\i{} bazen daha da anlaml\i{}
olabilir. Yanl\i{}\c{s} kullan\i{}ld\i{}\u{g}\i{}nda ho\c{s} olmayan s\"{u}prizlere yol
a\c{c}abilir. Linux alt\i{}nda \"{u}\c{c} \c{c}e\c{s}it eri\c{s}im hakk\i{} vard\i{}r :

\begin{itemize}
\item {\bf Okuma izni} : Dosyan\i{}n okuma izni varsa i\c{c}eri\u{g}i g\"{o}r\"{u}lebilir, dizinin okuma izni varsa i\c{c}erdi\u{g}i dosyalar\i{}n listesi al\i{}nabilir.
\item {\bf Yazma izni} : Dosyan\i{}n yazma izni varsa dosyay\i{} de\u{g}i\c{s}tirebilir veya silebilirsiniz. Dizine yazma izni verildi\u{g}inde dizin alt\i{}ndaki dosyalar yaz\i{}labilir veya silinebilir.
\item {\bf \c{C}al\i{}\c{s}t\i{}rma izni} : Dosyay\i{} \c{c}al\i{}\c{s}t\i{}rma hakk\i{}n\i{} verir.
\end{itemize}


Bir dosya veya dizin ilk yarat\i{}ld\i{}\u{g}\i{} anda Linux taraf\i{}ndan \"{o}ntan\i{}ml\i{}
baz\i{} izinler verilir. Genellikle bu izin \c{c}al\i{}\c{s}t\i{}rma ve okumad\i{}r. Dosyan\i{}n
olu\c{s}ma an\i{}nda verilen izini de\u{g}i\c{s}tirmek i\c{c}in eri\c{s}im yetki kal\i{}b\i{} olarak
da bilinen {\tt umask} komutu kullan\i{}l\i{}r. Daha fazla bilgi i\c{c}in komuta
ait man dosyas\i{}na bak\i{}n.

Eri\c{s}im haklar\i{}n\i{}n d\i{}\c{s}\i{}nda bir dosyan\i{}n \"{u}\c{c} izin d\"{u}zeyi daha vard\i{}r. Bunlar,
dosyan\i{}n sahibi, dosyan\i{}n grubu ve di\u{g}er kullan\i{}c\i{}lard\i{}r. Dosyan\i{}n sahibi,
o dosyay\i{} olu\c{s}turan ki\c{s}idir. Her kullan\i{}c\i{}n\i{}n bir grubu da oldu\u{g}u i\c{c}in,
dosya olu\c{s}turulurken kullan\i{}c\i{} hangi grupta ise dosya da o gruba ait
olacakt\i{}r. Dosyan\i{}n sahibi olmayan ve grubu da dosyan\i{}n grubuyla uyu\c{s}mayan
sistemdeki kullan\i{}c\i{}lar ``di\u{g}er'' s\i{}n\i{}f\i{}na girerler. Gruplar hakk\i{}nda daha
fazla bilgi i\c{c}in {\em Linux Sistem Y\"{o}netimi\/} konusuna bak\i{}n.






\subsection{Dosya \.{I}zinlerinin De\u{g}i\c{s}tirilmesi}



Dosya izin bilgilerini g\"{o}rebilmek i\c{c}in {\tt ls} komutu, {\tt -l}
parametresiyle kullan\i{}l\i{}r. A\c{s}a\u{g}\i{}daki dosya \"{u}zerindeki eri\c{s}im haklar\i{}na
g\"{o}z atal\i{}m :

\begin{verbatim}
-rwxr-xr-x   2 gorkem   users          182 Feb 12 03:58 deneme
\end{verbatim}


Dosya bilgisinin en sol k\i{}sm\i{}nda izin haklar\i{} yeral\i{}r. En ba\c{s}taki ``-''
i\c{s}areti bunun d\"{u}z dosya oldu\u{g}unu belirtir. ``gorkem'', dosyan\i{}n sahibi;
``users'' ise grubudur. Ard\i{}ndan s\i{}rayla uzunluk, son de\u{g}i\c{s}tirilme tarihi ve
dosya ismi gibi bilgiler gelir. Son harf k\"{u}mesine dosyan\i{}n modu da denir.

Solda yeralan r,w ve x karakterleri s\i{}rayla okuma, \c{c}al\i{}\c{s}t\i{}rma ve yazma
haklar\i{}n\i{} belirtir. En soldaki ``-'' i\c{s}aretini ay\i{}rd\i{}\u{g}\i{}m\i{}z zaman geri
kalan harfleri \"{u}\c{c} adet \"{u}\c{c}l\"{u} grup haline getirelim:

\begin{verbatim}
rwx     r-x    r-x
\end{verbatim}


S\i{}rayla birinci harf k\"{u}mesi dosya sahibinin izinlerini, ikinci harf k\"{u}mesi grup izinleri ve son k\"{u}me de di\u{g}er kullan\i{}c\i{}lar\i{}n izinlerini belirtir. Buna g\"{o}re yukar\i{}daki dosyada

\begin{itemize}
\item {\tt rwx}  : kullan\i{}c\i{} okuyabilir, yazabilir, \c{c}al\i{}\c{s}t\i{}rabilir
\item {\tt r-x}  : grup okuyabilir, \c{c}al\i{}\c{s}t\i{}rabilir fakat yazamaz. 
\item {\tt r-x}  : di\u{g}erleri okuyabilir, \c{c}al\i{}\c{s}t\i{}rabilir fakat yazamaz. 
\end{itemize}


Sol ba\c{s}taki karakter ``d'' olsayd\i{}, bir dizini inceliyor olacakt\i{}k.

Dosyan\i{}n izinlerini de\u{g}i\c{s}tirmek i\c{c}in {\tt chmod} komutu kullan\i{}l\i{}r. Bu
komutu kullan\i{}rken hangi izin d\"{u}zeyine (kullan\i{}c\i{}, grup veya di\u{g}erleri)
hangi izinlerin verilece\u{g}i veya kald\i{}r\i{}laca\u{g}\i{} yaz\i{}l\i{}r.

\"{O}rnek olarak yukar\i{}daki dosyan\i{}n okuma iznini kald\i{}rmak i\c{c}in 

\begin{verbatim}
$ chmod -r deneme 
\end{verbatim}


kullan\i{}labilir. "-" i\c{s}areti, iznin kald\i{}r\i{}laca\u{g}\i{}n\i{} belirtir. \.{I}zin vermek i\c{c}in ise "+" yaz\i{}n. Dosyan\i{}n yeni g\"{o}r\"{u}nt\"{u}s\"{u} \c{s}\"{o}yle olur : 

\begin{verbatim}
--wx--x--x   2 gorkem   users          182 Feb 12 03:58 deneme
\end{verbatim}


Sadece grubun, sadece kullan\i{}c\i{}n\i{}n veya sadece di\u{g}erlerinin eri\c{s}im hakk\i{}n\i{} de\u{g}i\c{s}tirebilmek i\c{c}in her izin d\"{u}zeyi i\c{c}in bir harf tan\i{}mlanm\i{}\c{s}t\i{}r. Kullan\i{}c\i{} i\c{c}in "u", grup i\c{c}in "g" ve di\u{g}erleri i\c{c}in "o" yazarak belirli bir izin d\"{u}zeyi i\c{c}in eri\c{s}im hakk\i{}n\i{} de\u{g}i\c{s}tirmek m\"{u}mk\"{u}n olur. Bu \"{u}\c{c} harf, izinden hemen \"{o}nce yaz\i{}l\i{}r.

\begin{verbatim}
$ chmod u+x deneme              (dosyanin sahibi calistirabilir)
$ chmod o+r t2sac               (digerleri okuyabilir)
$ chmod g-w deneme              (dosyanin grubu yazamaz)
\end{verbatim}


Her izin i\c{c}in ayn\i{} zamanda say\i{}lar da tan\i{}mlanm\i{}\c{s}t\i{}r. Dosyan\i{}n eri\c{s}im izinlerinide\u{g}i\c{s}tirmek i\c{c}in her izne ait say\i{}lar\i{} kullanabilirsiniz. A\c{s}a\u{g}\i{}daki tabloda, her izin d\"{u}zeyi (dosyan\i{}n sahibi, grubu ve di\u{g}erleri) i\c{c}in \"{u}\c{c}er tane olmak \"{u}zere toplam 9 say\i{}dan olu\c{s}an izin numaralar\i{}n\i{} g\"{o}rebilirsiniz. Bir izni vermek i\c{c}in s\i{}rayla numaralar\i{} toplay\i{}n. \"{O}rne\u{g}in sahibinin okumas\i{} (400), yazmas\i{} (200), \c{c}al\i{}\c{s}t\i{}rmas\i{} (100), grubun okumas\i{} (40), \c{c}al\i{}\c{s}t\i{}rmas\i{} (10) ve di\u{g}erlerinin okumas\i{} (4) ve \c{c}al\i{}\c{s}t\i{}rmas\i{} (1) i\c{c}in kullan\i{}lan rakamlar\i{}n toplam\i{} 755'tir. 

\begin{verbatim}
$ chmod 755 deneme
\end{verbatim}


\begin{center}
\begin{tabular}{|l|l|}
\hline
400     &  sahibi okur\\ 
200     &  sahibi yazar\\ 
100     &  sahibi \c{c}al\i{}\c{s}t\i{}r\i{}r\\ 
\hline
040     &  grubu okur\\ 
020     &  grubu yazar\\ 
010     &  grubu \c{c}al\i{}\c{s}t\i{}r\i{}r\\ 
\hline
004     &  di\u{g}erleri okur\\ 
002     &  di\u{g}erleri yazar\\ 
001     &  di\u{g}erleri \c{c}al\i{}\c{s}t\i{}r\i{}r\\ 
\hline
\end{tabular}
\end{center}


Ba\c{s}ka bir de\u{g}i\c{s}iklikle konuyu peki\c{s}tirelim. Sahibinin okumas\i{} (400),
yazmas\i{} (100), grubun okumas\i{} (40), di\u{g}erlerinin okumas\i{} (4) i\c{c}in izin
numaras\i{}n\i{} bulmak i\c{c}in bu c\"{u}mlede parantez i\c{c}inde yeralan say\i{}lar\i{}
toplarsak 644 yapacakt\i{}r.

\begin{verbatim}
$ chmod 644 deneme
\end{verbatim}


Aynen dosyalarda oldu\u{g}u gibi, bir dizinin de sahibi ve grubu vard\i{}r. 




\section{Dosyan\i{}n Sahibinin ve Grubunun De\u{g}i\c{s}tirilmesi}



Bir dosyan\i{}n sahibini sadece sistemdeki {\em root\/} kullan\i{}c\i{} de\u{g}i\c{s}tirebilme yetkisine sahiptir. Dosya sahibinin de\u{g}i\c{s}tirilmesi i\c{c}in {\tt chown} komutu kullan\i{}labilir. Yukar\i{}daki dosyan\i{}n sahibini {\em ozgur\/} isimli kullan\i{}c\i{} yapal\i{}m. 

\begin{verbatim}
# chown ozgur deneme 
\end{verbatim}


Dosyan\i{}n yeni hali \c{s}\"{o}yle olur : 

\begin{verbatim}
-rwxr-xr-x   2 ozgur   users          182 Feb 12 03:58 deneme
\end{verbatim}


{\tt chgrp} komutu yard\i{}m\i{}yla da dosyan\i{}n grubunu de\u{g}i\c{s}tirilebilir. Yukar\i{}daki dosyan\i{}n grubunu www yapmak i\c{c}in 

\begin{verbatim}
# chgrp www deneme 
\end{verbatim}


komutu kullan\i{}labilir. {\tt chown} komutu, dosyan\i{}n hem kullan\i{}c\i{}s\i{}n\i{}, hem de grubunu de\u{g}i\c{s}tirme \"{o}zelli\u{g}ine sahiptir. chown komutundan sonra kullan\i{}c\i{} ve grup isimlerini aralar\i{}nda bir nokta kalacak \c{s}ekilde yaz\i{}n. 

\begin{verbatim}
$ chown ozgur.www deneme 
$ ls -l deneme
-rwxr-xr-x   2 ozgur   www          182 Feb 12 03:58 deneme
\end{verbatim}





\section{Di\u{g}er Dosya Sistemlerinin Kullan\i{}lmas\i{}}



Bir Linux i\c{s}letim sisteminde dosyalar\i{}n ve dizinlerin herbirisi sabit disk, CDROM veya di\u{g}er bilgi saklamaya yarayan cihazlar\i{}n birer par\c{c}as\i{} olan "dosya sistemlerinde" tutulur. Linux'un destekledi\u{g}i pek \c{c}ok dosya sistemi vard\i{}r ve bunlar\i{}n her birisinin veri depolarken kulland\i{}klar\i{} y\"{o}ntem birbirinden farkl\i{}d\i{}r. 

Linux'ta her dosya sistemi farkl\i{} bir dizinde tutulur ve bu dizinlerin bilgisi {\tt /etc/fstab} dosyas\i{}nda yeral\i{}r. A\c{c}\i{}l\i{}\c{s} an\i{}nda bu dosyada hangi dosya sistemlerinin hangi dizinler alt\i{}na yerle\c{s}tirilece\u{g}i okunur ve buna g\"{o}re makina a\c{c}\i{}l\i{}r. Linux, kendisi i\c{c}in \"{o}zel olarak geli\c{s}tirilen ext2 dosya sistemini kullan\i{}r.

Bir sistem g\"{o}revlisi olarak \c{c}e\c{s}itli dosya sistemlerini tan\i{}mal\i{}, bu dosya sistemleri \"{u}zerinde hata olu\c{s}mas\i{} durumunda zarar\i{} en aza indirecek yolu bilmelisiniz. Bilgisayar ba\c{s}\i{}nda ge\c{c}irece\u{g}iniz zaman\i{}n\i{}z\i{}n b\"{u}y\"{u}k bir b\"{o}l\"{u}m\"{u}n\"{u} dosya sistemleri \"{u}zerinde harcayacaks\i{}n\i{}z. 






\subsection{mount \.{I}\c{s}lemi}



Bir dosya sisteminin kullan\i{}labilmesi i\c{c}in bo\c{s} bir dizin alt\i{}na yerle\c{s}tirilmesi gerekir. Ancak bu ger\c{c}ekle\c{s}tirilirse s\"{o}zkonusu dosya sistemini olu\c{s}turan dosyalar \"{u}zerinde i\c{s}lem yap\i{}labilir. Bu i\c{s}lem mount komutu yard\i{}m\i{}yla yap\i{}l\i{}r.

{\tt mount} komutunun \c{s}u \c{s}ekilde kullan\i{}l\i{}r : 

\begin{verbatim}
mount -t <tip> <nereye> <aygit>
\end{verbatim}


{\bf tip} : Dosya sistemi \c{c}e\c{s}idi. \"{O}rnek dosya sistem \c{c}e\c{s}itleri aras\i{}nda ext2, minix, msdos say\i{}labilir. Dosya sistemleri hakk\i{}nda daha geni\c{s} bilgi i\c{c}in \c{C}ekirdek konfig\"{u}rasyonu konusuna bak\i{}n. Genellikle mount program\i{} ne t\"{u}r bir diske
eri\c{s}ti\u{g}ini otomatik olarak anlayacakt\i{}r.

{\bf nereye} : mount edilecek dosya sistemi hangi dizin alt\i{}na yerle\c{s}tirilece\u{g}ini belirtir.

{\bf ayg\i{}t} : \"{U}zerinde dosya sisteminin bulundu\u{g}u sabit disk, CD-ROM benzeri ayg\i{}t. 

Linux'a ba\u{g}l\i{} olan t\"{u}m donan\i{}mlara ait bir giri\c{s}, {\tt /dev} dizini alt\i{}nda bulunur. Bu dizin alt\i{}ndaki dosyalar \"{o}zel olarak tan\i{}mlanm\i{}\c{s}t\i{}r ve bunlara k\i{}saca "d\"{u}\u{g}\"{u}m" ad\i{} verilir. \"{O}rne\u{g}in {\tt /dev/hda2}, birinci IDE sabit diskin ikinci b\"{o}l\"{u}m\"{u}n\"{u}; {\tt /dev/tty1} ise birinci sanal konsolu g\"{o}sterir. 

\c{C}e\c{s}itli sabit disklere ait {\tt /dev} d\"{u}\u{g}\"{u}mleri, {\em Linux Kurulumu\/} b\"{o}l\"{u}m\"{u}nde detayl\i{} olarak anlat\i{}lm\i{}\c{s}t\i{}. mount program\i{} bu d\"{u}\u{g}\"{u}mlere ihtiya\c{c} duyacakt\i{}r. Bu y\"{u}zden bir dosya sistemini eri\c{s}ilebilir hale getirebilmek i\c{c}in hangi d\"{u}\u{g}\"{u}m ismine sahip oldu\u{g}unu bilmelisiniz. \"{O}rnek olarak CD-ROM i\c{c}in {\tt /dev/cdrom}, birinci disket s\"{u}r\"{u}c\"{u} i\c{c}in {\tt /dev/fd0} gibi.

CD-ROM s\"{u}r\"{u}c\"{u}s\"{u}n\"{u} {\tt /mnt} alt\i{}na mount etmek i\c{c}in 

\begin{verbatim}
# mount -t iso9660 /dev/cdrom /mnt 
\end{verbatim}


yaz\i{}n. E\u{g}er \c{c}ekirdekte CD-ROM dosya sistemi deste\u{g}i varsa ve sistem a\c{c}\i{}l\i{}rken \c{c}ekirdek CD-ROM'u tan\i{}m\i{}\c{s}sa {\tt /mnt} dizini alt\i{}na CD'deki dosya sistemi yerle\c{s}tirilir. Buna benzer \c{s}ekilde MS-DOS disket i\c{c}eren disket s\"{u}r\"{u}c\"{u}y\"{u} ve \"{u}zerinde ext2 dosya sistemi bulunan ikinci IDE sabit diskin birinci b\"{o}l\"{u}m\"{u}n\"{u} s\i{}ras\i{}yla {\tt /mnt/disket} ve {\tt /mnt/disk} dizinlerine bindirmek i\c{c}in

\begin{verbatim}
# mount -t msdos /dev/fd0 /mnt/disket
\end{verbatim}


ve 

\begin{verbatim}
# mount -t ext2 /dev/hdb1 /mnt/disk
\end{verbatim}


yaz\i{}labilir. Bir mount i\c{s}leminin tersini yapmak ve dosya sistemini eri\c{s}ilemez k\i{}lmak i\c{c}in {\tt umount} komutu kullan\i{}l\i{}r. {\tt /disk} alt\i{}ndaki {\tt /dev/hdb1} sabit disk b\"{o}l\"{u}m\"{u}n\"{u} umount etmek i\c{c}in

\begin{verbatim}
# umount /disk
\end{verbatim}


veya

\begin{verbatim}
# umount /dev/hdb1
\end{verbatim}


kullan\i{}l\i{}r. Her iki yaz\i{}m \c{s}ekli de kabul edilir. Son olarak o an
sistemde bindirilmi\c{s} halde bulunan t\"{u}m dosya sistemlerini g\"{o}rmek i\c{c}in
{\tt mount} komutunu parametresiz yaz\i{}n. Bu komut hakk\i{}nda daha detayl\i{}
bilgi ve ald\i{}\u{g}\i{} di\u{g}er parametreler i\c{c}in man sayfas\i{}na bak\i{}n.

{\tt mount} ve {\tt umount} komutlar\i{} ile bir dizin yap\i{}s\i{}n\i{} disk \"{u}zerinde
konumland\i{}r\i{}rken veya ay\i{}r\i{}rken \"{u}zerinde i\c{s}lem yap\i{}lan dizinde
bulunmaman\i{}z, ya da o dizinde ba\c{s}ka bir s\"{u}re\c{c} \c{c}al\i{}\c{s}\i{}yor olmamas\i{}
gereklidir. Aksi takdirde a\c{s}a\u{g}\i{}daki hata mesaj\i{}n\i{} al\i{}rs\i{}n\i{}z:

\begin{verbatim}
# pwd
/disk
# umount /disk
umount: /dev/hdb1: device is busy
\end{verbatim}


Yapman\i{}z gereken, ay\i{}raca\u{g}\i{}n\i{}z dizinden d\i{}\c{s}ar\i{} \c{c}\i{}k\i{}p tekrar denemek. Di\u{g}er
bir se\c{c}enek de {\tt fuser} komutunu kullanmak. Bu komut, ay\i{}rmak istedi\u{g}iniz
dizini kullanan t\"{u}m s\"{u}re\c{c}leri ekranda g\"{o}sterir. B\"{o}ylelikle
rahatl\i{}kla yukar\i{}daki \"{o}rnekteki gibi {\tt umount} i\c{s}lemini
ger\c{c}ekle\c{s}tirebilirsiniz. {\tt fuser} komutunun -km se\c{c}ene\u{g}iyle o dizini 
kullanan s\"{u}re\c{c}leri \"{o}ld\"{u}r\"{u}lebilir.

\begin{verbatim}
# cd /
# fuser /disk
/disk:                   78c
# fuser -km /disk
# umount /disk
\end{verbatim}


{\tt fuser} komutunu kullan\i{}rken dikkatli olun, zira sistemi kilitlenme noktas\i{}na
getirebilirsiniz.




\subsection{Dosya Sistemi Bilgileri}



Linux a\c{c}\i{}l\i{}rken {\tt mount} komutu yard\i{}m\i{}yla root dosya sistemine ekleyece\u{g}i her de\u{g}i\c{s}ik dosya sistemini {\tt /etc/fstab} dosyas\i{}ndan okur ve i\c{s}leme koyar. A\c{s}a\u{g}\i{}da \"{o}rnek bir fstab dosyas\i{} yeral\i{}yor.

\begin{verbatim}
/dev/hda2       /               ext2            defaults  1 1
/swap           none            swap            defaults  1 1
/dev/cdrom      /cdrom          iso9660         defaults  1 1 
none            /proc           proc            defaults  1 1
/dev/hda1       /dos            msdos           defaults  1 1 
\end{verbatim}


\c{C}ekirdek a\c{c}\i{}l\i{}\c{s} mesajlar\i{} i\c{c}inde 

\begin{verbatim}
VFS: Mounted root (ext2 filesystem) readonly.
\end{verbatim}


gibi bir sat\i{}r g\"{o}receksiniz. Sistem a\c{c}\i{}l\i{}rken en \"{o}nce {\tt /} dosya sistemini mount eder. Bu sayede bu dosya sistemi alt\i{}nda yeralan ve hayati \"{o}nem ta\c{s}\i{}yan yaz\i{}l\i{}mlara ({\tt fsck}, {\tt mount} gibi) ula\c{s}\i{}r. Daha sonra yerel dosya sistemleri ve en son da a\u{g} \"{u}zerinden eri\c{s}ilen dosya sistemlerine (NFS) ba\u{g}lan\i{}r. fstab dosyas\i{}nda kullan\i{}c\i{}n\i{}n kendi dosyalar\i{}n\i{} yerle\c{s}tiremedi\u{g}i, fakat sistem taraf\i{}ndan kullan\i{}lan {\em swap\/} ve {\em proc\/} dosya sistemleri i\c{c}in de mount bilgileri bulunur. 

Yukar\i{}daki fstab dosyas\i{}nda ext2 dosya sistemine sahip {\tt /dev/hda2} sabit disk b\"{o}l\"{u}m\"{u}, / dizinini olu\c{s}turuyor. MS-DOS formatl\i{} {\tt /dev/hda1} b\"{o}l\"{u}m\"{u} de {\tt /dos} dizinine eri\c{s}ilebilir olarak a\c{c}\i{}l\i{}\c{s} an\i{}nda eklenecektir. 

Sistemdeki CD-ROM s\"{u}r\"{u}c\"{u} {\tt /cdrom} dizini alt\i{}na yerle\c{s}tirilmi\c{s} olup root kullan\i{}c\i{} bunu istedi\u{g}i dizine koyabilir. Bu dosyaya, mount komutundaki gibi parametreler de eklenebilir. D\"{o}rd\"{u}nc\"{u} s\i{}rada yeralan defaults parametresinin yan\i{}na eklemek istedi\u{g}iniz opsiyonlar\i{} yaz\i{}n. Bu parametrelerden s\i{}k\c{c}a kullan\i{}lan bir tanesi de "user" olup root d\i{}\c{s}\i{}ndaki kullan\i{}c\i{}lara mount hakk\i{}n\i{} verir. CD-ROM s\"{u}r\"{u}c\"{u}y\"{u} normal sistem kullan\i{}c\i{}lar\i{}n\i{}n mount veya umount yapabilmesi i\c{c}in fstab dosyas\i{}ndaki ilgili sat\i{}r\i{}

\begin{verbatim}
/dev/cdrom      /cdrom          iso9660                 defaults,user 1 1 
\end{verbatim}


sat\i{}r\i{}yla de\u{g}i\c{s}tirin. {\em defaults\/} parametresi ise , halihaz\i{}rdaki dosya sistemini okunup yaz\i{}labildi\u{g}ini, asenkron oldu\u{g}unu, \"{u}zerindeki bilgileri bloklar halinde al\i{}p verdi\u{g}ini (buna di\u{g}er \"{o}rnekler CD-ROM ve disket s\"{u}r\"{u}c\"{u}lerdir), i\c{c}erdi\u{g}i programlar\i{}n \c{c}al\i{}\c{s}t\i{}r\i{}labilir oldu\u{g}unu ve normal kullan\i{}c\i{}lar\i{}n {\tt mount}, {\tt umount} yapamad\i{}\u{g}\i{}n\i{} g\"{o}sterir. {\em user\/} parametresiyle kullan\i{}c\i{}lara {\tt mount} ve {\tt umount} hakk\i{} yukar\i{}da verilmi\c{s}tir.






\subsection{Dosya Sistemi Yarat\i{}lmas\i{} ve Kontrol\"{u}}



Bazen MS-DOS alt\i{}ndan olu\c{s}turulamayan dosya sistemlerini (ext2 gibi) olu\c{s}turmak gerekebilir. Linux alt\i{}nda bir dosya sistemini olu\c{s}tururken ayn\i{} zamanda bunu kontrol eden programlar vard\i{}r. Bunlar\i{}n en \c{c}ok kullan\i{}lan\i{}, Slackware s\"{u}r\"{u}m\"{u}nde gelen {\tt mkfs}/'tir. 

{\tt mkfs} ile Linux native (ext2) dosya sistemi olu\c{s}turmak i\c{c}in {\tt mkfs.ext2} program\i{} kullan\i{}l\i{}r. 

\begin{verbatim}
mkfs.ext2 <aygit> <blok-sayisi>
\end{verbatim}


"ayg\i{}t" yerine \"{u}zerine dosya sistemi kurulacak olan cihaz\i{}n {\tt /dev} dizini alt\i{}ndaki d\"{u}\u{g}\"{u}m dosyas\i{}n\i{}n ismi yaz\i{}l\i{}r. Blok say\i{}s\i{} yerine, {\tt fdisk} yaz\i{}l\i{}m\i{}ndan o b\"{o}l\"{u}m\"{u}n ka\c{c} blok oldu\u{g}unu \"{o}\u{g}renip bu say\i{}y\i{} girmelisiniz. Bir blok 1024 bayttan olu\c{s}ur. \"{O}rne\u{g}in

\begin{verbatim}
# mke2fs /dev/hda3 163829
\end{verbatim}


komutu, {\tt /dev/hda3} disk b\"{o}l\"{u}m\"{u}nde ext2 dosya sistemi kurar. Bu komutu kullanmadan \"{o}nce iyi d\"{u}\c{s}\"{u}n\"{u}n, zira burada yeralan t\"{u}m dosyalar silinir ve bu hatan\i{}n geri d\"{o}n\"{u}\c{s}\"{u} olmaz. A\c{s}a\u{g}\i{}daki komut ile bir disket \"{u}zerinde ext2 dosya sistemi kuruluyor.

\begin{verbatim}
# mke2fs /dev/fd0 1440
\end{verbatim}


{\tt mke2fs} ile {\tt mkfs.ext2} komutlar\i{} ayn\i{}d\i{}r. Benzer \c{s}ekilde, MS-DOS dosya sistemi yaratmak i\c{c}in {\tt mkfs.msdos}, minix dosya sistemi yaratmak i\c{c}in {\tt mkfs.minix} kullan\i{}labilir. Blok say\i{}s\i{} girilmez ise {\tt mke2fs} bunu otomatik olarak
bulacakt\i{}r.

Herhangi bir sebepten dolay\i{} diskte bozulma ve veri kayb\i{}n\i{} en aza indirmek i\c{c}in de yaz\i{}l\i{}mlar vard\i{}r. {\tt fsck} ile dosya sistemi kontrol\"{u} yap\i{}labilir. {\tt fsck} ile ext2, {\tt dosfsck} (veya {\tt fsck.msdos}) ile MS-DOS formatl\i{} alanlar kontrol edilir. 

\begin{verbatim}
linux:~# fsck /dev/hda2
Parallelizing fsck version 0.5b (14-Feb-95)
e2fsck 0.5b, 14-Feb-95 for EXT2 FS 0.5a, 95/03/19
/dev/hda2 is mounted.  Do you really want to continue (y/n)? yes

Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Fix summary information<y>? yes

Block bitmap differences: -46486 -46487 -46488 -46489 -46490.  FIXED
Free blocks count wrong for group 5 (2803, counted=2808).  FIXED
Free blocks count wrong (16326, counted=16331).  FIXED

/dev/hda2: ***** FILE SYSTEM WAS MODIFIED *****
/dev/hda2: ***** REBOOT LINUX *****
/dev/hda2: 3494/29632 files, 42904/59235 blocks
\end{verbatim}


Bir dosya sistemini kontrol etmeden \"{o}nce okunan b\"{o}l\"{u}m\"{u} root dosya sisteminden ay\i{}r\i{}n ve kontrol i\c{s}leminden sonra bilgisayar\i{} kapat\i{}p tekrar a\c{c}\i{}n. 

{\tt debugfs} program\i{}, dosya sistemi parametrelerini incelemek i\c{c}in
kullan\i{}l\i{}r. Disk \"{u}zerine do\u{g}rudan eri\c{s}\i{}m yapt\i{}\u{g}\i{} i\c{c}in dikkatli
kullanmal\i{}s\i{}n\i{}z. ext2fs yard\i{}m\i{}yla kurtar\i{}lamayan baz\i{} dosyalar (\"{o}zellikle
silinmi\c{s} dosyalar) {\tt debugfs} yard\i{}m\i{}yla kurtar\i{}labilir. 




\section{Sembolik Ba\u{g}lant\i{}lar}



Baz\i{} durumlarda, bir dosyay\i{} olu\c{s}turup bu dosyan\i{}n ba\c{s}ka bir dosyay\i{} i\c{s}aret etmesi istenebilir. Genellikle sistem y\"{o}neticileri taraf\i{}ndan kullan\i{}lan sembolik ba\u{g}lant\i{} yard\i{}m\i{}yla bir dosya veya dizin, bunlara kar\c{s}\i{}l\i{}k gelen ba\c{s}ka bir dosya veya dizin olarak g\"{o}sterilir.

A\c{s}a\u{g}\i{}da bir sembolik ba\u{g}lant\i{} \"{o}rne\u{g}i yeral\i{}yor. Sistem g\"{o}revlisi, {\tt /root} dizini alt\i{}ndayken {\tt /usr/src/linux} dizinine ge\c{c}mek istiyor. {\tt /usr/src/linux} dizinine i\c{s}aret eden bir ba\u{g}lant\i{} kurmak i\c{c}in {\tt ln} komutu kullan\i{}l\i{}r. -s parametresi, bu ba\u{g}lant\i{}n\i{}n sembolik olaca\u{g}\i{}na i\c{s}aret eder.

\begin{verbatim}
ln -s <nereye-baglanti-yapilacak> <hangi-isimle-yapilacak>
\end{verbatim}


\begin{verbatim}
linux:~# ls -l
total 116
drwxr-xr-x   2 root     root         1024 Feb 14 08:13 kernel
-rw-r--r--   1 root     root       115695 Sep 15  1994 lodlin15.zip
drwx------   2 root     root         1024 Jan  7  1980 mail
-rw-r--r--   1 root     root            0 Feb 15 08:14 typescript
linux:~# ln -s /usr/src/linux linux
linux:~# ls -l
total 116
drwxr-xr-x   2 root     root         1024 Feb 14 08:13 kernel
-rw-r--r--   1 root     root       115695 Sep 15  1994 lodlin15.zip
drwx------   2 root     root         1024 Jan  7  1980 mail
lrwxrwxrwx   1 root     root            9 Feb 15 08:14 linux -> /usr/src/linux
-rw-r--r--   1 root     root            0 Feb 15 08:14 typescript
\end{verbatim}


Bu i\c{s}lemden sonra kullan\i{}c\i{}n\i{}n {\tt /usr/src/linux} dizinine ge\c{c}mesi i\c{c}in {\tt cd linux}" yazmas\i{} yetecektir. Sembolik ba\u{g}lant\i{} dosyas\i{}n\i{} di\u{g}erlerinden ay\i{}ran, sat\i{}r\i{}n en solundaki {\tt l} karakteridir. 






\section{Dosya Ar\c{s}ivleme ve S\i{}k\i{}\c{s}t\i{}rma }



Linux alt\i{}nda dosya ar\c{s}ivlenmesi ve s\i{}k\i{}\c{s}t\i{}r\i{}lmas\i{} neredeyse belirli ve standartla\c{s}m\i{}\c{s} birka\c{c} komut ile ger\c{c}ekle\c{s}tiriliyor. {\tt tar} komutu yard\i{}m\i{}yla istenilen dosyalar\i{} ar\c{s}ivleyebilir, bunlar\i{}n \"{u}zerine yenilerini ekleyebilir, istedi\u{g}iniz zaman da tekrar a\c{c}\i{}p eski haline getirebilirsiniz. GNU {\tt gzip} komutu ise dosyalar\i{}n s\i{}k\i{}\c{s}t\i{}r\i{}lmas\i{} (zip) ve s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s} dosyalar\i{}n a\c{c}\i{}lmas\i{} (unzip) i\c{s}lemlerini yapabiliyor. Fazla disk alan\i{}n\i{}z yoksa bu iki komut her zaman yard\i{}m\i{}n\i{}za ko\c{s}acakt\i{}r.






\subsection{Dosya Ar\c{s}ivleme}



{\tt tar} (Tape ARchive) program\i{}, bir veya birden fazla dosyay\i{} tek bir forma sokar. Genellikle bir dizin ve bu dizinin alt\i{}nda yer alan t\"{u}m alt dizinleri biraraya getirmek i\c{c}in kullan\i{}l\i{}r. {\tt tar}, dosyalar\i{}n \"{u}zerinde s\i{}k\i{}\c{s}t\i{}rma i\c{s}lemini normalde uygulamaz. Fakat {\tt tar}'\i{}n GNU s\"{u}r\"{u}m\"{u} (Linux'ta da kullan\i{}lan) bu i\c{s}lemi gzip kullanmadan da yapabiliyor.

{\tt tar} komutuna bir \"{o}rnek verelim : 

\begin{verbatim}
$ tar -cf arsiv.tar tmp/
\end{verbatim}


Bu komut, {\tt -c} (create archive) parametresi yard\i{}m\i{}yla {\tt tmp} dizini alt\i{}ndaki her\c{s}eyi paketleyip {\tt arsiv.tar} isimli dosyaya yollar. {\tt -f} parametresi, hangi dosyaya yaz\i{}laca\u{g}\i{}n\i{} belirtir. \.{I}stedi\u{g}iniz zaman dosyay\i{} tekrar a\c{c}mak isterseniz :

\begin{verbatim}
$ tar -xf arsiv.tar 
\end{verbatim}


komutunu kullan\i{}n. {\tt -x} (extract) parametresi, {\tt -f} ile belirtilen dosyay\i{} a\c{c}acakt\i{}r.

{\tt -r} opsiyonu ile daha \"{o}nce yarat\i{}lm\i{}\c{s} bir ar\c{s}ive dosya eklenebilir. B\"{o}ylece dosyay\i{} a\c{c}ma ve tekrar ar\c{s}iv olu\c{s}turma i\c{s}leminden kurtulmu\c{s} olursunuz.

\begin{verbatim}
$ tar -rf arsiv.tar ekleme.txt
\end{verbatim}


Dosyan\i{}n i\c{c}eri\u{g}ini \"{o}nceden g\"{o}rebilmek i\c{c}in {\tt -t} parametresini kullan\i{}n ve bu i\c{s}lemi de al\i{}\c{s}kanl\i{}k haline getirin. Baz\i{} durumlarda ar\c{s}ivlenmi\c{s} yaz\i{}l\i{}m, kendine ait bir dizin a\c{c}mak yerine i\c{c}erdi\u{g}i dosyalar\i{} bulundu\u{g}u yere yazabilir.

\begin{verbatim}
tar -tf arsiv.tar 
\end{verbatim}


Hangi dosyalar\i{}n a\c{c}\i{}ld\i{}\u{g}\i{}n\i{} ekranda g\"{o}rebilmek i\c{c}in {\tt -v} parametresini ekleyin:

\begin{verbatim}
# tar -zcvf tmp.tgz /tmp
tar: Removing leading / from absolute path names in the archive.
tmp/
tmp/tar-error
tmp/.X11-unix/
tmp/rc.inet1.OLD
tmp/networks.OLD
tmp/linux/
tmp/linux/fss.txt
tmp/lilo.conf
tmp/PKGTOOL.REMOVED
\end{verbatim}


A\c{s}a\u{g}\i{}daki komut, ar\c{s}ivlenen dosyalar\i{} diskete kaydetmeye yar\i{}yor. Bunun i\c{c}in temiz bir disketi yuvas\i{}na yerle\c{s}tirin ve a\c{s}a\u{g}\i{}daki sat\i{}r\i{} yaz\i{}n.  

\begin{verbatim}
# tar -cf /dev/fd0 tmp/ 
\end{verbatim}


{\tt tmp} dizini alt\i{}ndaki her\c{s}eyi diskete kaydetmi\c{s} olduk. A\c{c}mak i\c{c}in bilinen y\"{o}ntemi kullan\i{}r\i{}z :

\begin{verbatim}
# tar -xf /dev/fd0
\end{verbatim}







\subsection{Dosya S\i{}k\i{}\c{s}t\i{}rma ve A\c{c}ma}



Dosya s\i{}k\i{}\c{s}t\i{}rma amac\i{}yla s\i{}k\c{c}a kullanan iki yaz\i{}l\i{}m vard\i{}r : {\tt gzip} ve {\tt compress}. Her iki yaz\i{}l\i{}m da {\em Slackware Linux\/} da\u{g}\i{}t\i{}m\i{}nda bulunuyor. GNU'nun da\u{g}\i{}t\i{}m\i{} olan {\tt gzip}, {\tt tar} ile birlikte kullan\i{}lan ve dosya s\i{}k\i{}\c{s}t\i{}rma ve ar\c{s}ivlemede neredeyse standart haline gelmi\c{s} bir program. Bir dosyay\i{} s\i{}k\i{}\c{s}t\i{}rmak i\c{c}in parametre girmeden gzip komutunun ard\i{}ndan dosya ismini yaz\i{}n.

\begin{verbatim}
$ gzip elvis
$ ls -al 
elvis.gz
\end{verbatim}


{\tt gzip} ile s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s} dosyalar\i{}n sonu .gz ile biter. Bunlar\i{} a\c{c}mak i\c{c}in {\tt gunzip} komutunu kullan\i{}n:

\begin{verbatim}
$ gunzip elvis.gz
\end{verbatim}


{\tt compress} ve {\tt uncompress} de s\i{}rayla bir dosyay\i{} s\i{}k\i{}\c{s}t\i{}rmak ve a\c{c}mak i\c{c}in kullan\i{}l\i{}r. Asl\i{}nda Linux'ta {\tt uncompress} ad\i{}nda bir yaz\i{}l\i{}m yoktur, bu dosya ismi {\tt compress} dosyas\i{}na ba\u{g}lant\i{}l\i{}d\i{}r. {\tt compress} ile s\i{}k\i{}\c{s}t\i{}r\i{}lan dosyalar\i{}n sonu .Z ile biter.

\begin{verbatim}
$ ls -al web.html
-rw-r--r--   1 gorkem   users       41450 Jan 27 13:40 web.html
$ compress web.html
$ ls -al web.html.Z
-rw-r--r--   1 gorkem   users       18906 Jan 27 13:40 web.html.Z
\end{verbatim}


Yukar\i{}daki {\tt web.html} dosyas\i{}n\i{} s\i{}k\i{}\c{s}t\i{}rd\i{}\u{g}\i{}m\i{}zda dosyan\i{}n boyutu 41450 bayttan 18906 bayta indi. A\c{c}mak i\c{c}in:

\begin{verbatim}
$ uncompress web.html.Z
\end{verbatim}
 

Bir dosyan\i{}n uzant\i{}s\i{}ndan ne t\"{u}r bir dosya oldu\u{g}unu anlayamazsan\i{}z file komutu imdad\i{}n\i{}za ko\c{s}ar. Linux'ta belirli uzant\i{}l\i{} dosyalar\i{}n ba\c{s}\i{} bilinen bir harf veya harf grubu ile ba\c{s}lar. file komutu dosyan\i{}n ba\c{s}\i{}ndaki karakterleri kontrol ederek ve bunlar\i{} bir listeyle ({\tt /etc/magic}) kar\c{s}\i{}la\c{s}t\i{}rarak dosyan\i{}n ne t\"{u}r oldu\u{g}unu s\"{o}yler.

\begin{verbatim}
# file tmp.gz
tmp.tgz: gzip compressed data - deflate method , last modified: Sat Feb 15 08:21:50 1997 os: Unix
# file tmp.tar.Z
tmp.tar.Z: compressed data 16 bits
\end{verbatim}





\subsection{Birlikte Kullan\i{}m}



ftp adreslerinde Linux i\c{c}in yeralan yaz\i{}l\i{}mlar genellikle {\tt tar} ve
{\tt gzip}, nadiren de {\tt tar} ve {\tt compress} ile s\i{}k\i{}\c{s}t\i{}r\i{}l\i{}p
ar\c{s}ivelenerek saklan\i{}rlar. \c{C}\"{u}nk\"{u} tar komutu tek ba\c{s}\i{}na ar\c{s}ivi s\i{}k\i{}\c{s}t\i{}rmaz, bu
i\c{s}lem i\c{c}in {\tt gzip} veya {\tt compress} kullan\i{}l\i{}r. Bunlar\i{}n
a\c{c}\i{}labilmesi i\c{c}in {\tt tar} komutu ve birka\c{c} parametre yeterli olur.

\begin{verbatim}
$ ls  
netscape-4.0.linux-elf.tar.gz
\end{verbatim}


Yukar\i{}daki dosya \"{o}nce tar ile ar\c{s}ivlenmi\c{s}, ard\i{}ndan {\tt gzip} ile s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s}. Tek ad\i{}mda bu iki dosyay\i{} a\c{c}mak i\c{c}in tar dosyas\i{}na x ve f parametrelerinin d\i{}\c{s}\i{}nda z parametresini de ekleyin :

\begin{verbatim}
$ tar -zxf netscape-4.0.linux-elf.tar.gz
$ ls 
netscape-4.0.linux-elf
\end{verbatim}


E\u{g}er dosya s\i{}k\i{}\c{s}t\i{}r\i{}l\i{}rken compress komutu kullan\i{}lm\i{}\c{s}sa z yerine Z parametresini yaz\i{}n.

\begin{verbatim}
$ ls 
folder.tar.Z
$ tar -Zxf folder.tar.Z
$ ls 
folder
\end{verbatim}


Benzer \c{s}ekile, bir dosyay\i{} ayn\i{} anda hem tar ile ar\c{s}ivlemek, hem de s\i{}k\i{}\c{s}t\i{}rmak istersek c ve f parametreleri d\i{}\c{s}\i{}nda compress ile Z, gzip ile z parametrelerini girmek yeterlidir. A\c{s}a\u{g}\i{}da s\i{}rayla gn-gopher dizisinin \"{o}nce tar ve gzip ile, ard\i{}ndan tar ve compress ile ar\c{s}ivlenmesi g\"{o}r\"{u}l\"{u}yor. 

\begin{verbatim}
$ ls
gn-gopher/ 
$ tar -zcf gopher.tgz gn-gopher/
$ tar -Zcf gopher.tar.Z gn-gopher/ 
\end{verbatim}







\section{Dizin Tarama}



Linux i\c{s}letim sistemini ilk kurdu\u{g}unuz anda, y\"{u}zlerce dizin alt\i{}nda binlerce dosyan\i{}z olacakt\i{}r. {\tt find} komutu, bu dosyalar\i{}n aras\i{}nda tarama yapabilmek i\c{c}in geli\c{s}tirilmi\c{s}tir. Bu komutla sadece dosya isimlerine de\u{g}il, dosyan\i{}n sahibi, eri\c{s}im haklar\i{}, son eri\c{s}im tarihi gibi verilere de ula\c{s}mak m\"{u}mk\"{u}nd\"{u}r. 
{\tt find} komutunun en s\i{}k kullan\i{}\c{s} \c{s}ekli \c{s}udur : 

\begin{verbatim}
find <dizin-ismi> -name <ne-aratiliyor>
\end{verbatim}


dizin-ismi yerine taranacak olan dosyan\i{}n bulundu\u{g}u dizin ismi yaz\i{}l\i{}r. -name parametresinden sonra ise aranan dosyan\i{}n ismini girin. Burada "*" ve "?" gibi joker karakterlerini de kullanabilirsiniz. (Bu gibi \"{o}zel karakterler hakk\i{}nda daha geni\c{s} bilgi {\em Bash kabu\u{g}u\/} konusu alt\i{}nda bulunabilir)

A\c{s}a\u{g}\i{}da, find komutunun kullan\i{}m\i{}na ili\c{s}kin birka\c{c} \"{o}rnek yeral\i{}yor.

\begin{verbatim}
$ find . -name "*.html"         
(bulundugunuz dizinden itibaren sonu .html ile biten dosyalari arar)
$ find /home/halil -name "screen" 
(/home/halil dizininden itibaren screen isimli dosyalari arar)
\end{verbatim}


Bu komut, {\tt -type d} parametresi yard\i{}m\i{}yla sadece dizin isimleri aras\i{}nda arama yapar. 

\begin{verbatim}
$ find /usr/ -name "linux" -type d 
\end{verbatim}


{\tt find} komutuna bir alternatif olan {\tt locate} komutu ile dosyalar \c{c}ok k\i{}sa bir s\"{u}rede taranabiliyor. {\tt update} komutu, her sabah belirli bir saatte sistemdeki t\"{u}m dosya ve dizin isimlerini bir veri taban\i{}na y\"{u}kler. Daha sonra bu dosyada yeralan belirli bir dosya veya dizin ismini {\tt locate} ile arayabilirsiniz:

\begin{verbatim}
# locate pico
/usr/bin/pico
/usr/man/man1/pico.1.gz
\end{verbatim}


Yukar\i{}daki komut ile i\c{c}inde pico kelimesi ge\c{c}en dosyalar\i{} bulduk.




\section{mtools MSDOS Arabirimi}



Linux alt\i{}ndan, MS-DOS formatl\i{} disketlere ula\c{s}may\i{} kolayla\c{s}t\i{}ran paketin ismi {\tt mtools} olarak biliniyor. Bu isim, paketin t\"{u}m komutlar\i{}n\i{}n ilk harfinin "m" olmas\i{}ndan kaynaklanm\i{}\c{s}. Paketle birlikte gelen \c{c}e\c{s}itli yard\i{}mc\i{} programlar sayesinde MS-DOS formatl\i{} diskette yeralan dosyalar listelenebilir, silinebilir, disket formatlanabilir, hatta disketin kimli\u{g}i de\u{g}i\c{s}tirilebilir.  

Son \c{c}\i{}kan {\tt mtools} paketi, 2MB formatl\i{} disketleri de tan\i{}yabiliyor. A\c{s}a\u{g}\i{}da, {\tt mtools} paketinden \c{c}\i{}kan baz\i{} komutlar ve \"{o}rnek kullan\i{}mlar\i{} g\"{o}steriliyor.

{\bf mdir} : disketin i\c{c}eri\u{g}ini g\"{o}r\"{u}nt\"{u}ler.

\begin{verbatim}
linux:~# mdir a:
 Volume in drive A is SYSTEM_BT  
 Directory for A:/

IO       SYS       40566    9-30-93   6:20a
MSDOS    SYS       38138    9-30-93   6:20a
AUTOEXEC BAT          91    3-29-95  10:23a
NDD              <DIR>      3-29-95  10:26a
CHKLIST  MS           81   11-07-96   7:00p
VGA_45           <DIR>      3-29-95  10:28a
YARDIM           <DIR>      3-29-95  10:17a
UTIL             <DIR>      3-29-95  10:17a
VIRUS            <DIR>      3-29-95  10:17a
       9 File(s)     291328 bytes free
linux:~# 
\end{verbatim}


{\bf mcopy} : Bir dosyay\i{} Linux'tan diskete, disketten Linux'a aktar\i{}r.

\begin{verbatim}
linux:~# mcopy a:/autoexec.bat .
Copying AUTOEXEC.BAT
\end{verbatim}


{\bf mdel} : DOS dosyas\i{}n\i{} siler

{\bf mformat} : Disketi formatlar.

{\bf mmd} : Disket \"{u}zerinde dizin olu\c{s}turur.

MSDOS {\tt mtools} arabirimi ayn\i{} zamanda VFAT tipi uzun dosya isimlerini de ekranda g\"{o}sterebilir. E\u{g}er dosya ismi, tek bir DOS ismi i\c{c}ine s\i{}\u{g}m\i{}yorsa ve 8+3 kural\i{}n\i{} bozuyorsa uygun bir k\i{}sa isim yarat\i{}l\i{}r.

Bunun yan\i{}nda {\tt mtools}'un 2 Mb'l\i{}k disketleri okuyabilme \"{o}zelli\u{g}i de vard\i{}r.
mtools paketinin konfig\"{u}rasyon dosyas\i{} {\tt /etc/mtools.conf}'tur. Bu 
dosyan\i{}n kullan\i{}m\i{} i\c{c}in mtools(1) man dosyas\i{}ndan yararlanabilirsiniz.








\chapter{Linux Sistem Y\"{o}netimi}



Bir i\c{s}letim sistemi, marka ve modeli ne olursa olsun bak\i{}m isteyen bir ara\c{c}t\i{}r. Yap\i{}lacak k\"{u}\c{c}\"{u}k bir hata, veya hatay\i{} g\"{o}steren bir i\c{s}aretin g\"{o}zard\i{} edilmesi, zaten de\u{g}erli olan zaman\i{}n bo\c{s}a gitmesine neden olur. Linux da a\c{c}\i{}k bir i\c{s}letim sistemi oldu\u{g}undan, sorumluluk sahibi
sistem y\"{o}neticisi taraf\i{}ndan a\c{c}\i{}k tutuldu\u{g}u s\"{u}re i\c{c}inde verimli ve
d\"{u}zg\"{u}n \c{c}al\i{}\c{s}mas\i{} i\c{c}in gerekli \"{o}zen g\"{o}sterilmelidir. \.{I}nternet \"{u}zerinde
\"{u}zerinde 500 kullan\i{}c\i{} olan , veya \url{ftp.linux.org}{} adresi gibi 
her hafta onbinlerce ziyaret\c{c}isi olup a\u{g}\i{}r sorumluluklar y\"{u}klenen 
Linux makinalar\i{} vard\i{}r. Bunlar\i{}n bir saat boyunca bile kapal\i{} kalmas\i{}, o anda ba\u{g}lanmay\i{} bekleyen pek \c{c}ok kullan\i{}c\i{}y\i{} ma\u{g}dur durumda b\i{}rakacakt\i{}r.

Performans\i{} etkileyen unsurlar\i{}n ba\c{s}\i{}nda, \"{o}nlemek pek de elinizde olmasa
da elektrik kesintileri ve makinan\i{}n kapal\i{} oldu\u{g}u zamana denk gelen
\c{c}ekirdek de\u{g}i\c{s}imleridir. Bu t\"{u}r donan\i{}msal etkileri bir tarafa b\i{}rak\i{}rsak
sistem y\"{o}neticisinin uymas\i{} gereken ve \.{I}nternet etikleri dedi\u{g}imiz
davran\i{}\c{s} kurallar\i{} vard\i{}r. Bu kurallara \"{o}ncelikle sistem sorumlusu uymal\i{}
ve kullan\i{}c\i{}lar\i{} da uymaya zorlamal\i{}d\i{}r. A\c{c}\i{}k i\c{s}letim sistemlerinin
en b\"{u}y\"{u}k sorunlar\i{}ndan biri olan g\"{u}venlik konusuna sistem y\"{o}neticisi
belirli g\"{u}nler zaman\i{}n\i{}n bir b\"{o}l\"{u}m\"{u}n\"{u} ay\i{}rmal\i{}d\i{}r. Kullan\i{}c\i{}lardan
gelebilecek her t\"{u}rl\"{u} sald\i{}r\i{}, sisteme onar\i{}lmas\i{} \c{c}ok zor olabilecek zararlar
verebilir. Bunun i\c{c}in d\"{u}zenli olarak dosyalar\i{} kontrol edin ve \c{s}\"{u}pheli
durumlarda ara\c{s}t\i{}rma yapmaktan \c{c}ekinmeyin. Bu konuda daha fazla bilgiyi
{\em Linux \.{I}\c{s}letim Sisteminde G\"{u}venlik\/} ba\c{s}l\i{}\u{g}\i{} alt\i{}nda bulabilirsiniz.

Yukar\i{}daki tabloya bakarak i\c{s}inizin zor oldu\u{g}u kan\i{}s\i{}na kap\i{}lmay\i{}n, zira
t\"{u}m bu denetleme mekanizmas\i{}n\i{} basitle\c{s}tirebilirsiniz. Yap\i{}lacak t\"{u}m
rutin i\c{s}leri bir programa yaz\i{}p g\"{u}n\"{u}n veya haftan\i{}n belirli saatlerinde
bu program\i{} \c{c}al\i{}\c{s}t\i{}r\i{}n ve olabilecek t\"{u}m hata mesajlar\i{}n\i{} bir dosyaya
yaz\i{}n. Bu dosyay\i{} bo\c{s} bir vakitte inceleyerek program\i{}n ne kadar d\"{u}zg\"{u}n
\c{c}al\i{}\c{s}t\i{}\u{g}\i{}n\i{} g\"{o}zlemleyebilirsiniz. Bunun yan\i{}nda sistem y\"{o}netimini zevkli
k\i{}lacak uygulama programlar\i{} da vard\i{}r. Bu uygulama yaz\i{}l\i{}mlar\i{}ndan
baz\i{}lar\i{} o kadar geli\c{s}mi\c{s}tir ki yapamad\i{}klar\i{} tek i\c{s} yemek pi\c{s}irmektir.

Yabanc\i{} kaynakl\i{} yay\i{}nlardan {\em Essential System Management (Frisch)\/} ve
{\em Essential System Administration (O'Reilly)\/} bu y\"{o}nde tavsiye edilebilecek
kitaplar. Piyasada bulunan T\"{u}rk\c{c}e kitaplar\i{}n hi\c{c}birisinde sistem
y\"{o}netimine ciddi olarak de\u{g}inilmedi\u{g}i i\c{c}in T\"{u}rk\c{c}e yay\i{}n bulmak gayet zor.




\section{Yetkili Kullan\i{}c\i{} ve Di\u{g}er Kullan\i{}c\i{}larla \.{I}li\c{s}kiler}



Sistemin en b\"{u}y\"{u}k sorumlusu {\em root\/} \c{s}ifresini bilen kullan\i{}c\i{}d\i{}r. Yukar\i{}da da
belirtildi\u{g}i gibi bu \c{s}ifrenin sorumlulu\u{g}u b\"{u}y\"{u}kt\"{u}r. Sistem y\"{o}neticisi,
makinadaki kullan\i{}c\i{}lar\i{}n isteklerini ve \c{s}ikayetlerini y\"{o}nelttikleri tek
merci durumundad\i{}r. Burada kar\c{s}\i{}l\i{}kl\i{} g\"{u}ven s\"{o}zkonusudur, bunu da sistem
g\"{o}revlisi herkese hissettirmelidir. root kullan\i{}c\i{}s\i{}n\i{}n, ba\c{s}kalar\i{}ndan
g\"{o}z\"{u}n\"{u}z gibi saklad\i{}\u{g}\i{}n\i{}z e-posta ve dosyalar\i{} sizden habersiz okudu\u{g}unu
\"{o}\u{g}renseydiniz tepkiniz ne olurdu ?

root kullan\i{}c\i{}s\i{}n\i{}n sahibinin haberi olmaks\i{}z\i{}n sistem kullan\i{}c\i{}lar\i{}na
ait dosyalar\i{}n yerini ve izinlerini de\u{g}i\c{s}tirmesi de uygun de\u{g}ildir. Zorda
kalsan\i{}z bile, ba\c{s}kalar\i{}na ait hi\c{c}bir dosyay\i{} silmeyin veya i\c{c}eri\u{g}ini
de\u{g}i\c{s}tirmeyin. Belki de s\i{}k\i{}\c{s}\i{}k bir durumdan kurtulman\i{}n ba\c{s}ka bir yolu
vard\i{}r ?

Temel olarak zaman zaman kullan\i{}c\i{}lar\i{} bilgilendirmek ho\c{s} bir
davran\i{}\c{s} olarak kar\c{s}\i{}lan\i{}r ve onlar\i{}n Linux'a olan ilgilerini
per\c{c}inleyebilir. \"{O}rne\u{g}in {\tt /etc/motd} ve {\tt /etc/issue} 
dosyalar\i{}na periyodik olarak \c{c}ekirdek de\u{g}i\c{s}imlerini ve eklenen uygulama 
programlar\i{}n\i{} haber
veren birka\c{c} sat\i{}r ili\c{s}tirebilirsiniz. Sistemde a\c{c}\i{}lan her kullan\i{}c\i{}
hesab\i{}na \url{http://www.linux.org.tr/linuxtrfaq.html}{Linux \c{C}ok\c{c}a Sorulan Sorular (Linux \c{C}SS)}, \c{c}e\c{s}itli UNIX belgeleri
ve \.{I}nternet hakk\i{}nda bilgilendirici d\"{o}k\"{u}manlar\i{}n\i{}n yerald\i{}\u{g}\i{} bir dizi
e-posta da yollanabilir. Bu konuda yarat\i{}c\i{}l\i{}\u{g}\i{}n\i{}z\i{} konu\c{s}turun.






\section{Sistem Kurallar\i{}}



Kullan\i{}c\i{} hesab\i{} a\c{c}madan \"{o}nce birka\c{c} basit kural\i{} tan\i{}mlay\i{}p
kullan\i{}c\i{}lardan bunlara uymalar\i{}n\i{} istemelisiniz. En basitinden birka\c{c}
kural, bir hesab\i{}n birden fazla ki\c{s}i ile kullan\i{}lmamas\i{}, sistemin
g\"{u}venli\u{g}ini zedeleyecek {\tt crack, cops, satan} gibi programlar\i{}n di\u{g}er
kullan\i{}c\i{}lar\i{}n zarar\i{}na \c{c}al\i{}\c{s}t\i{}r\i{}lmamas\i{} ve sistem kaynaklar\i{}n\i{}n
sorumsuzca t\"{u}ketilmemesi olarak say\i{}labilir.

Siz, en iyisi yukar\i{}da yeralan kurallar\i{} birka\c{c} madde halinde yaz\i{}n
ve sistemdeki herkesin bu maddelere uyaca\u{g}\i{}n\i{} taahh\"{u}t eden imzas\i{}n\i{}
al\i{}n. Tats\i{}z durumlar\i{}n \c{c}\i{}kmamas\i{} i\c{c}in de \"{o}nlem almay\i{} ihmal etmeyin.




\section{Kullan\i{}c\i{} \.{I}\c{s}lemleri }



A\c{s}a\u{g}\i{}da yeralan konularda, kullan\i{}c\i{} hesaplar\i{}n\i{}n a\c{c}\i{}lmas\i{} ve kapat\i{}lmas\i{}
anlat\i{}l\i{}yor. 




\subsection{Kullan\i{}c\i{} Hesab\i{} A\c{c}mak (adduser)}



Kullan\i{}c\i{} hesab\i{} a\c{c}mak iki yoldan yap\i{}labilir. Birincisi, {\tt adduser}
komutu yard\i{}m\i{}yla, di\u{g}eri de bu komutun yapt\i{}\u{g}\i{} i\c{s}lemleri s\i{}ras\i{}yla
elden yapmak. root olarak sisteme girin ve komutu \c{c}al\i{}\c{s}t\i{}r\i{}n :

\begin{verbatim}
# adduser

Login name for new user (8 characters or less) []: mehmet

User id for mehmet [ defaults to next available]:

Initial group for mehmet [users]:

Additional groups for mehmet []:

mehmet's home directory [/home/mehmet]:

mehmet's shell [/bin/bash]:

mehmet's account expiry date (MM/DD/YY) []:

OK, I'm about to make a new account. Here's what you entered so far:

New login name: mehmet
New UID: [Next available]
Initial group: users
Additional groups: [none]
Home directory: /home/mehmet
Shell: /bin/bash
Expiry date: [no expiration]

This is it... if you want to bail out, hit Control-C.  Otherwise, press
ENTER to go ahead and make the account.


Making new account...

Changing the user information for mehmet
Enter the new value, or press return for the default

        Full Name []: linux kullanicisi
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:

Changing password for mehmet
Enter the new password (minimum of 6, maximum of 8 characters)
Please use a combination of upper and lower case letters and numbers.
New password:
Bad password: too simple.
Warning: weak password (enter it again to use it anyway).
New password:
Re-enter new password:
Password changed.
Done...
\end{verbatim}


Kullan\i{}c\i{}n\i{}n isminin 3 karakterden az, 8 karakterden fazla olmamas\i{}na
\"{o}zen g\"{o}sterin. Sistem sizden kullan\i{}c\i{}n\i{}n ger\c{c}ek ismini, ev dizinini,
(genellikle /home i\c{c}inde olur), grubunu isteyecektir. {\tt adduser} komutu, e\u{g}er \"{o}zel
olarak de\u{g}i\c{s}tirmek istemezseniz her kullan\i{}c\i{}n\i{}n grup numaras\i{}n\i{} GID =
Group ID) 100 olarak tan\i{}mlayacakt\i{}r. Bu gruba kar\c{s}\i{}l\i{}k gelen isim (Group
Name) {\em users\/} d\i{}r. Kullan\i{}c\i{} kimli\u{g}i (UID = User ID) ise genellikle 500'den sonra
gelen ve kullan\i{}lmayan ilk say\i{} olarak atan\i{}r. 
E\u{g}er UID olarak 0 girerseniz sistemde sizinle beraber bir s\"{u}per-kullan\i{}c\i{}
daha yaratm\i{}\c{s} olursunuz :)

Sisteme giri\c{s}te \c{c}al\i{}\c{s}t\i{}r\i{}lacak olan kabuk i\c{c}in se\c{c}imi ister kullan\i{}c\i{}ya
b\i{}rak\i{}n, isterseniz \"{o}ntan\i{}ml\i{} olarak bash verin. Bash'in sistemdeki
tam patikas\i{}n\i{} ({\tt /bin/bash}) yazmal\i{}s\i{}n\i{}z. Bu alana sadece kabuk ismi
girmek \c{s}art de\u{g}ildir. 

Yukar\i{}da sistem bizi g\"{u}\c{c}l\"{u} bir \c{s}ifre se\c{c}medi\u{g}imiz i\c{c}in uyard\i{}.
\c{S}ifre olarak, herkesin kolayca tahmin edemeyece\u{g}i zorlukta, fakat
kullan\i{}c\i{}n\i{}n bir yere yazmas\i{}n\i{} \"{o}nleyici kolayl\i{}kta bir kelime
bulun. Kullan\i{}c\i{}, hesab\i{}n\i{}n a\c{c}\i{}lmas\i{}ndan hemen sonra sisteme girecekse
ve \c{s}ifresini de\u{g}i\c{s}tirecekse k\i{}sa ve kolay bir \c{s}ifre yeterli olacakt\i{}r.

Her \c{s}eyin do\u{g}ru oldu\u{g}una eminseniz, sorulan soruya "y" ile, de\u{g}ilseniz
"n" ile cevap verin. Hemen ard\i{}ndan {\tt /etc/skel} dizini alt\i{}nda yeralan
t\"{u}m dosyalar bu kullan\i{}c\i{}n\i{}n dizinine kopyalanacakt\i{}r. Buraya, her
kullan\i{}c\i{}n\i{}n ev dizinine \"{o}nceden y\"{u}klenmesini istedi\u{g}iniz sistem
dosyalar\i{}n\i{} yerle\c{s}tirebilirsiniz. Bu andan itibaren yeni kullan\i{}c\i{}
sisteme girebilir.

Sisteme kullan\i{}c\i{} ekleme i\c{s}lemini el yordam\i{}yla yapmak isterseniz,
{\tt /etc/passwd} ve {\tt /etc/shadow} dosyalar\i{}na birer sat\i{}r eklemelisiniz. {\tt /etc/passwd}'de aralar\i{}nda birer ':' karakteri olmak kayd\i{}yla s\i{}rayla hesap ismi, "x", grup kimli\u{g}i, kullan\i{}c\i{} kimli\u{g}i, kullan\i{}c\i{} isim ve soyad\i{}, ev dizini ve kabuk program\i{} yeral\i{}r. {\tt /etc/passwd} i\c{c}ine bu sat\i{}r\i{} ekleyin: 

\begin{verbatim}
ozgur:x:100:502:Misafir Sanatci:/home/ozgur:/bin/bash
\end{verbatim}


{\tt /etc/shadow} i\c{c}ine ise a\c{s}a\u{g}\i{}daki sat\i{}r\i{} yerle\c{s}tirin, tabi di\u{g}er sat\i{}rlara dokunmadan. 

\begin{verbatim}
ozgur::9990:0:99999:7:::: 
\end{verbatim}


Bu sat\i{}rda yeralan ikinci girdi mirkelam kullan\i{}c\i{}s\i{}n\i{}n \c{s}ifresini
belirtiyor. {\tt /etc/shadow} dosyas\i{}na yaz\i{}lacak olan \c{s}ifreyi \"{o}nce bo\c{s} b\i{}rak\i{}p, ard\i{}ndan {\tt passwd ozgur} komutuyla bir \c{s}ifre atay\i{}n. 

{\tt /etc/shadow} dosyas\i{}nda kullan\i{}labilecek parametreler i\c{c}in shadow(5)
man dosyas\i{}na g\"{o}z gezdirin. 

Ard\i{}ndan {\tt /home/ozgur} dizinini olu\c{s}turun. Dizinin grubunu da ayarlay\i{}n. \c{C}ok gerekli olmasa da gelen e-postalar i\c{c}in {\tt /var/spool/mail} dizininde bir dosya tan\i{}mlay\i{}n ve {\tt /etc/skel} i\c{c}inde yeralan dosyalar\i{} kullan\i{}c\i{}n\i{}n
dizinine kopyalay\i{}n. 

\begin{verbatim}
# mkdir /home/ozgur
# chown -R ozgur.users /home/ozgur
# touch /var/spool/mail/ozgur
# chown ozgur.mail /var/spool/mail/ozgur
\end{verbatim}


Yukar\i{}da yaz\i{}lan elle kullan\i{}c\i{} girme i\c{s}lemi, shadow kullanan Linux
makinalar\i{} i\c{c}in ge\c{c}erlidir. Shadow i\c{c}in {\em G\"{u}venlik\/} b\"{o}l\"{u}m\"{u}ne g\"{o}z at\i{}n. 






\subsection{Kullan\i{}c\i{} Grubu}



E\u{g}er Linux makinan\i{}z birka\c{c} yo\u{g}un g\"{o}rev \"{u}stlenmi\c{s}se (\"{o}rne\u{g}in www veya
ftp sunucusu olarak kullan\i{}l\i{}yorsa) her bir i\c{s}lem i\c{c}in birden fazla
grup tan\i{}mlanabilir. {\em users\/} grubuna ba\u{g}l\i{} kalmadan {\em wwwadm\/} veya
{\em ftpadm\/} gibi grup isimleri belirtebilir, bu gruplar\i{} da bir veya
birka\c{c} kullan\i{}c\i{}ya ait olacak \c{s}ekilde de\u{g}i\c{s}tirebilirsiniz.

{\em users\/} grubunun d\i{}\c{s}\i{}nda birden fazla grup tan\i{}mlanmas\i{}, sistemin
denetlenmesini bir miktar g\"{u}\c{c}le\c{s}tirse de sistem g\"{u}venli\u{g}ini art\i{}r\i{}r. Baz\i{}
kullan\i{}c\i{}lar\i{}n birden fazla grubunun olmas\i{}yla bu kullan\i{}c\i{}lar rahatl\i{}kla
sistemde {\em root\/} kullan\i{}c\i{}s\i{}n\i{}n \"{u}stlenmesi gereken i\c{s}leri yapabilirler.

Grup kimli\u{g}inin de\u{g}i\c{s}tirilmesi veya yeni grubun eklenmesi i\c{c}in {\tt /etc/group} dosyas\i{} kullan\i{}l\i{}r. Bu dosyaya grubun ismi, numaras\i{}, grup \c{s}ifresi ve gruba ait kullan\i{}c\i{}lar yaz\i{}l\i{}r. Her kullan\i{}c\i{}n\i{}n en az bir grubu vard\i{}r.

{\tt /etc/group} dosyas\i{}n\i{}n iki sat\i{}r\i{}nda yeralan parametreler,

\begin{verbatim}
root::0:root 
sys::3:root,bin,sys,adm 
\end{verbatim}


gibidir. S\i{}rayla ":" karakteri ile ayr\i{}lm\i{}\c{s} her kolon,

\begin{enumerate}
\item Grup ismi 
\item Grup \c{s}ifresi 
\item Grup numaras\i{} 
\item Gruba ait kullan\i{}c\i{}lar
\end{enumerate}


\c{s}eklinde \"{o}zetlenebilir. \.{I}lk s\"{u}tun grup ismini belirtir. Grup ismi,
{\tt ls -l} komutunu i\c{s}letince kullan\i{}c\i{} isminin hemen sa\u{g}\i{}nda g\"{o}r\"{u}len
kelimedir. Grup \c{s}ifresi, gruba ait olmayan kullan\i{}c\i{}lar\i{}n dosyalar\i{}na
eri\c{s}im sa\u{g}lamak i\c{c}in kullan\i{}l\i{}r.

Grup \c{s}ifresi nadiren kullan\i{}l\i{}r. Grup numaras\i{}, kullan\i{}c\i{}n\i{}n ait oldu\u{g}u
grubun kar\c{s}\i{}l\i{}\u{g}\i{}d\i{}r. Son s\"{u}tunda ise gruba ait kullan\i{}c\i{}lar, her biri
birer virg\"{u}lle ayr\i{}lm\i{}\c{s} olarak yaz\i{}l\i{}r. Kullan\i{}c\i{} sisteme girdi\u{g}i zaman
otomatik olarak {\tt /etc/passwd} dosyas\i{}nda yeralan grup ismi aktif olur, bu
y\"{u}zden her kullan\i{}c\i{}n\i{}n ismi {\tt /etc/groups} dosyas\i{}na yaz\i{}lmaz. Sistem ilk
kuruldu\u{g}u anda birka\c{c} grup halihaz\i{}rda zaten vard\i{}r. \"{O}rne\u{g}in root grubunun
grup numaras\i{} 0'd\i{}r ve pek\c{c}ok sistem dosyas\i{}n\i{}n sahibidir, bin grubunun numaras\i{} is 2 olup {\tt /usr/bin} ve {\tt /bin} dizinlerindeki \c{c}o\u{g}u dosyan\i{}n 
grubudur.

Hangi grubun (veya tan\i{}mlanm\i{}\c{s}sa gruplar\i{}n) i\c{c}inde oldu\u{g}unuzu \"{o}\u{g}renmek
i\c{c}in {\tt groups} komutunu kullanabilirsiniz.

\begin{verbatim}
$ groups gorkem 
users
\end{verbatim}





\subsection{Kullan\i{}c\i{}n\i{}n  Hesab\i{}n\i{}n Silinmesi}



Bir kullan\i{}c\i{}ya ait hesab\i{} silmek i\c{c}in {\tt /etc/passwd} dosyas\i{}nda bu
kullan\i{}c\i{}ya ait olan sat\i{}rdaki \c{s}ifre kolonunun ba\c{s}\i{}na {\em *\/} i\c{s}areti
koyun. Bir \c{s}ifrelenmi\c{s} bir parolan\i{}n i\c{c}inde {\em *\/} karakteri olamayaca\u{g}\i{}ndan
bu kullan\i{}c\i{} bir daha sisteme giremez.

Hesab\i{} tamamen silmek i\c{c}in, kullan\i{}c\i{}n\i{}n ev dizinini ve e-postalar\i{}n\i{} yedekledikten sonra sistemde kullan\i{}c\i{}ya ait olan dosyalar\i{} ({\tt /tmp} alt\i{}nda) ve ev dizinini silin.

{\tt /etc/passwd} ve {\tt /etc/group} dosyas\i{}ndan kullan\i{}c\i{}n\i{}n isminin ge\c{c}ti\u{g}i sat\i{}rlar\i{} kald\i{}r\i{}n.

Sistemde kullan\i{}c\i{}ya ait olabilecek t\"{u}m dosyalar\i{} da silmeniz
gerekebilir. Bunun i\c{c}in {\tt find} kullanabilirsiniz.

\begin{verbatim}
$ find / -user gorkem -ls -exec rm {} \;
\end{verbatim}


Bu komutu {\tt /etc/passwd} dosyas\i{}ndan kullan\i{}c\i{} ismine ait olan sat\i{}r\i{}
kald\i{}rmadan \"{o}nce yapmal\i{}s\i{}n\i{}z.






\section{Sistemin Yedeklenmesi}



Makinan\i{}z\i{}n belirli aral\i{}klarla yedeklenmesi, sistem g\"{u}venli\u{g}inin
bir par\c{c}as\i{} say\i{}labilir. Donan\i{}mdan meydana gelen bir hata
sonucu veya yanl\i{}\c{s}l\i{}kla girilen bir komut, sistemi a\c{c}\i{}lamaz hale
getirebilir. Ancak yedekleme ile bu t\"{u}r kullan\i{}c\i{} hatalar\i{}n\i{}n \"{o}n\"{u}ne
ge\c{c}ebilirsiniz. Yedekleme genellikle t\"{u}m sistem \"{u}zerinde yap\i{}lmaz. Sadece
\"{o}nemli sistem bilgilerini i\c{c}eren dizinler yedekleme a\c{s}amas\i{}na girmelidir.

Yedekleme \"{u}niteleri olarak teyp, disket veya ba\c{s}ka diskler
kullan\i{}labilir. Teypler, b\"{u}y\"{u}k miktarda yedekleme i\c{s}lemleri i\c{c}in \"{o}n
plana \c{c}\i{}ksa da birka\c{c} dosyadan olu\c{s}an paketlerin korunmas\i{} s\"{o}z konusu olacaksa
disketler daha pratiktir. \.{I}nternet \"{u}zerinde ise ba\u{g}\i{}ms\i{}z bir makina,
kendi rutin g\"{o}revi d\i{}\c{s}\i{}nda yerel a\u{g}da bulunan makinalar\i{}n yedeklerini
belirli g\"{u}n ve saatlerde almak \"{u}zere programlanabilir.

Sistemde fazla miktarda kullan\i{}c\i{} varsa yedekleme i\c{s}lemi ciddi bir d\"{u}zene
oturtulmal\i{}d\i{}r. Sistemdeki hayati dosyalar \"{o}rne\u{g}in her hafta, \"{u}zerinde
kullan\i{}c\i{}lar\i{}n bulunmad\i{}\u{g}\i{} ak\c{s}am saatlerinde yedeklemeye sokulabilir.

Yedekleme i\c{c}in birka\c{c} yol \"{o}nerilebilir. Kullan\i{}\c{s}l\i{} olmas\i{} i\c{c}in
yedeklemeyi yapan program, yedeklenen dosyalar aras\i{}ndaki belirli bir
dosyay\i{} kolayca a\c{c}abilmelidir. Bunun yan\i{}nda, yedek bilginin de bozulmas\i{}
ihtimali vard\i{}r. Yede\u{g}in i\c{c}indeki tek bayt\i{}n bozulmas\i{}, baz\i{} durumlarda
t\"{u}m yede\u{g}in \c{c}\"{o}p y\i{}\u{g}\i{}n\i{} haline gelmesine yol a\c{c}abilir. Do\u{g}ru yedekleme
program\i{}n\i{}n kullan\i{}lmas\i{} bu anda \"{o}nem kazan\i{}r.

Yedeklenecek olan dizinlerden en \"{o}nemlileri, sistem konfig\"{u}rasyon
dosyalar\i{}n\i{}n yerald\i{}\u{g}\i{} {\tt /etc}, kullan\i{}c\i{} dizinlerinin yerald\i{}\u{g}\i{} /home,
baz\i{} X Window dosyalar\i{}n\i{}n bulundu\u{g}u /usr/X11/lib/X11 dizini alt\i{}ndaki
baz\i{} dosya ve dizinler, 
{\tt /usr} ve {\tt /usr/local} dizinde yeralan baz\i{} dizin
ve dosyalar ile {\tt /root} dizinidir. \c{S}art olmasa da yedekleme i\c{c}in yeriniz
bolsa {\tt /tmp} dizinini de koyabilirsiniz.

Elektronik postalar\i{} ( {\tt /var/spool/mail}) da unutmamak gerekir. Yoksa,
\c{c}ok me\c{s}hur olan "e-mey\i{}l\i{}m cyber-space'de kayboldu" c\"{u}mlesini s\i{}k\c{c}a
duymaya ba\c{s}lars\i{}n\i{}z.

A\c{s}a\u{g}\i{}daki komut, {\tt /usr} ve {\tt /home} dizinlerini diskete yedekler.

\begin{verbatim}
$ tar cvMf /dev/fd0 /usr /home
\end{verbatim}


{\tt tar} komutununa verilen M parametresi yard\i{}m\i{}yla bir disket doldu\u{g}u
zaman ba\c{s}ka bir diskete devam etmenizi sa\u{g}lar. Dizinleri s\i{}k\i{}\c{s}t\i{}rarak
atmak i\c{c}in z se\c{c}ene\u{g}ini vermek yeterli olur. S\i{}k\i{}\c{s}t\i{}rarak yedekleme
disket ya da teyp'te yer kazand\i{}racakt\i{}r, ancak hata oldu\u{g}unda verilerin
kurtar\i{}lmas\i{} daha zor olacakt\i{}r. A\c{c}mak i\c{c}in

\begin{verbatim}
$ tar xf /dev/fd0
\end{verbatim}


komutu yeterlidir. S\i{}k\i{}\c{s}t\i{}r\i{}larak diskete at\i{}lan yedekler i\c{c}in a\c{c}arken
de "z" kullan\i{}n. Disketleri s\i{}ra ile numaraland\i{}rmay\i{} ihmal etmeyin,
yoksa bir disketten fazla yer kaplayan ar\c{s}ivleri a\c{c}amazd\i{}n\i{}z.

Linux'ta gerek SCSI, gerek floppy teyp deste\u{g}i vard\i{}r. \"{O}zellikle \c{c}ok 
veri yedekleyecekseniz teypler ka\c{c}\i{}n\i{}lmaz olur. Teyplere yedek al\i{}rken 
de yukar\i{}daki floppy orneklerindeki gibi {\tt tar} kullanabilirsiniz. 
{\tt tar}'\i{}n yan\i{} s\i{}ra s\i{}k\c{c}a kullan\i{}lan yedekleme komutlar\i{} aras\i{}nda
{\tt dump ve restore}, {\tt cpio} ve {\tt dd} g\"{o}sterilebilir. Linux'ta 
ilk SCSI teyp s\"{u}r\"{u}c\"{u}ye {\tt /dev/st0}, ikinciye {\tt /dev/st1} ...
kullanarak, PC'lerde s\i{}k\c{c}a kullan\i{}lan ``floppy teyp''lere de 
{\tt /dev/ftape} \"{u}zerinden eri\c{s}ebilirsiniz. Piyasada bulaca\u{g}\i{}n\i{}z
ortalama floppy teyplerin kapasiteleri 120M, 4mm SCSI teyplerin 4G, 8mm
SCSI teyplerin ise 7G kadar olacakt\i{}r. Teybin kapasitesi kulland\i{}\u{g}\i{}n\i{}z
s\"{u}r\"{u}c\"{u}n\"{u}n yetene\u{g}ine ve teybinizin uzunlu\u{g}una g\"{o}re de\u{g}i\c{s}ir. \"{O}rnek olarak,
b\"{u}t\"{u}n sistemin tar kullanarak ilk SCSI teybe yedeklemek i\c{c}in,

\begin{verbatim}
# tar cvf /dev/st0 /
\end{verbatim}


Bir TCP/IP a\u{g}\i{}n\i{}z varsa, ve birden fazla Linux ya da UNIX makinas\i{}
kullan\i{}yorsan\i{}z, tek bir teyp s\"{u}r\"{u}c\"{u} ile b\"{u}t\"{u}n makinalar\i{}n\i{}z\i{}n, hatta
Windows makinalar\i{}n\i{}z\i{}n bile (Linux'un yard\i{}m\i{}yla) yede\u{g}ini
alabilirsiniz. Bu i\c{s} i\c{c}in {\em amanda\/} gibi daha \"{o}zelle\c{s}mi\c{s} ve yedekleme
i\c{s}lemini otomatikle\c{s}tiren bir program kullanabilece\u{g}iniz gibi, {\tt GNU
tar}'dan da yararlanabilirsiniz. \"{O}rne\u{g}in {\tt tar} ile, {\em cclub.metu.edu.tr\/}
makinas\i{}ndan, {\em linux.org.tr\/} makinas\i{}ndaki floppy teybe yedek almak i\c{c}in,

\begin{verbatim}
cclub:~# tar cvf linux.org.tr:/dev/ftape /home
\end{verbatim}


yukar\i{}daki komutun \c{c}al\i{}\c{s}mas\i{} i\c{c}in linux.org.tr makinas\i{}n\i{}n
{\tt root}'unun {\tt .rhosts} dosyas\i{}nda cclub makinas\i{}n\i{}n {\tt root}'una
izin verilmi\c{s} olmas\i{} gerekir. Bu i\c{s}lem g\"{u}venlik i\c{c}in sak\i{}ncal\i{}
oldu\u{g}undan, bu i\c{s} i\c{c}in \"{o}zel bir kullan\i{}c\i{} a\c{c}mak gibi bir y\"{o}nteme
ba\c{s}vurulabilir. \"{O}rne\u{g}in linux.org.tr'da {\tt yedek} adl\i{} bir kullan\i{}c\i{}
a\c{c}t\i{}\u{g}\i{}m\i{}z\i{} d\"{u}\c{s}\"{u}nelim. Bu durumda yukar\i{}daki komutu,

\begin{verbatim}
cclub:~# tar cvf yedek@linux.org.tr:/dev/ftape /home
\end{verbatim}


\c{s}eklinde yazabiliriz.




\section{Sistemin G\"{u}ncellenmesi}



Tekrar Linux y\"{u}klenecek olan makina \"{u}zerinde halihaz\i{}rda Linux
bulunmas\i{}n\i{}n yararlar\i{} oldu\u{g}u gibi baz\i{} sak\i{}ncalar\i{} vard\i{}r. \.{I}lk olarak
yararlar\i{}na de\u{g}inmek gerekirse, yap\i{}lacak asl\i{}nda sadece i\c{s}letim
sisteminin bulundu\u{g}u b\"{o}l\"{u}m\"{u} de\u{g}i\c{s}tirmektir. Takas alan\i{}n\i{}n ayr\i{}lmas\i{},
kullan\i{}c\i{} alan\i{}n\i{}n ayr\i{}lmas\i{} gibi i\c{s}lemler bu durumda \"{o}nceden yap\i{}lm\i{}\c{s}
oluyorlar. Ancak yeni i\c{s}letim sisteminin y\"{u}klenmesinin baz\i{} zararlar\i{} da
var.

Her\c{s}eyden \"{o}nce \c{c}al\i{}\c{s}t\i{}\u{g}\i{} bilinen bir i\c{s}letim sistemi yenisi ile
de\u{g}i\c{s}tiriliyor. Ger\c{c}ekten bunu gerektirecek bir sebep olmad\i{}k\c{c}a bu t\"{u}r
g\"{u}ncellemelerden ka\c{c}\i{}n\i{}lmas\i{} veya en aza indirilmesi gerekir. Yeni bir
sistem, yeni bilinmeyenler ve az da olsa bile \c{c}al\i{}\c{s}mama riski
getirecektir. 

E\u{g}er sistem \"{u}zerinde belirli hizmetler veriliyorsa o hizmetlere ili\c{s}kin
verilerin bu g\"{u}ncelleme esnas\i{}nda yok olmamas\i{}na dikkat edilmeli. Mesela
makina bir web sunucu olarak kullan\i{}l\i{}yorsa web dosyalar\i{}n\i{}n bir \c{s}ekilde
yeni sisteme aktar\i{}lmas\i{} gerekecektir .

Benzer bir \c{s}ekilde makinaya ait tan\i{}mlar\i{}n ({\tt /etc}) ve standart da\u{g}\i{}t\i{}m
d\i{}\c{s}\i{}nda y\"{u}klenmi\c{s} paketlerin \"{o}nceden yedeklenmesi gerekir. Yoksa her\c{s}eye
yeniden ba\c{s}lamak gerekebilir. 

G\"{u}ncelleme i\c{c}in iki y\"{o}ntem akla gelebilir, do\u{g}rudan yeni sistemi eskisinin
\"{u}zerine bindirmek veya eskisini silerek yeniden y\"{u}klemek. Slackware s\"{u}r\"{u}m\"{u}
i\c{c}in en sa\u{g}l\i{}kl\i{}s\i{} eski sistemi silmektir. \c{C}\"{u}nk\"{u} de\u{g}i\c{s}ik da\u{g}\i{}t\i{}mlarda
dosya da\u{g}\i{}l\i{}m\i{} farkl\i{}l\i{}klar g\"{o}stere bilmektedir. Bunun sonucunda baz\i{}
dosyalar birden fazla yerde g\"{o}z\"{u}kebilmektedirler. Bir di\u{g}er sak\i{}nca ise
setup yaz\i{}l\i{}m\i{}n\i{}n bazen bu durumda \c{s}a\c{s}\i{}rabilmesi ve hata vermesi. Baz\i{}
ticari Linux s\"{u}r\"{u}mleri ({\em Red-Hat, Debian, Caldera gibi\/}) eski s\"{u}r\"{u}m\"{u} silmeye
gerek b\i{}rakmadan sistemi g\"{u}ncelleme \"{o}zelli\u{g}ine sahipler. 

G\"{u}ncellemeniz gerekebilecek dizinler, {\tt /var/spool/mail}, kullan\i{}c\i{}
dizinleri (root dahil), {\tt /usr} alt\i{}nda gerekli dizinler,{\tt /var/adm/} ve
{\tt /etc} olarak say\i{}labilir.  Bazen {\tt /etc} i\c{c}inde yer alan
dosyalar\i{}n yeri veya \c{s}ekli de\u{g}i\c{s}mi\c{s} olabilir.  Onun i\c{c}in en g\"{u}venlisi
teker teker dosyalar\i{} inceleyip kopyalamakt\i{}r.  Belirli dosyalar\i{} yeni
sistemi kurduktan sonra hemen kopyalayabilirsiniz :

\begin{verbatim}
/etc/group
/etc/printcap 
/etc/hosts ... 
\end{verbatim}


Daha \"{o}nce shadow kullanmayan bir sistemden shadow sistemine ge\c{c}iyorsan\i{}z,
{\tt /etc/passwd} ve {\tt /etc/shadow} dosyalar\i{}nda gerekli de\u{g}i\c{s}iklikleri yapmadan yeni yerine kopyalamay\i{}n.

Ayr\i{}ca ne olur ne olmaz diye \c{c}al\i{}\c{s}t\i{}\u{g}\i{}n\i{} bildi\u{g}iniz bir \c{c}ekirde\u{g}i de
yede\u{g}e almay\i{} ihmal etmeyin. 




\section{\c{C}ekirde\u{g}in Derlenmesi}



Bu b\"{o}l\"{u}mde, \c{c}ekirde\u{g}in konfig\"{u}rasyonu ve derlenmesi i\c{c}in gerekli
bilgiler vard\i{}r. \c{C}ekirdek derleme uzun ve zahmetli bir i\c{s}lemdir. Derleme
a\c{s}amas\i{}n\i{} en k\i{}sa zamanda ve en uygun yoldan ger\c{c}ekle\c{s}tirmek gerekir. Derleme i\c{s}lemi, kullan\i{}c\i{}n\i{}n \"{o}n\"{u}ne kafas\i{}n\i{} kar\i{}\c{s}t\i{}racak kadar \c{c}ok se\c{c}enek sunar.

Nedir bu \c{c}ekirdek? Genel anlamda \c{c}ekirdek, yaz\i{}l\i{}m\i{}n ve donan\i{}m\i{}n aras\i{}nda
bekleyerek ileti\c{s}imi sa\u{g}layan bir arabirimdir. \c{C}al\i{}\c{s}an t\"{u}m programlar\i{}n
ve s\"{u}re\c{c}lerin haf\i{}za ile olan ili\c{s}kilerini d\"{u}zenler. \.{I}\c{s}lemcinin g\"{u}c\"{u}n\"{u}n
t\"{u}m bu programlar aras\i{}nda adil bir \c{s}ekilde da\u{g}\i{}t\i{}m\i{}n\i{} \"{u}zerine al\i{}r. Bu
i\c{s}lemleri kullan\i{}c\i{}n\i{}n haberi olmadan her an durmaks\i{}z\i{}n yapar.

\c{C}ekirdek kaynak dosyalar\i{} diskte hat\i{}r\i{} say\i{}l\i{}r bir alan tutar. \"{O}rne\u{g}in s\"{u}r\"{u}m 2.0.20 yakla\c{s}\i{}k 6Mb disk alan\i{} kaplar. A\c{c}\i{}ld\i{}\u{g}\i{} zaman ise toplam kaplad\i{}\u{g}\i{}
alan 24 Mb olur. Derleme a\c{s}amas\i{}ndan sonra bu rakam 30 Mb'yi ge\c{c}er. Her
eklenen  ayg\i{}t s\"{u}r\"{u}c\"{u} deste\u{g}i bir miktar daha yer al\i{}r.

Kulland\i{}\u{g}\i{}n\i{}z sisteme g\"{o}re \c{c}ekirde\u{g}in derlenme s\"{u}resi de\u{g}i\c{s}kenlik
g\"{o}sterir. 12 Mb 486DX4/100 makinas\i{}nda, 5 dosya sistemi deste\u{g}i,
a\u{g} deste\u{g}i ve ses kart\i{} s\"{u}r\"{u}c\"{u}s\"{u} ile yakla\c{s}\i{}k 30 dakika s\"{u}rer. Ayn\i{}
konfig\"{u}rasyonu i\c{c}eren \c{c}ekirde\u{g}in derlenmesi ise daha g\"{u}\c{c}s\"{u}z bir makina
olan 8Mb 386DX/40 alt\i{}nda 1.5 saati bulur. Derlerken gidip \c{c}ay\i{}n\i{}z\i{} i\c{c}in,
biraz televizyon seyredin. Makinaniz 386 ise bir banyo al\i{}p d\i{}\c{s}ar\i{} \c{c}\i{}k\i{}n,
al\i{}\c{s}veri\c{s} yap\i{}n. \c{C}ok \"{u}mitsiz bir durumdaysan\i{}z, yap\i{}lacak en iyi \c{s}ey en
yak\i{}n bilgisayar sat\i{}c\i{}s\i{}na u\u{g}rayarak yeni fiyatlar\i{} sormak :-)

\c{C}ekirdek kaynak kodu ,
\url{ftp://ftp.metu.edu.tr/pub/linux/tsx/sources/system}{ODT\"{U} ftp ar\c{s}ivindeki} adresinden veya tsx-11.mit.edu adresinin
yans\i{}s\i{}n\i{} tutan herhangi bir adresten al\i{}nabilir. Bu dizin alt\i{}ndaki
Linux s\"{u}r\"{u}mlerinin bir tanesini (v1.2, v2.0, v2.1 gibi) se\c{c}tikten
sonra alt\i{}ndaki dosyay\i{} alabilirsiniz. Dosyan\i{}n ismi linux-x.y.z.tar.gz
yap\i{}s\i{}ndad\i{}r.

A\c{s}a\u{g}\i{}daki \"{o}rnekte ODT\"{U} ftp ar\c{s}ivinden 2.0.20 s\"{u}r\"{u}m\"{u}n\"{u}n al\i{}n\i{}\c{s}\i{} g\"{o}sterilmektedir:

\begin{verbatim}
$ ftp ftp.metu.edu.tr
Connected to ephesus.cc.metu.edu.tr.
220-
220-Welcome to METU Ftp Site !
220-
220-All logins and transfers are logged with your hostname.
220-If you do not agree with this policy, please cancel now.
220-
220 ephesus FTP server (Version wu-2.4(5) Wed Jan 10 18:06:56 EET 1996) ready.
Name (ftp.metu.edu.tr:gorkem): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230-##########################################################################
230-##    Welcome to the Middle East Technical University Ftp Archive       ##
230-##########################################################################
230-
230-
230-Hello ftp@compclup.ceng.metu.edu.tr !
230-You are the 19. anonymous user. 
230-Maximum number of users allowed is 100.
230-Local Time is Tue Nov  5 12:19:41 1996.
230-
230-Mirrored sites are placed under the directory /pub
230-This archive is maintained by ftpload@ftp.metu.edu.tr
230-You can reach this archive via FSP at port 21.
230-
230-You can reach public directories via "cd dirname" 
230-command independent of your current location; 
230-e.g. "cd linux" instead of "cd /pub/linux"
230-
230 Guest login ok, access restrictions apply.
ftp> cd /pub/linux/tsx/sources/system/
250-Please read the file README
250-  it was last modified on Mon Sep 16 11:36:00 1996 - 50 days ago
250 CWD command successful.
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 66
-rw-r--r--  1 ftpload  ftp-adm     36981 Sep 16 12:36 CREDITS
drwxr-xr-x  3 ftpload  ftp-adm       512 Oct 13 15:59 Historic
-rw-r--r--  1 ftpload  ftp-adm     12056 Sep 16 12:36 README
drwxr-xr-x  2 ftpload  ftp-adm       512 Oct 14 11:47 SillySounds
drwxr-xr-x  2 ftpload  ftp-adm       512 Oct 13 18:17 testing
drwxr-xr-x  2 ftpload  ftp-adm       512 Oct 14 11:47 v1.0
drwxr-xr-x  2 ftpload  ftp-adm      2048 Oct 31 21:55 v1.1
drwxr-xr-x  2 ftpload  ftp-adm      1024 Jun 25 11:34 v1.2
drwxr-xr-x  2 ftpload  ftp-adm      6656 Sep 27 04:24 v1.3
drwxr-xr-x  2 ftpload  ftp-adm      1536 Nov  2 00:05 v2.0
drwxr-xr-x  2 ftpload  ftp-adm       512 Nov  2 21:33 v2.1
226 Transfer complete.
ftp> cd v2.0
250 CWD command successful.
ftp> bin
200 Type set to I.
ftp> dir linux*
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 141009
-rw-r--r--  1 ftpload  ftp-adm   5859566 Jul  3 11:22 linux-2.0.1.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5940281 Jul 27 06:39 linux-2.0.10.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5952403 Aug  5 03:01 linux-2.0.11.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5954278 Aug  9 12:53 linux-2.0.12.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5981780 Aug 16 06:19 linux-2.0.13.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5984960 Aug 20 11:52 linux-2.0.14.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5986368 Aug 25 06:20 linux-2.0.15.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5990228 Aug 31 14:03 linux-2.0.16.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5991606 Sep  2 06:37 linux-2.0.17.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5993351 Sep  5 10:38 linux-2.0.18.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5997342 Sep 11 10:21 linux-2.0.19.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5861789 Jul  5 12:09 linux-2.0.2.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5997693 Sep 13 08:53 linux-2.0.20.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5999162 Sep 20 09:51 linux-2.0.21.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   6009488 Oct  8 13:02 linux-2.0.22.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   6010694 Oct 18 08:20 linux-2.0.23.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5931967 Jul  6 07:53 linux-2.0.3.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5926911 Jul  8 08:48 linux-2.0.4.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5927899 Jul 10 08:23 linux-2.0.5.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5929807 Jul 12 07:22 linux-2.0.6.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5931378 Jul 15 07:38 linux-2.0.7.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5936467 Jul 20 02:52 linux-2.0.8.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5939510 Jul 26 04:09 linux-2.0.9.tar.gz
-rw-r--r--  1 ftpload  ftp-adm   5843677 Jun  9 23:36 linux-2.0.tar.gz
226 Transfer complete.
ftp> get linux-2.0.20.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-2.0.20.tar.gz (5997693 bytes).
226 Transfer complete.
5997693 bytes received in 136 secs (43 Kbytes/sec)
ftp> quit
221 Goodbye.
\end{verbatim}


Sisteme root olarak giri\c{s} yap\i{}n ve {\tt /usr/src} dizinine ge\c{c}in. Linux'un
kurulmas\i{} a\c{s}amas\i{}nda \c{c}ekirdekleri de kurmu\c{s} iseniz bu dizinde 'linux'
isminde ve eski \c{c}ekirde\u{g}in kaynak kodlar\i{}n\i{} kapsayan bir alt dizin
g\"{o}receksiniz. Genellikle her kullan\i{}c\i{}n\i{}n yapt\i{}\u{g}\i{}, bu dizinin ismini o
an \c{c}al\i{}\c{s}an \c{c}ekirde\u{g}in s\"{u}r\"{u}m\"{u}ne g\"{o}re de\u{g}i\c{s}tirmektir. \c{C}ekirdek s\"{u}r\"{u}m\"{u}n\"{u}
bulmak i\c{c}in ise {\tt uname -r} komutunu kullanabilirsiniz.

\begin{verbatim}
$ uname -r
  2.0.23
\end{verbatim}


Bu komuttan \c{c}ekirde\u{g}in 2.0.23 s\"{u}r\"{u}m\"{u} oldu\u{g}unu anlayabiliriz. 

\c{C}ekirdek kodunu i\c{c}eren paketi a\c{c}madan \"{o}nce {\tt /usr/src} dizinine
kopyalay\i{}n, ve a\c{c}madan \"{o}nce bu dizinde 'linux' isimli bir dizinin
olmad\i{}\u{g}\i{}na emin olun. \c{S}imdi {\tt /usr/src} i\c{c}inde iken s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s}
\c{c}ekirdek kodunu 'tar' komutu yard\i{}m\i{}yla a\c{c}\i{}n.

\begin{verbatim}
# tar -zxf linux-x.y.z.tar.gz
\end{verbatim}


Komutun i\c{s}letimi bitince 'linux' dizini olu\c{s}ur. \.{I}lk defa derleme i\c{s}lemi
yapacaksan\i{}z a\c{s}a\u{g}\i{}daki komutlar\i{} s\i{}ras\i{}yla yaz\i{}n.

\begin{verbatim}
# cd /usr/include 
# rm -rf asm linux scsi 
# ln -s /usr/src/linux/include/asm-i386 asm 
# ln -s /usr/src/linux/include/linux linux 
# ln -s /usr/src/linux/include/scsi scsi 
# cd /usr/src/linux 
# make mrproper
\end{verbatim}





\subsection{\c{C}ekirdek Konfig\"{u}rasyonu}



{\tt /usr/src/linux} dizini altinda iken {\tt make config} yaz\i{}n. Bu
komut, bir konfig\"{u}rasyon dosyas\i{} yaratmak amac\i{}yla sorular sorar.

Kar\c{s}\i{}n\i{}za \c{c}\i{}kan sorulara 'y' (evet) veya 'n' (hay\i{}r) ile cevap vermeniz
gerekir. Baz\i{} ayg\i{}t s\"{u}r\"{u}c\"{u}lerde 'm' se\c{c}ene\u{g}i de olabilir. Bunun anlam\i{},
sistem o program\i{} {\em mod\"{u}l\/} olarak derleyecek ve \c{c}ekirde\u{g}e dahil etmeyecek
demektir. Kullan\i{}c\i{} derleme a\c{s}amas\i{}ndan sonra istedi\u{g}i zaman bu mod\"{u}l\"{u}
\c{c}ekirde\u{g}e dahil edebilir, i\c{s}ini bitirdikten sonra da \c{c}\i{}karabilir.

2.0.x ve daha yukar\i{} s\"{u}r\"{u}mlerde '?' tu\c{s}una basmakla daha ayr\i{}nt\i{}l\i{}
bilgi alabilirsiniz. A\c{s}a\u{g}\i{}da baz\i{} konfig\"{u}rasyon parametreleri verilmi\c{s}tir.

\begin{description}
\item[Matematik i\c{s}lemci em\"{u}lasyonu (Kernel math emulation)] \mbox{}

Kulland\i{}\u{g}\i{}n\i{}z
makinan\i{}n i\c{s}lemcisi yard\i{}mc\i{} matematik i\c{s}lemcisine sahip de\u{g}ilse (486SX,
386SX veya daha d\"{u}\c{s}\"{u}k makinalar) bu se\c{c}ene\u{g}e evet cevab\i{}n\i{} vermelisiniz.



\item[Normal (MFM/RLL) disk ve IDE disk/cdrom deste\u{g}i (Normal disk and
IDE disk/cdrom support)] \mbox{}

Hemen herkesin kulland\i{}\u{g}\i{} PC sabit
disklerinin standart olmas\i{} sebebiyle bu se\c{c}enege 'y' cevab\i{}
verilebilir. Daha ileride SCSI sabit disk ve cdrom deste\u{g}i de
sorulacakt\i{}r.  Ard\i{}ndan gelecek olan 'old disks-only' ve 'new IDE'
s\"{u}r\"{u}c\"{u}lerinden birini se\c{c}erken, aralar\i{}ndaki fark\i{}n ilkinde tek
arabirim \"{u}zerinden iki adet diski desteklemesi, di\u{g}erinde ise ikinci
arabirim ile birlikte IDE/ATAPI cdrom'lar\i{} desteklemesidir.



\item[A\u{g} deste\u{g}i (Networking support)] \mbox{}

Makinan\i{}z herhangi bir a\u{g} \"{u}zerinde
ise (\.{I}nternet gibi), veya \.{I}nternet'e ba\u{g}lanmak i\c{c}in SLIP, PPP
gibi programlar\i{} kullanmak istiyorsan\i{}z bu b\"{o}l\"{u}me 'y' cevab\i{}
vermelisiniz. Fakat, a\u{g} \"{u}zerinde olmasan\i{}z bile her ge\c{c}en g\"{u}n yeni yeni
uygulama programlar\i{}n\i{}n ve paketlerin a\u{g} deste\u{g}ine ihtiyac\i{} oldu\u{g}unu
d\"{u}\c{s}\"{u}n\"{u}rsek (X Window gibi) bu b\"{o}l\"{u}me 'y' cevab\i{} vermeniz \c{s}art g\"{o}r\"{u}n\"{u}yor.



\item[En fazla 16Mb haf\i{}za (Limit memory to low 16Mb)] \mbox{}

Baz\i{} hatal\i{} 386 DMA
denetleyicileri haf\i{}zan\i{}n 16Mb'tan y\"{u}ksek b\"{o}l\"{u}mlerine ula\c{s}amazlar. \c{C}ok
nadir g\"{o}r\"{u}len bu durum makinan\i{}zda varsa bu se\c{c}ene\u{g}i 'y' ile ge\c{c}in.



\item[System V IPC (System V IPC):] \mbox{}

IPC (Interprocess Communication) deste\u{g}i
verir. Baz\i{} Perl programlar\i{} ve oyunlar (DOOM gibi) bu se\c{c}enek olmadan
\c{c}al\i{}\c{s}amazlar. Bu durumda ne yapt\i{}\u{g}\i{}n\i{}z\i{} iyi bilmiyorsan\i{}z bu se\c{c}ene\u{g}e
'y' -evet- cevab\i{} verin.



\item[\.{I}\c{s}lemci tipi (386, 486, Pentium, PPro):] \mbox{}

Burada, \c{c}ekirde\u{g}inizi hangi
t\"{u}r makina i\c{c}in derliyorsan\i{}z, o makinan\i{}n tipini giriniz.



\item[SCSI deste\u{g}i (SCSI Support):] \mbox{}

SCSI ayg\i{}tlar\i{}n\i{}z var ise bu se\c{c}enek i\c{c}in
'evet' deyin. Daha sonra da kar\c{s}\i{}n\i{}za gelecek SCSI ayg\i{}tlar aras\i{}ndan
size uygun olanlar\i{} al\i{}n.



\item[A\u{g} kart\i{} deste\u{g}i (Network Device Support):] \mbox{}

A\u{g}a ba\u{g}lanmak i\c{c}in bir kart
kullanacaksan\i{}z veya SLIP, PPP ba\u{g}lant\i{}lar\i{}, ya da paralel port \"{u}zerinden
yapaca\u{g}\i{}n\i{}z her t\"{u}rl\"{u} i\c{s}lemler i\c{c}in bu se\c{c}ene\u{g}i i\c{s}aretleyin. Ard\i{}ndan
ekrana gelen kart tiplerinden uygun olanlar\i{}n\i{} se\c{c}in.



\item[Dosya sistemleri (Filesystems):] \mbox{}

Burada, a\c{s}a\u{g}\i{}daki dosya sistemlerinden
kullanmak istediklerinizi se\c{c}ebilirsiniz.

\begin{itemize}
\item minix: Yeni da\u{g}\i{}t\i{}mlar , artik tarih olmaya ba\c{s}layan bu dosya sistemini desteklememekte. Baz\i{} kurtarma disketleri yaratmak i\c{c}in daha yayg\i{}n, fakat daha az kararl\i{} olan ext2 dosya sistemine tercih edilirler.
\item Extended file system (ext): Bu da art\i{}k kullan\i{}m\i{} olmayan bir dosya
sistemi. Deste\u{g}ini ekleyip eklememek size kalm\i{}\c{s}.
\item Second extended file system (ext2): Linux'un kulland\i{}\u{g}\i{} en \"{o}nemli dosya sistemi. Al\i{}nmas\i{} \c{s}art.
\item xiafs: Art\i{}k kullan\i{}lm\i{}yor.
\item msdos: Sabit diskinizde DOS b\"{o}l\"{u}m\"{u} varsa, ya da DOS disketi kullanmak istiyorsan\i{}z, al\i{}n.
\item umsdos: MS-DOS dosya sistemine baz\i{} yenilikler (uzun dosya isimleri gibi) getirilerek olu\c{s}turulan bir teknoloji. MS-DOS deste\u{g}i almad\i{}ysan\i{}z buna da gerek yok.
\item proc: Bu asl\i{}nda ger\c{c}ek bir dosya sistemi de\u{g}il, \c{c}ekirdek g\"{o}r\"{u}nt\"{u}s\"{u}d\"{u}r. `y' cevab\i{}n\i{} vermezseniz ileride ba\c{s}\i{}n\i{}z \c{c}ok a\u{g}r\i{}r.
\item NFS: Linux makinaniz bir a\u{g} \"{u}zerinde kurulu iken a\u{g} \"{u}zerindeki di\u{g}er makinalar\i{}n dosya sistemlerini kullanabilmenizi sa\u{g}lar.
\item ISO9660: CD-ROM s\"{u}r\"{u}c\"{u}n\"{u}z\"{u} Linux alt\i{}nda kullanabilmek i\c{c}in 'y' cevab\i{} verin.
\item OS/2 HPFS: OS/2 dosya sistemlerini okuyabilmek i\c{c}in 'y' cevab\i{} verin.
\item System V: Bir UN*X s\"{u}r\"{u}m\"{u} olan System V makinalar\i{}n\i{}n dosya sistemleri \"{u}zerinde \c{c}al\i{}\c{s}abilmeyi sa\u{g}lar.
\end{itemize}




\item[Karakter ayg\i{}tlar (Character devices): ] \mbox{}

Bu b\"{o}l\"{u}mde yaz\i{}c\i{}, fare ve baz\i{} teyp yedekleme s\"{u}r\"{u}c\"{u}leri gibi karakter ayg\i{}tlar\i{} (ileti\c{s}imini karakter karakter sa\u{g}layan ayg\i{}tlar) i\c{c}in s\"{u}r\"{u}c\"{u}leri ekleyebilirsiniz.



\item[Ses kart\i{} (Sound Card Support): ] \mbox{}

Linux'un ses kapasitesini "duyabilmek" i\c{c}in bu deste\u{g}i ekleyin.



\item[\c{C}ekirdek i\c{s}lemleri (Kernel Hacking): ] \mbox{}

\c{C}ekirdekten do\u{g}an hatalar\i{}n
bulunmas\i{}n\i{} kolayla\c{s}t\i{}ran bu se\c{c}enek, programc\i{}lara y\"{o}nelik.

\end{description}


T\"{u}m bu i\c{s}lemlerin ard\i{}ndan {\tt make config} komutunun g\"{o}revi bitmi\c{s} olur.




\subsection{Temizlik}



Fazla dosyalar\i{} temizlemek, gerekli olan dosyalar\i{}n da yerinde olup
olmad\i{}\u{g}\i{}n\i{} kontrol etmek i\c{c}in , s\i{}ras\i{}yla

\begin{verbatim}
# make dep 
# make clean
\end{verbatim}


yaz\i{}n. Ard\i{}ndan t\"{u}m nesne dosyalar\i{} ve eski s\"{u}r\"{u}mden arta kalan dosyalar
silinecektir. Bu ad\i{}m\i{} es ge\c{c}memelisiniz.

Temizlik i\c{s}leminden sonra,

\begin{verbatim}
# make zImage                   , veya 
# make zdisk
\end{verbatim}


yaz\i{}n. E\u{g}er bir ki\c{s}isel bilgisayarda \c{c}al\i{}\c{s}\i{}yorsan\i{}z, ilk se\c{c}enekte \c{c}ekirdek derlenip {\tt /usr/src/linux/arch/i386/boot} dizini alt\i{}na {\tt zImage} ad\i{}yla yerle\c{s}tirilecektir. Buraya yerle\c{s}tirilmeden \"{o}nce yerden kazanmak i\c{c}in \c{c}ekirdek s\i{}k\i{}\c{s}t\i{}r\i{}l\i{}r. Di\u{g}er durumda ise yeni \c{c}ekirdek sabit disk yerine {\tt A:} disket s\"{u}r\"{u}c\"{u}s\"{u}ne yaz\i{}l\i{}r. Disket \"{u}zerine yazman\i{}n bir avantaj\i{}, kararl\i{} olmayan ve sistemi a\c{c}mayan \c{c}ekirdek ile kar\c{s}\i{}la\c{s}\i{}lmas\i{} halinde, sistemi sabit disk \"{u}zerindeki eski \c{c}ekirdekten a\c{c}abilme imkan\i{} b\i{}rakmas\i{}d\i{}r.




\subsection{\c{C}ekirde\u{g}in Kurulmas\i{}}



LILO, bilgisayar\i{}n a\c{c}\i{}l\i{}\c{s}\i{} an\i{}nda \c{c}ekirdek ile ilgili d\"{u}zenlemeleri
okur, buna g\"{o}re hangi \c{c}ekirdekten a\c{c}mas\i{} gerekti\u{g}ini anlar.
Konfig\"{u}rasyon dosyas\i{} biraz karma\c{s}\i{}k olmas\i{}na ra\u{g}men kullan\i{}m
a\c{s}amas\i{}nda b\"{u}y\"{u}k yararlar sa\u{g}lar. {\tt /etc/lilo.conf} dosyas\i{}n\i{}n
i\c{c}inde gerekli olan kurulum bilgileri vard\i{}r. Bu dosyan\i{}n bir b\"{o}l\"{u}m
a\c{s}a\u{g}\i{}da g\"{o}r\"{u}l\"{u}yor.

\begin{verbatim}
image = /vmlinuz
  label = linux 
  root = /dev/hda1 

other = /dev/hda1
  label = dos
  table = /dev/hda
\end{verbatim}


{\tt image =} ibaresi kurulu olan \c{c}ekirde\u{g}e i\c{s}aret eder. \c{C}o\u{g}u kullan\i{}c\i{} bu
k\i{}sma {\tt vmlinuz} yazar. {\tt label =} b\"{o}l\"{u}m\"{u}nde hangi i\c{s}letim sistemi veya
\c{c}ekirdek s\"{u}r\"{u}m\"{u}nun a\c{c}\i{}l\i{}\c{s}ta kullan\i{}laca\u{g}\i{} yaz\i{}l\i{}r. Hemen alt\i{}ndaki {\tt root}
b\"{o}l\"{u}m\"{u}nde ise {\tt label =} k\i{}sm\i{}nda se\c{c}ilen i\c{s}letim sisteminin hiyerar\c{s}ik
s\i{}rada en \"{u}st dizin yap\i{}s\i{} yaz\i{}l\i{}r. Eski \c{c}ekirde\u{g}in bir yede\u{g}ini al\i{}n
ve yeni derledi\u{g}iniz \c{c}ekirde\u{g}i {\tt image =} sat\i{}r\i{}nda belirtilen yere
kopyalay\i{}n.

\begin{verbatim}
# cp zImage /vmlinuz
\end{verbatim}


\c{S}imdi LILO program\i{}n\i{} \c{c}al\i{}\c{s}t\i{}r\i{}n. Komut sat\i{}r\i{}nda {\tt lilo} yazmak
yeterlidir. `*' karakteri, \c{c}al\i{}\c{s}t\i{}r\i{}lacak ilk \c{c}ekirde\u{g}i veya sistemi g\"{o}sterir.

\begin{verbatim}
# lilo 
Added linux * 
Added dos
\end{verbatim}


LILO ve konfig\"{u}rasyonu hakk\i{}nda , daha fazla bilgi \url{http://www.linux.org.tr/tr-ldp/lilo/}{LILO-NASIL \c{c}evirisinden} al\i{}nabilir.

Yeni bir \c{c}ekirde\u{g}i derledikten sonra LILO \"{u}zerinden ekleme yapmak ve
a\c{c}\i{}l\i{}\c{s} an\i{}nda kullanmak i\c{c}in 
{\tt /etc/lilo.conf} dosyas\i{}ndaki

\begin{verbatim}
image = /vmlinuz
  label = Linux 
  root = /dev/hda1 
\end{verbatim}


sat\i{}rlar\i{}n\i{}n kopyas\i{}n\i{} \c{c}\i{}kar\i{}n, {\tt image} , {\tt label} ve {\tt root} yerine
s\i{}ras\i{}yla yeni derlenen \c{c}ekirde\u{g}in sabit disk \"{u}zerindeki yerini, ismini
ve Linux i\c{s}letim sisteminizin k\"{o}k dizinini yaz\i{}n. Bunlara ek olarak,
a\c{c}\i{}l\i{}\c{s} an\i{}nda bekleme sa\u{g}lamak ve se\c{c}im yapabilmek i\c{c}in konfig\"{u}rasyon
dosyas\i{}n\i{}n ba\c{s}\i{}na {\tt delay = xxx} ekleyebilirsiniz. {\em xxx\/} say\i{}s\i{}, gecikme
zaman\i{} saniyenin onda biri olarak verilir. Bu sayede a\c{c}\i{}l\i{}\c{s} an\i{}nda
, \"{o}rne\u{g}in {\em shift\/} tu\c{s}una bas\i{}larak istenen \c{c}ekirde\u{g}in ismi ({\tt label =}
sat\i{}r\i{}nda yaz\i{}lan isim) se\c{c}ilir ve \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r.






\subsection{\c{C}ekirde\u{g}in Yamanmas\i{} (patch)}



\c{C}ekirde\u{g}in her yeni s\"{u}r\"{u}m\"{u}yle birlikte bir \"{o}nceki s\"{u}r\"{u}m\"{u}nun yamas\i{}
da gelir. Yamay\i{} uygulamak, t\"{u}m \c{c}ekirde\u{g}in tekrar derlenmesinden daha
kolayd\i{}r. \"{O}rnek olarak, elinizde 2.0.10 \c{c}ekirde\u{g}i var ve ftp adresinde
2.0.11 s\"{u}r\"{u}m\"{u} bekliyor. Halihaz\i{}rdaki \c{c}ekirde\u{g}i 2.0.11 s\"{u}r\"{u}m\"{u}ne
y\"{u}kseltelim:

Yamay\i{} \"{o}nce {\tt /usr/src} dizinine kopyalay\i{}n. Bu dizin alt\i{}nda iken

\begin{verbatim}
# zcat patch-2.0.11.gz | patch -p0     
\end{verbatim}


veya e\u{g}er s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s} de\u{g}ilse

\begin{verbatim}
# patch -p0 < patch-2.0.11
\end{verbatim}


yaz\i{}n. Bu komutun ard\i{}ndan sat\i{}rlar ekrandan kaymaya ba\c{s}layacak ve
yama i\c{s}lemi tamamlanacakt\i{}r. Sat\i{}rlar bazen o kadar h\i{}zl\i{} kayar ki
neler yazd\i{}\u{g}\i{}n\i{} bile g\"{o}remeyebilirsiniz. Yaman\i{}n ba\c{s}ar\i{}l\i{} bir \c{s}ekilde
tamamland\i{}\u{g}\i{}ndan emin olmak amac\i{}yla, {\tt /usr/src/linux} dizini 
alt\i{}nda {\tt .rej} uzant\i{}l\i{} dosyalara bak\i{}n.

\begin{verbatim}
# find . -name '*.rej' -print
\end{verbatim}


Komut, {\tt .rej} uzant\i{}l\i{} dosyalar bulursa yama i\c{s}lemi tamamlanamam\i{}\c{s}
demektir. E\u{g}er yama i\c{s}lemi tamamlan\i{}rsa, s\i{}ras\i{}yla

\begin{verbatim}
# make clean 
# make config 
# make dep
\end{verbatim}


komutlar\i{}n\i{} yaz\i{}n. Bu komutlarla ilgili detayl\i{} bilgi \"{o}nceki konuda
anlat\i{}lm\i{}\c{s}t\i{}r.

{\tt patch} komutunun alabildi\u{g}i baz\i{} se\c{c}enekler vard\i{}r. {\tt patch -s} komutu
olu\c{s}abilecek t\"{u}m hata mesajlar\i{}n\i{} ekrana yazar. Di\u{g}er yama se\c{c}enekleri
{\tt man patch} yazarak g\"{o}r\"{u}lebilir.

Birka\c{c} yaman\i{}n ard\i{}ndan, .orig uzant\i{}l\i{} dosyalar etrafta dola\c{s}maya
ba\c{s}lar. Bu dosyalar gereksizdir, b\"{u}y\"{u}k yer kaplad\i{}klar\i{} i\c{c}in silinmeleri
gerekir. A\c{s}a\u{g}\i{}daki komut yard\i{}m\i{}yla {\tt /usr/src/linux} dizini alt\i{}nda 
{\tt .orig} uzant\i{}l\i{} dosyalar\i{} silebilirsiniz.

\begin{verbatim}
# find /usr/src/linux  -name '*.orig' -exec rm -f {} ';'
\end{verbatim}







\subsection{\c{C}\i{}kabilecek Sorunlar}



Eger rutin bir \c{c}ekirdek g\"{u}ncellemesinden sonra yeni \c{c}ekirde\u{g}iniz ger\c{c}ekten
garip \c{s}eyler yap\i{}yorsa, b\"{u}y\"{u}k ihtimalle yeni \c{c}ekirde\u{g}inizi derlemeden \"{o}nce
"make clean" komutunu kullanmay\i{} unutmu\c{s}sunuzdur.

E\u{g}er \c{c}ekirdek \c{c}ok fazla haf\i{}za harc\i{}yorsa, \c{c}ok b\"{u}y\"{u}kse, veya yeni
786DX6/440 makinan\i{}zda bile derlenmesi sonsuza kadar s\"{u}r\"{u}yorsa, b\"{u}y\"{u}k ihtimalle ayarlanm\i{}\c{s} bir \c{c}ok gereksiz par\c{c}a (ayg\i{}t s\"{u}r\"{u}c\"{u}leri, dosya sistemleri, vb.) vard\i{}r. B\"{u}y\"{u}k \c{c}ekirdeklerin en belirgin \"{o}zelli\u{g}i s\"{u}rekli haf\i{}zadan diske ve diskten haf\i{}zaya takas yapmalar\i{}d\i{}r.

\c{C}ekirde\u{g}inizin ne kadar haf\i{}za kulland\i{}\u{g}\i{}n\i{} makinan\i{}n toplam
haf\i{}zas\i{}ndan {\tt /proc/meminfo} dosyas\i{}ndaki {\tt total mem}
de\u{g}erini \c{c}\i{}kararak veya {\tt free} komutunun \c{c}\i{}kt\i{}s\i{}ndan
\"{o}\u{g}renebilirsiniz. Ayr\i{}ca {\tt dmesg} komutunu kullanarak (veya \c{c}ekirdek
kay\i{}t dosyas\i{}na bakarak) da bu de\u{g}ere ula\c{s}abilirsiniz.

\begin{verbatim}
Memory: 15124k/16384k available (552k kernel code, 384k reserved, 324k data)
\end{verbatim}


LILO'yu \c{c}al\i{}\c{s}\i{}t\i{}rmay\i{} unuttunuz, veya sistem hi\c{c} a\c{c}\i{}lm\i{}yorsa bu durumda
yapaca\u{g}\i{}n\i{}z en iyi \c{s}ey disketten a\c{c}\i{}l\i{}\c{s} yapmak ve daha sonra a\c{c}\i{}l\i{}\c{s}
yapabilen ba\c{s}ka bir disket haz\i{}rlamakt\i{}r.

E\u{g}er eski \c{c}ekirdek 1.2.X ve daha d\"{u}\c{s}\"{u}kse ve bunu 2.0.x s\"{u}r\"{u}m\"{u}ne
y\"{u}kseltmek istiyorsan\i{}z, 2.0.x \c{c}ekirdek kurulumunda getirilen baz\i{}
de\u{g}i\c{s}iklikler sorun \c{c}\i{}kartabilir.
{\tt /usr/src/linux/Documentation/Changes} dosyas\i{}nda yapman\i{}z gereken
de\u{g}i\c{s}klik listesi vard\i{}r. {\tt gcc}, {\tt libc} gibi birka\c{c} paketi yeniden 
kurman\i{}z gerekebilir.

Ayn\i{} anda birka\c{c} \c{c}ekirdek kaynak kodunu sistemde bulundurmay\i{}
d\"{u}\c{s}\"{u}n\"{u}yorsan\i{}z, izlenecek en g\"{u}venilir yol, her birine
{\tt /usr/src/linux-x.y.z} ismini vermektir ({\em x.y.z\/}
halihaz\i{}rdaki \c{c}ekirdek s\"{u}r\"{u}m\"{u}n\"{u} g\"{o}sterir). Ard\i{}ndan sembolik bir
ba\u{g}lant\i{} yard\i{}m\i{}yla istedi\u{g}iniz kaynak dizinini se\c{c}ebilirsiniz, \"{o}rne\u{g}in

\begin{verbatim}
# ln -sf linux-2.0.2 /usr/src/linux
\end{verbatim}


komutu, {\tt linux-2.0.2} dizinini aktif hale getirir. Art\i{}k kaynak dosyalar\i{}n\i{}n
bulundu\u{g}u yer {\tt linux-2.0.2} dizinidir.






\section{Mod\"{u}ller (Y\"{u}klenebilir \c{C}ekirdek Par\c{c}alar\i{})}



Linux i\c{s}letim sistemi \c{c}ekirde\u{g}inin boyu genellikle 400-600Kb
aras\i{}ndad\i{}r. Hantal \c{c}ekirdeklerde bu say\i{} 800Kb'lara kadar
\c{c}\i{}kabilir. \c{C}ekirde\u{g}in boyunun b\"{u}y\"{u}mesi, sistemin performans\i{}n\i{} olumsuz
y\"{o}nde etkiler. \"{O}zellikle bilgisiz kullan\i{}c\i{}lar\i{}n gerekli gereksiz
t\"{u}m deste\u{g}i \c{c}ekirde\u{g}e y\"{u}klemesi s\i{}k\c{c}a g\"{o}r\"{u}l\"{u}r. Bunun \"{o}n\"{u}ne ge\c{c}mek de
deneyim ister.

Linux'a \"{o}zg\"{u} \"{o}zelliklerden birisi mod\"{u}llerdir (y\"{u}klenebilir \c{c}ekirdek
par\c{c}alar\i{}). Mod\"{u}ller sayesinde nadiren gerekli duyulan bir \c{c}ekirdek
par\c{c}as\i{} sadece gerekti\u{g}i zaman \c{c}ekirde\u{g}e eklenir. \"{O}rne\u{g}in Java
programlar\i{}n\i{} her zaman \c{c}al\i{}\c{s}t\i{}rmak istemiyorsan\i{}z, bu deste\u{g}i mod\"{u}l
olarak derleyip bir kenara koyars\i{}n\i{}z. Ne zaman bir Java program\i{}
\c{c}al\i{}\c{s}t\i{}r\i{}lacaksa bu mod\"{u}l haf\i{}zaya y\"{u}klenecektir.

Bir mod\"{u}l, \c{c}ekirde\u{g}in derleme a\c{s}amas\i{}nda `M' parametresiyle tan\i{}mlan\i{}r. Her
deste\u{g}in mod\"{u}l\"{u} hen\"{u}z geli\c{s}tirilmemi\c{s} olmas\i{}na ra\u{g}men bu say\i{} g\"{u}n
ge\c{c}tik\c{c}e artmaktad\i{}r. \.{I}lginizi \c{c}ekebilecek mod\"{u}ller aras\i{}nda disket
deste\u{g}i, yaz\i{}c\i{} deste\u{g}i, minix dosya sistemi deste\u{g}i veya SCSI ayg\i{}t
s\"{u}r\"{u}c\"{u} deste\u{g}i say\i{}labilir.

Bir mod\"{u}l\"{u} derledikten sonra mod\"{u}le ait dosya {\tt /lib/modules}
dizini alt\i{}nda yeral\i{}r. Burada istenilen bir mod\"{u}l

\begin{verbatim}
# insmod modul-ismi
\end{verbatim}


komutuyla \c{c}ekirde\u{g}e eklenir. Mod\"{u}l\"{u} haf\i{}zadan \c{c}\i{}karmak i\c{c}in

\begin{verbatim}
# rmmod modul-ismi
\end{verbatim}


yaz\i{}n. Haf\i{}zadaki mod\"{u}llerin bir listesini g\"{o}rebilmek i\c{c}in de lsmod
komutu kullan\i{}labilir.

{\tt kerneld} komutu, arkaplanda \c{c}al\i{}\c{s}arak gerekli olan mod\"{u}lleri an\i{}nda
y\"{u}kler. Bu sayede \c{c}ekirde\u{g}e eklemek i\c{c}in {\tt insmod} komutuna gerek
kalmaz. Ayr\i{}ca belirli bir s\"{u}re i\c{c}inde kullan\i{}lmayan mod\"{u}lleri de
\c{c}ekirdekten atar.






\section{Yeni Yaz\i{}l\i{}mlar\i{}n Y\"{u}klenmesi}



Linux i\c{s}letim sistemi, benzerlerine nazaran \c{c}ok b\"{u}y\"{u}k bir h\i{}zla
geni\c{s}liyor. Her an yeni bir program, yeni bir yaz\i{}l\i{}m piyasaya \c{c}\i{}k\i{}yor
ve bunlar\i{} takip etmek de gittik\c{c}e zorla\c{s}\i{}yor. Bir ftp adresini kontrol
ettikten iki g\"{u}n sonra tekrar bak\i{}yorsunuz ki \"{u}\c{c}-be\c{s} yeni yaz\i{}l\i{}m
gelivermi\c{s}.

Tabi ki her an her program\i{} makinan\i{}za indirip a\c{c}mak zorunda
de\u{g}ilsiniz. Buna ne zaman\i{}n\i{}z, ne de sabit diskiniz yeter (Linux'un
sunsite ar\c{s}ivi 20GB'tan fazla yer kapl\i{}yor!). \"{O}yleyse tespih \c{c}eker
gibi program indirmek veya varolan yaz\i{}l\i{}mlar\i{} g\"{u}ncellemek komik
olur. Sadece gereken zamanda gereken dosyalar\i{} makinan\i{}za kurmal\i{} veya
g\"{u}ncellemelisiniz.

Bu i\c{s}lem \c{c}ekirdek i\c{c}in de ge\c{c}erlidir. Baz\i{} \c{c}ekirdek fanatikleri \c{c}ekirde\u{g}i
\c{c}\i{}kt\i{}\u{g}\i{} anda makinalar\i{}na indirir ve derlerler. Linux'a \c{c}ok \"{o}nemli bir
fonksiyon kazand\i{}rmayacaksa her an \c{c}ekirdek derlemek hem zaman kayb\i{} olur,
hem de derleme esnas\i{}nda sistemi yava\c{s}latarak di\u{g}er kullan\i{}c\i{}lar\i{} k\i{}zd\i{}r\i{}r.

Kurmak istedi\u{g}iniz ve ftp adresinden bulup getirilen dosya \c{c}ok b\"{u}y\"{u}k
ihtimalle {\tt tar} ve {\tt gzip} ile ar\c{s}ivlenip s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s}t\i{}r. Bu dosyan\i{}n sonu genellikle {\tt tar.gz}, {\tt tgz} veya {\tt tar.Z} ile biter. Dosya kaynak koduyla veya \c{c}al\i{}\c{s}t\i{}r\i{}labilir program olarak da\u{g}\i{}t\i{}l\i{}yor olabilir . Her iki durumda da yap\i{}lacak i\c{s}lemler birbirine benzer.

\"{O}ncelikle yaz\i{}l\i{}m\i{}n a\c{c}\i{}ld\i{}\u{g}\i{} zaman hangi dizine kendini yerle\c{s}tirece\u{g}ine
bakmak gerekir. Bunu tar komutunun {\tt -t} se\c{c}ene\u{g}i ile kontrol edin.
compress ve gzip ile s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s} dosyalar i\c{c}in,

\begin{verbatim}
# tar -ztvf dosya.tar.gz
\end{verbatim}


komutu kullan\i{}labilir. \c{C}ok nadir durumlarda dosya, kendine ait bir dizin yaratmaz, onlarca program\i{} ve konfig\"{u}rasyon dosyas\i{}n\i{} bulundu\u{g}unuz dizine yazar. Karma\c{s}\i{}kl\i{}k yaratan bu durumdan ancak ar\c{s}ivi ayr\i{} bir dizin alt\i{}nda a\c{c}makla
kurtulabilirsiniz.

Linux'\c{c}ular yeni bir yaz\i{}l\i{}m\i{} denemek istediklerinde ar\c{s}ivi genellikle
{\tt /usr/src} veya {\tt /usr/local/src} dizini alt\i{}na
kopyalarlar ve burada a\c{c}arak biraz sonra anlat\i{}lacak konfig\"{u}rasyon
i\c{s}lemini uygularlar. Derleme gerektirmeyen baz\i{} programlar\i{}n ise
do\u{g}rudan k\"{o}k dizinde a\c{c}\i{}lmalar\i{} gerekebilir. Bu programlar a\c{c}\i{}ld\i{}klar\i{}
anda \c{c}al\i{}\c{s}maya haz\i{}rd\i{}rlar.

{\tt /usr/src} veya {\tt /usr/local/src} dizini alt\i{}na dosyay\i{}
a\c{c}t\i{}ktan sonra bol miktarda dosya ve dizinle kar\c{s}\i{}la\c{s}abilirsiniz. Buna
en iyi \"{o}rnek Linux \c{c}ekirde\u{g}idir. Burada yeralan baz\i{} anahtar dosyalar
yaz\i{}l\i{}m\i{}n kurulmas\i{} i\c{c}in hayati \"{o}nem arzeder.

\"{O}ncelikle {\tt README}, {\tt README.linux} ve varsa {\tt INSTALL}
dosyalar\i{}n\i{}n g\"{o}zden ge\c{c}irilmesi gerekir. Bunlar s\i{}rayla bir kullan\i{}c\i{}
olarak dosyalar\i{} nas\i{}l kuraca\u{g}\i{}n\i{}z\i{} ayr\i{}nt\i{}lar\i{}yla s\"{o}yler. Kurma
a\c{s}amas\i{}nda dikkat edilecek dosyalardan ilki {\tt Makefile} veya
{\tt makefile} dosyas\i{}d\i{}r. Bu dosyan\i{}n i\c{c}inde (nadiren) k\"{u}\c{c}\"{u}k birka\c{c}
de\u{g}i\c{s}iklik yapmak gerekebilir. Di\u{g}er kontol edilmesi gereken dosya ise
varsa {\tt config.h} dosyas\i{}d\i{}r. Bunu da sistem gereksinimize g\"{o}re
de\u{g}i\c{s}tirmelisiniz.

Bazen ba\c{s}ta derleyici olmak \"{u}zere sistemdeki yaz\i{}l\i{}m\i{} ba\c{s}tan a\c{s}a\u{g}\i{} kontrol
eden programlar olabilir ({\tt configure} gibi). Bunlar\i{}n da komut sat\i{}r\i{}ndan
\c{c}al\i{}\c{s}t\i{}r\i{}lmalar\i{} gerekir.

Varsa {\tt Makefile} dosyas\i{}na g\"{o}re yaz\i{}l\i{}m\i{} kurmak i\c{c}in {\tt make} komutunu
kullan\i{}n. make komutu kuruluma {\tt make all}, {\tt make install} gibi baz\i{}
parametreler alabilir. {\tt make all}, halihaz\i{}rda yeralan t\"{u}m yaz\i{}l\i{}mlar\i{}
kurarken {\tt make install}, bu yaz\i{}l\i{}m\i{} konfig\"{u}rasyon dosyalar\i{}n\i{}n g\"{o}sterdi\u{g}i
dizinlere yerle\c{s}tirirler.

\c{C}o\u{g}u b\"{u}y\"{u}k paketler, man dosyalar\i{}yla birlikte gelirler. Bunlar\i{} da di\u{g}er
man dosyalar\i{}n\i{}n yan\i{}na ({\tt /usr/man}) koymak i\c{c}in ayr\i{} bir 
{\tt make install.man} t\"{u}r\"{u} komut kullanmak gerekebilir.

Her durumda, mutlaka {\tt README} dosyas\i{}n\i{} okuyun. Biraz s\i{}k\i{}c\i{} gelse
de sizi zaman kayb\i{}ndan kurtaracakt\i{}r.

Slackware da\u{g}\i{}t\i{}m\i{}n\i{} kullan\i{}yorsan\i{}z, y\"{u}klenmi\c{s} yaz\i{}l\i{}mlar\i{} silmek i\c{c}in 2
yolunuz var. Birincisi, root olarak sisteme girip, istemedi\u{g}iniz
programlar\i{} tek tek komut sat\i{}r\i{}ndan silebilirsiniz. Ama bu size
\"{o}nerebilece\u{g}imiz bir yol de\u{g}il ve \c{c}ok fazla sak\i{}ncas\i{} var. \"{O}rne\u{g}in,
program\i{} silip, ona olan ba\u{g}lant\i{}lar\i{} unutabilirsiniz. Ya da tam tersi
olabilir. \.{I}kinci yol ve en ge\c{c}erlisi, Slackware da\u{g}\i{}t\i{}m\i{} ile gelen 
{\em pkgtool\/} program\i{} kullanman\i{}z. {\tt pkgtool} se\c{c}enekleri aras\i{}ndaki 
{\em remove package\/} i\c{s}inize yarayacakt\i{}r. 




\section{Sistem A\c{c}\i{}l\i{}\c{s} Dosyalar\i{}}



Linux makinas\i{} a\c{c}\i{}l\i{}rken onlarca dosyay\i{} okur. Birka\c{c} dakika
i\c{c}inde \c{c}ekirde\u{g}i haf\i{}zaya y\"{u}kler, belirli dizinlerin alt\i{}ndaki
programlar\i{} arkaplanda \c{c}al\i{}\c{s}t\i{}r\i{}r. Sistem uyan\i{}rken hat\i{}r\i{} say\i{}l\i{}r
nicelikte konfig\"{u}rasyon dosyas\i{} elden ge\c{c}er. A\c{c}\i{}k bir i\c{s}letim sistemini
di\u{g}erlerinden ay\i{}ran bir \"{o}zellik de kullan\i{}c\i{}n\i{}n b\"{u}y\"{u}k bir kolayl\i{}kla bu
konfig\"{u}rasyon dosyalar\i{}n\i{} de\u{g}i\c{s}tirebilmesidir. Sistem a\c{c}\i{}l\i{}\c{s} dosyalar\i{}nda
, \"{o}zellikle a\u{g} temelli dosyalarda de\u{g}i\c{s}iklik yapabilmek i\c{c}in TCP/IP konusunda basit temelleri anlayabilmi\c{s} olman\i{}z gerekir.

A\c{c}\i{}l\i{}\c{s} dosyalar\i{}nda, tek bir kullan\i{}c\i{} i\c{c}in veya sistemde hesab\i{} olan
herkese y\"{o}nelik olarak de\u{g}i\c{s}iklik yapmak m\"{u}mk\"{u}nd\"{u}r. Pek \c{c}ok kullan\i{}c\i{}
bu a\c{c}\i{}l\i{}\c{s} dosyalar\i{}yla oynayarak Linux'u daha yak\i{}ndan \"{o}\u{g}renme imkan\i{}na
sahip olur.

\.{I}nternet servisi veren bir makina bu servisini daemon'lar arac\i{}l\i{}\u{g}\i{}yla
yapar. Bir daemon, her makina taraf\i{}ndan bilinen bir port numaras\i{}n\i{} a\c{c}ar
ve dinlemeye koyulur. E\u{g}er sorumlu oldu\u{g}u port adresine istek gelirse
bu iste\u{g}e cevap vererek servise ba\c{s}lar.

{\em Bash\/} kabu\u{g}unun anlat\i{}ld\i{}\u{g}\i{} konu i\c{c}inde sisteme girerken okunan dosyalar\i{}
anlatm\i{}\c{s}t\i{}m. Sistemde yeralan \"{o}nemli dizinler de dosya sistemi yap\i{}s\i{}
konusunda detayl\i{} olarak belirtilmi\c{s}ti. Bu b\"{o}l\"{u}mde daemonlardan k\i{}saca
bahsedip a\c{c}\i{}l\i{}\c{s} an\i{}nda \c{c}al\i{}\c{s}t\i{}r\i{}lan programlara ve bunlar\i{}n konfig\"{u}rasyon
dosyalar\i{}na k\i{}sa bir giri\c{s} yap\i{}lacakt\i{}r.






\subsection{inetd ve {\tt /etc/inetd.conf}}



{\em inetd\/}, en a\u{g}\i{}r g\"{o}revleri \"{u}stlenen ve en \"{o}nemli \.{I}nternet
servislerindendir. Bu program sistem a\c{c}\i{}l\i{}rken arkaplanda \c{c}al\i{}\c{s}maya
b\i{}rak\i{}l\i{}r. inetd'nin g\"{o}revi belirli portlar\i{} dinleyerek bu portlara
yap\i{}lan ba\u{g}lant\i{}lar\i{} denetlemektir. Bir ba\u{g}lant\i{} yap\i{}ld\i{}\u{g}\i{} anda inetd
bu portla ilgilenecek olan program\i{} \c{c}al\i{}\c{s}t\i{}r\i{}r. \"{O}rnek olarak Linux'a
ftp iste\u{g}i geldi\u{g}i anda inetd, ftp iste\u{g}ine cevap verecek olan {\em wu.ftpd\/}
program\i{}n\i{} uyand\i{}r\i{}r ve geri kalan\i{}n\i{} bu programa b\i{}rak\i{}r.

inetd olmasayd\i{} her standart port numaras\i{} i\c{c}in bu portu dinleyecek olan
bir program arkaplanda \c{c}al\i{}\c{s}\i{}yor olacakt\i{}. Bu da sisteme normalden daha
fazla y\"{u}k\"{u}n binmesi demektir. inetd'nin kulland\i{}\u{g}\i{} konfig\"{u}rasyon dosyas\i{}
{\tt /etc/inetd.conf}'tur. Bu dosyadan bir b\"{o}l\"{u}m a\c{s}a\u{g}\i{}da yeralmaktad\i{}r :

\begin{verbatim}
# "kill -HUP <pid of inetd>".
# The inetd will re-read this file whenever it gets that signal.
#
# <service_name> <sock_type> <proto> <flags> <user> <server_path> <args>
#
time    stream  tcp     nowait  root    internal
time    dgram   udp     wait    root    internal
ftp     stream  tcp     nowait  root    /usr/sbin/tcpd  wu.ftpd
telnet  stream  tcp     nowait  root    /usr/sbin/tcpd  in.telnetd
#nntp   stream  tcp     nowait  root    /usr/sbin/tcpd  in.nntpd
shell   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rshd -L
login   stream  tcp     nowait  root    /usr/sbin/tcpd  in.rlogind
ntalk   dgram   udp     wait    root    /usr/sbin/tcpd  in.talkd
pop3    stream  tcp     nowait  root    /usr/sbin/tcpd  in.pop3d
imap2   stream  tcp     nowait  root    /usr/sbin/tcpd  imapd
finger  stream  tcp     nowait  nobody  /usr/sbin/tcpd  in.fingerd -w
systat  stream  tcp     nowait  nobody  /usr/sbin/tcpd  /bin/ps -auwwx
netstat stream  tcp     nowait  root    /usr/sbin/tcpd  /bin/netstat    -a
# End of inetd.conf.
\end{verbatim}


{\tt /etc} alt\i{}nda bir konfig\"{u}rasyon dosyas\i{}n\i{} de\u{g}i\c{s}tirmek isterseniz, o dosyay\i{} okuyan ve arkaplanda \c{c}al\i{}\c{s}\i{}yor durumda bulunan s\"{u}re\c{c}leri bundan haberdar etmelisiniz. \c{C}\"{u}nk\"{u} bu dizindeki baz\i{} dosyalar sadece a\c{c}\i{}l\i{}\c{s}ta okunur. inetd, yukar\i{}daki {\tt inetd.conf} dosyas\i{}n\i{} sistem a\c{c}\i{}l\i{}rken okuyacakt\i{}r. De\u{g}i\c{s}iklik yapt\i{}ktan sonra inetd'nin bu de\u{g}i\c{s}iklikten tekrar haberinin olmas\i{} i\c{c}in bu s\"{u}recin {\tt PID} numaras\i{}n\i{} {\tt ps -aux} komutu ile bir kenara not edin ve \c{s}unlar\i{} yaz\i{}n.

\begin{verbatim}
# kill -HUP <PID-inetd>
\end{verbatim}


{\em PID-inetd\/} yerine not etti\u{g}iniz s\"{u}re\c{c} numaras\i{}n\i{} girmelisiniz. Bu
sayede inetd kendisine ait olan inetd.conf dosyas\i{}n\i{} tekrar okuyacak ve
de\u{g}i\c{s}iklikler i\c{s}leme konacakt\i{}r.

Her bilgisayar taraf\i{}ndan bilinen servislerin isimleri ve hangi portlar\i{} (portlar\i{}) kulland\i{}klar\i{} {\tt /etc/services} dosyas\i{}nda tutulur.




\subsection{syslogd ve /etc/syslog.conf}



syslogd program\i{} Linux'taki \c{c}e\c{s}itli olaylar\i{}n kay\i{}tlar\i{}n\i{}
tutar. Bunlar genellikle hata mesajlar\i{} veya \c{c}ekirdek mesajlar\i{} gibi
kay\i{}tlard\i{}r. syslogd sistem a\c{c}\i{}l\i{}rken arkaplanda i\c{s}lemeye b\i{}rak\i{}l\i{}r.

{\tt /etc/syslog.conf}, syslogd program\i{}n\i{}n konfig\"{u}rasyonu i\c{c}in
kullan\i{}l\i{}r. Normal olarak sistem kay\i{}tlar\i{} {\tt /usr/adm/messages}
dosyas\i{}n\i{}n sonuna eklenir. Bu dosyan\i{}n yap\i{}s\i{} biraz kar\i{}\c{s}\i{}k olmas\i{}na
ra\u{g}men e\u{g}er sistem y\"{o}neticiyseniz syslogd sizin en b\"{u}y\"{u}k yard\i{}mc\i{}n\i{}z
olabilir.

\"{O}rnek bir {\tt syslog.conf} dosyas\i{} a\c{s}a\u{g}\i{}da yeral\i{}yor.

\begin{verbatim}
*.info;*.notice                                 /usr/adm/messages
*.debug                                         /usr/adm/debug
*.warn                                          /usr/adm/syslog
*.emerg;*.alert;*.crit                          /dev/tty8
mail.*                                          /dev/tty9
kern.*                                          /dev/tty10
\end{verbatim}


Bu dosyan\i{}n en solunda yeralan ve nokta ile ayr\i{}lm\i{}\c{s} olan iki kelimeden
ilki, kayd\i{} yap\i{}lan program grubudur. Bu k\i{}sma kern (\c{c}ekirdek mesajlar\i{}),
mail (sendmail mesajlar\i{}), login (sisteme giri\c{s} veya sistemden \c{c}\i{}k\i{}\c{s}
mesajlar\i{}), auth, authpriv veya security (g\"{u}venlik mesajlar\i{}), cron (cron mesajlar\i{}), daemon (deamon'lardan gelen mesajlar),lpr (yaz\i{}c\i{} mesajlar\i{}), news (haber grubu mesajlar\i{}), user (kullan\i{}c\i{} mesajlar\i{}) veya uucp (uucp mesajlar\i{}) yaz\i{}labilir. Noktan\i{}n sa\u{g}\i{}ndaki kelime ise kayd\i{} yap\i{}lan program grubunun mesaj \"{o}nem s\i{}ras\i{}n\i{} belirler. Bu k\i{}s\i{}mda \"{o}nem s\i{}ras\i{}na g\"{o}re debug, info, notice, warning, err, crit, alert ve emerg bulunur.

Dosyan\i{}n sa\u{g}\i{}nda yeralan k\i{}s\i{}mda ise bu mesajlar\i{}n hangi dosyaya
yaz\i{}laca\u{g}\i{} vard\i{}r. Yukar\i{}da verilen \"{o}rnekte, syslogd'den gelen mesajlar
sanal konsollardan kullan\i{}lmayanlara y\"{o}nlendirilmi\c{s}tir. B\"{o}ylece sistem
y\"{o}neticisi F8, F9 ve F10 tu\c{s}lar\i{}n\i{} kullanarak sistem kay\i{}tlar\i{}na an\i{}nda
ula\c{s}abilir.

Ba\c{s}ka bir makinaya kay\i{}t tutturmak da m\"{u}mk\"{u}nd\"{u}r. Uzak makinan\i{}n ismi {\tt syslog.conf} dosyas\i{}n\i{}n sa\u{g} b\"{o}l\"{u}m\"{u}ne yaz\i{}l\i{}r. B\"{o}ylece di\u{g}er makina yerel olarak sistem kay\i{}tlar\i{}n\i{} tutacakt\i{}r. 

\begin{verbatim}
mail.err                     @ordek.cclub.metu.edu.tr
\end{verbatim}


Baz\i{} kritik ve sistemin d\"{u}zg\"{u}n \c{c}al\i{}\c{s}mad\i{}\u{g}\i{}n\i{} haber verebilecek mesajlar\i{}n konsola y\"{o}nlendirilmesinde fayda vard\i{}r. 

\begin{verbatim}
kern.crit                    /dev/console
\end{verbatim}


Sisteme ba\u{g}lanm\i{}\c{s} olan kullan\i{}c\i{}lar hakk\i{}nda bilgiyi ise

\begin{verbatim}
/var/adm/wtmp
\end{verbatim}


dosyas\i{} tutar. Bu dosya ASCII olmad\i{}\u{g}\i{}ndan do\u{g}rudan okunamaz, {\tt last} komutu
ile i\c{c}eri\u{g}i incelenebilir. Buna ek olarak \c{c}e\c{s}itli paketler
\c{c}al\i{}\c{s}t\i{}r\i{}l\i{}yorsa onlar\i{}n yaratt\i{}\u{g}\i{} kay\i{}t dosyalar\i{} da incelenmelidir.
\"{O}rne\u{g}in ftp \c{c}al\i{}\c{s}\i{}yorsa {\tt /var/adm/xferlog} kimin ftp ile hangi dosyalar\i{}
aktard\i{}\u{g}\i{}n\i{} g\"{o}sterir. Bu t\"{u}r dosyalar i\c{c}erisinde elde edilebilecek
ipu\c{c}lar\i{} ile sistemin \c{c}al\i{}\c{s}ma performans\i{} art\i{}r\i{}labilir, kendisini pek
belli etmeyen hatalar bulunabilir.




\subsection{init ve {\tt /etc/inittab}}



{\tt init}, sistemde ilk \c{c}al\i{}\c{s}an programd\i{}r. Neredeyse sistemin t\"{u}m
a\c{c}\i{}l\i{}\c{s} y\"{u}k\"{u}n\"{u} elinde tutar. init sayesinde a\c{c}\i{}l\i{}\c{s} an\i{}nda hangi
programlar\i{}n \c{c}al\i{}\c{s}aca\u{g}\i{} belirlenir. Bu programlar\i{} da
{\tt /etc/inittab} dosyas\i{}ndan \"{o}\u{g}renir.

Burada {\tt /etc/inittab} dosyas\i{}ndan al\i{}nan birka\c{c} \"{o}rnek sat\i{}r
yeral\i{}yor. Her sat\i{}r\i{}n sonunda \c{c}al\i{}\c{s}t\i{}r\i{}lacak olan dosyalar var.

\begin{verbatim}
# Default runlevel.
id:3:initdefault:

# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.
rc:23456:wait:/etc/rc.d/rc.M

# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -rfn now

# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6

# What to do when power fails (shutdown to single user).
pf::powerfail:/sbin/shutdown -f +5 "THE POWER IS FAILING"

# If power is back before shutdown, cancel the running shutdown.
pg:0123456:powerokwait:/sbin/shutdown -c "THE POWER IS BACK"

# If power comes back in single user mode, return to multi user mode.
ps:S:powerokwait:/sbin/init 5

c1:1235:respawn:/sbin/agetty 38400 tty1 linux
c2:1235:respawn:/sbin/agetty 38400 tty2 linux
c3:1235:respawn:/sbin/agetty 38400 tty3 linux
c4:1235:respawn:/sbin/agetty 38400 tty4 linux
c5:1235:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

# Serial lines
#s1:12345:respawn:/sbin/agetty 19200 ttyS0 vt100
#s2:12345:respawn:/sbin/agetty 19200 ttyS1 vt100

# Dialup lines
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

x1:4:wait:/etc/rc.d/rc.4
\end{verbatim}


Bir Linux makinas\i{}n\i{}n birka\c{c} tane \c{c}al\i{}\c{s}ma d\"{u}zeni vard\i{}r. Bunlardan
birka\c{c}\i{} 3 (\c{c}ok kullan\i{}c\i{}l\i{} konum), 1 (tek kullan\i{}c\i{}l\i{} konum) ve 4 (X Window
konumu)'t\"{u}r. Her konum, bir say\i{} veya bu say\i{}lara kar\c{s}\i{}l\i{}k gelen tek harften
olu\c{s}ur. Bir konum alt\i{}nda \c{c}al\i{}\c{s}\i{}rken di\u{g}erine ge\c{c}ebilmek i\c{c}in {\tt init} veya
{\tt telinit} komutu kullan\i{}l\i{}r.

{\tt /etc/inittab}'da yeralan dosya isimleri de\u{g}i\c{s}tirilebilir
veya kullan\i{}c\i{}n\i{}n iste\u{g}i do\u{g}rultusunda her \c{c}al\i{}\c{s}ma modu i\c{c}in farkl\i{}
dosyalar \c{c}al\i{}\c{s}t\i{}rilabilir.  
\begin{verbatim}

# init 1 
Switching to runlevel 1 
Sending all processes the TERM signal 
Waiting for processes to terminate........ 
Turning off quota..
Single user mode.
\end{verbatim}


{\tt init} komutundan sonra a\c{c}mak istedi\u{g}iniz \c{c}al\i{}\c{s}ma d\"{u}zenine ait olan say\i{}y\i{} yazabilirsiniz. \"{O}rne\u{g}in init 0 komutu sistemi kapatacakt\i{}r. Yukar\i{}daki komut \c{c}al\i{}\c{s}t\i{}ktan sonra {\tt /etc/inittab} dosyas\i{}nda bu konuma ait olan {\tt /etc/rc.d/rc.K} dosyas\i{} \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. Bu dosya \c{c}al\i{}\c{s}t\i{}ktan sonra d\i{}\c{s}ar\i{}dan yap\i{}lan ba\u{g}lant\i{}lara izin verilmez.

{\tt /etc/inittab} dosyas\i{}nda yap\i{}lacak her de\u{g}i\c{s}ikli\u{g}in ard\i{}ndan

\begin{verbatim}
# init q
\end{verbatim}


komutunu vererek init program\i{}n\i{}n inittab dosyas\i{}n\i{} tekrar okuyup
de\u{g}i\c{s}ikliklerden haberdar olmmas\i{}n\i{} sa\u{g}lamal\i{}s\i{}n\i{}z. O an sistemin hangi
konumda \c{c}al\i{}\c{s}t\i{}\u{g}\i{}n\i{} bulabilmek i\c{c}in runlevel komutunu kullan\i{}n :

\begin{verbatim}
$ runlevel 
N 3
\end{verbatim}


Sistem, yukar\i{}daki bilgilere g\"{o}re 3 numaral\i{} konumda (\c{c}ok kullan\i{}c\i{}l\i{} konum)
\c{c}al\i{}\c{s}\i{}yor.






\subsection{/etc/rc.d/* Dosyalar\i{}}



\.{I}\c{s}te sistemin kalbinin att\i{}\u{g}\i{} yer. Ne yaparsan\i{}z yap\i{}n ama bu dosyalar\i{}
g\"{o}z\"{u}n\"{u}z gibi koruyun. Sistem a\c{c}\i{}l\i{}rken arkaplanda \c{c}al\i{}\c{s}maya ba\c{s}layan
programlar burada yaz\i{}l\i{}d\i{}r. T\"{u}m bu dosyalar Slackware da\u{g}\i{}t\i{}m\i{}na \"{o}zg\"{u}d\"{u}r.

\begin{description}
\item[rc.0] \mbox{}

Bu dosya, 0 (halt) \c{c}al\i{}\c{s}ma d\"{u}zenine ge\c{c}erken okunur. Sistemin shutdown veya halt komutlar\i{} ile kapat\i{}lmak istenirse bu program \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. \"{O}nce sistemdeki t\"{u}m s\"{u}re\c{c}ler \"{o}ld\"{u}r\"{u}l\"{u}r, ard\i{}ndan sistemin kapand\i{}\u{g}\i{}n\i{} belirten baz\i{} sat\i{}rlar\i{} kay\i{}t dosyalar\i{}na atar. T\"{u}m dosya sistemlerini umount i\c{s}leminden ge\c{c}irdikten sonra da sistemi dondurur.



\item[rc.K] \mbox{}

Bu dosya, init taraf\i{}ndan 1 numaral\i{} \c{c}al\i{}\c{s}ma d\"{u}zenine (tek kullan\i{}c\i{}l\i{}
konum) ge\c{c}ilirken \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. T\"{u}m s\"{u}re\c{c}ler \"{o}ld\"{u}r\"{u}l\"{u}r ve sistem sadece
konsoldan giri\c{s} yap\i{}lacak \c{s}ekilde tekrar a\c{c}\i{}l\i{}r.



\item[rc.cdrom] \mbox{}

Bu dosya, buldu\u{g}u CDROM s\"{u}r\"{u}c\"{u}s\"{u}n\"{u} /cdrom dizini alt\i{}na mount yard\i{}m\i{}yla
ekler.



\item[rc.local] \mbox{}

\c{C}ok kullan\i{}c\i{}l\i{} a\c{c}\i{}l\i{}\c{s} an\i{}nda \c{c}al\i{}\c{s}t\i{}r\i{}lan bu dosyaya istedi\u{g}iniz
programlar\i{} ekleyebilirsiniz.



\item[rc.4] \mbox{}

4 numaral\i{} \c{c}al\i{}\c{s}ma d\"{u}zenine ge\c{c}ilirken bu dosya \c{c}a\u{g}\i{}r\i{}l\i{}r. T\"{u}m sanal
konsollara vt100 terminalleri yerine grafik tabanl\i{} bir program
kullan\i{}larak girilir.



\item[rc.M] \mbox{}

init taraf\i{}ndan \c{c}ok kullan\i{}c\i{}l\i{} konuma ge\c{c}mek i\c{c}in kullan\i{}l\i{}r.



\item[rc.S] \mbox{}

Sistem a\c{c}\i{}l\i{}rken bu dosya mutlaka \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. Takas alan\i{} a\c{c}\i{}l\i{}r, dosya
sisteminde hata olmas\i{} halinde bunu gidermeye \c{c}al\i{}\c{s}\i{}r. Baz\i{} kontrollerden
sonra kontrol\"{u} di\u{g}er rc programlar\i{}na b\i{}rak\i{}r.

\end{description}





\section{\c{C}ekirdek Mesajlar\i{}}



\c{C}ekirdek, haf\i{}zaya y\"{u}klenip \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}ktan sonra kendisi ve sistemdeki
donan\i{}m hakk\i{}ndaki her t\"{u}rl\"{u} bilgiyi ekrana yazar. Her t\"{u}rl\"{u} bilginin
i\c{c}ine hata mesajlar\i{} da girer. \c{C}ekirde\u{g}in hata verip vermemesi a\c{c}\i{}l\i{}\c{s}
an\i{}nda ekrana bakmakla anla\c{s}\i{}labilir. Bu nedenle sistem a\c{c}\i{}l\i{}rken
g\"{o}z\"{u}n\"{u}z\"{u} monit\"{o}rden ay\i{}rmamal\i{}s\i{}n\i{}z. A\c{s}a\u{g}\i{}da bir \c{c}ekirde\u{g}in a\c{c}\i{}l\i{}\c{s} kayd\i{}
yeral\i{}yor :

\begin{verbatim}
Console: colour EGA+ 80x25, 1 virtual console (max 63)
bios32_init : BIOS32 Service Directory structure at 0x000faf10
bios32_init : BIOS32 Service Directory entry at 0xfb390
pcibios_init : PCI BIOS revision 2.10 entry at 0xfb3c0
Calibrating delay loop.. ok - 30.22 BogoMips
Serial driver version 4.11 with no serial options enabled
tty00 at 0x03f8 (irq = 4) is a 16550A
tty01 at 0x02f8 (irq = 3) is a 16550A
lp1 at 0x0378, using polling driver
ftape: allocated 3 buffers aligned at: 00210000
hda: QUANTUM ELS170A, 162MB w/32KB Cache, CHS=1011/15/22, MaxMult=8
ide0: primary interface on irq 14
Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
lance.c: PCI bios is present, checking for devices...
Memory: 6612k/8192k available (760k kernel code, 384k reserved, 436k data)
This processor honours the WP bit even when in supervisor  mode. Good.
Swansea University Computer Society NET3.019
Swansea University Computer Society TCP/IP for NET3.019
IP Protocols: ICMP, UDP, TCP
PPP: version 0.2.7 (4 channels) NEW_TTY_DRIVERS OPTIMIZE_FLAGS
TCP compression code copyright 1989 Regents of the University of California
PPP line discipline registered.
SLIP: version 0.8.3-NET3.019-NEWTTY (4 channels) (6 bit encapsulation enabled)
CSLIP: code copyright 1989 Regents of the University of California
eth0: D-Link DE-600 pocket adapter: at I/O 0x378.
Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.
Checking 'hlt' instruction... Ok.
Linux version 1.2.13 (root@bigkitty) (gcc version 2.7.0) #1 Wed Aug 23 01:06:43 CDT 1995
Partition check:
  hda: multiple mode turned off
  hda: hda1 hda2
VFS: Mounted root (ext2 filesystem) readonly.
Adding Swap: 8188k swap-space
\end{verbatim}


Yukar\i{}daki mesajda swap alan\i{} belirlenmesi, sabit diskin tan\i{}nmas\i{},
disketin tan\i{}nmas\i{}, ayg\i{}t s\"{u}r\"{u}c\"{u}lerinin, ethernet kart\i{}n\i{} tan\i{}mas\i{} ve
ekran\i{}n \"{o}zelliklerinin yaz\i{}lmas\i{} gibi bilgiler vard\i{}r. Bu bilgilere
sistem a\c{c}\i{}ld\i{}ktan sonra {\tt /var/adm/messages} dosyas\i{}\i{}ndan da 
eri\c{s}ilebilir.






\section{Linux Dosya Sistemi Yap\i{}s\i{}}



Bu b\"{o}l\"{u}mde Linux'un kulland\i{}\u{g}\i{} dosya sistemi hakk\i{}nda bilgi verilecektir. Dosya sistemini olu\c{s}turan dizinler, kapsad\i{}klar\i{} dosyalar ve bunlar\i{}n Linux i\c{s}letim sistemindeki g\"{o}revleri de k\i{}saca belirtilecektir.

Bir i\c{s}letim sisteminin dosya sisteminin performans\i{}, h\i{}z\i{} ve buna
benzer \c{c}e\c{s}itli \"{o}zellikleri sistemin verimli ve kararl\i{} \c{c}al\i{}\c{s}mas\i{}
\"{u}zerinde do\u{g}rudan etkisi vard\i{}r. Linux dizin yap\i{}s\i{}n\i{}n
geli\c{s}tirilmesinde {\em FSSTND\/} (file system standard) grubunun
\c{c}al\i{}\c{s}malar\i{}n\i{}n pay\i{} \c{c}ok b\"{u}y\"{u}k oldu. Programc\i{}lardan olu\c{s}an grup,
standartlar\i{}n belirlenmesinde ve uygulama a\c{s}amas\i{}nda Linux ile
ilgilenenlere yard\i{}m etti. 1993 y\i{}l\i{}nda Olaf Kirsh, Linux haber grubuna
yazd\i{}\u{g}\i{} bir e-postas\i{}nda Linux dosya sistemi \"{u}zerindeki \c{c}al\i{}\c{s}malar\i{}n
tamamland\i{}\u{g}\i{}n\i{} haber verdi.

Linux dizin yap\i{}s\i{}nda baz\i{} dizinlerin i\c{s}levi birbiriyle ayn\i{}d\i{}r. Bu durum,
\"{o}zellikle birbirini takip eden iki Linux s\"{u}r\"{u}m\"{u}nde belirginle\c{s}ir. \"{O}rnek
olarak bir da\u{g}\i{}t\i{}mda {\tt /usr/bin} dizini alt\i{}nda yeralan dosya, 
di\u{g}er s\"{u}r\"{u}mde {\tt /bin} alt\i{}na yerle\c{s}tirilebiyor.

Dosya sistemleri ve dizinler payla\c{s}\i{}ml\i{} olarak da kullan\i{}labilir.
Birden fazla ki\c{s}isel bilgisayar\i{}n ba\u{g}land\i{}\u{g}\i{} a\u{g}da, disk alan\i{}ndan yer
kazanmak i\c{c}in bir makina {\em sunucu\/} (ana makina) olarak tayin edilir. A\u{g}
\"{u}zerindeki di\u{g}er makinalar da sunucu \"{u}zerindeki diski payla\c{s}\i{}r. Buna
\"{o}rnek olarak kullan\i{}c\i{} ev dizinlerinin yerald\i{}\u{g}\i{} {\tt /home},
\c{c}al\i{}\c{s}t\i{}r\i{}labilir dosyalar\i{}n bulundu\u{g}u {\tt /usr}, e-posta ve haber
grubu bilgilerinin bulundu\u{g}u {\tt /var/spool/mail} ve
{\tt /var/spool/news} dizinleri verilebilir.

K\"{o}k dizini, kendisine ba\u{g}l\i{} di\u{g}er t\"{u}m dizinleri de i\c{c}erdi\u{g}inden, Linux
dosya sisteminde \"{o}nemli bir yere sahiptir. Linux a\c{c}\i{}l\i{}rken \"{o}nce k\"{o}k
dizini {\tt /etc/fstab} dosyas\i{}na uygun \c{s}ekilde ba\u{g}lan\i{}r. Di\u{g}er dosya
sistemlerinin onar\i{}m\i{} ve kontrol\"{u} i\c{c}in gerekli olan {\tt fsck} programlar\i{}, bu
dizinde bulunmal\i{}d\i{}r. Benzer \c{s}ekilde yedekleme i\c{c}in gerekli olan {\tt tar, zip,
compress} gibi ar\c{s}iv programlar\i{}na da k\"{o}k dizin alt\i{}ndan eri\c{s}ilebilmeli,
a\c{c}\i{}l\i{}\c{s} esnas\i{}nda haf\i{}zaya y\"{u}klenen \c{c}ekirdek de k\"{o}k dizininde yeralmal\i{}d\i{}r.

Bir program\i{} yerine koymadan \"{o}nce baz\i{} "dengelerin" g\"{o}z\"{o}n\"{u}nde tutulmas\i{}nda
yarar vard\i{}r. Programlanan her yaz\i{}l\i{}m\i{} k\"{o}k dizinine koyarsan\i{}z, bir s\"{u}re
sonra bu dosya sisteminin \c{s}i\c{s}ti\u{g}ini g\"{o}r\"{u}rs\"{u}n\"{u}z. K\"{o}k dizinini ba\c{s}lang\i{}\c{c}ta
k\"{u}\c{c}\"{u}k (20-30Mb kadar) tutmak, geli\c{s}tirilen programlar\i{} daha \"{o}nceden
belirlenen ba\c{s}ka bir dosya sistemi alt\i{}na koymak ak\i{}ll\i{}ca olur. Bu yol,
a\u{g} \"{u}zerinden genellikle payla\c{s}\i{}m\i{} m\"{u}mk\"{u}n olmayan k\"{o}k dizininin her
makinadaki sabit diskte m\"{u}mk\"{u}n olan en az yer i\c{s}gal etmesini sa\u{g}lar.



Sistemdeki \"{o}nemli dizinlere g\"{o}z atarsak,

\begin{description}
\item[/bin :] \mbox{}

Sistemin a\c{c}\i{}l\i{}\c{s}\i{} ve kontrol\"{u} i\c{c}in gerekli komutlar. Hem kullan\i{}c\i{}lar\i{}n, hem de sistem g\"{o}revlisinin kullanabilece\u{g}i dosyalar (k\"{o}k dizinde ise fazla \c{s}i\c{s}memesi ko\c{s}uluyla) buraya at\i{}labilir. Sadece root kullan\i{}c\i{}n\i{}n ihtiya\c{c} duyaca\u{g}\i{} init, getty, updatedb gibi programlar /sbin veya /usr/sbin'de durabilir. Bu dizinde bulunan dosyalara \"{o}rnek olarak cat, chgrp, chown, date, dd, df, ln, mkdir, mount, ps, rm, sh, su, sync ve umount verilebilir.



\item[/dev : ] \mbox{}

G/\c{C} dosyalar\i{}. Linux \c{c}ekirde\u{g}inde desteklenen her ayg\i{}ta ait dosya /dev dizini alt\i{}nda bulunur. Kurulum an\i{}nda bu dosyalar yerine
yerle\c{s}tirilir, bu dosyalar\i{}n silinmesi durumunda /dev/MAKEDEV ile tekrar
yarat\i{}labilirler. 



\item[/etc : ] \mbox{}

Sistem konfig\"{u}rasyon dosyalar\i{}. Bu dizinde \c{c}al\i{}\c{s}t\i{}r\i{}labilir
dosyalar bulunmamal\i{}d\i{}r.

\begin{itemize}
\item  skel : Buradaki dosyalar, kullan\i{}c\i{} hesab\i{} a\c{c}\i{}ld\i{}\u{g}\i{}nda kullan\i{}c\i{}n\i{}n ev
dizinine kopyalan\i{}r.
\item rc.d : Bu dizinin i\c{c}inde, init s\"{u}recinin ba\c{s}vurdu\u{g}u konfig\"{u}rasyon
dosyalar\i{} vard\i{}r. Bunlara "rc dosyslar\i{}" da denir.
\item passwd : Kullan\i{}c\i{} veritaban\i{}
\item fstab : Linux'un a\c{c}\i{}l\i{}\c{s}\i{} esnas\i{}nda bindirilecek dosya sistemleri burada listelenir.
\item group : passwd'e benzer \c{s}ekilde kullan\i{}c\i{}lar\i{}n gruplar\i{}n\i{} tutar.
\item inittab : init daemon i\c{c}in konfig\"{u}rasyon dosyas\i{}
\item motd : Kullan\i{}c\i{} sisteme girdikten sonra ekran\i{}na bas\i{}lmas\i{} istenen mesaj
burada tutulur. 
\item profile : Kullan\i{}c\i{} sisteme girdi\u{g}i zaman \c{c}al\i{}\c{s}t\i{}r\i{}lan dosya (csh ve sh
t\"{u}revi kabuklar i\c{c}in) 
\item shells : Sistemde kullan\i{}labilecek kabuk isimleri burada tutulur. 
\item login.access : login komutu i\c{c}in konfig\"{u}rasyon dosyas\i{}. Sisteme giri\c{s}i kullan\i{}c\i{} baz\i{}nda s\i{}n\i{}rlamak i\c{c}in kullan\i{}lir.
\end{itemize}




\item[/home : ] \mbox{}

Kullan\i{}c\i{}lara ayr\i{}lm\i{}\c{s} dizin. Ba\c{s}ka \c{s}ekilde ayarlanmam\i{}\c{s} ise, a\c{c}\i{}lan her hesaba ait kullan\i{}c\i{}, buray\i{} kullan\i{}r. B\"{u}y\"{u}k sistemlerde, bu k\i{}s\i{}m alt par\c{c}alara ayr\i{}labilir (/home/ftpadm , /home/ogrenci gibi) 



\item[/lib :] \mbox{}

K\"{u}t\"{u}phane dosyalar\i{}.



\item[/mnt :] \mbox{}

Ge\c{c}ici mount edilen dosya sistemleri. Sadece bu i\c{s} i\c{c}in
kullan\i{}ld\i{}\u{g}\i{}ndan sistem g\"{o}revlisine zaman kazand\i{}r\i{}r.



\item[/proc :] \mbox{}

S\"{u}re\c{c} kontrollerini ve di\u{g}er sistem bilgilerini tutan dosya sistemi. Bu dosya sistemi asl\i{}nda disk \"{u}zerinde yer kaplamaz, t\"{u}m dosyalar
\c{c}ekirde\u{g}in bir uzant\i{}s\i{} say\i{}labilir.

\begin{itemize}
\item cpuinfo : i\c{s}lemci modeli, tipi ve performans\i{}n\i{} bildirir.
\item devices : Halihaz\i{}rda \c{c}al\i{}\c{s}an \c{c}ekirdek i\c{c}inde deste\u{g}i bulunan ayg\i{}t
s\"{u}r\"{u}c\"{u}lerini listeler. 
\item dma : Hangi dma kanallar\i{}n\i{}n kullan\i{}ld\i{}\u{g}\i{}n\i{} belirtir. 
\item filesystems : Halihaz\i{}rda \c{c}al\i{}\c{s}an \c{c}ekirdek i\c{c}inde deste\u{g}i bulunan dosya
sistemlerini listeler. 
\item interrupts : Hangi kesintilerin kullan\i{}mda oldu\u{g}unu s\"{o}yler. 
\item iports : Halen hangi giri\c{s}/\c{c}\i{}k\i{}\c{s} iskelelerinin kullan\i{}ld\i{}\u{g}\i{}n\i{} belirtir. 
\item kcore : Sistem haf\i{}zas\i{}n\i{}n g\"{o}r\"{u}nt\"{u}s\"{u}
\end{itemize}




\item[/root :] \mbox{}

Sistem g\"{o}revlisinin ev dizini. M\"{u}mk\"{u}nse bu dizini sistemdeki di\u{g}er kullan\i{}c\i{}lar\i{}n g\"{o}rmeyece\u{g}i \c{s}ekilde ayarlay\i{}n.



\item[/sbin :] \mbox{}

Hayati sistem komutlar\i{}. Bir zamanlar bu dosyalar /etc dizini
alt\i{}nda yeral\i{}yorlard\i{}. Sadece sistem g\"{o}revlisinin ihtiyac\i{} olan komutlar,
/sbin veya /usr/sbin i\c{c}inde bulunur. 



\item[/tmp : ] \mbox{}

Ge\c{c}ici dosyalar\i{}n koyuldu\u{g}u dizin. Belirli zaman aral\i{}klar\i{}nda
temizlenmelidir.



\item[/usr :] \mbox{}

Di\u{g}er \"{o}nemli sistem dosyalar\i{}n\i{} tutar. Bu b\"{o}l\"{u}m genelde en kalabal\i{}k dizindir, zira yeni kurulan t\"{u}m programlar buraya konulur.  

\begin{itemize}
\item X11R6: X Window sistemi bilgileri tutulur. 
\item doc: Belge ve d\"{o}k\"{u}manlar, genellikle HOWTO ve FAQ dosyalar\i{}. 
\item lib: Baz\i{} k\"{u}t\"{u}phaneler
\item man: Man dosyalar\i{}
\item src: Baz\i{} kaynak dosyalar\i{} ve linux \c{c}ekirde\u{g}ini olu\c{s}turan kodlar\i{}
(/usr/src/linux) i\c{c}eren dizin. 
\item sbin : K\"{o}k dosya sisteminde yeralmas\i{} gerekmeyen \c{c}al\i{}\c{s}t\i{}r\i{}labilir sistem
g\"{o}revlisi dosyalar\i{}
\end{itemize}


\begin{itemize}
\item /var : S\"{u}rekli de\u{g}i\c{s}en sistem bilgileri burada tutulur. \.{I}stisnalar d\i{}\c{s}\i{}nda
di\u{g}er makinalarla payla\c{s}t\i{}r\i{}lmaz. 
\item adm: Sistem y\"{o}netimini ilgilendiren kay\i{}tlar
\item preserve : Sistemin g\"{o}\c{c}mesinden sonra zarar g\"{o}rmesi m\"{u}mk\"{u}n dosyalar\i{}n
kaydedildi\u{g}i yer. 
\item spool : Sonra i\c{s}lenecek olan veriler buraya at\i{}l\i{}r (e-posta gibi)
\end{itemize}




\end{description}


E\u{g}er sistem y\"{o}neticisi iseniz d\"{u}zenli olarak dosya ve dizin yap\i{}s\i{}n\i{}
kontrol etmelisiniz. \"{O}rne\u{g}inn {\tt /tmp} dizini normal kullan\i{}c\i{}lar\i{}n
kullan\i{}m\i{}na a\c{c}\i{}k oldu\u{g}u i\c{c}in \c{c}ok k\i{}sa bir s\"{u}rede dolabilir. Buray\i{}
periyodik olarak silmek i\c{c}in find komutu i\c{s}e yarayabilir :

\begin{verbatim}
# find /tmp -atime +7 -exec rm -rf  {} \;
\end{verbatim}


Yukar\i{}daki komut, {\tt tmp} dizini alt\i{}nda yeralan t\"{u}m dosyalar\i{} kontrol
edecek ve 7 g\"{u}nden daha eski dosyalar\i{} silecektir. Benzer \c{s}ekilde,
kullan\i{}c\i{}lar\i{}n dosyalar\i{}n\i{}n yer ald\i{}\u{g}\i{} {\tt /home} dizini de \c{c}ok k\i{}sa bir
s\"{u}rede dolmaya mahkumdur. Sistemde ne kadar b\"{u}y\"{u}k sabit disk olursa
olsun bir g\"{u}n gelecek buras\i{} dolacakt\i{}r. Periyodik olarak buraya da
g\"{o}z gezdirmek gerekir. A\c{s}a\u{g}\i{}da yeralan k\i{}sa program, {\tt /home} dizininde
yeralan kullan\i{}c\i{} dizinlerideki disk kullan\i{}m\i{}n\i{} b\"{u}y\"{u}kten k\"{u}\c{c}\"{u}\u{g}e do\u{g}ru
{\tt disk} isimli dosyaya yollayacakt\i{}r. Bu dosyan\i{}n incelenmesiyle hangi
kullan\i{}c\i{}lar\i{} "cezaland\i{}raca\u{g}\i{}n\i{}z\i{}" g\"{o}rebilirsiniz :)

\begin{verbatim}
# du -skx /home/* | sort -rn > disk
\end{verbatim}


{\tt du} (disk usage), sistem kullan\i{}c\i{}lar\i{}n\i{}n s\i{}k\c{c}a ba\c{s}vurdu\u{g}u bir
komuttur. Kullan\i{}labilecek parametreler i\c{c}in {\em du(1)\/} man sayfas\i{}na bak\i{}n.

UNIX, (ve dolay\i{}s\i{}yla Linux) iki tip ayg\i{}t tan\i{}r. Bunlardan ilki karakter
ayg\i{}tlar\i{}, ba\c{s}ka bir deyi\c{s}le veri al\i{}\c{s}veri\c{s}ini bayt baz\i{}nda yapan
cihazlar, di\u{g}eri de blok ayg\i{}tlar\i{}, yani veri al\i{}\c{s}veri\c{s}ini blok cinsinden
yapan cihazlard\i{}r. Karakter ayg\i{}tlar\i{}na \"{o}rnek olarak seri ba\u{g}lanan
cihazlar ve teypler, disk ayg\i{}tlar\i{}na \"{o}rnek olarak da diskler verilebilir.
Bu cihazlardan bir bilgi yaz\i{}l\i{}p okundu\u{g}unda dosya sistemi alt\i{}nda bunlar\i{}
tan\i{}mlayan dosyalar ({\tt /dev/*}) kullan\i{}lm\i{}\c{s} olur.  \"{O}rnek olarak bir yaz\i{}c\i{}ya bilgi g\"{o}ndermek i\c{c}in,

\begin{verbatim}
$ cat dosya > /dev/lp1
\end{verbatim}


komutunu kullanabilirsiniz. Dosya, yaz\i{}c\i{}n\i{}n anlayabilece\u{g}i bir yap\i{}da
olmal\i{}d\i{}r (\"{o}rne\u{g}in d\"{u}z metin).

Her ayg\i{}t, bir dosya olarak dosya sisteminde kendine yer buldu\u{g}una g\"{o}re
hangi ayg\i{}t dosyalar\i{}n\i{}n bulundu\u{g}unu g\"{o}rmek m\"{u}mk\"{u}n olabilir.

\begin{verbatim}
$ ls -l /dev/cua0
crw-rw-rw- 1 root uucp 5, 64 Nov 30 1993 /dev/cua0
\end{verbatim}


\.{I}lk kolondaki ilk karakter (c), bu dosyan\i{}n bir karakter ayg\i{}t\i{}na ait
oldu\u{g}unu belirtiyor. Normal dosyalar i\c{c}in buradaki karakter '-' olmal\i{}yd\i{}.
Benzer \c{s}ekilde blok ayg\i{}tlar i\c{c}in ise 'b' kullan\i{}lr. 

Ayg\i{}t s\"{u}r\"{u}c\"{u} deste\u{g}i \c{c}ekirdekte olmasa bile {\tt /dev} dizini alt\i{}nda genellikle t\"{u}m ayg\i{}t dosyalar\i{} bulunur. Bu demektir ki {\tt /dev/sda} dosyas\i{}na sahip oldu\u{g}unuz halde bir SCSI sabit diski sistemde tak\i{}l\i{} olmayabilir. T\"{u}m ayg\i{}t s\"{u}r\"{u}c\"{u}lerinin bulunmas\i{}, programlar\i{}n kurulumunu ve yeni donan\i{}m\i{}n eklenmesini kolayla\c{s}t\i{}r\i{}r.




\section{Konsolda T\"{u}rk\c{c}e Yazmak}



Linux sanal terminallerinde bir tu\c{s}a bas\i{}ld\i{}\u{g}\i{} zaman bilgisayar\i{}n
ekranda herhangi bir dildeki alfabeye ait harfi g\"{o}stermesi kolayca
sa\u{g}lanabilir. Bunun yan\i{}nda 12 fonksiyon tu\c{s}unun herbirine belirli bir
dizisel de\u{g}er atanabilir ve bu sayede bu tu\c{s}lara bas\i{}ld\i{}\u{g}\i{}nda bir komutun
veya program\i{}n \c{c}al\i{}\c{s}mas\i{} m\"{u}mk\"{u}n olur.

Asl\i{}nda bunlar\i{} yapabilmek i\c{c}in \"{o}n\"{u}m\"{u}zdeki iki temel sorunu a\c{s}mam\i{}z
gerekiyor. Birincisi standart olmayan karakterlerin (\"{o}rne\u{g}in T\"{u}rk\c{c}e)
ekranda g\"{o}r\"{u}nt\"{u}lenebilmesi, ikincisi de bilgisayara standart d\i{}\c{s}\i{} bir
klavye oldu\u{g}unun belirtilmesidir.

D\"{u}nya \"{u}zerindeki belli ba\c{s}l\i{} dillerin hepsi y\i{}llar \"{o}nce bir standart
geli\c{s}tirilmesi amac\i{}yla s\i{}n\i{}fland\i{}r\i{}ld\i{}. Avrupa'da Slav dilleri
hari\c{c} hemen t\"{u}m dillerin karakterleri ISO (Uluslararas\i{} Standartlar
Organizasyonu) taraf\i{}ndan tek bir s\i{}n\i{}fa yerle\c{s}tirildi ve buna ISO8859-1
(latin 1) dendi. O vakit izlenen yanl\i{}\c{s} politikalar nedeniyle T\"{u}rk\c{c}e bu
s\i{}n\i{}fa dahil edilmedi ve sadece T\"{u}rk\c{c}e i\c{c}in ISO8859-9 (latin 5) isminde
ayr\i{} bir s\i{}n\i{}f a\c{c}\i{}ld\i{}.

T\"{u}rk\c{c}e yazabilme sorununu hemen her i\c{s}letim sisteminde hissediyor
olmal\i{}s\i{}n\i{}z. Linux alt\i{}nda T\"{u}rk\c{c}e deste\u{g}ini sa\u{g}lamak i\c{c}in birka\c{c} i\c{s}lem
yap\i{}lmal\i{}d\i{}r. Bu i\c{s}lemlerin ba\c{s}\i{}nda Linux'a T\"{u}rk\c{c}e destekli klavye ve
font tan\i{}tmak geliyor.

{\tt /usr/lib/kbd/keytables} dizini alt\i{}nda yeralan dosyalar, \c{c}e\c{s}itli \"{u}lke
dillerine ait klavye da\u{g}\i{}l\i{}m\i{}n\i{} i\c{c}eriyor. Buradaki bilgileri kullanarak
klavye \"{u}zerinde yeralan tu\c{s}lara bas\i{}lmas\i{} halinde yaz\i{}l\i{} tu\c{s} d\i{}\c{s}\i{}nda
bir karakterin ekranda g\"{o}sterimi sa\u{g}lanabilir.

Sistem a\c{c}\i{}ld\i{}\u{g}\i{} zaman -e\u{g}er kurulum a\c{s}amas\i{}nda bir font be\u{g}enip
s\"{u}rekli onu kullanm\i{}yorsan\i{}z- {\tt defkeymap.map} dosyas\i{}nda yeralan klavye
da\u{g}\i{}l\i{}m\i{}n\i{} kullanacakt\i{}r. Farkl\i{} bir klavye d\"{u}zeni kullanmak i\c{c}in .map
dosyalar\i{}n\i{} y\"{u}zeysel olarak anlaman\i{}z gerekiyor. {\tt /usr/lib/kbd/keytables}
dizini alt\i{}ndaki herhangi bir dosyada 300'den fazla sat\i{}r ve \"{u}\c{c} ana
tan\i{}mlamayla kar\c{s}\i{}la\c{s}acaks\i{}n\i{}z. Birinci grup, "keycode", "alt", "control"
gibi bir sat\i{}rla, ikinci grup "string" ile, \"{u}\c{c}\"{u}nc\"{u} grup ise "compose"
kelimesiyle ba\c{s}lar.

Dosyan\i{}n yap\i{}s\i{}n\i{} daha iyi kavrayabilmek i\c{c}in \"{u}zerinde bir \"{o}rnekle
a\c{c}\i{}klamaya \c{c}al\i{}\c{s}al\i{}m. Control-Alt-Del tu\c{s}lar\i{}na bas\i{}l\i{}nca bilgisayar
kendini "reset"ler. E\u{g}er yanl\i{}\c{s}l\i{}kla bu \"{u}\c{c} tu\c{s}a basm\i{}\c{s}san\i{}z, klavyeden
girilecek bir {\tt shutdown -c} komutunu yazmak ve sistemi kapanmaktan
kurtarmak i\c{c}in sadece 3-4 saniyeniz vard\i{}r. Fakat {\tt shutdown -c} komutunu
bir fonksiyon tu\c{s}una ba\u{g}lar ve bu tu\c{s}a basarsan\i{}z sistem eski haline
d\"{o}necektir. \"{O}rnek olarak Control-F1 tu\c{s}unu bu i\c{s}e ay\i{}ral\i{}m.

\"{O}ncelikle {\tt /usr/lib/kbd/keytables} dosyas\i{}nda yeralan {\tt defkeymap.map}
dosyas\i{}ndaki F1 fonksiyon tu\c{s}unun hangi tu\c{s} tan\i{}m\i{}na denk geldi\u{g}ini
bulmal\i{}y\i{}z. Dosyadaki F1 ile ilgili sat\i{}rlar \c{s}unlard\i{}r :

\begin{verbatim}
keycode  59 = F1               F13              Console_13
        control keycode  59 = F25
        shift   control keycode  59 = F37
        alt     keycode  59 = Console_1
        control alt     keycode  59 = Console_1
\end{verbatim}


Linux, her sat\i{}ra bir numara atar. Yukar\i{}daki sat\i{}rda, F1 tu\c{s}unun
numaras\i{}n\i{}n 59 oldu\u{g}u kolayca g\"{o}r\"{u}l\"{u}yor. 59 numaral\i{} tu\c{s}a bas\i{}l\i{}nca,
F1 ile tan\i{}mlanan dizi ekrana yaz\i{}lacakt\i{}r. Benzer \c{s}ekilde F1'e control
ile birlikte bas\i{}lmas\i{} halinde ise F25 dizisini ekrana basar. \"{O}nceden
tan\i{}mlanan de\u{g}erlerden {\em Console\_{}1\/}, 1 numaral\i{} sanal konsolun ekranda
g\"{o}sterilmesini i\c{s}aret eder. T\"{u}m bu dizilerin i\c{c}eri\u{g}ini g\"{o}rebiliriz. Ayn\i{}
dosyan\i{}n sonlar\i{}nda \c{s}u sat\i{}r yeral\i{}yor :

\begin{verbatim}
string F1 = "\033[[A"
\end{verbatim}


Bunun anlam\i{},  F1'e bas\i{}nca  {\tt ESC[[A} dizisini ekrana g\"{o}nder demektir.
say\i{}s\i{}, Escape tu\c{s}unun oktal (sekizli) sistemde g\"{o}sterimidir.

Bu sat\i{}r\i{} veya F1'den itibaren se\c{c}ece\u{g}imiz bir fonksiyon tu\c{s}u ismini
istedi\u{g}imiz \c{s}ekilde de\u{g}i\c{s}tirebiliriz. Yanl\i{}z dikkat etmemiz gereken
bir husus, bu tu\c{s}un ba\c{s}ka uygulamalar taraf\i{}ndan kullan\i{}labiliyor
olmas\i{}d\i{}r. \"{O}rnek olarak F61 ve kar\c{s}\i{}l\i{}k gelen dizi de\u{g}eri dosyada
yeralm\i{}yor. Dosyaya k\"{u}\c{c}\"{u}k bir ekleme yapal\i{}m:

\begin{verbatim}
string F61 = "shutdown -c\n"
\end{verbatim}


Dosyay\i{} farkl\i{} bir isimde (\"{o}rne\u{g}in {\tt bas.map}) kaydedip \c{c}\i{}k\i{}n. Yeni klavye da\u{g}\i{}l\i{}m\i{}n\i{} denemek i\c{c}in

\begin{verbatim}
# loadkeys bas.map
\end{verbatim}


komutunu kullan\i{}n. Art\i{}k yeni klavye standard\i{} sisteme
yerle\c{s}mi\c{s}tir. Sistemin \c{c}al\i{}\c{s}t\i{}\u{g}\i{}na emin olmak i\c{c}in Shift-Control-F1
tu\c{s}una bas\i{}n. {\tt shutdown -c} komutu i\c{s}letilmelidir.

Art\i{}k T\"{u}rk\c{c}e yazabilmeye geldik. Bunun i\c{c}in standart d\i{}\c{s}\i{} klavyeden gelen bir T\"{u}rk\c{c}e karakteri ekranda g\"{o}sterebilmek amac\i{}yla bir font dosyas\i{} olu\c{s}turmam\i{}z gerekecek. Linux alt\i{}nda bu dosyalar {\tt /usr/lib/kbd/consolefonts} dizini alt\i{}nda yeral\i{}yor.

Linux'ta standart d\i{}\c{s}\i{} bir font y\"{u}klemek i\c{c}in {\tt setfont} komutu
kullan\i{}l\i{}r. T\"{u}rk\c{c}e fontlar\i{}, 
\url{ftp://ftp.linux.org.tr}{Linux Kullan\i{}c\i{}lar\i{} Grubu ftp ar\c{s}ivinden} temin edebilir veya iso09 \"{o}n adl\i{} herhangi bir
fontu kullanabilirsiniz. A\c{s}a\u{g}\i{}daki komut, 8 piksel eni, 16 piksel boyu
olan T\"{u}rk\c{c}e font y\"{u}kleyecektir.

\begin{verbatim}
setfont tr8x16.map
\end{verbatim}


T\"{u}rkce klavye d\"{u}zenlerini i\c{c}eren dosyalar\i{} ftp ile yine ayn\i{}
adresten alabilirsiniz. Burada {\tt tr.map} ve {\tt trq.map} adl\i{} iki dosya
bulacaks\i{}n\i{}z. Bunlardan {\tt tr.map}, normal klavye d\"{u}zeninin yan\i{}nda `alt'
tu\c{s}lar\i{} ile "c, g, i, s, o, u" tu\c{s}lar\i{}na bas\i{}ld\i{}\u{g}\i{}nda kar\c{s}\i{}l\i{}k gelen
\"{o}zel T\"{u}rk\c{c}e karakterler g\"{o}r\"{u}nt\"{u}lenir. {\tt trq.map} yayg\i{}n olarak kullan\i{}lmakta
olan Q-T\"{u}rk\c{c}e klavye d\"{u}zenini i\c{c}erir.

Bash kabu\u{g}u alt\i{}nda T\"{u}rk\c{c}e yazabilmek i\c{c}in a\c{s}a\u{g}\i{}daki \"{u}\c{c} komutu {\tt .inputrc}
dosyan\i{}za eklemeniz gerekir.

\begin{verbatim}
set meta-flag on 
set output-meta on 
set convert-meta off
\end{verbatim}


{\tt less} komutununu T\"{u}rk\c{c}e karakterleri g\"{o}stermesi i\c{c}in de a\c{s}a\u{g}\i{}daki gibi
LESSCHARSET de\u{g}i\c{s}kenini latin5 yapmak gerekiyor.

\begin{verbatim}
LESSCHARSET=latin5
\end{verbatim}


{\tt loadkeys} ve {\tt setfont} komutlar\i{}n\i{} sistem a\c{c}\i{}l\i{}rken aktif olmalar\i{} i\c{c}in
bunlar\i{} {\tt /etc/rc.d/rc.local} dosyas\i{}na yerle\c{s}tirebilirsiniz. Fontu ve
klavye d\"{u}zenini ayarlad\i{}ktan sonra sistemde \c{c}\i{}k\i{}n ve tekrar girin.

Art\i{}k T\"{u}rk\c{c}e yazabilirsiniz.




\section{Belirli Zamanlarda Komut \.{I}\c{s}letilmesi}



crontab dosyas\i{} yard\i{}m\i{}yla sistem \"{u}zerinde olmad\i{}\u{g}\i{}n\i{}z zamanlarda
Linux'tan baz\i{} belirli i\c{s}leri yapmas\i{}n\i{} istemek m\"{u}mk\"{u}nd\"{u}r. \"{O}rne\u{g}in
gereksiz trafik s\i{}k\i{}\c{s}\i{}kl\i{}\u{g}\i{} yaratamak i\c{c}in ak\c{s}am ge\c{c} saatlerde sistemi
yedeklemek i\c{c}in evden \.{I}nternet'e ba\u{g}lanmak yerine crontab ile bu i\c{s}lemi
otomatikle\c{s}tirmek m\"{u}mk\"{u}n olur.

Bir crontab dosyas\i{}nda toplam 6 alan bulunur. Bunlardan ilk be\c{s}i
komutun ne zaman i\c{s}lenece\u{g}ini g\"{o}sterirken son k\i{}s\i{}mda bu saatler i\c{c}inde
\c{c}al\i{}\c{s}t\i{}r\i{}lacak olan komutu g\"{o}sterir. Zaman\i{} belirten s\"{u}tunlardan ilki
dakikay\i{} (0 ile 59 aras\i{}), ikincisi saati (0 ile 23 aras\i{}), \"{u}\c{c}\"{u}nc\"{u}s\"{u}
g\"{u}n\"{u} (1-31 aras\i{}), d\"{o}rd\"{u}nc\"{u}s\"{u} ay\i{} (1-12 aras\i{}), son k\i{}s\i{}m ise haftan\i{}n
g\"{u}n\"{u}n\"{u} (0 pazar\i{} g\"{o}stermek \"{u}zere 0-6 aras\i{}) verir. Yine crontab'\i{}n g\"{u}zel
\"{o}zelliklerinden birisi de bu alanlar\i{}n her birisinde zaman aral\i{}klar\i{}n\i{}
yazmaya izin vermesidir. Mesela haftan\i{}n \"{u}\c{c}\"{u}nc\"{u} ve be\c{s}inci g\"{u}nleri aras\i{},
saat 4 ve 9 aras\i{} gibi. E\u{g}er bir zaman alan\i{}na * girilirse, bunun anlam\i{}
"her zaman" olur. \"{O}rne\u{g}in saat yerine * konulmas\i{} "her saat", ay yerine *
konulmas\i{} "her ay" anlam\i{}na gelecektir.

\"{O}nce a\c{s}a\u{g}\i{}da yeralan k\"{u}\c{c}\"{u}k bir crontab dosyas\i{} incelenecek, ard\i{}ndan crontab
i\c{s}lemine nas\i{}l ba\c{s}lan\i{}laca\u{g}\i{} k\i{}saca anlat\i{}lacakt\i{}r.

\begin{verbatim}
40 06 * * * updatedb
\end{verbatim}


Yukar\i{}daki \"{o}rnekte birinci ve ikinci say\i{}lar 06:40 saatini
g\"{o}steriyor. Di\u{g}er zaman k\i{}s\i{}mlar\i{} * ile doldurulmu\c{s} olduklar\i{}ndan her
g\"{u}n 06:40'ta {\tt updatedb} isimli program \c{c}al\i{}\c{s}acakt\i{}r.

Komut yerine kullan\i{}lacak olan program ismi parametre alabilir. Bu
\"{o}rnekteki crontab dosyas\i{} pazartesi g\"{u}nleri saat 1'de, {\tt /tmp} dizinindeki
\"{u}\c{c} g\"{u}nden daha eski dosyalar\i{} siler.

\begin{verbatim}
0 1 * * mon find /tmp -atime 3 -exec rm -f {} \;
\end{verbatim}


Bu \"{o}rnekte kullan\i{}lan virg\"{u}l, her ay\i{}n 9, 19 ve 29'unu g\"{o}sterir. Ayn\i{}
alanda birden fazla say\i{} kullanacaksan\i{}z arada bo\c{s}luk b\i{}rakmamaya
dikkat edin.
\begin{verbatim}
0 1 9,19,29 * * find /tmp -atime 3 -exec rm -rf {} \;
\end{verbatim}


Ay isimlerinde {\em ocak, \c{s}ubat, mart, nisan, may\i{}s, haziran, temmuz,
a\u{g}ustos, eyl\"{u}l, ekim, kas\i{}m, aral\i{}k\/} i\c{c}in s\i{}ras\i{}yla {\em january, february,
march, april, may, june, july, august, september, october, november,
december\/} kullanabilirsiniz. Benzer \c{s}ekilde {\em pazar, pazartesi, sal\i{},
\c{c}ar\c{s}amba, per\c{s}embe, cuma, cumartesi\/} ve {\em pazar yerine sunday, monday,
tuesday, wednesday, thursday, friday ve saturday\/} kullan\i{}n. A\c{s}a\u{g}\i{}daki
crontab girdisi yard\i{}m\i{}yla iki ayda bir \c{c}al\i{}\c{s}t\i{}r\i{}lan komutla \"{o}nce teyp
ba\c{s}a al\i{}n\i{}yor, ard\i{}ndan {\tt /home} dizini bu teybe yedekleniyor :

\begin{verbatim}
0 2 1 */2 * mt -f /dev/rft0 rewind; tar -cf /dev/rft0 /home
\end{verbatim}


*/2 ile belirtilen zaman dilimini ikiye b\"{o}lebilirsiniz. 2 yerine uygun
herhangi bir tamsay\i{} yaz\i{}labilir.

Bu girdileri bir crontab dosyas\i{}na nas\i{}l yazaca\u{g}\i{}z? Bunun i\c{c}in root
kullan\i{}c\i{}s\i{} olarak girin ve a\c{s}a\u{g}\i{}daki sat\i{}rlar\i{} yaz\i{}n :

\begin{verbatim}
# crontab -e
\end{verbatim}


Ekrana bilgisayar ilk kuruldu\u{g}u anda \"{o}n tan\i{}ml\i{} olarak girilen crontab
sat\i{}rlar\i{} gelecektir. Buraya yukar\i{}da belirtilen yap\i{}da istedi\u{g}iniz
kadar crontab girdisi yapabilirsiniz. E\u{g}er daha \"{o}nceden {\em VISUAL\/} \c{c}evresel
de\u{g}i\c{s}kenini uygun bir edit\"{o}re ayarlamam\i{}\c{s}san\i{}z, vi alt\i{}nda \c{c}al\i{}\c{s}man\i{}z
gerekecektir. Ba\c{s}ka bir edit\"{o}rle \c{c}al\i{}\c{s}abilmek i\c{c}in bu de\u{g}i\c{s}keni,
edit\"{o}r\"{u}n patikas\i{}n\i{} g\"{o}sterecek \c{s}ekilde de\u{g}i\c{s}tirin. \.{I}leride de k\i{}saca
bahsedilecek olan tin (haber grubu okuyucu yaz\i{}l\i{}m\i{}) de VISUAL de\u{g}i\c{s}kenine
g\"{o}re metin edit\"{o}r\"{u}n\"{u}n patikas\i{}n\i{} ayarlayacakt\i{}r.

\begin{verbatim}
# export VISUAL=/usr/bin/pico
\end{verbatim}


Crontab dosyas\i{}n\i{}n normal olarak i\c{s}letilmesinden crond sorumludur. Sistem
a\c{c}\i{}l\i{}rken {\tt /etc/rc.d} dizini i\c{c}indeki dosyalardan bir tanesi crond
program\i{}n\i{} \c{c}al\i{}\c{s}t\i{}r\i{}r ve bu andan itibaren {\tt crontab -e} komutuyla
yaratt\i{}\u{g}\i{}n\i{}z dosyadaki emirler zaman\i{} geldik\c{c}e yerine getirilir.






\chapter{Bash Kabu\u{g}u}



UNIX i\c{c}in geli\c{s}tirilen en \"{o}nemli ve en \c{c}ok kullan\i{}lan kabuklar\i{}n ba\c{s}\i{}nda
{\em tcsh\/}, {\em bash\/} (Bourne Again Shell) ve {\em ksh\/} (Korn Shell)
gelir. Bash, Bourne Shell'in biraz daha geli\c{s}tirilmi\c{s} s\"{u}r\"{u}m\"{u}d\"{u}r. Tcsh
ise C-shell \"{u}zerine eklenen yeniliklerle geni\c{s}letilmi\c{s}tir. Unix alt\i{}nda,
bash kabu\u{g}u di\u{g}er benzerlerine nazaran daha fazla \"{o}zelli\u{g}e ve i\c{s}leve
sahiptir. Linux i\c{s}letim sistemi i\c{c}in de derlenen bash ise hem tcsh,
hem de ksh'dan \"{o}zellikler ta\c{s}\i{}r.

Bir Slackware da\u{g}\i{}t\i{}m\i{}nda t\"{u}m bu kabuklar kullan\i{}c\i{}n\i{}n hizmetine sunulmu\c{s}
olup bash kabu\u{g}u sistem ilk a\c{c}\i{}ld\i{}\u{g}\i{}nda tan\i{}ml\i{}d\i{}r. Kullan\i{}c\i{} sisteme
girdi\u{g}i zaman bu kabuk aktif olur, bundan sonra kullan\i{}c\i{} herhangi bir
kabuk alt\i{}nda \c{c}al\i{}\c{s}malar\i{}na devam edebilir. Bunun i\c{c}in sadece ismini
komut sat\i{}r\i{}nda yazmas\i{} yeterlidir.




\section{Bash \"{O}zellikleri}



Bash'in kullan\i{}c\i{}ya zaman kazand\i{}ran en \"{o}nemli \"{o}zelliklerinden birisi
de dosya isimlerini tamamlamas\i{}d\i{}r. Komut sat\i{}r\i{}nda tamamlanmam\i{}\c{s}
bir komut veya dosya ismi yazd\i{}ktan sonra TAB tu\c{s}una bas\i{}l\i{}rsa sat\i{}r
tamamlanacakt\i{}r. E\u{g}er komut sat\i{}r\i{}ndaki karakter k\"{u}mesiyle ba\c{s}layan
birden fazla komut varsa bir sinyal sesi duyulacak ve sizden yeteri
kadar karakteri yazman\i{}z\i{} bekleyecektir.

\begin{verbatim}
$ ls
postgres        mandel.doc      lilo-howto      
$ vi post <TAB>
$ vi postgres
\end{verbatim}


Komut sat\i{}r\i{}ndaki karakterler dosyay\i{} veya komutu tan\i{}tmaya yetmiyorsa,
{$<$}TAB{$>$} tu\c{s}unun iki kez ard arda bas\i{}lmas\i{}yla ekrana m\"{u}mk\"{u}n olan
t\"{u}m dosya isimleri getirilebilir.

\begin{verbatim}
$ ta <TAB> <TAB>
tac   tail  talk  tar
$ talk
\end{verbatim}


Bash, komut sat\i{}r\i{}nda iken sat\i{}r\i{}n kolayca de\u{g}i\c{s}tirilebilmesini
sa\u{g}lar. B\"{o}ylece komut \c{c}al\i{}\c{s}t\i{}r\i{}lmadan \"{o}nce birka\c{c} tu\c{s} darbesiyle
\"{u}zerinde de\u{g}i\c{s}iklik yap\i{}labilir. Klavye \"{u}zerindeki alt ve \"{u}st y\"{o}n
tu\c{s}lar\i{}, daha \"{o}nce yazd\i{}\u{g}\i{}n\i{}z komutlar\i{} g\"{o}rmenizi ve aras\i{}nda se\c{c}im
yapman\i{}z\i{} sa\u{g}lar. Sa\u{g} ve sol y\"{o}n tu\c{s}lar\i{} ile se\c{c}ti\u{g}iniz komutun \"{u}zerinde
de\u{g}i\c{s}iklikleri uygulabilirsiniz.






\section{Takma Adlar (alias)}



{\tt alias} komutu ile bir komut veya komut k\"{u}mesinin yerine bir isim
tahsis edilebilir. \.{I}\c{s}leyi\c{s}i bir makroya benzeyen bu komut yard\i{}m\i{}yla uzun
komutlar, daha k\i{}sa komutlarla tan\i{}mlanabilir. Bir {\tt alias} komutu ,
anahtar kelimeyle ba\c{s}lar, ard\i{}ndan bir e\c{s}ittir (=) i\c{s}areti ve yerine
kullan\i{}laca\u{g}\i{} komut yaz\i{}l\i{}r. Arada bo\c{s}luk b\i{}rak\i{}lmaz.

\begin{verbatim}
$ alias dir='ls -al'
$ dir
total 668
-rw-r--r--   1 gorkem   users        1016 Dec  7 13:51 .profile
-rw-r--r--   1 gorkem   users         277 Nov 26 13:02 .signature
drwxr-xr-x   4 gorkem   users        1024 Dec  3 18:24 .tin/
drwxr-xr-x   2 gorkem   users        1024 Nov 12 10:58 .wine/
-rw-r--r--   1 gorkem   users         231 Nov 23 17:40 .xinitrc
drwxr-xr-x   2 gorkem   users        1024 Oct  3 16:17 Mail/
-rw-r--r--   1 gorkem   users        26721 Dec  3 14:55 NIS-HOWTO
drwxr-xr-x   2 gorkem   users        1024 Nov 17 14:09 News/
\end{verbatim}


Daha karma\c{s}\i{}k alias 'lar da tan\i{}mlanabilir:

\begin{verbatim}
$ alias yedek="cd /var/log; tar -zcvf yedek.tgz cron debug lastlog; cd -"
\end{verbatim}







\section{\"{O}zel Kabuk Tan\i{}mlar\i{}}



Baz\i{} \"{o}zellikleriyle bash, benzeri kabuklar aras\i{}ndan kolayca s\i{}yr\i{}l\i{}r. Bunlardan birisi de tan\i{}mlard\i{}r. Tan\i{}mlamalar set komutu yard\i{}m\i{}yla yap\i{}l\i{}r, t\"{u}m tan\i{}mlar k\"{u}\c{c}\"{u}k harflerle yaz\i{}l\i{}rlar, bu \"{o}zellikleri yard\i{}m\i{}yla de\u{g}i\c{s}kenlerden ayr\i{}l\i{}rlar. 

\begin{verbatim}
$ set -o tanim          # tanimi isletir
$ set +o tanim          # tanimi kaldirir
\end{verbatim}


A\c{s}a\u{g}\i{}da en \c{c}ok kullan\i{}lan iki tan\i{}m yeralmaktad\i{}r: 

{\bf noclobber} : Bu tan\i{}m\i{}n se\c{c}ilir k\i{}l\i{}nmas\i{}ndan sonra bir komutun \c{c}\i{}kt\i{}s\i{} bir dosyaya g\"{o}nderildi\u{g}inde, dosyan\i{}n eski i\c{c}eri\u{g}i ayn\i{} kal\i{}r. Bu tan\i{}m sayesinde kazara bir dosyan\i{}n \"{u}zerine ba\c{s}ka bilgilerin yaz\i{}lmas\i{} \"{o}nlenebilir.

\begin{verbatim}
$ ls -al dosya
-rw-r--r--   1 gorkem   users        1409 Nov 29 13:58 dosya 
$ set -o noclobber
$ ls > dosya
bash: dosya: Cannot clobber existing file
\end{verbatim}


{\bf ignoreeof} : ignoreeof, kabuktan {\em control-d\/} tu\c{s} tak\i{}m\i{} ile \c{c}\i{}k\i{}lmas\i{}n\i{} engeller. Yanl\i{}\c{s}l\i{}kla bas\i{}lan {\em control-d\/} ile sistemden an\i{}ndan \c{c}\i{}kmak m\"{u}mk\"{u}n oldu\u{g}u i\c{c}in kullan\i{}\c{s}l\i{} bir tan\i{}md\i{}r.

\begin{verbatim}
$ set -o ignoreeof
$ (control-d 'ye basin)
Use "logout" to leave the shell.
$ set +o ignoreeof
$ (control-d 'ye basin, sistemden hemen cikar)
$ ignoreeof=4 
\end{verbatim}


Yukar\i{}daki son \"{o}rnekte 4 kere control-d tu\c{s}una bas\i{}l\i{}rsa kabuktan \c{c}\i{}k\i{}l\i{}r.




\section{\"{O}zel Kabuk De\u{g}i\c{s}kenleri}



Sisteme girdi\u{g}iniz zaman Linux size bir kabuk tahsis eder ve kabuk \"{u}zerinde de\u{g}i\c{s}kenler tan\i{}mlayabilmenize izin verir. Kabuk i\c{c}inde bir kabuk program\i{} (script) \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}nca sistem taraf\i{}ndan bir alt kabuk daha yarat\i{}l\i{}r. Bu andan itibaren iki kabuk \c{c}al\i{}\c{s}\i{}r, birisi sisteme girdi\u{g}iniz anda tahsis edilen, di\u{g}eri de program\i{}n \c{c}al\i{}\c{s}t\i{}r\i{}labilmesi i\c{c}in sistem taraf\i{}ndan \c{c}a\u{g}\i{}r\i{}lan. Program bitti\u{g}i anda alt kabu\u{g}un i\c{s}levi sona erer ve sistem taraf\i{}ndan \"{o}ld\"{u}r\"{u}l\"{u}r. 

Bir kabuk alt\i{}nda tan\i{}mlanan de\u{g}i\c{s}ken o kabu\u{g}a \"{o}zg\"{u}d\"{u}r. Bir kabuk alt\i{}nda eri\c{s}ilebilen de\u{g}i\c{s}kene di\u{g}er bir kabuk eri\c{s}emez. Fakat bash kabu\u{g}u alt\i{}nda bir \c{c}evre de\u{g}i\c{s}keni yarat\i{}l\i{}rsa, sistem taraf\i{}ndan her alt kabu\u{g}a bu \c{c}evre de\u{g}i\c{s}keni kopyalan\i{}r. B\"{o}ylece bir de\u{g}i\c{s}ken yarat\i{}l\i{}r, ama her alt kabuk taraf\i{}ndan kullan\i{}labilir. bash kabu\u{g}unda yarat\i{}lan \c{c}evre de\u{g}i\c{s}kenlerinin normal de\u{g}i\c{s}kenlerden tek fark\i{}, bu de\u{g}i\c{s}kenin di\u{g}er alt kabuklar taraf\i{}ndan tan\i{}nmas\i{}d\i{}r.

Bir \c{c}evre de\u{g}i\c{s}keni belirtmek i\c{c}in {\tt export} komutu kullan\i{}l\i{}r. A\c{s}a\u{g}\i{}daki \"{o}rnekte {\em dosyam\/} isimli \c{c}evre de\u{g}i\c{s}keni tan\i{}mlan\i{}yor.

\begin{verbatim}
$ export dosyam="internet.97.txt"
$ echo $dosyam
internet.97.txt
\end{verbatim}


Bu esnadan sonra t\"{u}m kabuklar alt\i{}nda bu de\u{g}i\c{s}ken tan\i{}ml\i{} olacakt\i{}r.

{\tt env} komutu yard\i{}m\i{}yla sistemde \"{o}ntan\i{}m\i{} yap\i{}lan veya sonradan tan\i{}mlanan t\"{u}m de\u{g}i\c{s}kenler ekrana listelenir.

\begin{verbatim}
$ env
HOME=/home/gorkem
SHELL=/bin/bash
LS_OPTIONS=--8bit --color=tty -F -b -T 0
PS1=\h:\w\$
PS2=>
LOGNAME=gorkem
OSTYPE=Linux
\end{verbatim}


Sisteme girdi\u{g}iniz anda tan\i{}mlanan baz\i{} komutlar ve a\c{c}\i{}klamalar\i{} a\c{s}a\u{g}\i{}da verilmi\c{s}tir:

{\bf HISTFILE} : T\"{u}m yazd\i{}\u{g}\i{}n\i{}z komutlar {\tt .bash\_{}history} adl\i{} bir dosya i\c{c}inde tutulur. Her kullan\i{}c\i{}n\i{}n kendi ev dizinleri i\c{c}inde kullan\i{}c\i{}ya \"{o}zg\"{u} bu dosyadan vard\i{}r. {\tt \$HISTFILE} de\u{g}i\c{s}keni ile dosyan\i{}n ismi de\u{g}i\c{s}tirilebilir.

\begin{verbatim}
$ echo $HISTFILE
/home/gorkem/.bash_history
$ HISTFILE="komutlar"
$ echo $HISTFILE
komutlar
\end{verbatim}


{\bf PATH} : PATH de\u{g}i\c{s}keninde bir komut yaz\i{}ld\i{}\u{g}\i{} anda sistem taraf\i{}ndan
aranacak olan patika listesi g\"{o}r\"{u}nt\"{u}lenir. \"{O}rnek olarak {\tt who} komutu
{\tt /usr/bin/} dizini alt\i{}ndad\i{}r ve bu bilgi PATH de\u{g}i\c{s}keninde sakl\i{}
tutulur. Kullan\i{}c\i{}n\i{}n yapt\i{}\u{g}\i{} programlar\i{} \c{c}al\i{}\c{s}t\i{}rabilmesi i\c{c}in PATH
de\u{g}i\c{s}keninde bulundu\u{g}u dizini de tan\i{}mlamas\i{} gerekir.

PATH de\u{g}i\c{s}keninde her dizin iki nokta \"{u}st\"{u}ste i\c{s}areti ile birbirinden
ayr\i{}l\i{}r. \"{O}rnek olarak {\tt /usr/local/bin:/usr/bin} dizisi s\i{}ras\i{}yla
{\tt /usr/local/bin} ve {\tt /usr/bin} patikalar\i{}na kar\c{s}\i{}l\i{}k gelir.

Kullan\i{}c\i{} PATH de\u{g}i\c{s}kenine yeni girdiler ekleyebilir. A\c{s}a\u{g}\i{}daki \"{o}rnekte
bunun nas\i{}l uyguland\i{}\u{g}\i{} g\"{o}r\"{u}l\"{u}yor. Kullan\i{}c\i{} k\i{}saca PATH de\u{g}i\c{s}keninin
sonuna kendisinin istedi\u{g}i patikay\i{} veya patikalar\i{} ekler.

\begin{verbatim}
$ echo $PATH                    # PATH degiskenini ekrana bas
$ export PATH=$PATH:/usr/net    # buna /usr/net patikasini ekle
\end{verbatim}


{\bf SHELL} : O an kullan\i{}lan kabu\u{g}un patika ismini verir. Kabuk programlar\i{} genellikle {\tt /bin} dizini alt\i{}nda tutulurlar. Her kabu\u{g}un patika ismi sistemdeki {\tt /etc/shells} dosyas\i{}nda bulunmal\i{}d\i{}r. 

\begin{verbatim}
$ echo $SHELL
/bin/bash
\end{verbatim}


{\bf HOME} : Kullan\i{}c\i{}n\i{}n ev dizinini g\"{o}steren patikay\i{} ekrana basar. Her kullan\i{}c\i{}n\i{}n ev dizini, sistemde hesap a\c{c}\i{}l\i{}rken sistem g\"{o}revlisi taraf\i{}ndan belirlenir. Linux Slackware da\u{g}\i{}t\i{}m\i{} alt\i{}nda bu dizin \"{o}ntan\i{}ml\i{} olarak {\tt /home} 'dur. A\c{s}a\u{g}\i{}daki \"{o}rnek kullan\i{}c\i{}n\i{}n ev dizinine ait patikay\i{} ekrana bas\i{}yor. 

\begin{verbatim}
$ echo $HOME
/home/gorkem
\end{verbatim}


{\bf LOGNAME} : Sistemdeki kullan\i{}c\i{} hesab\i{}n\i{}n\i{}n ismini tutar. Her kullan\i{}c\i{} i\c{c}in farkl\i{} bir de\u{g}erde olur. 

\begin{verbatim}
$ echo $LOGNAME
gorkem
\end{verbatim}


{\bf TERM} : Kullan\i{}c\i{}n\i{}n halen \"{u}zerinde \c{c}al\i{}\c{s}t\i{}\u{g}\i{} terminal tipini g\"{o}r\"{u}nt\"{u}ler. {\tt vi} ve {\tt pico} gibi edit\"{o}rler \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}klar\i{} anda TERM \c{c}evresel de\u{g}i\c{s}kenine bakarlar. Bu sayede ekran ile ilgili bilgileri \"{o}nceden d\"{u}zenleyebilirler. A\c{s}a\u{g}\i{}daki komut \"{o}nce halihaz\i{}rdaki TERM de\u{g}i\c{s}kenini g\"{o}r\"{u}nt\"{u}l\"{u}yor, ard\i{}ndan de\u{g}i\c{s}kene ba\c{s}ka bir de\u{g}er at\i{}yor.

\begin{verbatim}
$ echo $TERM
linux
$ export TERM=vt100
$ echo $TERM
vt100
\end{verbatim}


{\bf PS1 ve PS2} : Ekranda komut sat\i{}r\i{}n\i{}n ba\c{s}\i{}na gelecek olan karakterleri belirlerler. Komut isteminin en ba\c{s}\i{}ndaki yaz\i{} bu iki de\u{g}i\c{s}ken yard\i{}m\i{}yla de\u{g}i\c{s}tirilebilir. PS1, birinci sat\i{}r\i{}n karakterlerini tutarken sat\i{}ra s\i{}\u{g}mayan komutlar bir sat\i{}r a\c{s}a\u{g}\i{} ge\c{c}eceklerinden ikinci sat\i{}r\i{}n karakterlerini de PS2 belirler. A\c{s}a\u{g}\i{}daki sat\i{}r, bu iki de\u{g}i\c{s}kenin \"{o}ntan\i{}ml\i{} olan "\$" i\c{s}aretini bir kelimeyle de\u{g}i\c{s}tiriyorlar.

\begin{verbatim}
$ export PS1='-> '
-> export PS2='>'
->
\end{verbatim}


\"{O}nceden tan\i{}mlanan kodlar yard\i{}m\i{}yla komut sat\i{}r\i{} de\u{g}i\c{s}tirilebilir. Her kodun ba\c{s}\i{}nda \verb+\+ karakteri vard\i{}r. Bu kodlar\i{}n herbiri \"{o}rne\u{g}in o anki saati, makinan\i{}n ismini veya bulundu\u{g}unuz dizini ekrana yazabilirler. \"{O}rne\u{g}in \verb+\+h ve \verb+\+w kodlar\i{} s\i{}ras\i{}yla \c{c}al\i{}\c{s}\i{}lan makinan\i{}n ismini ve \c{c}al\i{}\c{s}ma dizinini g\"{o}sterirler. Bu \"{o}rnekte PS1 de\u{g}i\c{s}keni bu iki kod yard\i{}m\i{}yla de\u{g}i\c{s}tiriliyor.

\begin{verbatim}
$ export PS1='\h:\w\$ '
linux:~$                        # yeni komut satiri goruntusu
linux:~$ cd /tmp
linux:/tmp$                     # calisma dizinini de gosteriyor
\end{verbatim}


A\c{s}a\u{g}\i{}da, s\i{}k\c{c}a kullan\i{}lan kodlar\i{}n bir listesi g\"{o}r\"{u}l\"{u}yor.

\begin{itemize}
\item {\bf \verb+\+t} , saat 
\item {\bf \verb+\+d} , tarih
\item {\bf \verb+\+s} , kabuk ismi
\item {\bf \verb+\+w} , \c{c}al\i{}\c{s}ma dizini
\item {\bf \verb+\+u} , kullan\i{}c\i{} ismi
\item {\bf \verb+\+h} , makina ismi
\end{itemize}





\section{Sisteme Giri\c{s} Dosyalar\i{}}



Sisteme girerken her giri\c{s} an\i{}nda \c{c}al\i{}\c{s}t\i{}r\i{}lan birtak\i{}m dosyalar bulunur. Bash kabu\u{g}u ile do\u{g}rudan ilgili olan giri\c{s} dosyalar\i{} aras\i{}nda 

\begin{verbatim}
/etc/profile
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
\end{verbatim}


say\i{}labilir. Kullan\i{}c\i{} bu dosyalar\i{}n kendine ait olanlar\i{}n\i{} diledi\u{g}i gibi de\u{g}i\c{s}tirebilir. Sisteme girerken tan\i{}mlamak istedi\u{g}i de\u{g}i\c{s}kenleri tan\i{}mlar, \c{c}al\i{}\c{s}t\i{}raca\u{g}i programlar\i{} yazar. {\tt /etc/profile} dosyas\i{}n\i{} t\"{u}m kullan\i{}c\i{}lar ortak kullan\i{}r. Her kullan\i{}c\i{} sisteme girdi\u{g}inde sistem taraf\i{}ndan bu dosya \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. Bu dosyada kullan\i{}c\i{}lar\i{}n ihtiyac\i{}na y\"{o}nelik \"{o}zel sistem de\u{g}i\c{s}kenleri bulunur , ek olarak birtak\i{}m kontrol ve kay\i{}t i\c{s}lemleri yap\i{}l\i{}r.

\"{O}rnek bir {\tt /etc/profile} dosyas\i{} \c{s}ekildeki gibidir.

\begin{verbatim}
if [ "$TERM" = "" -o "$TERM" = "unknown" ]; then
 TERM=linux
fi
#PS1='`hostname`:`pwd`# '
if [ "$SHELL" = "/bin/pdksh" -o "$SHELL" = "/bin/ksh" ]; then
 PS1="! $ "
elif [ "$SHELL" = "/bin/zsh" ]; then
 PS1="%m:%~%# "
elif [ "$SHELL" = "/bin/ash" ]; then
 PS1="$ "
else
 PS1='\h:\w\$ '
fi
PS2='> '
ignoreeof=2
export PATH DISPLAY LESS TERM PS1 PS2 ignoreeof
umask 022
# set up the color-ls environment variables:
if [ "$SHELL" = "/bin/zsh" ]; then
  eval `dircolors -z`
elif [ "$SHELL" = "/bin/ash" ]; then
  eval `dircolors -s`
else
  eval `dircolors -b`
fi
\end{verbatim}


{\tt .bashrc} dosyas\i{}, her bash kabu\u{g}u veya alt kabuk \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}\u{g}\i{} anda okunur. Her kabuk program\i{} \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}nca bir alt kabu\u{g}a ihtiya\c{c} oldu\u{g}undan bu durumda {\tt .bashrc} dosyas\i{} da okunacak ve i\c{c}erdi\u{g}i de\u{g}i\c{s}kenler proram \c{c}al\i{}\c{s}madan \"{o}nce tan\i{}mlanacakt\i{}r. 

Sistemden \c{c}\i{}karken varsa \c{c}al\i{}\c{s}t\i{}r\i{}lan dosyan\i{}n ismi {\tt .bash\_{}logout}'tur. Bu dosya ile kullan\i{}c\i{} sistemi terkederken fazladan i\c{s}lemler yapabilir. A\c{s}a\u{g}\i{}daki \"{o}rnekteki {\tt .bash\_{}logout} dosyas\i{}nda kullan\i{}c\i{} sistemden her \c{c}\i{}kt\i{}\u{g}\i{}nda ekran temizlenecek ve en \"{u}ste 'Hoscakal' yazacakt\i{}r.

\begin{verbatim}
clear
echo "Hoscakal!"
\end{verbatim}





\section{Kabuk Programlamaya Giri\c{s}}



Her kabu\u{g}un kendine \"{o}zg\"{u} programlama dili yap\i{}s\i{} vard\i{}r. Bash kabu\u{g}u ise g\"{u}\c{c}l\"{u} programlama \"{o}zellikleriyle karma\c{s}\i{}k programlar\i{}n rahat\c{c}a yaz\i{}lmas\i{}na izin verir. Mant\i{}ksal operat\"{o}rler, d\"{o}ng\"{u}ler, de\u{g}i\c{s}kenler ve modern programlama dillerinde bulunan pek \c{c}ok \"{o}zellik bash kabu\u{g}unda da vard\i{}r ve i\c{s}leyi\c{s} tarzlar\i{} da hemen hemen ayn\i{}d\i{}r. 

Genellikle, bir program\i{} olu\c{s}turacak olan komutlar bir dosyaya yaz\i{}l\i{}rlar ve ard\i{}ndan bu dosya \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. Herhangi bir edit\"{o}r yard\i{}m\i{}yla yaz\i{}lan program, daha sonra kabuk alt\i{}nda \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. Bir kabuk program\i{} di\u{g}erlerini \c{c}al\i{}\c{s}t\i{}rabilir. Bu d\"{u}zende kabuk programlar\i{}n\i{} daha karma\c{s}\i{}k komutlar\i{}n biraraya gelmi\c{s} ve b\"{u}y\"{u}m\"{u}\c{s} haline benzetebiliriz.






\subsection{Kabuk Programlar\i{}}



Kabuk programlar\i{}, bir veya birden fazla linux komutunu tutan dosyalard\i{}r. Bu dosya yarat\i{}ld\i{}ktan sonra do\u{g}rudan dosyan\i{}n ismi girilerek veya dosya isminden \"{o}nce '.' karakteri getirerek \c{c}al\i{}\c{s}t\i{}r\i{}labilir. Bir kabuk program\i{}, \c{c}al\i{}\c{s}t\i{}rma bitini 1 yapmak suretiyle "\c{c}al\i{}\c{s}t\i{}r\i{}labilir" hale getirilir. {\tt chmod} komutu yard\i{}m\i{}yla bir program\i{} \c{c}al\i{}\c{s}t\i{}r\i{}labilir yapmak i\c{c}in ,

\begin{verbatim}
$ chmod +x komut-ismi
\end{verbatim}


yaz\i{}labilir. Bundan sonra program\i{}n ismi yaz\i{}l\i{}p enter tu\c{s}una bas\i{}ld\i{}\u{g}\i{} zaman bir program Linux komutuymu\c{s} gibi \c{c}al\i{}\c{s}acakt\i{}r. 

\begin{verbatim}
$ cat calistir
echo -n "Tarih : "
date
$ chmod +x calistir
$ calistir
Tarih : Sun Dec  8 07:11:51 EET 1996
\end{verbatim}


Yukar\i{}daki \"{o}rnekte "calistir" isimli iki sat\i{}rl\i{}k bir kabuk program\i{}n\i{}n \"{o}nce i\c{c}eri\u{g}i ekrana yaz\i{}ld\i{}, ard\i{}ndan \c{c}al\i{}\c{s}t\i{}r\i{}lacak duruma getirildi ve \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}. 

Kabuk programlar\i{} yazarken dosyan\i{}n i\c{s}levini ve her sat\i{}rdaki komutun veya komut k\"{u}mesinin ne ama\c{c}la kullan\i{}ld\i{}\u{g}\i{}n\i{} g\"{o}steren a\c{c}\i{}klama sat\i{}rlar\i{} kullanmak i\c{s}e yarar. Bir a\c{c}\i{}klama eklemek i\c{c}in sat\i{}r ba\c{s}\i{}na (veya bo\c{s} sat\i{}ra) {\tt \#} i\c{s}areti eklenir ve ard\i{}ndan istenilen c\"{u}mle girilir. {\tt \#} i\c{s}aretinden sonraki t\"{u}m sat\i{}r kabuk taraf\i{}ndan g\"{o}zard\i{} edilir. A\c{s}a\u{g}\i{}daki programda komut \"{o}ncesinde yeralan a\c{c}\i{}klama sat\i{}r\i{}, komut hakk\i{}nda bilgi veriyor.

\begin{verbatim}
# gunzip komutu dosya acmak icin kullanilir.
gunzip sistem.gz
\end{verbatim}


Yorum sat\i{}r\i{}, komutun sonuna da eklenebilir.

\begin{verbatim}
ps -aux         # sistem surecleri hakkinda ayrintili bilgi..
\end{verbatim}


Bir kabuk alt\i{}nda \c{c}al\i{}\c{s}\i{}rken ba\c{s}ka bir kabuk i\c{c}in yaz\i{}lm\i{}\c{s} bir program\i{} \c{c}al\i{}\c{s}t\i{}rmak m\"{u}mk\"{u}nd\"{u}r. \"{O}rne\u{g}in tcsh alt\i{}ndas\i{}n\i{}z ve daha evvel bash kullanarak yazd\i{}\u{g}\i{}n\i{}z bir program\i{} \c{c}al\i{}\c{s}t\i{}rmak istiyorsunuz. \"{O}nce bash yazarak kabuk de\u{g}i\c{s}tirmeli, ard\i{}ndan program\i{} \c{c}al\i{}\c{s}t\i{}rmal\i{}, ve tekrar tcsh'a d\"{o}nmelisiniz. T\"{u}m bunlar\i{} otomatik olarak yapt\i{}rabilirsiniz. Program\i{}n en ba\c{s}\i{}na {\tt \#}! karakterini, ard\i{}ndan program\i{}n \c{c}al\i{}\c{s}aca\u{g}\i{} kabu\u{g}un patikas\i{}n\i{} yaz\i{}n. \"{O}rne\u{g}in {\tt \#!/bin/bash} komutunu program\i{}n en \"{u}st\"{u}ne eklerseniz bu program bash kabu\u{g}u alt\i{}nda \c{c}al\i{}\c{s}acakt\i{}r.






\subsection{De\u{g}i\c{s}kenlerin Kullan\i{}m\i{}}



Bir de\u{g}i\c{s}kene de\u{g}er atand\i{}\u{g}\i{} anda sistem taraf\i{}ndan tan\i{}n\i{}r. De\u{g}i\c{s}kenler alfabetik veya n\"{u}merik karakterlerden olu\c{s}abilirler fakat bir de\u{g}i\c{s}ken say\i{}sal bir de\u{g}er ile ba\c{s}layamaz. Bunlar\i{}n d\i{}\c{s}\i{}nda de\u{g}i\c{s}ken isminin i\c{c}inde "\_{}" karakteri de bulunabilir. Bir de\u{g}i\c{s}kene de\u{g}er atamas\i{} "=" i\c{s}areti yard\i{}m\i{}yla yap\i{}l\i{}r.

\begin{verbatim}
$ mesaj="aksama yemege geliyorum"
\end{verbatim}


\.{I}\c{c}eri\u{g}i olan bir de\u{g}i\c{s}kene ba\c{s}\i{}na "\$" i\c{s}areti konularak ula\c{s}\i{}l\i{}r. A\c{s}a\u{g}\i{}da, {\tt echo} komutu yard\i{}m\i{}yla bir de\u{g}i\c{s}kenin i\c{c}eri\u{g}i ekrana bas\i{}l\i{}yor.

\begin{verbatim}
$ echo $mesaj
aksama yemege geliyorum
$ echo yarin $mesaj
yarin aksama yemege geliyorum
\end{verbatim}


Ayn\i{} mesaj\i{} de\u{g}i\c{s}ken kullanmadan da g\"{o}r\"{u}nt\"{u}leyebiliriz.

\begin{verbatim}
$ echo "Aksama yemege geliyorum"
Aksama yemege geliyorum
\end{verbatim}





\subsection{Giri\c{s}/\c{C}\i{}k\i{}\c{s} \.{I}\c{s}lemleri }



Bir kabuk program\i{} \c{c}al\i{}\c{s}\i{}rken kullan\i{}c\i{}dan klavye yard\i{}m\i{}yla bilgi girmesi sa\u{g}lanabilir. Bu t\"{u}r i\c{s}lemler i\c{c}in tan\i{}mlanan {\tt read} komutu klavyeyi okur ve ald\i{}\u{g}\i{} bilgiyi bir de\u{g}i\c{s}kene atar. A\c{s}a\u{g}\i{}daki komutlar\i{} i\c{c}eren program yard\i{}m\i{}yla klavyeden okunan de\u{g}er ekrana yaz\i{}l\i{}yor. {\tt echo} komutundan sonra birden fazla de\u{g}i\c{s}ken grubu veya hem de\u{g}i\c{s}ken, hem de dizi kullan\i{}labilir. 

\begin{verbatim}
echo Bir sayi giriniz..
read sayi
echo Girilen sayi : $sayi
\end{verbatim}


Baz\i{} durumlarda girilen de\u{g}er \"{o}zel karakterleri i\c{c}erebilir. Bu durumda istenmeyen baz\i{} sonu\c{c}lar\i{}n do\u{g}mas\i{} ka\c{c}\i{}n\i{}lmaz olur. A\c{s}a\u{g}\i{}daki \"{o}rne\u{g}i bir dosya i\c{c}ine yaz\i{}n ve dosyay\i{} \c{c}al\i{}\c{s}t\i{}rd\i{}ktan sonra "*" tu\c{s}una bas\i{}n. 

\begin{verbatim}
echo Bir karakter giriniz
read a
echo Girdiginiz karakter : $a
\end{verbatim}





\subsection{Aritmetik \.{I}\c{s}lemler}



bash kabu\u{g}unda matematiksel i\c{s}lemlere b\"{u}y\"{u}k s\i{}n\i{}rlamalar getirilmi\c{s}tir. Tamsay\i{} de\u{g}i\c{s}keni d\i{}\c{s}\i{}nda matematiksel de\u{g}i\c{s}ken kullanmak i\c{c}in bu i\c{s}lemler i\c{c}in geli\c{s}tirilmi\c{s} ve kolayl\i{}klar sa\u{g}layan awk veya bc kullanabilirsiniz.

Aritmetik i\c{s}lemler i\c{c}in {\tt eval} komutunu veya bash kabu\u{g}u alt\i{}nda yerle\c{s}ik (builtin) komut olan {\tt let} komutunu kullanabilirsiniz. A\c{s}a\u{g}\i{}da let komutunun kullan\i{}m\i{} g\"{o}r\"{u}l\"{u}yor.

\begin{verbatim}
let "degisken=aritmetik islem"
\end{verbatim}


Bu \"{o}rnekte iki say\i{} \c{c}arp\i{}l\i{}p \c{c}\i{}kan sonu\c{c} ba\c{s}ka bir de\u{g}i\c{s}kene yaz\i{}l\i{}yor.

\begin{verbatim}
$ let "carpim=2*7"
$ echo $carpim
\end{verbatim}


Aritmetik de\u{g}i\c{s}ken tan\i{}mlaman\i{}n di\u{g}er bir yolu da {\tt typeset} komutu kullanmakt\i{}r.

\begin{verbatim}
$ typeset -i sonuc      (sonuc degiskeni bir dogal sayi icerecek)
$ a=100 ; b=56          (iki komutu ayirmak icin ; kullanilabilir)
$ sonuc=a*b
$ echo $sonuc   
5600
\end{verbatim}





\subsection{if-else Kal\i{}b\i{} ve Kontrol \.{I}\c{s}lemleri}



Hemen her programlama dilinde olan {\tt if} kal\i{}b\i{} bir Linux komutunun \c{c}al\i{}\c{s}mas\i{}n\i{} kontrol ({\tt test}) eder. {\tt if} komutu yerle\c{s}ik bir komuttur ve her {\tt if}, bir {\tt fi} komutuyla bitmelidir. {\tt if} komutunun ard\i{}ndan gelen Linux komutu \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r ve komutun \c{c}\i{}k\i{}\c{s} durumu (exit status) g\"{o}z\"{o}n\"{u}ne al\i{}narak ard\i{}ndan gelen {\tt then} deyimiyle birlikte devam\i{} i\c{s}letilir. Genellikle komutun iki t\"{u}rl\"{u} \c{c}\i{}k\i{}\c{s} durumu olaca\u{g}\i{}ndan {\tt else} komutunun ard\i{}ndan gelen komut zinciri, di\u{g}er \c{c}\i{}k\i{}\c{s} durumunda \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. A\c{s}a\u{g}\i{}da if-else-then komutunun \"{o}rnek s\"{o}zdizimi g\"{o}r\"{u}l\"{u}yor.

\begin{verbatim}
if linux komutu
    then        
        komut1
        komut2 
        ...
    else
        komut1 
        komut2 
        ...
fi
\end{verbatim}


{\tt if} komutu genellikle kendine {\tt test} komutu ile birlikte kullan\i{}m bulur. Bu komut yard\i{}m\i{}yla mant\i{}ksal i\c{s}lemler yap\i{}labilir, say\i{}lar ve hatta diziler kar\c{s}\i{}la\c{s}t\i{}r\i{}labilir. Anahtar s\"{o}zc\"{u}k olan {\tt test}'ten sonra opsiyonlar ve/veya kar\c{s}\i{}la\c{s}t\i{}r\i{}lacak olan de\u{g}erler yaz\i{}l\i{}r. Her opsiyon bir mant\i{}ksal i\c{s}leme kar\c{s}\i{}l\i{}k gelir. \"{O}rne\u{g}in {\tt -lt} opsiyonu ilk girilen aritmetik de\u{g}i\c{s}kenin ikinci de\u{g}erden k\"{u}\c{c}\"{u}k olup olmad\i{}\u{g}\i{}n\i{} denetler. Benzer \c{s}ekilde {\tt =} opsiyonu da iki karakter k\"{u}mesinin e\c{s}itli\u{g}ini kontrol eder. A\c{s}a\u{g}\i{}da {\tt test} komutunun \"{o}rnek kullan\i{}m\i{} yeral\i{}yor.

\begin{verbatim}
$ test 5 -eq 3
$ a="linux"
$ test $a="linux"
\end{verbatim}


komutun i\c{s}letilmesinin ard\i{}ndan kabu\u{g}a bir de\u{g}er d\"{o}nderilir. Bu de\u{g}er komut ba\c{s}ar\i{}l\i{} olarak i\c{s}letilmi\c{s}se 0, de\u{g}ilse 1'dir. Son \c{c}al\i{}\c{s}t\i{}r\i{}lan t\"{u}m Linux komutlar\i{}n\i{}n \c{c}\i{}k\i{}\c{s} de\u{g}eri \$? de\u{g}i\c{s}keninde tutulur. test komutunun \c{c}\i{}k\i{}\c{s} de\u{g}eri de bu yolla \"{o}\u{g}renilebilir.

\begin{verbatim}
$ sayi=4
$ test $sayi -eq 4
$ echo $?
0
$ test $sayi -lt 2
$ echo $?
1
\end{verbatim}


{\tt test} komutu yerine parantezler de kullan\i{}labilir. Yukar\i{}daki iki \"{o}rnek, parantez kullan\i{}larak \c{s}u \c{s}ekilde yaz\i{}labilir:

\begin{verbatim}
$ [ $sayi -eq 4 ] 
$ [ $sayi -lt 12 ]
\end{verbatim}


Dikkat edilmesi gereken bir nokta, k\"{o}\c{s}eli parantez kullan\i{}rken araya bo\c{s}luklar\i{}n eklenmesidir. Parantezler ba\c{s}l\i{} ba\c{s}\i{}na bir komut olarak g\"{o}r\"{u}ld\"{u}klerinden sa\u{g}\i{}nda ve solunda en az bir bo\c{s}luk b\i{}rak\i{}lmal\i{}d\i{}r. {\tt test} komutunda s\i{}k\c{c}a kullan\i{}lan di\u{g}er se\c{c}enekler \c{s}unlard\i{}r :



\begin{center}
\begin{tabular}{|l|l|}
\hline
Aritmetik kar\c{s}\i{}la\c{s}t\i{}rmalar &  \\ 
\hline
-gt &  b\"{u}y\"{u}k \\ 
-lt &  k\"{u}\c{c}\"{u}k\\ 
-ge &  b\"{u}y\"{u}k e\c{s}it\\ 
-le &  k\"{u}\c{c}\"{u}k e\c{s}it \\ 
-eq &  e\c{s}it \\ 
-ne &  e\c{s}it de\u{g}il\\ 
\hline
Dizisel kar\c{s}\i{}la\c{s}t\i{}rma &  \\ 
\hline
-z &  bo\c{s} dizi \\ 
-n &  tan\i{}ml\i{} dizi \\ 
= &  e\c{s}it diziler \\ 
!= &  farkl\i{} diziler\\ 
\hline
Dosya kar\c{s}\i{}la\c{s}t\i{}rmas\i{} &  \\ 
\hline
-f &  dosya var \\ 
-s &  dosya bo\c{s} de\u{g}il \\ 
-r &  dosya okunabilir \\ 
-w &  dosyaya yaz\i{}labilir \\ 
-x &  \c{c}al\i{}\c{s}t\i{}r\i{}labilir dosya \\ 
-h &  sembolik ba\u{g}lant\i{} \\ 
-c &  karakter ayg\i{}t \\ 
-b &  blok ayg\i{}t\\ 
\hline
Mant\i{}ksal kar\c{s}\i{}la\c{s}t\i{}rmalar &  \\ 
\hline
-a &  VE \\ 
-o &  VEYA \\ 
! &  DE\u{G}\.{I}L \\ 
\hline
\end{tabular}
\end{center}


{\tt if} komutunun {\tt test} ile birlikte kullan\i{}labildi\u{g}ini daha \"{o}nce belirtmi\c{s}tik. A\c{s}a\u{g}\i{}da bununla ilgili k\"{u}\c{c}\"{u}k bir \"{o}rnek yeral\i{}yor.

\begin{verbatim}
#!/bin/bash
echo "0 ile 20 arasinda bir sayi secin"
read sec
if [ $sec -lt 10 ]
   then 
        echo "Secilen sayi tek basamakli"
   else
        echo "Secilen sayi cift basamakli"
fi
\end{verbatim}


Her {\tt if} komutu bir {\tt fi} ile son bulmal\i{}d\i{}r.






\subsection{case Kal\i{}b\i{}}



Birka\c{c} alternatif aras\i{}ndan se\c{c}im yapmak i\c{c}in kullan\i{}lan bir komut olan {\tt case}, bir e\c{s}le\c{s}tirme g\"{o}rd\"{u}\u{g}\"{u} anda belirli bir komut k\"{u}mesini i\c{s}leme sokar. case yap\i{}s\i{} {\tt case} komutu ile ba\c{s}lar, e\c{s}le\c{s}tirilecek olan anahtar s\"{o}zc\"{u}k yaz\i{}l\i{}r ve se\c{c}enekler alt alta, her se\c{c}ene\u{g}e ait olan komutlarla birlikte belirtilir. T\"{u}m yap\i{} {\tt esac} komutu ile son bulur. 

\begin{verbatim}
case anahtar-sozcuk in
        secenek1) 
                komutlar
                ;;
        secenek2)
                komutlar
                ;;
        *)      
                komutlar
                ;;
esac
\end{verbatim}


Se\c{c}enekler aras\i{}nda \"{o}zel karakterler {\em (*, [] , ? gibi)\/} kullan\i{}labilir. Hi\c{c}bir e\c{s}leme yap\i{}lmad\i{}\u{g}\i{} zaman *) se\c{c}ene\u{g}i de\u{g}erlendirilecek ve buna ba\u{g}l\i{} olan komutlar i\c{s}letilecektir. * kullan\i{}m\i{} iste\u{g}e ba\u{g}l\i{}d\i{}r. A\c{s}a\u{g}\i{}da {\tt case} komutuna ili\c{s}kin k\i{}sa bir \"{o}rnek veriliyor.

\begin{verbatim}
#!/bin/bash

clear
echo    "1. ekrani temizle"
echo    "2. sistemdekileri goruntule"
echo    "3. dizindeki dosyalari goster"

echo -n "Secenegi giriniz : "
read secenek

case $secenek in
        1)
          clear
          ;;
        2)
          w 
          ;;
        3)
          ls -al
          ;;
        *) 
          echo Hatali secenek
esac
\end{verbatim}





\section{D\"{o}ng\"{u}ler }



Di\u{g}er hemen t\"{u}m programlama dillerinin en b\"{u}y\"{u}k g\"{u}c\"{u} olan d\"{o}ng\"{u} i\c{s}lemlerine kabuk alt\i{}nda da izin veriliyor. Burada programc\i{} taraf\i{}ndan en \c{c}ok kullan\i{}lan 2 d\"{o}ng\"{u} tipi anlat\i{}lacakt\i{}r: {\tt while} ve {\tt for}. {\tt while} komutu her d\"{o}ng\"{u}de bir denetleme mekanizmas\i{}n\i{} harekete ge\c{c}irirken {\tt for} d\"{o}ng\"{u}s\"{u} daha de\u{g}i\c{s}ik bir mant\i{}kla \c{c}al\i{}\c{s}\i{}r. 






\subsection{while-do D\"{o}ng\"{u}s\"{u}}



D\"{o}ng\"{u} blo\u{g}u {\tt while} anahtar kelimesiyle ba\c{s}lar, ard\i{}ndan gelen ko\c{s}ul sa\u{g}land\i{}\u{g}\i{} s\"{u}rece d\"{o}ng\"{u} i\c{s}letilir. \"{O}nce ko\c{s}ulun sa\u{g}lan\i{}p sa\u{g}lanmad\i{}\u{g}\i{}na bak\i{}l\i{}r. D\"{o}ng\"{u}den \c{c}\i{}kabilmek i\c{c}in mutlaka d\"{o}ng\"{u} i\c{c}indeki ko\c{s}ul ifadesinin de\u{g}erini yanl\i{}\c{s} yapacak bir durum olu\c{s}mal\i{}d\i{}r, aksi halde sonsuz d\"{o}ng\"{u} olu\c{s}ur.

\begin{verbatim}
while kosul ifadesi
   do
        komutlar
   done 
\end{verbatim}


{\tt if} komutuyla birlikte kullan\i{}lan {\tt test} komutu, {\tt while} d\"{o}ng\"{u}s\"{u}nde ko\c{s}ul ifadesi olarak da yer alabilir. A\c{s}a\u{g}\i{}da 1'den 100'e kadar sayan ve ekrana basan bir d\"{o}ng\"{u} g\"{o}r\"{u}l\"{u}yor.

\begin{verbatim}
#!/bin/bash
deger=0
while [ $deger -lt 100 ]
   do
        deger=$((deger+1))
        echo $deger
   done
\end{verbatim}


Yukar\i{}da kullan\i{}lan (( ve )) karakterleri aras\i{}na matematiksel bir i\c{s}lem getirilebilir. Bu \"{o}zellik bash kabu\u{g}una \"{o}zg\"{u}d\"{u}r.






\subsection{for-do d\"{o}ng\"{u}s\"{u}}



Bir liste dahilindeki t\"{u}m de\u{g}erlere s\i{}rayla eri\c{s}imi sa\u{g}lar. for komutundan sonra yeralan liste s\i{}rayla kullan\i{}l\i{}r ve herbirisi i\c{c}in d\"{o}ng\"{u} \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}r. Listenin sonuna gelindi\u{g}inde ise d\"{o}ng\"{u}den \c{c}\i{}k\i{}l\i{}r. 

\begin{verbatim}
for degisken1 in deger1 deger2 ... degerX
   do
        komutlar
   done
\end{verbatim}


A\c{s}a\u{g}\i{}daki \"{o}rnek bu d\"{o}ng\"{u}y\"{u} kullanarak ekrana bir dizi kelime yaz\i{}yor. D\"{o}ng\"{u} boyunca akasya, elma ve visne kelimeleri "agac" de\u{g}i\c{s}kenine kopyalan\i{}yor ve her d\"{o}ng\"{u}de bu de\u{g}i\c{s}kenin i\c{c}erdi\u{g}i bilgiler ekrana yaz\i{}l\i{}yor.

\begin{verbatim}
for agac in akasya elma visne
   do
        echo $agac
   done
\end{verbatim}


for-do d\"{o}ng\"{u}s\"{u}, dosya isimleri \"{u}zerinde yap\i{}lan i\c{s}lemlerde de b\"{u}y\"{u}k kolayl\i{}klar sa\u{g}lar. Bunun i\c{c}in \"{o}zel karakterlerden yararlanmak da olas\i{}d\i{}r. \"{O}rnek olarak * karakteri o anki \c{c}al\i{}\c{s}ma dizini i\c{c}indeki t\"{u}m dosyalar\i{} se\c{c}er. 

\begin{verbatim}
for a in *.pl ; do
        file $a
        done
\end{verbatim}







\section{\"{O}rnek Kabuk Program\i{}}



Sistem g\"{o}revlisinin en \c{c}ok kulland\i{}\u{g}\i{}m komutlardan birisi {\tt ps -aux {\verbar} grep -i xxx} komutudur. Bu sat\i{}r yard\i{}m\i{}yla \c{c}al\i{}\c{s}an {\em xxx\/} isimli program hakk\i{}nda daha detayl\i{} bilgi elde edilebilir. {\tt ps} komutu detayl\i{} bir s\"{u}re\c{c} listesini ekrana verirken \c{c}\i{}kt\i{} do\u{g}rudan grep komutuna y\"{o}nlendirilir ve sadece istedi\u{g}imiz bilgi monit\"{o}rde g\"{o}r\"{u}n\"{u}r. Fakat her zaman ayn\i{} uzun sat\i{}r\i{} tekrar tekrar yazmaktansa bu sat\i{}r\i{} bir dosyaya g\"{o}nderip, dosya ad\i{}n\i{} komut sat\i{}r\i{}ndan \c{c}al\i{}\c{s}t\i{}rmak zamandan tasarruf sa\u{g}layacakt\i{}r. Biz de \"{o}yle yapal\i{}m ve a\c{s}a\u{g}\i{}daki sat\i{}rlar\i{} "p" isimli dosyaya yazal\i{}m. 

\begin{verbatim}
#!/bin/bash
if [ $# = 1 ]
  then
  ps -ax | grep -i $1
else
  ps -ax
fi
\end{verbatim}


Ard\i{}ndan dosyay\i{} PATH de\u{g}i\c{s}keninin i\c{s}aret etti\u{g}i dizinlerden {\tt /usr/local/bin} alt\i{}na yerle\c{s}tirip \c{c}al\i{}\c{s}t\i{}r\i{}labilir olmas\i{} i\c{c}in {\tt chmod +x /usr/local/bin/p} komutunu uygulay\i{}n. Kendi yazd\i{}\u{g}\i{}n\i{}z dosyalar\i{} {\tt /usr/local} veya {\tt \~{}/bin} dizini alt\i{}na kopyalaman\i{}z bunlar\i{}n derli toplu olarak tek bir dizinde her an eri\c{s}ilebilir \c{s}ekilde durmalar\i{} a\c{c}\i{}s\i{}ndan \"{o}nem ta\c{s}\i{}r. 

{\tt grep} komutu, bir dosyadaki veya standart giri\c{s}teki sat\i{}rlar i\c{c}inden belirli bir kelime, harf veya harf grubunu bulmaya yarar. A\c{s}a\u{g}\i{}daki birka\c{c} \"{o}rnek {\tt grep}'i \"{o}zetlemeye yeter.

\begin{verbatim}
$ grep while sort.c 
sort.c dosyasinda while kelimesini iceren tum satirlari ekrana yazar.
$ w | grep demir 
sistemde demir isimli kullanici var mi?
$ ls -al | grep "^d" 
\end{verbatim}


Son \"{o}rnek, {\tt ls -al} \c{c}\i{}kt\i{}s\i{}nda sat\i{}r ba\c{s}\i{}nda ``d'' varsa ekrana getirir. Sadece dizin isimlerinin ba\c{s}\i{}nda ``d'' harfi bulunur. \c{S}apka isareti, sat\i{}r ba\c{s}lang\i{}c\i{}n\i{} g\"{o}sterir.

Dosyaya biraz daha yak\i{}ndan bakal\i{}m. \.{I}lk sat\i{}r, bu dosyan\i{}n
{\tt /bin/bash} program\i{} taraf\i{}ndan \c{c}al\i{}\c{s}t\i{}r\i{}laca\u{g}\i{}n\i{} g\"{o}sterir. \.{I}kinci
sat\i{}r yard\i{}m\i{}yla komut sat\i{}r\i{} \"{u}zerinde ka\c{c} tane opsiyon oldu\u{g}u bulunur. \$\#
\c{c}evresel de\u{g}i\c{s}keni her biri TAB veya bo\c{s}luk karakteri ile ayr\i{}lm\i{}\c{s}
komut sat\i{}r\i{} opsiyonlar\i{} say\i{}s\i{}n\i{} verir. A\c{s}a\u{g}\i{}daki komutta toplam 3
opsiyon vard\i{}r.

\begin{verbatim}
$ ls --8bit  -F -b 
\end{verbatim}


{\tt \$\#} komutuna benzer \c{s}ekilde \$1, \$2, \$3
... de\u{g}i\c{s}kenleri de opsiyonlar\i{} verir. Yukar\i{}daki komutta \$1,
\$2, \$2 de\u{g}i\c{s}kenleri s\i{}ras\i{}yla

\begin{verbatim}
--8bit
-F
-b
\end{verbatim}


de\u{g}erlerini al\i{}rlar. Komut sat\i{}r\i{}ndan \c{c}al\i{}\c{s}t\i{}r\i{}lan komut ise \$0 de\u{g}i\c{s}kenine at\i{}l\i{}r. Yukar\i{}daki \"{o}rnekte \$0 de\u{g}i\c{s}keni {\tt ls} de\u{g}erini tutacakt\i{}r.

{\tt p} dosyas\i{}na tek opsiyon yollayaca\u{g}\i{}z. Bu opsiyon da hakk\i{}nda detayl\i{} bilgi alaca\u{g}\i{}m\i{}z s\"{u}re\c{c} olacakt\i{}r. Dosya i\c{c}inde \$1 de\u{g}i\c{s}kenini {\tt ps} komutuna yerle\c{s}tirmek i\c{c}in :

\begin{verbatim}
ps -ax | grep -i $1;
\end{verbatim}


yaz\i{}l\i{}r. Bundan sonra komut sat\i{}r\i{}nda, \"{o}rne\u{g}in:

\begin{verbatim}
$ p bash
\end{verbatim}


girilirse \$1 de\u{g}i\c{s}keni {\tt bash} e e\c{s}it olacak ve bu da {\tt ps -ax {\verbar} grep -i bash} e\c{s}de\u{g}er komutunu \c{c}al\i{}\c{s}t\i{}racakt\i{}r. Komut olarak sadece {\tt p} girilirse \$\# de\u{g}i\c{s}keni 0'a e\c{s}it olaca\u{g}\i{}ndan dosyada yeralan ve hi\c{c} bir filtreleme yapmayan {\tt ps -ax} komutu \c{c}al\i{}\c{s}\i{}r.

Linux'u y\"{u}klerken {\em HOWTO\/} d\"{o}k\"{u}manlar\i{}n\i{} da eklemeyi ihmal etmediniz, de\u{g}il mi ? A\c{s}a\u{g}\i{}daki k\i{}sa program, bu dosyalara en h\i{}zl\i{} \c{s}ekilde ula\c{s}man\i{}za yar\i{}yor. T\"{u}m HOWTO'lar kurulum a\c{s}amas\i{}nda {\tt /usr/doc/faq/howto} dizini alt\i{}na kopyalan\i{}r ve s\i{}k\i{}\c{s}t\i{}r\i{}l\i{}r. 

Bu program\i{} herhangi bir isimle kaydedin. Ard\i{}ndan komut sat\i{}r\i{}ndan program\i{}n ismi ile birlikte ekranda g\"{o}r\"{u}nt\"{u}lemek istedi\u{g}iniz {\em HOWTO\/} d\"{o}k\"{u}man\i{}n\i{}n ismini yaz\i{}n (\"{o}rne\u{g}in PPP). Bir parametre girilmez ise {\tt /usr/doc/faq/howto} dizinindeki dosyalar ekrana gelir.

\begin{verbatim}
#!/bin/bash
if [ "$1" = "" ]; then
    ls /usr/doc/faq/howto | less
else
    gunzip -c /usr/doc/faq/howto/$1-HOWTO.gz | less
fi
\end{verbatim}







\chapter{Sed ve Vi}






\section{SED (Stream editor) }



Metin dosyalar\i{} \"{u}zerinde s\"{u}rekli i\c{s}lem yapanlar i\c{c}in {\em sed\/} ve
{\em vi\/} hemen imdada yeti\c{s}ir. Bu iki program\i{}n yapabildiklerini
etkile\c{s}imli olarak bir metin edit\"{o}r\"{u} \"{u}zerinden ger\c{c}ekle\c{s}tirebilmek de
m\"{u}mk\"{u}nd\"{u}r. {\em sed\/} ve {\em vi\/} tam anlam\i{}yla zaman kayb\i{}n\i{} \"{o}nleyen kullan\i{}c\i{}
dostu iki uygulamad\i{}r. Yap\i{}sal olarak di\u{g}er programlama dillerinden
biraz farkl\i{} olduklar\i{}ndan \"{o}\u{g}renmesi biraz zaman al\i{}r. Buna ra\u{g}men e\u{g}er
metin edit\"{o}rl\"{u}\u{g}\"{u} i\c{s}inizin bir par\c{c}as\i{} ise {\em sed\/} ve {\em vi\/}'\i{} \"{o}\u{g}renip
bunlardan verimli bir \c{s}ekilde yararlanman\i{}z uygun olacakt\i{}r.






\subsection{Sed ve \"{O}zellikleri}



Sed bir dosyadan veya standart girdiden(klavyeden) bilgi okur ve
standart \c{c}\i{}kt\i{}ya (ekrana) okudu\u{g}u bilgileri kullan\i{}c\i{}n\i{}n belirledi\u{g}i
d\"{u}zene sokarak yazar. Bu veriyi de kullan\i{}c\i{} genellikle bir dosyaya
yerle\c{s}tirir.

Sed komut sat\i{}r\i{}nda iken veya bir kabuk program\i{} i\c{c}inden kullan\i{}labilir.




\subsection{\"{O}rnekler}



Sed kullan\i{}rken en \c{c}ok ba\c{s}vuraca\u{g}\i{}n\i{}z i\c{s}le\c{c} `{\em s\/}' i\c{s}lecidir. Bir karakteri
veya karakter k\"{u}mesini ba\c{s}ka bir diziye \c{c}evirmeye yarar. Buna basit bir
\"{o}rnek :

\begin{verbatim}
sed 's/hapisane/hapishane/g' dosya
\end{verbatim}


Komutun sonundaki `{\em g\/}' i\c{s}leci, sed'e dosyan\i{}n tamam\i{}n\i{} ara\c{s}t\i{}rmas\i{}n\i{}
s\"{o}yler. E\u{g}er bunu kald\i{}r\i{}rsan\i{}z, sed her sat\i{}r\i{}n ba\c{s}\i{}nda buldu\u{g}u ilk
de\u{g}i\c{s}tirmeyi yapacak ve sat\i{}r\i{}n geri kalan\i{}na dokunmayacakt\i{}r.

A\c{s}a\u{g}\i{}daki karakterler sed taraf\i{}ndan kullan\i{}lan \"{o}zel karakterler
kapsam\i{}na girer. Bu karakterlerin herbirisinin anlam\i{} oldu\u{g}undan dikkatli
kullan\i{}lmalar\i{} gerekir.

\begin{verbatim}
.*[]^$\&
\end{verbatim}


Yukar\i{}daki karakterleri g\"{o}z\"{o}n\"{u}ne almadan yap\i{}lan a\c{s}a\u{g}\i{}daki gibi bir
kullan\i{}m hataya yol a\c{c}ar.

\begin{verbatim}
sed 's/[J.S. Bach]/[Bach, J.S]/' dosya 
\end{verbatim}


Bunun yerine her \"{o}zel karakterin ba\c{s}\i{}na `{\em \verb+\+\/}' karakteri getirilerek
\"{o}zel anlamlar\i{}n\i{}n yitirilmesi sa\u{g}lanabilir (saklama i\c{s}lemi). Yukar\i{}da
\c{c}al\i{}\c{s}mayan \"{o}rne\u{g}i yeniden d\"{u}zenleyerek yazal\i{}m:

\begin{verbatim}
sed 's/\[J\.S\. Bach\]/[Bach, J.S ]/' dosya 
\end{verbatim}


Ayn\i{} anda birden \c{c}ok de\u{g}i\c{s}tirme yapabilmek i\c{c}in ise her arg\"{u}man i\c{c}in
{\tt -e} kullan\i{}l\i{}r.

\begin{verbatim}
sed -e 's/computer/bilgisayar/g' -e 's/server/sunucu/g' dosya
\end{verbatim}


\.{I}\c{c}inde '/' karakteri olan bir diziyi de\u{g}i\c{s}tirmek i\c{c}in ne yapmal\i{}? Bu,
\"{o}zel karakter s\i{}n\i{}f\i{}na girdi\u{g}i i\c{c}in karakterin \"{o}zel anlam\i{}n\i{} yitirmesi
sa\u{g}lan\i{}r.

\begin{verbatim}
sed 's/\/usr\/bin/\/bin/g' dosya
\end{verbatim}





\subsection{D\"{u}zg\"{u}n Deyimler (Regular Expressions)}



Sed, UNIX \"{u}zerinde metin i\c{s}leyen bir\c{c}ok program gibi d\"{u}zg\"{u}n deyimlerden 
yararlan\i{}r. A\c{s}a\u{g}\i{}daki bu duruma birka\c{c} \"{o}rnekle yer veriliyor.
'{\em \^{}\/}' karakteri sat\i{}r ba\c{s}lang\i{}c\i{}n\i{} g\"{o}sterir. Bu komut,

\begin{verbatim}
sed 's/^Pts /Pazartesi/' dosya
\end{verbatim}


bir sat\i{}r\i{}n ba\c{s}\i{}nda ``Pts'' varsa bunu ``Pazartesi'' haline getirir. Dikkat
ederseniz komut dahilinde `{\em g\/}' i\c{s}leci kullan\i{}lmam\i{}\c{s}t\i{}r. \c{C}\"{u}nk\"{u} her sat\i{}rda
sadece bir sat\i{}r ba\c{s}\i{} olabilir.

\$ karakteri sat\i{}r sonunu belirtir. A\c{s}a\u{g}\i{}daki \"{o}rnekte,

\begin{verbatim}
sed 's/ $//' dosya
\end{verbatim}


Sed komutu sat\i{}r sonundaki t\"{u}m bo\c{s}luk karakterlerini siler.
Her sat\i{}r sonuna ``SATIR\_{}SONU'' karakter k\"{u}mesini getirmek i\c{c}in

\begin{verbatim}
sed 's/$/SATIR_SONU/' dosya
\end{verbatim}


yaz\i{}labilir. Bo\c{s} bir sat\i{}r\i{} bulmak i\c{c}in sat\i{}r ba\c{s}\i{} ve sat\i{}r sonu
belirte\c{c}leri birlikte kullan\i{}l\i{}r.

\begin{verbatim}
sed 's/^$/bu daha once bos bir satirdi/' dosya
\end{verbatim}


`{\em .\/}' (nokta) karakteri {\em herhangi bir karakter\/} anlam\i{}na gelir. \"{O}rne\u{g}in
\"{u}zerinde i\c{s}lem yapaca\u{g}\i{}m\i{}z dosyada b\"{u}t\"{u}n sat\i{}rlardaki ilk iki karakteri
silmek i\c{c}in:

\begin{verbatim}
sed 's/^..//' dosya
\end{verbatim}


K\"{o}\c{s}eli parantezler birden fazla say\i{}da karakter i\c{c}inde se\c{c}im yapar.

\begin{verbatim}
sed 's/[Oo]pen[Ww]in/openwin/g' dosya
\end{verbatim}


Alfabedeki iki karakterin aras\i{}ndaki t\"{u}m karakterleri se\c{c}mek i\c{c}in k\"{o}\c{s}eli
parantezlerin i\c{c}inde `{\em -\/}' karakteri kullan\i{}labilir. Bu karakter, sa\u{g}\i{}ndaki
ve solundaki de dahil olmak \"{u}zere aradaki t\"{u}m harfleri se\c{c}er. \"{O}rnek
dosyadaki t\"{u}m b\"{u}y\"{u}k harfleri silelim.

\begin{verbatim}
sed 's/[A-Z]//g' dosya
\end{verbatim}


Bir karakter k\"{u}mesinin d\i{}\c{s}\i{}nda kalan karakterleri se\c{c}mek i\c{c}in ise
`{\em \^{}\/}'
kullan\i{}l\i{}r. \"{O}rnek dosyada, rakamlar\i{}n ve k\"{u}\c{c}\"{u}k harflerin d\i{}\c{s}\i{}ndaki t\"{u}m
harfleri silmek istiyoruz.

\begin{verbatim}
sed 's/[^1-9a-z]//g' dosya
\end{verbatim}


'*' karakteri, {\em kendisinden bir \"{o}nce gelen karakterin veya k\"{u}me
i\c{c}ine al\i{}nm\i{}\c{s} karakter gruplar\i{}n\i{}n {\bf s\i{}f\i{}r} veya daha fazla tekrar\i{}\/}
anlam\i{}na gelir.

\begin{verbatim}
sed 's/^ *//' dosya
\end{verbatim}


komutu her sat\i{}r ba\c{s}\i{}ndaki bo\c{s}luk karakterlerini
siler. A\c{s}a\u{g}\i{}daki sed komutu her sat\i{}rdaki son kelimeyi (bo\c{s}luk
karakterlerinden olu\c{s}mayan karakterler grubunu) siler.

\begin{verbatim}
sed 's/[^ ]*$//' dosya
\end{verbatim}


unutulmamas\i{} gereken bir nokta, `{\em *\/}' karakteri \"{o}nceki grubun
{\em s\i{}f\i{}r\/} kere tekrar\i{}n\i{} da g\"{o}z\"{o}n\"{u}ne al\i{}r, bu durumda a\c{s}a\u{g}\i{}daki sat\i{}rda
g\"{o}r\"{u}len ve bir tamsay\i{} de\u{g}erini ``TAMSAYI'' s\"{o}zc\"{u}\u{g}\"{u} haline getirmek i\c{c}in
kullan\i{}lan komut Linux taraf\i{}ndan yanl\i{}\c{s} i\c{s}letilecektir.

\begin{verbatim}
sed 's/ [0-9]* / TAMSAYI /g' dosya
\end{verbatim}


Bu sat\i{}r ayn\i{} zamanda her bo\c{s}luk karakterini ``TAMSAYI'' ya \c{c}evirir. Bunu
engellemek i\c{c}in, en az\i{}ndan bir haneyi arama kapsam\i{}na sokmak gerekir:

\begin{verbatim}
sed 's/ [0-9][0-9]* / TAMSAYI /g' dosya
\end{verbatim}


`{\em .*\/} harf kombinasyonu {\em herhangi bir say\i{}da karakter grubu\/}
anlam\i{}ndad\i{}r. A\c{s}a\u{g}\i{}daki \"{o}rnekte, ``ku'' ve ``ik'' aras\i{}nda ne olursa olsun
bulunan sat\i{}r\i{} de\u{g}i\c{s}tirecek ve bunlar\i{}n yerine ``kuru erik'' koyacakt\i{}r.

\begin{verbatim}
sed 's/ku.*ik/kuru erik/g' dosya
\end{verbatim}


Buraya kadarki b\"{o}l\"{u}mde e\c{s}le\c{s}tirdi\u{g}imiz harf veya harf gruplar\i{}n\i{} ya
ba\c{s}ka bir forma soktuk ya da tamamen sildik. Ancak sed'in kelime i\c{s}leme
kapasitesi sadece yapt\i{}klar\i{}m\i{}zla s\i{}n\i{}rl\i{} de\u{g}ildir.  `{\em \verb+\+(\/}'
ve `{\em \verb+\+)\/}' operat\"{o}rleri yard\i{}m\i{}yla e\c{s}le\c{s}tirildi\u{g}i anda haf\i{}zaya
kaydedilen kelime gruplar\i{} daha sonra tekrar \c{c}a\u{g}\i{}r\i{}labilir. Parantezler
\"{o}zel anlaml\i{} karakterlerin anlamlar\i{}n\i{} yitirmesini sa\u{g}lamak
amac\i{}yla daha \"{o}nceki kullan\i{}ma uygun konulmu\c{s}lard\i{}r. \.{I}lk kullan\i{}lan
`{\em \verb+\+(\verb+\+)\/}' operat\"{o}r\"{u} `{\em \verb+\+1\/}' adl\i{} alana, ikinci
kullan\i{}lan `{\em \verb+\+(\verb+\+)\/}' operat\"{o}r\"{u} `{\em \verb+\+2\/}' adl\i{} alana
e\c{s}le\c{s}tirilir (kay\i{}t edilir). A\c{s}a\u{g}\i{}daki sed komutu,

\begin{verbatim}
sed 's/^\([A-Za-z][A-Za-z]*\) \([A-Za-z][A-Za-z]*\)/\2 \1/' dosya
\end{verbatim}


bir dosyadaki ``isim soyisim'' s\i{}ras\i{}n\i{} ``soyisim isim'' s\i{}ras\i{}na \c{c}evirmekte
kullan\i{}labilir. \"{O}rnek olarak i\c{c}eri\u{g}i a\c{s}a\u{g}\i{}daki gibi olan bir dosya
\"{u}zerinde bu komut \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}rsa

{\tt Mehmet K\i{}rk\\ 
Biray \c{C}ift\\ 
G\"{u}rkan Ball\i{}}

ekranda a\c{s}a\u{g}\i{}daki \c{c}\i{}kt\i{} g\"{o}r\"{u}n\"{u}r:

{\tt K\i{}rk Mehmet\\ 
\c{C}ift Biray\\ 
Ball\i{} G\"{u}rkan}

Baz\i{} durumlarda t\"{u}m dosya \"{u}zerinde de\u{g}il de baz\i{} \"{o}zellikleri sa\u{g}layan
sat\i{}rlar \"{u}zerinde i\c{s}lem yapmak isteyebilirsiniz. Bunun i\c{c}in 'adresleme'
yapman\i{}z gerekir. Adresleme i\c{s}lemi, `{\em s\/} i\c{s}lecinden hemen \"{o}nce yap\i{}l\i{}r. Bu
komut ile dosyan\i{}n sadece 1 ve 20. sat\i{}rlar\i{} aras\i{}nda i\c{s}lem yap\i{}lacakt\i{}r.

\begin{verbatim}
sed '1,20s/Karadeniz/Akdeniz/g' dosya
\end{verbatim}


``Makina'' kelimesiyle ba\c{s}layan t\"{u}m sat\i{}rlardaki ``End\"{u}stri'' kelimesi yerine
``Elektronik'' kelimesini yerle\c{s}tirelim.

\begin{verbatim}
sed '/^Makina/s/Maden /Elektronik /g' dosya
\end{verbatim}


``Makina'' kelimesiyle {\em ba\c{s}lamayan\/} t\"{u}m sat\i{}rlara benzer i\c{s}lemi
uygulayal\i{}m. `{\em !\/}' karakterinin yerine dikkat edin.

\begin{verbatim}
sed '/^Makina/!s/Maden /Elektronik /g' dosya
\end{verbatim}







\subsection{Sed Kaynak Dosyas\i{} }



E\u{g}er sed kaynak sat\i{}r\i{}n\i{}z bir iki sat\i{}ra s\i{}\u{g}mayacak kadar b\"{u}y\"{u}k ise
komutlar\i{} tek dosya alt\i{}nda toplayabilirsiniz. Bu \"{o}rnekte {\tt degistir.sed}
isimli dosyaya \"{u}\c{c} sat\i{}rl\i{}k sed komutu yazal\i{}m.

\begin{verbatim}
s/tiren/tren/g
s/Pazar/Pazartesi/g
s/1996/1997/g
\end{verbatim}


Ard\i{}ndan sed komutunu {\tt -f} parametresiyle \c{c}al\i{}\c{s}t\i{}ral\i{}m.

\begin{verbatim}
sed -f degistir.sed dosya
\end{verbatim}


Bunlar\i{}n yerine kendi kendine \c{c}al\i{}\c{s}an bir sed program\i{} yazmaya ne
dersiniz ?

\begin{verbatim}
#!/usr/bin/sed -f
# degistir.sed dosyasi
s/tiren/tren/g
s/Pazar/Pazartesi/g
s/1996/1997/g
\end{verbatim}


\c{C}al\i{}\c{s}t\i{}rmak i\c{c}in dosya izni verdikten sonra

\begin{verbatim}
chmod u+x degistir.sed
\end{verbatim}


Komut sat\i{}r\i{} \"{u}zerinden rahatl\i{}kla \c{c}al\i{}\c{s}t\i{}rabiliriz

\begin{verbatim}
$ degistir.sed dosya 
\end{verbatim}







\section{vi Edit\"{o}r\"{u} }



Bir linux sistemde her kullan\i{}c\i{}n\i{}n zevkine hitap eden \c{c}e\c{s}itli metin
edit\"{o}rler vard\i{}r. Bunlar\i{}n aras\i{}nda en \c{c}ok kullan\i{}lan ve standart olan
ed ve vi, UNIX sistemler i\c{c}in \"{o}zel olarak tasarlanm\i{}\c{s} edit\"{o}rlerdir. vi
kadar \c{c}ok kullan\i{}lmasa da ed, pico ve joe da b\"{u}y\"{u}k bir taraftar kitlesine
sahiptir. vi ilk ba\c{s}ta karma\c{s}\i{}k g\"{o}r\"{u}nse de h\i{}z\i{} ve verimi ile her
kullan\i{}c\i{}n\i{}n i\c{s}ini b\"{u}y\"{u}k \"{o}l\c{c}\"{u}de kolayla\c{s}t\i{}racak bir edit\"{o}rd\"{u}r. En \c{c}ok
kullan\i{}lan komut tak\i{}mlar\i{}n\i{} \"{o}\u{g}rendikten sonra vi ile ayn\i{} dili konu\c{s}uyor
oldu\u{g}unuzu g\"{o}receksiniz.






\subsection{vi'a Ba\c{s}lang\i{}\c{c}}



PC edit\"{o}rlerin b\"{u}y\"{u}k \c{c}o\u{g}unlu\u{g}unda klavye, edit\"{o}r komutlar\i{}n\i{}
almak ve bas\i{}lan tu\c{s}lar\i{} ekrana g\"{o}ndermek i\c{c}in kullan\i{}lan iki
gruba ayr\i{}lm\i{}\c{s}t\i{}r. Kullan\i{}c\i{} ayn\i{} anda hem komut i\c{s}letip hem de
yaz\i{} yazabilir. Bu tip edit\"{o}rler geni\c{s} bir klavye haritas\i{}na sahip
olduklar\i{} i\c{c}in, \"{o}rne\u{g}in fonksiyon tu\c{s}lar\i{}n\i{} veya klavyenin en sa\u{g}\i{}ndaki
n\"{u}merik tu\c{s}lar\i{} da kullan\i{}yor olabilirler. vi' \i{}n tasar\i{}m a\c{s}amas\i{}nda bu
durumdan ka\c{c}\i{}n\i{}lm\i{}\c{s}, standart d\i{}\c{s}\i{} klavyesi olan bilgisayarlar\i{}n da var
olabilece\u{g}i d\"{u}\c{s}\"{u}n\"{u}lerek klavye \"{u}zerinde kullan\i{}lmas\i{} gereken tu\c{s}lar\i{}n
say\i{}s\i{}n\i{} m\"{u}mk\"{u}n oldu\u{g}unca indirilmesine \c{c}al\i{}\c{s}\i{}lm\i{}\c{s}t\i{}r. Burada kar\c{s}\i{}m\i{}za
vi edit\"{o}r\"{u}n\"{u}n \c{c}al\i{}\c{s}ma a\c{s}amas\i{}nda \"{u}\c{c} ayr\i{} i\c{s}lev geliyor. Birincisi,
bilgisayara komutlar\i{}n girdisi s\i{}ras\i{}nda kullan\i{}lan {\em komut modu\/}, ikincisi
yaz\i{} yazarken kullan\i{}lan {\em yaz\i{} modu\/} ve {\em sat\i{}r modu\/}.

Komut modunda klavye \"{u}zerinde g\"{o}revi olan t\"{u}m tu\c{s}lar, bilgisayar komut
vermek i\c{c}in kullan\i{}l\i{}yor. Yaz\i{} modunda ise di\u{g}er edit\"{o}rlerdekine benzer
\c{s}ekilde yaz\i{} yazmak m\"{u}mk\"{u}n oluyor. Klavye modunu de\u{g}i\c{s}tirdi\u{g}inizde
klavye tu\c{s}lar\i{}n\i{}n i\c{s}levleri de hemen de\u{g}i\c{s}iyor. vi edit\"{o}r\"{u}n\"{u} ilk
\c{c}al\i{}\c{s}t\i{}rd\i{}\u{g}\i{}n\i{}z anda komut moduna girersiniz. Bu anda her tu\c{s}a ait
bir komut \c{c}al\i{}\c{s}t\i{}r\i{}lmaya haz\i{}rd\i{}r (\"{o}rne\u{g}in `{\em j\/}' bir karakter a\c{s}a\u{g}\i{},
`{\em k\/}' bir karakter yukar\i{} gider). Bu anda kullan\i{}c\i{} yaz\i{} moduna ge\c{c}mek
isterse `{\em i\/}' tu\c{s}una basabilir.

Yaz\i{} moduna iken klavyeden girilen her karakter ekranda g\"{o}r\"{u}n\"{u}r. Bundan
sonras\i{} daktilo kullanmaya benzer. Tekrar komut moduna ge\c{c}mek i\c{c}in {\em ESC\/}
tu\c{s}u yard\i{}mc\i{} olur. Bir dosya yazarken veya d\"{u}zeltmede bulunurken her
iki yaz\i{}m stili aras\i{}nda s\"{u}rekli gidip geldi\u{g}inizi farkedeksiniz.

Bunlara ek olarak dosya i\c{s}lemleri veya e\c{s}leme (substitution) yaparken
iki mod da kullan\i{}lmaz. Linux kullan\i{}c\i{}s\i{} vi \"{u}zerinde \c{c}al\i{}\c{s}\i{}rken en alt
sat\i{}rda vi mesajlar\i{}n\i{} g\"{o}r\"{u}r ve gerekti\u{g}i zaman sat\i{}r modunda komutlar\i{}
girer. Sat\i{}r moduna ge\c{c}mek i\c{c}in `{\em :\/}' (iki nokta \"{u}st\"{u}ste) karakteri
kullan\i{}l\i{}r. Bu tu\c{s}a bas\i{}ld\i{}\u{g}\i{}nda ekran\i{}n en alt\i{}nda bir sat\i{}r a\c{c}\i{}l\i{}r
ve vi sizden bir komut girmenizi bekler. vi komutunu yazd\i{}p enter'a
bast\i{}ktan sonra tekrar edit\"{o}r komut moduna ge\c{c}ersiniz.






\subsection{Dosya \.{I}\c{s}lemleri}



Sisteme girip ekrana {\tt vi telefon} yazd\i{}\u{g}\i{}n\i{}zda a\c{s}a\u{g}\i{}dakine benzer bir
metin \"{u}zerinde arama ve de\u{g}i\c{s}tirme g\"{o}r\"{u}nt\"{u}s\"{u} monit\"{o}rde belirecek ve
program \c{c}al\i{}\c{s}t\i{}r\i{}lacakt\i{}r.

\begin{verbatim}
_
~
~
~
~
~
~
~
~
~
~
~
~
 "telefon" [NEW FILE]  1 line, 1 char
\end{verbatim}


vi'a ilk girdi\u{g}iniz anda komut modunda olursunuz. Yaz\i{} moduna ge\c{c}mek i\c{c}in
`{\em i\/}' veya `{\em a\/}' tu\c{s}una bas\i{}n. Bu andan itibaren zaman\i{}n\i{}z\i{}n b\"{u}y\"{u}k
bir k\i{}sm\i{}n\i{} ge\c{c}irece\u{g}iniz yaz\i{} moduna atlars\i{}n\i{}z. B\i{}kana kadar yaz\i{}p
\"{o}nce {\em ESC\/} tu\c{s}una, ard\i{}ndan iki kere `{\em Z\/}' tu\c{s}una bas\i{}n. Bu komut dizisi
\"{o}nce dosyay\i{} kaydedecek, sonra da vi edit\"{o}rden \c{c}\i{}kman\i{}z\i{} ve kabu\u{g}a
d\"{o}nmenizi sa\u{g}layacakt\i{}r.

vi' a yeni ba\c{s}layanlar\i{}n yapt\i{}klar\i{} en s\i{}k hatalardan biri yaz\i{}
modundan komut moduna ge\c{c}erken {\em ESC\/} tu\c{s}una basmamalar\i{}d\i{}r. `{\em w\/}' komutu
`{\em ZZ\/}' komutuna benzer \c{c}al\i{}\c{s}\i{}r, haf\i{}zada halihaz\i{}rda bulunan dosyay\i{},
edit\"{o}rden \c{c}\i{}kmadan diske kaydeder. E\u{g}er isimsiz bir dosyada \"{u}zerinde
\c{c}al\i{}\c{s}\i{}yorsan\i{}z (\"{o}rne\u{g}in vi telefon yerine sadece vi yazarak edit\"{o}re
girmi\c{s}seniz) dosyay\i{} sabit diske yazmak i\c{c}in `{\em w\/}' sat\i{}r komutunu
kullanmal\i{}s\i{}n\i{}z. Bunun i\c{c}in daha \"{o}nce de belirtildi\u{g}i gibi

\begin{verbatim}
:w telefon
\end{verbatim}


yaz\i{}p sat\i{}r moduna ge\c{c}erek komutu girmelisiniz. 

vi edit\"{o}rden \c{c}\i{}kmak i\c{c}in `{\em :q\/}' yaz\i{}n. 






\subsection{vi' da Yazma}



\c{S}imdi vi yard\i{}m\i{}yla bir dosya \"{u}zerinde denemeler yapal\i{}m. A\c{s}a\u{g}\i{}daki
sat\i{}rlar\i{} kabuk sat\i{}r\i{}nda iken yaz\i{}n ve {\em ENTER\/}'a bas\i{}n.

\begin{verbatim}
metu:~$ vi deneme
\end{verbatim}


Ekran silinecek ve yukar\i{}dakine benzer bir g\"{o}r\"{u}nt\"{u}yle
kar\c{s}\i{}la\c{s}acaks\i{}n\i{}z. Yaz\i{} moduna ge\c{c}mek i\c{c}in `{\em i\/}' tu\c{s}una bas\i{}n. Hemen
ard\i{}ndan bir zamanlar \.{I}nternet \"{u}zerinde g\"{o}r\"{u}p kaydetti\u{g}im birka\c{c} sat\i{}r\i{}
yaz\i{}n.

{\tt Arada s\i{}rada kitapta bir \c{s}eyler ararken /'e basas\i{}m gelmiyor de\u{g}il.\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ }



Ekran\i{}n en sonuna geldi\u{g}inizde vi, alttaki sat\i{}r ba\c{s}\i{}na
ge\c{c}meyecektir. Bunun i\c{c}in {\em ENTER\/} tu\c{s}una basarak yazmaya devam edin.

{\tt Arada s\i{}rada kitapta bir \c{s}eyler ararken /'e basas\i{}m gelmiyor de\u{g}il.\\ 
Fazla vi kullanmaktan tembelli\u{g}e al\i{}\c{s}m\i{}\c{s}\i{}z anla\c{s}\i{}lan, \\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ }

Sat\i{}r sonuna geldi\u{g}iniz zaman komut sat\i{}r\i{}na ge\c{c}mek i\c{c}in {\em ESC\/} tu\c{s}una
bas\i{}n. Klavyenin sa\u{g}\i{}ndaki y\"{o}n tu\c{s}lar\i{}n\i{} kullanarak dosya i\c{c}inde
gezinebilirsiniz. vi'\i{}n sevdi\u{g}im \"{o}zelliklerinden birisi de kullan\i{}c\i{}y\i{}
10 parmak yazmaya zorlamas\i{}d\i{}r. Y\"{o}n tu\c{s}lar\i{}n\i{}n g\"{o}revini {\em h, j, k\/} ve
{\em l\/} tu\c{s}lar\i{} da yapabilir, b\"{o}ylece kullan\i{}c\i{} sa\u{g} elini klavye \"{u}zerinde
s\"{u}rekli gezdirmek zorunda kalmaz.

\begin{itemize}
\item {\bf j}, imleci bir sat\i{}r a\c{s}a\u{g}\i{} indir 
\item {\bf k}, imleci bir sat\i{}r yukar\i{} g\"{o}nder
\item {\bf h}, imleci bir karakter sola al
\item {\bf l}, imleci bir karakter sa\u{g}a al
\end{itemize}


Alternatif olarak {\em ENTER\/} tu\c{s}u komut modunda `{\em j\/}' tu\c{s}u yerine de
kullan\i{}labilir. Kurs\"{o}r\"{u} y\"{o}n tu\c{s}lar\i{} yard\i{}m\i{}yla ``Fazla'' kelimesiyle
ba\c{s}layan sat\i{}ra kadar ta\c{s}\i{}y\i{}n. `{\em i\/}' tu\c{s}una bas\i{}p tekrar yaz\i{} moduna
ge\c{c}erek metin \"{u}zerinde biraz de\u{g}i\c{s}iklik yap\i{}n:

{\tt Arada s\i{}rada kitapta bir \c{s}eyler ararken /'e basas\i{}m gelmiyor de\u{g}il.\\ 
Fazla vi kullanmaktan dolay\i{}\_{}tembelli\u{g}e al\i{}\c{s}m\i{}\c{s}\i{}z anla\c{s}\i{}lan..\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ }

``dolay\i{}'' kelimesini ekledikten sonra bir noktay\i{} i\c{s}aret etmek
istiyorum. Kulland\i{}\u{g}\i{}m Linux makinas\i{} T\"{u}rk\c{c}e destekli oldu\u{g}u i\c{c}in T\"{u}rk\c{c}e
karakterleri okuyup yazmam m\"{u}mk\"{u}n, asl\i{}nda Linux i\c{s}letim sistemi hemen
her \"{u}lkenin alfabesini destekledi\u{g}inden herhangi bir dilde (\"{o}rne\u{g}in
Alman alfabesi karakterlerini kullanarak) yazmak i\c{c}in birka\c{c} komut
yeterli oluyor.

`{\em i\/}' tu\c{s}u imlecin bulundu\u{g}u yerden yazmas\i{}na ra\u{g}men, `{\em a\/}' komutu bir
karakter sa\u{g}dan ba\c{s}layarak yazman\i{}z\i{} sa\u{g}lar. `{\em o\/}' komutu ise imlecin
bulundu\u{g}u yerin alt\i{}nda bir sat\i{}r bo\c{s}luk b\i{}rak\i{}r ve bo\c{s} sat\i{}r\i{}n ba\c{s}\i{}na
ge\c{c}erek yaz\i{} moduna atlar. {\em ESC\/} tu\c{s}una basarak komut modundayken en alt
sat\i{}ra inin ve `{\em o\/}' tu\c{s}una bas\i{}n. Burada bir sat\i{}r daha ekleyelim:

{\tt Arada s\i{}rada kitapta bir \c{s}eyler ararken /'e basas\i{}m gelmiyor de\u{g}il.\\ 
Fazla vi kullanmaktan dolay\i{} tembelli\u{g}e al\i{}\c{s}m\i{}\c{s}\i{}z anla\c{s}\i{}lan..\\ 
Sayfalar\i{} kar\i{}\c{s}t\i{}rmak zor geliyor...\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ }



E\u{g}er ekrandaki bilgi birka\c{c} sayfadan ibaretse {\em Control-F\/} tu\c{s}unu bir sayfa
ileri gitmek i\c{c}in, {\em Control-B\/} tu\c{s}unu ise metni bir sayfa geriye almak
i\c{c}in kullanabilirsiniz.

vi her sat\i{}r\i{} kendi i\c{c}inde numaraland\i{}r\i{}r. Belirli bir sat\i{}ra gitmek
i\c{c}in tu\c{s}lar d\i{}\c{s}\i{}nda sat\i{}r\i{}n numaras\i{} kullanarak da gidilebilir. `{\em G\/}'
komutu yard\i{}m\i{}yla imlecin gidece\u{g}i sat\i{}r\i{} belirtebilirsiniz. Bunun i\c{c}in
komut modunda iken sat\i{}r numaras\i{}n\i{} girin (ekranda g\"{o}r\"{u}nmeyecektir) ve
hemen ard\i{}ndan `{\em G\/}' tu\c{s}una bas\i{}n. E\u{g}er sat\i{}r numaras\i{} girilmezse
imleci dosyan\i{}n sonunda konumland\i{}r\i{}l\i{}r.






\subsection{Silme ve Kopyalama}



Yaz\i{} modunda iken {\em back space\/} tu\c{s}u yard\i{}m\i{}yla, komut modunda iken ise
`{\em x\/}' komutu ile istedi\u{g}iniz kadar harfi silmeniz m\"{u}mk\"{u}nd\"{u}r. `{\em dd\/}'
komutu ise imleci \"{u}zerinde bulundu\u{g}u sat\i{}r\i{} siler ve alttaki t\"{u}m
sat\i{}rlar bir sat\i{}r yukar\i{} al\i{}n\i{}r. PC \"{u}zerindeki edit\"{o}rlerdeki sat\i{}r sonuna
gelince imlecin otomatik olarak bir sat\i{}r a\c{s}a\u{g}\i{} kaymas\i{}, {\tt :set wm=n}
sat\i{}r komutu yard\i{}m\i{}yla ger\c{c}ekle\c{s}tirilir.  Komuttaki {\em n\/} say\i{}s\i{}, sa\u{g}dan
ka\c{c} bo\c{s}luk b\i{}rak\i{}laca\u{g}\i{}n\i{} s\"{o}yler. Ekran\i{}n sa\u{g}\i{}ndan 4 sat\i{}r bo\c{s}luk b\i{}rakmak
i\c{c}in (bu durumda sat\i{}r uzunlu\u{g}u 76 karaktere inecektir) {\tt :set wm=4} yaz\i{}n.

`{\em dd\/}' veya `{\em x\/}' komutundan sonra silinen harf ve harf gruplar\i{} haf\i{}zaya
al\i{}n\i{}r ve istenildi\u{g}i zaman `{\em p\/}' tu\c{s}u yard\i{}m\i{}yla imlecin bulundu\u{g}u yerden
itibaren ekrana bas\i{}l\i{}r. `{\em P\/}' yard\i{}m\i{}yla haf\i{}zadaki metni imlecin bir
sat\i{}r \"{u}zerine kopyalayabilirsiniz.

Kurs\"{o}r\"{u}n bulundu\u{g}u yerden sat\i{}r sonuna kadar silmek i\c{c}in
`{\em d\$\/}' , metin
sonuna kadar silmek i\c{c}in `{\em dG\/}' kullan\i{}labilir. (\$ ve G harflerinin
i\c{s}levlerine dikkat edin!)

Son kald\i{}\u{g}\i{}m\i{}z yerden devam edelim. Son sat\i{}r\i{} `{\em dd\/}' ile silelim.

{\tt Arada s\i{}rada kitapta bir \c{s}eyler ararken /'e basas\i{}m gelmiyor de\u{g}il.\\ 
Fazla vi kullanmaktan dolay\i{} tembelli\u{g}e al\i{}\c{s}m\i{}\c{s}\i{}z anla\c{s}\i{}lan..\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ }

Ard\i{}ndan kesti\u{g}imiz sat\i{}r\i{} {\em P\/} komutuyla en \"{u}ste yap\i{}\c{s}t\i{}ral\i{}m .



{\tt Sayfalar\i{} kar\i{}\c{s}t\i{}rmak zor geliyor...\\ 
Arada s\i{}rada kitapta bir \c{s}eyler ararken /'e basas\i{}m gelmiyor de\u{g}il.\\ 
Fazla vi kullanmaktan dolay\i{} tembelli\u{g}e al\i{}\c{s}m\i{}\c{s}\i{}z anla\c{s}\i{}lan..\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ }



Tek bir karakteri ba\c{s}ka bir karakterle de\u{g}i\c{s}tirmek i\c{c}in \"{o}nce komut modunda
karakteri silip yaz\i{} moduna ge\c{c}tikten sonra gerekli de\u{g}i\c{s}ikli\u{g}i yapmaya
gerek yoktur. `{\em r\/}' komutu tek bir harfi de\u{g}i\c{s}tirmek i\c{c}in kullan\i{}l\i{}r. Bu
tu\c{s}a bas\i{}nca imlecin \"{u}zerinde bulundu\u{g}u karakter silinir ve edit\"{o}r
kullan\i{}c\i{}dan yerine gelecek karakteri bekler. Bundan sonra vi tekrar
komut moduna d\"{o}ner.

Bir kelimeyi silip \"{u}zerine yazmak i\c{c}in de `{\em cw\/}' komutu
kullan\i{}labilir. Kelimenin ba\c{s}\i{}na gelin ve s\i{}rayla \"{o}nce `{\em c\/}' sonra
`{\em w\/}' tu\c{s}lar\i{}na bas\i{}n. Edit\"{o}r yazmay\i{} bitirmenizi bekleyecektir. {\em ESC\/} tu\c{s}una
bas\i{}ncaya kadar yazd\i{}klar\i{}n\i{}z ekranda kalacak ve (varsa) kelimeden arta
kalan harf(ler) silinecektir.

Her \"{o}l\"{u}ml\"{u} gibi siz de hata yapabilirsiniz. Hata yapt\i{}ktan sonra eski
konuma d\"{o}nmek i\c{c}in `{\em u\/}' komutunu kullan\i{}n. Bu komut, \"{u}zerinde de\u{g}i\c{s}iklikler
yapt\i{}\u{g}\i{}n\i{}z metni son \c{c}al\i{}\c{s}t\i{}r\i{}lan komuttan \"{o}nceki duruma getirir. Yeni
konuma tekrar geri d\"{o}nmek i\c{c}in {\em Control-R\/} 'ye bas\i{}n.






\subsection{Komut Tekrar\i{}}



20 sat\i{}r\i{} silmek i\c{c}in 20 kere dd tu\c{s}una basmak gereksizdir. Bunun
i\c{c}in `{\em dd\/}' komutundan \"{o}nce klavyeden 20 rakam\i{}n\i{} girmek yeterli
olur. Girilen rakamlar `{\em G\/}' komutundaki \"{o}rne\u{g}e benzer \c{s}ekilde ekranda
g\"{o}r\"{u}nmezler. Kullan\i{}lan rakamlar, kendinden sonra gelecek olan komutun ka\c{c}
kere i\c{s}letilece\u{g}ini belirtir. \"{O}rnek olarak `{\em 8x\/}' komutu sekiz karakteri
siler, `{\em 12j\/}' komutu 12 sat\i{}r a\c{s}a\u{g}\i{} iner. \"{U}zerinde \c{c}al\i{}\c{s}t\i{}\u{g}\i{}m\i{}z dosyada
birka\c{c} uygulama yapal\i{}m. Kurs\"{o}r\"{u} ilk sat\i{}rdaki ``geliyor'' kelimesinin
ba\c{s}\i{}na al\i{}n ve `{\em 7x\/}' komutunu girin. Son durum yakla\c{s}\i{}k \c{s}u \c{s}ekilde
olmal\i{}d\i{}r:

{\tt Sayfalar\i{} kar\i{}\c{s}t\i{}rmak zor ...\\ 
Arada s\i{}rada kitapta bir \c{s}eyler ararken /'e basas\i{}m gelmiyor de\u{g}il.\\ 
Fazla vi kullanmaktan dolay\i{} tembelli\u{g}e al\i{}\c{s}m\i{}\c{s}\i{}z anla\c{s}\i{}lan..\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ }



vi'\i{}n komut tekrar \"{o}zelli\u{g}i sayesinde ekrana yazd\i{}klar\i{}n\i{}z\i{} ardarda
kopyalayabilirsiniz. \"{O}rnek dosya \"{u}zerinde birinci sat\i{}r\i{}n ba\c{s}\i{}na gidin ve
`{\em 9i\/}' yaz\i{}n. Girece\u{g}iniz yaz\i{} modunda ekrana ne g\"{o}nderirseniz {\em ESC\/} tu\c{s}undan
sonra 9 kopyas\i{} bas\i{}lacakt\i{}r:

{\tt bip bip bip bip bip bip bip bip bipSayfalar\i{} kar\i{}\c{s}t\i{}rmak zor ...\\ 
Arada s\i{}rada kitapta bir \c{s}eyler ararken /'e basas\i{}m gelmiyor de\u{g}il.\\ 
Fazla vi kullanmaktan dolay\i{} tembelli\u{g}e al\i{}\c{s}m\i{}\c{s}\i{}z anla\c{s}\i{}lan..\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ 
\~{}\\ }






\subsection{Kopyalama}



Silinen karakter veya karakter gruplar\i{}n\i{}n haf\i{}zaya kaydedildi\u{g}ini
s\"{o}ylemi\c{s}tik. Bu haf\i{}za ge\c{c}ici bir tampon vazifesi g\"{o}r\"{u}r. `{\em yy\/}' komutu
\"{u}zerinde bulundu\u{g}u sat\i{}r\i{} kopyalar. E\u{g}er komuttan \"{o}nce say\i{} girilirse o
kadar sat\i{}r kopyalan\i{}r. Ard\i{}ndan kullan\i{}c\i{} metin \"{u}zerinde istedi\u{g}i yere
gelip `{\em p\/}' tu\c{s}una basarak haf\i{}zadaki sat\i{}rlar\i{} imlecin bulundu\u{g}u sat\i{}r\i{}n
alt\i{}ndan itibaren basar. `{\em yy\/}' komutu yerine `{\em Y\/}' de tercih edilebilir.




\subsection{Arama ve E\c{s}le\c{s}tirme}



vi'da \c{c}al\i{}\c{s}\i{}rken arama yapmak isteyebilirsiniz. E\u{g}er \"{u}zerinde \c{c}al\i{}\c{s}t\i{}\u{g}\i{}n\i{}z
metin uzun ise belirli bir kelime veya kelime gruplar\i{}n\i{} aramak \c{c}ok zaman
alabilir. Komut modunda iken `{\em /\/}' karakterine basarak arama/tarama moduna
ge\c{c}in. Ekran\i{}n en alt k\i{}sm\i{}nda bir sat\i{}r a\c{c}\i{}lacakt\i{}r. Aramak istedi\u{g}iniz
kelimeyi yaz\i{}n ve {\em ENTER\/} tu\c{s}una bas\i{}n. vi edit\"{o}r\"{u} imlecin bulundu\u{g}u
yerden itibaren girilen anahtar s\"{o}zc\"{u}\u{g}\"{u} metin i\c{c}inde tarayacakt\i{}r. E\u{g}er
aranan kelime bulunmu\c{s}sa sat\i{}r bunun \"{u}zerine konumland\i{}r\i{}r.

`{\em /\/}' komutu dosyan\i{}n sonuna do\u{g}ru arama yaparken `{\em ?\/}' komutu
ba\c{s}a do\u{g}ru gider. Ayn\i{} kelimeyi tekrar aratmak i\c{c}in `{\em n\/}' tu\c{s}una
bas\i{}n. Arama i\c{s}lemi, `{\em /\/}' komutu yard\i{}m\i{}yla yap\i{}lm\i{}\c{s}sa ileri do\u{g}ru,
`{\em ?\/}' komutu yard\i{}m\i{}yla yap\i{}lm\i{}\c{s}sa geriye do\u{g}ru tekrar ba\c{s}layacakt\i{}r.

Asl\i{}nda arama yaparken komut modunda girilen her karakter grubu bir
d\"{u}zg\"{u}n deyimdir. \"{O}rnek olarak komut modunda `{\em d\$\/}' yazd\i{}\u{g}\i{}m\i{}zda
\$ harfinin sat\i{}r sonunu belirtti\u{g}ini, `{\em dG\/}' komutundaki
`{\em G\/}' harfinin de metin sonunu i\c{s}aret etti\u{g}inden imlecin bulundu\u{g}u
yerden itibaren dosya sonuna kadar sildi\u{g}ini g\"{o}rm\"{u}\c{s}t\"{u}k. Metin i\c{c}indeki
b\"{u}y\"{u}k harfleri aramak i\c{c}in

\begin{verbatim}
/[A-Z]
\end{verbatim}


kullan\i{}labilir. Burada g\"{o}sterebildi\u{g}imiz \"{o}zellikleri vi'\i{}n sadece
k\"{u}\c{c}\"{u}k bir par\c{c}as\i{}d\i{}r. vi kullan\i{}c\i{}lar\i{}n\i{}n i\c{s}ine yarayabilecek birka\c{c}
arama-e\c{s}le\c{s}tirme komutuna g\"{o}z atal\i{}m.

{\tt :[a,b]s/deyim/e\c{s}lenecek deyim/i\c{s}le\c{c}}

Yukar\i{}daki komut metin i\c{c}inde a ve b sat\i{}rlar\i{} aras\i{}ndaki
``deyim''i, ``e\c{s}lenecek deyim''e \c{c}evirir. \"{O}zel tan\i{}ml\i{} karakterleri de
kullanabilirsiniz. A\c{s}a\u{g}\i{}daki komut da 1. ve 10. sat\i{}rlar\i{} aras\i{}nda
buldu\u{g}u t\"{u}m ``n\"{u}merik'' kelimelerini ``say\i{}sal'' hale getirir.

{\tt :1,10s/n\"{u}merik/say\i{}sal;}

Sat\i{}r say\i{}s\i{} yerine t\"{u}m dosya \"{u}zerinde e\c{s}le\c{s}tirme yapmak i\c{c}in
\% sembol\"{u}n\"{u}, sat\i{}r sonunu belirtmek i\c{c}in \$ sembol\"{u}n\"{u}
kullanabilirsiniz. Bu durumda sat\i{}r say\i{}s\i{}n\i{} belirten [a,b]
tan\i{}m\i{}n\i{} bo\c{s} b\i{}rakt\i{}\u{g}\i{}n\i{}zda de\u{g}i\c{s}iklik sadece imlecin bulundu\u{g}u sat\i{}rda
yap\i{}lacakt\i{}r. \.{I}\c{s}le\c{c}ler de birka\c{c} \c{c}e\c{s}it olabilir. `{\em c\/}' i\c{s}leci, her
e\c{s}leme \"{o}ncesi kullan\i{}c\i{}dan izin al\i{}r. vi kullan\i{}rken \c{c}o\u{g}u durumda her
sat\i{}rda rastlanan ilk e\c{s}lemeyi yerine getirecek olan `{\em g\/}' i\c{s}lecini
kulland\i{}\u{g}\i{}n\i{}z\i{} g\"{o}receksiniz. Daha az kullan\i{}lan `{\em i\/}' i\c{s}leci ise
araman\i{}n b\"{u}y\"{u}k-k\"{u}\c{c}\"{u}k harf g\"{o}zetimi yapmadan yerine getirmesini sa\u{g}lar.

\begin{verbatim}
:%s/elektronik/s/nik//g
\end{verbatim}


komutu, i\c{c}inde ``elektronik'' kelimesi ge\c{c}en her sat\i{}rdaki ``elektronik''
kelimesini ``elektron'' haline getirir. Fakat ``mekanik'' kelimesine
dokunmaz. Sed alt\i{}nda kullan\i{}lan `{\em \verb+\+(\verb+\+)\/}' operat\"{o}r\"{u} vi i\c{c}in de
ge\c{c}erli bir tan\i{}md\i{}r. A\c{s}a\u{g}\i{}daki komut da yukar\i{}daki uygulamaya benzer
\c{s}ekilde her ``kalemlik'' kelimesini ``kalemler'' haline getirir.

\begin{verbatim}
:g/\(kalem\)lik/s//\1ler/g 
\end{verbatim}





\subsection{Di\u{g}er Dosyalar\i{}n Metne Eklenmesi}



Kurs\"{o}r\"{u}n bulundu\u{g}u yerden itibaren {\tt rehber.txt} dosyas\i{}n\i{} halihaz\i{}rda
\c{c}al\i{}\c{s}t\i{}\u{g}\i{}n\i{}z metine kopyalamak i\c{c}in

\begin{verbatim}
:r rehber.txt
\end{verbatim}


komutunu kullan\i{}n. 






\subsection{Kabuk Komutlar\i{}n\i{}n \c{C}al\i{}\c{s}t\i{}r\i{}lmas\i{}}



vi alt\i{}nda iken kabuk komutlar\i{}n\i{}, hatta kabu\u{g}un kendisini bile
\c{c}al\i{}\c{s}t\i{}rmak m\"{u}mk\"{u}nd\"{u}r. `{\em :!\/}' ile komut ismini girebilirsiniz. A\c{s}a\u{g}\i{}daki
komut vi'dan \c{c}\i{}kmadan {\tt ls} komutunu \c{c}al\i{}\c{s}t\i{}racak ve sonucu ekrana
verecektir.

\begin{verbatim}
:!ls -la
\end{verbatim}


Bunun yan\i{}s\i{}ra komut \c{c}\i{}kt\i{}s\i{}n\i{} ekran yerine \"{u}zerinde \c{c}al\i{}\c{s}t\i{}\u{g}\i{}m\i{}z metine
aktarmak i\c{c}in a\c{s}a\u{g}\i{}daki vi komutunu kullan\i{}n:

\begin{verbatim}
:r! ls -al
\end{verbatim}


Metnin son halini g\"{o}relim:

{\tt bip bip bip bip bip bip bip bip bipSayfalar\i{} kar\i{}\c{s}t\i{}rmak zor ...\\ 
Arada s\i{}rada kitapta bir \c{s}eyler ararken / 'e basas\i{}m gelmiyor de\u{g}il.\\ 
Fazla vi kullanmaktan dolay\i{} tembelli\u{g}e al\i{}\c{s}m\i{}\c{s}\i{}z anla\c{s}\i{}lan..\\ 
bash.txt\\ 
index.html\\ 
images/\\ 
\~{}\\ }






\subsection{vi Ba\c{s}lang\i{}\c{c} Dosyalar\i{}}



vi her a\c{c}\i{}ld\i{}\u{g}\i{}nda belirli bir dosyay\i{} okur ve gerekli d\"{u}zenlemeleri
ve d\"{u}zeltmeleri yapar. Bu i\c{s}lemler i\c{c}in kullan\i{}lan set komutu
birtak\i{}m parametreler al\i{}r. \"{O}rne\u{g}in {\tt set wm=n} , {\em n\/} karakter kenar
bo\c{s}lu\u{g}u b\i{}rakmak i\c{c}in, set nu ise her sat\i{}r\i{}n numaraland\i{}r\i{}lmas\i{} i\c{c}in
kullan\i{}l\i{}r. Bu komutlar ister vi i\c{c}inde , ister ba\c{s}lang\i{}\c{c} dosyas\i{} i\c{c}inde
\c{c}al\i{}\c{s}t\i{}r\i{}labilir.

vi her a\c{c}\i{}l\i{}\c{s}ta \"{o}ntan\i{}ml\i{} olarak \"{o}nce bulundu\u{g}unuz dizin i\c{c}indeki,
ard\i{}ndan ev dizininizin i\c{c}indeki {\tt .exrc} dosyas\i{}na bakar. B\"{o}ylece
a\c{c}\i{}l\i{}\c{s} an\i{}nda konfig\"{u}rasyon i\c{s}lemlerini bu dosyay\i{} kullanarak kolayca
ger\c{c}ekle\c{s}tirebilirsiniz. Dosyaya her sat\i{}rda bir set komutu gelecek
\c{s}ekilde istedinildi\u{g}i kadar komut yerle\c{s}tirilebilir. A\c{s}a\u{g}\i{}da \"{o}rnek bir
.exrc dosyas\i{} g\"{o}r\"{u}l\"{u}yor.

\begin{verbatim}
set ignorecase
set wrapmargin=2
set tabstop=6
\end{verbatim}


Yukar\i{}daki se\c{c}enekler aras\i{}nda {\tt ignorecase}, vi edit\"{o}r\"{u}n\"{u}n arama yaparken
k\"{u}\c{c}\"{u}k-b\"{u}y\"{u}k harf ayr\i{}m\i{} g\"{o}zetmemesini; {\tt wrapmargin=2} sol kenardan iki
sat\i{}r bo\c{s}luk b\i{}rakmas\i{}n\i{}; {\tt tabstop=6} ise {\em TAB\/} tu\c{s}una her bas\i{}ld\i{}\u{g}\i{}nda
imlecin 6 karakter ileri gitmesini sa\u{g}lar. Daha k\i{}sa yazmak isterseniz
s\i{}ras\i{}yla {\tt ic, wm} ve {\tt ts} kullan\i{}n.






\chapter{TCP/IP}



Di\u{g}er a\c{c}\i{}k sistemler gibi Linux'un da en b\"{u}y\"{u}k \"{o}zelliklerinden biri a\u{g}
protokolleri ve uygulamalar\i{}n\i{}n sistemin en do\u{g}al par\c{c}alar\i{}ndan biri
olmas\i{}d\i{}r. Dolay\i{}s\i{}yla a\u{g} yap\i{}s\i{}n\i{} bilmeyen bir y\"{o}neticinin, a\c{c}\i{}k sistemler
\"{u}zerindeki bilgisini daha da geli\c{s}tirebilmesi m\"{u}mk\"{u}n de\u{g}ildir. Bu
b\"{o}l\"{u}mde anlat\i{}lacaklar Linux \"{u}zerinde TCP/IP'ye bir giri\c{s} yap\i{}lmas\i{}n\i{}
sa\u{g}layacakt\i{}r. Ayr\i{}nt\i{}l\i{} bilgi TCP/IP servislerinin ve uygulamalar\i{}n\i{}n
anlat\i{}ld\i{}\u{g}\i{} di\u{g}er b\"{o}l\"{u}mlerden ve a\c{s}a\u{g}\i{}da s\"{o}z\"{u} edilen kitap ve
d\"{o}k\"{u}manlardan edinilebilir.

TCP/IP \"{u}zerine \"{o}nerebilece\u{g}imiz bir kitap, ilk bask\i{}lar\i{} T\"{U}B\.{I}TAK
taraf\i{}ndan bast\i{}r\i{}lan, ve b\"{u}y\"{u}k bir okuyucu kitlesi bulmu\c{s} {\em Herkes
\.{I}\c{c}in \.{I}nternet\/} (K\"{u}r\c{s}at \c{C}a\u{g}\i{}ltay) 'tir. Bunun d\i{}\c{s}\i{}nda \.{I}ngilizce
Prentice Hall taraf\i{}ndan yay\i{}nlanan {\em Internetworking with
TCP/IP Volume I (D.E. Comer)\/}, O'Reilly \& Associates taraf\i{}ndan 
yay\i{}nlanan, {\em TCP\/}IP Network/ Administration (Craig Hunt)
ve {\em Linux Network Administrator's Guide\/} (NAG - Olaf Kirsh).  NAG,
{\em Linux Documentation Project\/}'in bir par\c{c}as\i{} oldu\u{g}undan elektronik
kopyas\i{} \.{I}nternet \"{u}zerinden \"{u}cretsiz olarak edinilebilir.

Linux Documentation Project grubunun haz\i{}rlad\i{}\u{g}\i{} {\em NET-3-HOWTO\/}, TCP/IP
temelleri ve a\u{g} uygulamalar\i{}n\i{} \"{o}rnekleriyle i\c{s}lemi\c{s}. Bu d\"{o}k\"{u}man\i{} nas\i{}l
temin edebilece\u{g}inizi kitab\i{}n sonunda bulabilirsiniz. NET-3, TCP/IP ve
buna ba\u{g}l\i{} protokollerin Linux i\c{c}in geli\c{s}tirilen b\"{o}l\"{u}m\"{u}ne verilen isimdir.




\section{Temel TCP/IP}



TCP/IP, ilk defa ABD'de ARPANet (Advanced Research Projects Agency
Network) ad\i{} alt\i{}nda, askeri bir proje olarak geli\c{s}tirildi. \"{O}nceleri
askeri ama\c{c}l\i{} d\"{u}\c{s}\"{u}n\"{u}len proje \"{o}nce \"{u}nivesiteler taraf\i{}ndan kullan\i{}lmaya
ba\c{s}land\i{}. Ard\i{}ndan
ABD'nin d\"{o}rt bir yan\i{}nda birbirinden ba\u{g}\i{}ms\i{}z geli\c{s}tirilen a\u{g}lar, tek
bir omurga alt\i{}nda NSFNet olarak adland\i{}r\i{}ld\i{} ve ulusal boyutu a\c{s}arak
d\"{u}nyaya yay\i{}ld\i{}. \.{I}nternet'in do\u{g}u\c{s}u da bu tarihe denk gelir.

Bir sokak \"{u}zerinde yeralan evlerin adresleri gibi, \.{I}nternet'e ba\u{g}l\i{} olan
her makinan\i{}n da bir adresi vard\i{}r. Bu adres sayesinde bir bilgisayardan
di\u{g}erine ula\c{s}mak m\"{u}mk\"{u}n olur. \.{I}nternet adresi 4 bayttan (32 bit) ibaret
olup yaz\i{}l\i{}rken her bayt aras\i{}na bir nokta konulur. En \c{c}ok kullan\i{}lan
bu g\"{o}sterim \c{s}ekline \"{o}rnek olarak, ODT\"{U}'deki bir bilgisayar\i{}n adresi olan
{\tt 144.122.199.20}'yi verebiliriz.

Bununla beraber, 4 baytl\i{}k numaralar\i{}n kolayca hat\i{}rlanmas\i{}n\i{}n
m\"{u}mk\"{u}n olmad\i{}\u{g}\i{}ndan, \.{I}nternet \"{u}zerindeki makinalara alfan\"{u}merik
adlar da verilebilir. Yukar\i{}da \"{o}rne\u{g}ini verdi\u{g}im adresin ismi,
{\em knidos.cc.metu.edu.tr\/}'d\i{}r. ilk noktaya kadar olan kelime, makina
ad\i{}d\i{}r(yukar\i{}daki \"{o}rnekte knidos), bundan sonraki noktayla ayr\i{}lm\i{}\c{s}
b\"{o}l\"{u}mler \"{o}zelden genele do\u{g}ru makinan\i{}n ait oldu\u{g}u kurum, kurumun tipi
ve \"{u}lke gibi bilgiler i\c{c}erir. Bu adland\i{}rma y\"{o}ntemiyle ilgili ayr\i{}nt\i{}l\i{}
bilgiyi Alan \.{I}simlendirme Sisteminin (Domain Name System - DNS)
anlat\i{}ld\i{}\u{g}\i{} b\"{o}l\"{u}mde bulabilirsiniz.






\section{\.{I}nternet Adresleri}



\.{I}nternet \"{u}zerinde 3 s\i{}n\i{}f adres vard\i{}r. Avrupa'da RIPE (Réseaux IP
Européens) taraf\i{}ndan da\u{g}\i{}t\i{}lan bu adresler daha sonra o yerin a\u{g}
y\"{o}neticisi taraf\i{}ndan uygun \c{s}ekilde b\"{o}l\"{u}nebilir. Bu b\"{o}l\"{u}mlendirmeye
``subnetting'' i\c{s}lemi ad\i{} verilir. Bu sayede a\u{g}lar gruplanarak
herbirisinin y\"{o}netimi ba\u{g}\i{}ms\i{}z hale getirilmi\c{s}, ayn\i{} zamanda da k\i{}s\i{}tl\i{}
olan IP adresleri daha verimli bir \c{s}ekilde kullan\i{}lm\i{}\c{s} olur.

\"{U}\c{c} \c{c}e\c{s}it \.{I}nternet adresi \c{s}unlard\i{}r :

\begin{itemize}
\item {\bf A s\i{}n\i{}f\i{} \.{I}nternet adresi:} Adresin ilk bayt\i{} 1 ile 126
aras\i{}nda bir say\i{}d\i{}r. Bu adrese verilen yetkiyle toplam 2\^{}24 makina
adreslenebilir. D\"{u}nya \"{u}zerinde 126 tane A s\i{}n\i{}f\i{} adres vard\i{}r.
\item {\bf B s\i{}n\i{}f\i{} \.{I}nternet adresi:} Adresin ilk bayt\i{} 128 ile 192
aras\i{}nda bir say\i{}dan olu\c{s}ur. Bu adresin subnetlere b\"{o}l\"{u}nmesiyle 65534
farkl\i{} makina adreslenebilir.
\item {\bf C s\i{}n\i{}f\i{} \.{I}nternet adresi:} Adresin ilk bayt\i{} 192 ile 223
aras\i{}ndad\i{}r. C s\i{}n\i{}f\i{} bir adresi blokuyla ba\u{g}l\i{} 254 bilgisayar 
adreslenebilir.
\end{itemize}


{\em A\/} ve {\em B\/} s\i{}n\i{}f\i{} adreslerin hepsi da\u{g}\i{}t\i{}lm\i{}\c{s} ve \c{s}u anda intenet
{\em C\/} s\i{}n\i{}f\i{} adreslerde de s\i{}k\i{}nt\i{} \c{c}ekilmektedir. Adres
yetersizli\u{g}ine \c{c}\"{o}z\"{u}m getirmek amac\i{}yla {\em IPv6\/} ya da {\em IPNG\/}
adlar\i{}yla daha uzun \.{I}nternet adresleri kullanan protokoller geli\c{s}tirilme
ve test a\c{s}amas\i{}ndad\i{}r.

Bir \.{I}nternet adresi iki k\i{}s\i{}mdan meydana gelir: {\em a\u{g} adresi\/} ve {\em d\"{u}\u{g}\"{u}m
adresi\/}. Her makina, bir a\u{g} \"{u}zerinde bulunur ve bu adres ``a\u{g} adresi''
olarak adland\i{}r\i{}l\i{}r. \"{U}\c{c} s\i{}n\i{}f (A, B ve C) \.{I}nternet adresinin a\u{g} ve d\"{u}\u{g}\"{u}m
adresleri farkl\i{} farkl\i{}d\i{}r. A s\i{}n\i{}f\i{} \.{I}nternet adreslerinde a\u{g} adresini
1 bayt tayin eder. \"{O}rnek olarak hayali yaz\i{}lan 74.198.59.33 makinas\i{}n\i{}
tan\i{}mlayan a\u{g} adresi 74't\"{u}r. A\u{g} adresi uzun halde yaz\i{}ld\i{}\u{g}\i{} zaman kalan
3 bayt\i{}n yerine 0 konur. Bu durumda yukar\i{}da ad\i{} ge\c{c}en makinaya ait a\u{g}
adresi 74.0.0.0 olacakt\i{}r.

A\u{g} adresinden geriye kalan d\"{u}\u{g}\"{u}m adresi, bir makinan\i{}n \.{I}nternet s\i{}n\i{}f\i{}na
g\"{o}re 1,2 veya 3 bayttan ibaret olabilir. \"{O}rnek olarak,

195.12.288.3 makinas\i{}n\i{}n (C s\i{}n\i{}f\i{}) a\u{g} adresi 195.12.288.0, d\"{u}\u{g}\"{u}m adresi
3't\"{u}r.

130.11.195.62 makinas\i{}n\i{}n (B s\i{}n\i{}f\i{}) a\u{g} adresi 130.11.0.0, d\"{u}\u{g}\"{u}m
adresi 195.62'dir.

D\"{u}\u{g}\"{u}m adresleri yerine 4 bayt\i{} da kullanmak da olas\i{}. Yukar\i{}daki iki
\"{o}rnek i\c{c}in d\"{u}\u{g}\"{u}m adreslerini s\i{}ras\i{}yla 195.12.288.3 ve 130.11.195.62
olarak kabul edebiliriz.

Yukar\i{}da s\"{o}zedilen {\em subnetting\/} (alt a\u{g}lara ay\i{}rma), \c{c}ok s\i{}k\c{c}a
kullan\i{}lan bir y\"{o}ntem olup getirdi\u{g}i birtak\i{}m kolayl\i{}klar vard\i{}r. B\"{u}y\"{u}k
bir ileti\c{s}im a\u{g}\i{} alt a\u{g}lara ayr\i{}l\i{}rsa, kontrol edilmesi daha kolayla\c{s}\i{}r.

Bir kurulu\c{s}, kendine ait olan B s\i{}n\i{}f\i{} adresi subnetlere b\"{o}lmek
isteyebilir. Gerekli d\"{u}zenlemeleri yaparak bir B s\i{}n\i{}f\i{} adresi (\"{o}rne\u{g}in)
255 adet alt adrese ay\i{}rabilir. ODT\"{U}'n\"{u}n NIC'den ald\i{}\u{g}\i{} 144.122.0.0
a\u{g}\i{}, 254 par\c{c}aya b\"{o}l\"{u}nm\"{u}\c{s}, bu par\c{c}alardan 144.122.71.0 alt a\u{g}\i{} Bilgisayar
M\"{u}hendisli\u{g}i b\"{o}l\"{u}m\"{u}ne, 144.122.34.0 alt a\u{g}\i{} Kimya M\"{u}hendisli\u{g}i b\"{o}l\"{u}m\"{u}ne
verilmi\c{s}tir. Bundan sonra her b\"{o}l\"{u}m kendi a\u{g}\i{} ve \"{u}zerindeki makinalardan
sorumlu olur.






\section{Protokoller}



Internet protokollerinin yayg\i{}nla\c{s}mas\i{}ndaki en \"{o}nemli etkenlerden biri
herhangi bir a\u{g} donan\i{}m\i{}na ya da firmaya \"{o}zel olmamalar\i{}d\i{}r.
Bilgisayar\i{}n\i{}z, i\c{s}letim sistemiz ya da a\u{g} ba\u{g}lanma y\"{o}nteminiz ne olursa
olsun intenete ba\u{g}laman\i{}z m\"{u}mk\"{u}nd\"{u}r. \.{I}nternet protokolleri RFC ad\i{}
verilen d\"{o}k\"{u}manlarda a\c{c}\i{}klan\i{}r, bu d\"{o}k\"{u}manlar herkese a\c{c}\i{}kt\i{}r ve
\"{u}cretsizdir. RFC'lere \url{ftp://nic.ddn.mil/rfc/}{NIC} ya da
\url{ftp://ftp.metu.edu.tr/pub/documents/rfc/}{ODT\"{U}'deki yans\i{}s\i{}ndan} eri\c{s}ebilirsiniz.

Internet protokollerinin temeli {\em Intenet Protocol (IP)\/}'dir. \.{I}nternet
\"{u}zerinde y\"{o}nlendirme(routing) gibi temel a\u{g} i\c{s}lemlerinin ger\c{c}ekle\c{s}tirildi\u{g}i
protokol katman\i{}d\i{}r.  IP paketlerinin her biri kendi ba\c{s}lar\i{}na aradaki
a\u{g} cihazlar\i{} taraf\i{}ndan y\"{o}nlendirileren paket i\c{c}inde belirtilen adrese
ula\c{s}t\i{}r\i{}l\i{}r. Bu s\i{}rada fiziksel a\u{g} farkl\i{}l\i{}klar\i{}ndan kaynaklanan paket
par\c{c}alanmalar\i{}(fragmentation) ve bunlar\i{}n yeniden birle\c{s}tirilmeleri
aradaki a\u{g} cihazlar\i{}n\i{}n a\c{s}\i{}r\i{} y\"{u}klenmelerini \"{o}nlemek gibi g\"{o}revler de
IP katman\i{} taraf\i{}ndan ger\c{c}ekle\c{s}tirilir.IP ba\u{g}lant\i{} temelli(connection
oriented) bir a\u{g} protokol\"{u} de\u{g}ildir. Bunun yan\i{} s\i{}ra IP paketlerin
i\c{c}eriklerinin do\u{g}rulu\u{g}unu da garanti etmez. IP katman\i{} sadece ba\c{s}l\i{}k
k\i{}sm\i{}nda olu\c{s}an hatalar\i{} bulur ve d\"{u}zeltir.  Internet \"{u}zerinde
y\"{o}nlendirme, yukarida s\"{o}z\"{u} edilen adreslerden yararlan\i{}larak
yap\i{}l\i{}r. 

Kullan\i{}c\i{} uygulamalar\i{}n\i{}n IP katman\i{}na do\u{g}rudan ula\c{s}\i{}mlar\i{} yoktur.
IP ve uygulama programlar\i{} aras\i{}ndaki ba\u{g}lant\i{}y\i{} sa\u{g}layan  iki protokol
vard\i{}r: {\em Transmission Control Protocol (TCP)\/} ve {\em User Datagram
Protocol (UDP)\/}. {\em TCP\/}, \.{I}nternet protokolleri aras\i{}ndaki en \"{o}nemli
protokollerden biridir (\.{I}nternet protokol ailesi bu nedenle TCP/IP diye
adland\i{}r\i{}l\i{}r.). TCP, IP katman\i{}n\i{}n sa\u{g}lamad\i{}\u{g}\i{} ba\u{g}lant\i{} temelli, g\"{u}venilir
servisi sa\u{g}lar. TCP kullanarak a\u{g} \"{u}zerinden veri aktaran programlar,
bir dosyadan okuyormu\c{s} ya da yaz\i{}yormu\c{s} gibi g\"{u}venle a\u{g} ba\u{g}lant\i{}s\i{}n\i{}
kullanabilirler. Arada olu\c{s}an hatalar TCP taraf\i{}ndan onar\i{}l\i{}r. IP protokol
katman\i{}na uygulma programlar\i{} do\u{g}rudan eri\c{s}emediklerinden, hata kontrol\"{u}
ve ba\u{g}lant\i{} gerektirmeyen ya da bu i\c{s}lemleri kendileri ger\c{c}ekle\c{s}tirmek
isteyen uygulamalar {\em UDP\/} kullanarak a\u{g} \"{u}zerinden ileti\c{s}im sa\u{g}larlar.

Yukar\i{}daki protokollerin yan\i{} s\i{}ra \.{I}nternet standard\i{} olmu\c{s} bir\c{c}ok
uygulama protokol\"{u} de vard\i{}r. Bunlar aras\i{}nda, {\em TELNET\/}, {\em FTP\/},
{\em SMTP\/} ve {\em HTTP\/} g\"{o}sterilebilir.

\.{I}nternet \"{u}zerinde paketler son makinaya ula\c{s}t\i{}ktan sonra, ilgili
uygulama program\i{}na ula\c{s}abilmesi i\c{c}in {\em port\/} ad\i{} verilen sanal
numaralar kulln\i{}l\i{}r. Servis veren uygulamalar, \"{o}nceden belirlenmi\c{s}
standart port numralar\i{} kullan\i{}rlar. \"{O}rnek olarak SMTP 25 numaral\i{} TCP
portunu, talk ise 518 numaral\i{} UDP portunu kullan\i{}r. Sisteminizin
kulland\i{}\u{g}\i{} port numaralar\i{} ve bunlar\i{}n isimlerini {\tt /etc/services}
dosyas\i{}ndan g\"{o}rebilirsiniz.




\section{\.{I}nternet'e Ba\u{g}lanma}



Linux'u \.{I}nternet'e ba\u{g}lamak ilk a\c{s}amada biraz zor g\"{o}r\"{u}nse de biraz teori,
biraz pratik yard\i{}m\i{}yla mant\i{}k kolayca anla\c{s}\i{}labiliyor.
A\u{g}lar, bilgisayar sistemlerinde hata olma olas\i{}l\i{}\u{g}\i{} en y\"{u}ksek, en \c{c}ok
sorunun \c{c}\i{}kt\i{}\u{g}\i{} aland\i{}r. Bu b\"{o}l\"{u}m, \"{o}zelde bir ethernet kart\i{} ile
ba\u{g}lant\i{} yap\i{}ld\i{}\u{g}\i{} varsay\i{}larak anlat\i{}lm\i{}\c{s}t\i{}r. Ancak anlat\i{}lan bir\c{c}ok
kavram herhangi bir yap\i{}daki \.{I}nternet ba\u{g}lant\i{}s\i{} i\c{c}in ge\c{c}erli olacakt\i{}r.



\"{O}ncelikle \c{c}ekirde\u{g}i -daha \"{o}nce yapmam\i{}\c{s}san\i{}z- a\u{g} ba\u{g}lant\i{}s\i{}na destek
verecek \c{s}ekilde tekrar derleyin. Bunun i\c{c}in gerekli birka\c{c} soruya "y"
cevab\i{} vermek yeterli olacakt\i{}r :

\begin{verbatim}
CONFIG NET ? [Y/n] y
...
TCP/IP networking (CONFIG_INET) [Y/n/?] y
...
Network device support (CONFIG_NETDEVICES) [Y/n/?]
...
Ethernet (10 or 100Mbit) (CONFIG_NET_ETHERNET) [N/y/?] y
...
Other ISA cards (CONFIG_NET_ISA) [N/y/?] y
...
NE2000/NE1000 support (CONFIG_NE2000) [N/y/m/?] y
\end{verbatim}


Yukar\i{}daki \"{o}rnekte ethernet kart\i{}n\i{}z\i{}n ne2000/ne1000 ya da uyumlu bir kart
oldu\u{g}u var say\i{}l\i{}yor. Kart\i{}n\i{}z\i{}n marka/modeline uygun se\c{c}enene\u{g}e `y'
cevab\i{} vermelisiniz. Ethernet kartlar\i{}n\i{}n d\i{}\c{s}\i{}nda ba\u{g}lanma y\"{o}nteminize
ba\u{g}l\i{} olarak \c{c}ekirde\u{g}i {\em PPP\/}, {\em SLIP\/}, {\em Token Ring\/} gibi bir
destekle derlemeniz gerekebilir. Bunlar\i{} {\em mod\"{u}l\/} olarak derlemeniz
de m\"{u}mk\"{u}n. \c{C}ekirdek derlemek konusunda daha ayr\i{}nt\i{}l\i{} bilgiyi bu kitab\i{}n
ilgili b\"{o}l\"{u}m\"{u}nde bulabilirsiniz.

Tabi ki \c{c}ekirde\u{g}i derlemek yetmiyor, derleme a\c{s}amas\i{}ndan sonra a\u{g}
deste\u{g}ine sahip olan \c{c}ekirdek ile makinan\i{}n a\c{c}\i{}lmas\i{} gerekir.

Ba\u{g}lant\i{}y\i{} ger\c{c}ekle\c{s}tirmek i\c{c}in a\u{g} sorumlusundan baz\i{} \"{o}nemli bilgileri
almal\i{}s\i{}n\i{}z. Makinan\i{}z\i{}n {\em IP adresi\/} bunlar\i{}n ba\c{s}\i{}nda gelir. Di\u{g}er 
gerekli bilgiler de {\em subnet mask\/} ve {\em broadcast adresi\/}dir.

DNS adres \c{c}\"{o}z\"{u}mleyici olarak \c{c}al\i{}\c{s}an DNS makinas\i{} ve makinan\i{}z\i{} \.{I}nternet'e
ba\u{g}layacak olan y\"{o}nlendiricinin IP adreslerini de biliyor olmal\i{}s\i{}n\i{}z.

Bu a\c{s}amadan sonra konfig\"{u}rasyon i\c{s}lemlerine ge\c{c}ilebilir.






\subsection{A\u{g} Konfig\"{u}rasyonu }



Bu b\"{o}l\"{u}mde anlat\i{}lan {\tt rc.*} konfig\"{u}rasyon dosyalar\i{} {\em Slackware\/}
da\u{g}\i{}t\i{}m\i{}na \"{o}zeldir. Di\u{g}er da\u{g}\i{}t\i{}mlarda da a\c{c}\i{}l\i{}\c{s}ta \c{c}al\i{}\c{s}an benzeri
{\em rc\/} dosyalar\i{} de\u{g}i\c{s}tirilerek, ya da sistemle birlikte gelen sistem
y\"{o}netim ara\c{c}lar\i{} kullan\i{}larak istedi\u{g}iniz konfig\"{u}rasyonu yapabilirsiniz.

Linux, a\c{c}\i{}l\i{}rken baz\i{} dosyalara bakarak d\"{u}zg\"{u}n \c{c}al\i{}\c{s}mas\i{} i\c{c}in gerekli
konfig\"{u}rasyonu yapar ve baz\i{} yaz\i{}l\i{}mlar\i{} \c{c}al\i{}\c{s}t\i{}r\i{}r. Bu dosyalar
{\tt /etc/rc.d} dizini alt\i{}nda yeral\i{}r. \.{I}nternet ba\u{g}lant\i{}s\i{} i\c{c}in
sadece iki dosyaya gerek duyulur. Slackware da\u{g}\i{}t\i{}m\i{} i\c{c}inde bunlar,
konfig\"{u}rasyonu yapan {\tt /etc/rc.d/rc.inet1} ve temel a\u{g} programlar\i{}n\i{}
\c{c}al\i{}\c{s}t\i{}ran {\tt /etc/rc.d/rc.inet2} dosyalar\i{}d\i{}r.

Bu dosyadaki de\u{g}erleri gerekti\u{g}i \c{s}ekilde d\"{u}zenleyerek \.{I}nternet'e ba\u{g}lanaca\u{g}\i{}z. 
\"{O}ncelikle rc.inet1 dosyas\i{}n\i{}n i\c{c}eri\u{g}ine g\"{o}z atal\i{}m:

\begin{verbatim}
HOSTNAME=`cat /etc/HOSTNAME`

/sbin/ifconfig lo 127.0.0.1
/sbin/route add -net 127.0.0.0

IPADDR="144.122.71.55"
NETMASK="255.255.255.0" 
NETWORK="144.122.71.0"  
BROADCAST="144.122.71.255"
GATEWAY="144.122.71.1"  

/sbin/ifconfig eth0 $IPADDR broadcast $BROADCAST netmask $NETMASK
/sbin/route add -net $NETWORK netmask $NETMASK
/sbin/route add default gw $GATEWAY metric 1
\end{verbatim}


ifconfig komutu, a\u{g} ba\u{g}lant\i{}s\i{} yapan kart\i{}n belirli parametreler ile
konfig\"{u}rasyonunun sa\u{g}lar. Kart kimli\u{g}ini bilgisayara tan\i{}tmak i\c{c}in bu
komut kullan\i{}l\i{}r.

\.{I}lk sat\i{}rdaki ifconfig program\i{}, makinan\i{}n kendisiyle haberle\c{s}mesini
sa\u{g}lamak amac\i{}yla kendi a\u{g} adresini (loopback device) 127.0.0.1 olarak
tan\i{}tm\i{}\c{s}t\i{}r. \.{I}nternet \"{u}zerindeki her makinan\i{}n loopback adresi 127.0.0.1
'dir. 127 ile ba\c{s}layan hi\c{c} bir adres, \.{I}nternet \"{u}zerinde ger\c{c}ek bir adres
olarak kullan\i{}lamaz.

Her paket, g\"{o}nderilece\u{g}i adrese gitmeden \"{o}nce bir tabloya bakar. Bu
tablo, paketin muhtemel rotas\i{}n\i{} i\c{c}erir. route komutu yard\i{}m\i{}yla bu
tablo olu\c{s}turulur veya kontrol edilir. Genellikle bir kart i\c{c}in bir
{\tt ifconfig} kullan\i{}l\i{}rken, paketin yollanaca\u{g}\i{} birden fazla rotan\i{}n
olmas\i{} durumunda {\tt rc.inet1} dosyas\i{}nda birden fazla route komut
girdisi yap\i{}lacakt\i{}r.

Kullan\i{}lan her a\u{g} kart\i{}n\i{}n bir veya birden fazla internet adresi
olabilir. Linux'a tak\i{}lan birinci kart {\tt eth0} ismini al\i{}rken ikinci karta
eth1, \"{u}\c{c}\"{u}nc\"{u}ye eth2 ... denir. Loopback cihaz\i{}n\i{}n ismi {\tt lo} dur. ifconfig
komutunu parametre vermeden kullan\i{}rsan\i{}z, Linux'a tan\i{}t\i{}lan \c{c}evresel
birimlerin listesi ekrana gelir.

\begin{verbatim}
$ ifconfig
lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Bcast:127.255.255.255  Mask:255.0.0.0
          UP BROADCAST LOOPBACK RUNNING  MTU:3584  Metric:1
          RX packets:493 errors:0 dropped:0 overruns:0
          TX packets:493 errors:0 dropped:0 overruns:0

eth0      Link encap:10Mbps Ethernet  HWaddr 48:54:33:00:E8:3A
          inet addr:144.122.71.55  Bcast:144.122.71.255 Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:171956 errors:0 dropped:0 overruns:0
          TX packets:113212 errors:3 dropped:0 overruns:0
          Interrupt:3 Base address:0x300 
\end{verbatim}


{\em cclub.metu.edu.tr\/} makinas\i{}n\i{}n ifconfig bilgisi yukar\i{}daki \c{s}ekildedir. Bu
makina \"{u}zerinde tek ethernet kart\i{} olup, ifconfig bilgisinde ikinci s\i{}rada
yeral\i{}yor. Kartla ilgili detayl\i{} bilgi (her kart \"{o}zg\"{u} donan\i{}m numaras\i{},
al\i{}nan ve verilen paket say\i{}s\i{} gibi) ifconfig \c{c}\i{}kt\i{}s\i{}nda var.

{\tt route} komutunun genel kullan\i{}m\i{} \c{s}u \c{s}ekildedir:

\begin{verbatim}
route [add | del] [-net | -host] varis_adresi [gw yonlendirici] secenekler...
\end{verbatim}


{\bf host:} paketin gidece\u{g}i yer ba\c{s}ka bir makina\\ 
{\bf net:} paketin gidece\u{g}i yer ba\c{s}ka bir a\u{g}\\ 
{\bf var\i{}\c{s}\_{}adresi:} paketin gidece\u{g}i yer\\ 
{\bf y\"{o}nlendirici:} bu paketin gidebilmesi i\c{c}in ge\c{c}mesi gereken y\"{o}nlendirici\\ 
{\bf add:} tabloya ekle\\  
{\bf del:} tablodan sil\\ 

Tablonun genel durumunu kontrol etmek i\c{c}in {\tt route} komutuna parametre
vermeden komut sat\i{}r\i{}ndan yaz\i{}n:

\begin{verbatim}
cclub:~# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
localnet        *               255.255.255.0   U     0      0       67 eth0
loopback        *               255.0.0.0       U     0      0        3 lo
default         router71.ceng.m 0.0.0.0         UG    1      0      404 eth0
\end{verbatim}


\"{O}rnek tabloda \"{u}\c{c} ayr\i{} y\"{o}nlendirme giri\c{s}i vard\i{}r. Birincisi, makinan\i{}n
kendisi ile haberle\c{s}mesini sa\u{g}layacak olan loopback. \.{I}kinci sat\i{}rda,
yerel a\u{g}a gidecek olan t\"{u}m paketlerin y\"{o}nlendiriciye verilmeden a\u{g}a
y\"{o}nlendirilmesi s\"{o}ylenmi\c{s}. Son s\i{}rada ise (default) paket ilk iki
sat\i{}rda yeralan var\i{}\c{s} adresinden farkl\i{} bir adrese gidecekse, \"{o}nce
y\"{o}nlendiriciden ge\c{c}ip sonra d\i{}\c{s} d\"{u}nyaya a\c{c}\i{}laca\u{g}\i{}ndan y\"{o}nlendiricinin
IP adresi yaz\i{}lm\i{}\c{s}t\i{}r.

{\tt ifconfig}, biraz karma\c{s}\i{}k bir komuttur. Sistem y\"{o}neticisinden \"{o}\u{g}renmeniz
gereken subnet maskesi, broadcast adresi ve IP adresini kullan\i{}p kartlar\i{}n
konfig\"{u}re eder.

\begin{verbatim}
ifconfig eth0 144.122.71.55 netmask 255.255.255.0 broadcast 144.122.71.255
\end{verbatim}


Yukar\i{}da {\tt ifconfig} yard\i{}m\i{}yla eth0 kart\i{}na hem bir IP adresi verilmi\c{s},
hem de bilgisayar\i{}n bulundu\u{g}u a\u{g}\i{}n \"{o}zellikleri tan\i{}t\i{}lm\i{}\c{s}t\i{}r.

Bu andan sonra istendi\u{g}i kadar {\tt route} komutu ile makinadan \c{c}\i{}kacak
paketler i\c{c}in yeni yollar tan\i{}mlanabilir.

\begin{verbatim}
route add -net ...
route add -host ...
\end{verbatim}


Dosyan\i{}n i\c{c}eri\u{g}ini sistem g\"{o}revlisinin verdi\u{g}i bilgiler do\u{g}rultusunda de\u{g}i\c{s}tirdikten sonra komut sat\i{}r\i{}ndan \c{c}al\i{}\c{s}t\i{}rman\i{}z, \.{I}nternet'e ba\u{g}lant\i{} i\c{c}in yeterli olacakt\i{}r.

\begin{verbatim}
# /etc/rc.d/rc.inet1
\end{verbatim}


Ba\u{g}lant\i{}y\i{} kontrol etmek \.{I}nternet adresini bilip \c{c}al\i{}\c{s}t\i{}\u{g}\i{}ndan emin
oldu\u{g}unuz bir makinaya telnet ile ba\u{g}lant\i{} yapmaya \c{c}al\i{}\c{s}\i{}n :

\begin{verbatim}
$ telnet orca.cc.metu.edu.tr
Connected to orca.cc.metu.edu.tr
Escape character is ^]
\end{verbatim}


Ethernet kart\i{}n\i{}n ba\u{g}lant\i{}s\i{}n\i{} yaz\i{}l\i{}m yoluyla kesmenin yolu {\tt ifconfig}
'in down se\c{c}ene\u{g}idir. \"{O}rne\u{g}in tek ethernet kart\i{} \"{u}zerinden \.{I}nternet
ba\u{g}lant\i{}n\i{}z var ve bunu hemen kesmek i\c{c}in a\c{s}a\u{g}\i{}daki sat\i{}r\i{} yaz\i{}n.

\begin{verbatim}
# ifconfig eth0 down
\end{verbatim}


ethernet ba\u{g}lant\i{}s\i{}n\i{} yeniden a\c{c}mak i\c{c}in

\begin{verbatim}
# ifconfig eth0 up
\end{verbatim}

komutunu girmelisiniz. Bu i\c{s}lem sonras\i{}nda y\"{o}nlendirme bilgilerini
yeniden girmeniz gerekebilir.

{\tt ping} komutu, ba\u{g}lant\i{}lar\i{} ve ayn\i{} zamanda ba\u{g}lant\i{} h\i{}z\i{}n\i{} \"{o}l\c{c}mek
i\c{c}in kullan\i{}lan bir komuttur. Ping, ICMP protokol\"{u} yard\i{}m\i{}yla hedef
makinaya belirli uzunlukta paketler g\"{o}nderir. Kar\c{s}\i{}daki makina bunlar\i{}
ald\i{}\u{g}\i{} anda bekletmeden geri yollar. Arada ge\c{c}en zaman farkl\i{}, iki makina
aras\i{}ndaki ba\u{g}lant\i{} h\i{}z\i{} hakk\i{}nda fikir verir.

\begin{verbatim}
cclub:~# ping knidos.cc.metu.edu.tr
PING knidos.cc.metu.edu.tr (144.122.199.20): 56 data bytes
64 bytes from 144.122.199.20: icmp_seq=0 ttl=253 time=34.0 ms
64 bytes from 144.122.199.20: icmp_seq=1 ttl=253 time=487.7 ms
64 bytes from 144.122.199.20: icmp_seq=2 ttl=253 time=3.6 ms

--- knidos.cc.metu.edu.tr ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 3.6/175.1/487.7 ms
\end{verbatim}


{\tt netstat} komutu, makinan\i{}n a\u{g} kart\i{} \"{u}zerinden yap\i{}lan ba\u{g}lant\i{}lar\i{}n d\"{o}k\"{u}m\"{u}n\"{u} \c{c}\i{}kar\i{}r.

\begin{verbatim}
cclub:~# netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 cclub.metu.edu.tr:1947  ftp02.quicktime.appl:20 ESTABLISHED 
tcp        0      0 cclub.metu.edu.tr:1943  despair.thebandit.c:ftp ESTABLISHED 
tcp        0      0 cclub.metu.edu.tr:1424  despair.thebandit.co:20 ESTABLISHED 
tcp        0      0 cclub.metu.edu.tr:1932  ftp02.quicktime.app:ftp ESTABLISHED 
tcp        0      0 cclub.metu.edu.tr:1407  165.113.58.253:20       ESTABLISHED 
tcp        0      0 cclub.metu.edu.tr:1392  165.113.58.253:ftp      ESTABLISHED
tcp        0      0 cclub.metu.edu.tr:1377  ppp23.cc.metu.ed:telnet ESTABLISHED 
tcp        0      0 cclub.metu.edu.t:telnet pclabI_23.feas.met:7075 ESTABLISHED 
tcp        1      0 cclub.metu.edu.t:telnet ppp23.cc.metu.edu.:1054 TIME_WAIT   
tcp        0      0 cclub.metu.edu.t:telnet labmonitor.feas.m:10345 ESTABLISHED 
tcp        0   9495 cclub.metu.edu.t:telnet a5-03-asy27.bil-ro:1026 ESTABLISHED 
tcp        0      0 cclub.metu.edu.t:telnet pclabI_14.feas.me:15694 ESTABLISHED 
tcp        0      0 cclub.metu.edu.t:telnet stu21.math.metu.e:16158 ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node Path
unix  1      [ ]         STREAM     CONNECTED     232    
unix  1      [ ]         STREAM     CONNECTED     299   
unix  1      [ ]         STREAM     CONNECTED     327    
unix  1      [ ]         STREAM                   591    
\end{verbatim}


\.{I}kinci \"{o}nemli dosya olan {\tt /etc/rc.d/rc.inet2}, belli ba\c{s}l\i{} t\"{u}m
\.{I}nternet sunucular\i{}n\i{} \c{c}al\i{}\c{s}t\i{}r\i{}r. A\c{s}a\u{g}\i{}da bu dosyan\i{}n bir k\i{}sm\i{} g\"{o}r\"{u}l\"{u}yor.

\begin{verbatim}
#!/bin/sh

NET="/usr/sbin"
IN_SERV="lpd"
LPSPOOL="/var/spool/lpd"

echo -n "Starting daemons:"

# inetd calistiriliyor.
if [ -f ${NET}/inetd ]; then
  echo -n " inetd"
  ${NET}/inetd
else
  echo "no INETD found.  INET cancelled!"
  exit 1
fi

# degisik internet servisleri sirasiyla calistiriliyor.
for server in ${IN_SERV} ; do
  if [ -f ${NET}/${server} ]; then
    echo -n " ${server}"
    ${NET}/${server}
  fi
done
\end{verbatim}


Bu a\c{c}\i{}l\i{}\c{s} dosyas\i{}, a\u{g} \"{u}zerinden servs veren bir dizi sunucu program\i{}
\c{c}al\i{}\c{s}t\i{}r\i{}yor ve hatalar\i{} engellemek i\c{c}in programlar\i{}n yerinde olup olmad\i{}\u{g}\i{}na
da bak\i{}yor.






\subsection{Kontrol Dosyalar\i{} }



Konfig\"{u}rasyonu tamamlamak i\c{c}in {\tt /etc} dizini alt\i{}nda yeralan baz\i{}
dosyalar\i{}n elden ge\c{c}irilmesi gerekir. Bu dosyalar sistemin daha g\"{u}venli
ve verimli \c{c}al\i{}\c{s}mas\i{}na yard\i{}m eder. Bu dosyalar\i{}n belli ba\c{s}l\i{} olanlar\i{}
ve ne i\c{s}e yarad\i{}klar\i{}n\i{} g\"{o}relim.

{\tt /etc/hosts} dosyas\i{}nda makinalar\i{}n IP numaralar\i{} ve \.{I}nternet
adresleri yaz\i{}l\i{}r. Buraya s\"{u}rekli kullan\i{}lan belli ba\c{s}l\i{} \"{o}nemli
makinalar\i{}n giri\c{s}i yap\i{}labilir. Her makinan\i{}n uzun isimleri yerine
k\i{}sa bir kelime yaz\i{}larak s\"{o}zkonusu makinaya ula\c{s}\i{}labilir. \"{O}rnek bir
{\tt /etc/hosts} dosyas\i{} :

\begin{verbatim}
127.0.0.1               localhost
144.122.199.20     knidos.cc.metu.edu.tr knidos
\end{verbatim}


\.{I}lk sat\i{}rda loopback IP numaras\i{} ve buna kar\c{s}\i{}l\i{}k gelen makina ismi
vard\i{}r. Bu sat\i{}r\i{} silmemelisiniz. \.{I}kinci sat\i{}rda ise knidos.cc.metu.edu.tr
makinas\i{}n\i{}n IP numaras\i{}n\i{} 144.122.199.20 olarak belirtilmi\c{s} ve bu
bilgisayara "knidos" ismi ile de ula\c{s}\i{}labilmesi sa\u{g}lanm\i{}\c{s}t\i{}r.

{\tt /etc/hosts.allow} ve {\tt /etc/hosts.deny} konfig\"{u}rasyon
dosyalar\i{}, ba\c{s}ka bir makinadan Linux'unuza yap\i{}lan ba\u{g}lant\i{}lar\i{}
denetler. {\tt /etc/hosts.deny} i\c{c}ine, s\i{}n\i{}rland\i{}r\i{}lma getirmek istedi\u{g}iniz
\.{I}nternet servislerini ve hangi makinalar i\c{c}in s\i{}n\i{}rland\i{}rma istedi\u{g}inizi
yazabilirsiniz.

\begin{verbatim}
$ cat /etc/hosts.deny
#

in.fingerd: ALL except localhost, localhost : \
        echo "request from %d@%h" >> /tmp/req; 
in.telnetd : .net.tr
\end{verbatim}


Yukar\i{}daki {\tt hosts.deny} dosyas\i{}nda d\i{}\c{s}ar\i{}dan gelebilecek finger
istekleri filtreleniyor ve bu istekler hakk\i{}nda detayl\i{} bilgi (hangi
kullan\i{}c\i{}, hangi makinadan) {\tt /tmp/req} dosyas\i{}na ekleniyor.

Sonraki sat\i{}r {\tt in.telnetd} yaz\i{}l\i{}m\i{}n\i{} \c{c}al\i{}\c{s}t\i{}ran isteklerin *.net.tr adreslerinden gelmesi halinde bunlar\i{}n g\"{o}zard\i{} edilece\u{g}ini belirtir.

{\tt hosts.allow} dosyas\i{}nda, genellikle {\tt hosts.deny} dosyas\i{}na
gruplanan makina isimlerinin s\i{}n\i{}rland\i{}rma istenmeyen bir veya birka\c{c}
tanesi yaz\i{}l\i{}r. E\u{g}er bir makina ismi ve kar\c{s}\i{}l\i{}k gelen \.{I}nternet adresi
her iki dosyada da varsa, s\"{o}zkonusu servise izin verilir.

Daha fazla bilgiyi {\tt hosts\_{}access(5)} man sayfalar\i{}ndan bulabilirsiniz.

{\tt /etc/resolv.conf} dosyas\i{}nda alan ad\i{} ve alan ad\i{} sunucusunun IP numaras\i{} yaz\i{}l\i{}r.

\begin{verbatim}
$ cat /etc/resolv.conf
domain linux.org.tr
nameserver 144.122.199.20
\end{verbatim}


Yukar\i{}daki sat\i{}rlardan \"{u}zerinde bulundu\u{g}um makinan\i{}n alan ad\i{}n\i{}n (domain
name) linux.org.tr, alan ad\i{} sunucusunun ise 144.122.199.20 IP numaral\i{}
knidos makinas\i{} oldu\u{g}u anla\c{s}\i{}l\i{}yor.






\section{Y\"{o}nlendirme}



Daha \"{o}nce de belirtildi\u{g}i gibi birden fazla a\u{g}a fiziksel ba\u{g}lant\i{}s\i{}
bulunan ve a\u{g}lar aras\i{} bilgi paketlerinin ge\c{c}i\c{s}ine olanak tan\i{}yan ara\c{c}lara
y\"{o}nlendirici (router) ad\i{} verilir.

\.{I}ki ayr\i{} a\u{g}da yeralan makinalar\i{}n haberle\c{s}mesine imkan tan\i{}yan
y\"{o}nlendiriciler, kendilerine g\"{o}nderilen paketleri bir a\u{g}dan di\u{g}erine
iletirler.

Herhangi bir a\u{g} i\c{c}erisinde yer alan makinalar ayn\i{} IP a\u{g} i\c{c}erisinde
bulunan makinalarla (a\u{g} konfig\"{u}rasyonlar\i{} do\u{g}ru oldu\u{g}u s\"{u}rece)
haberle\c{s}ebilirler. Ba\c{s}ka adreslere ula\c{s}abilmek i\c{c}in bulunulan a\u{g}
d\i{}\c{s}\i{}ndaki a\u{g}larla ba\u{g}lant\i{}s\i{} olan ve o a\u{g} \"{u}zerinde bulunan bir makina ile
haberle\c{s}meleri gereklidir. Bu makina bilgisayar tan\i{}mlar\i{}nda  {\em gateway\/}
(y\"{o}nlendirici, arabirim, arayol) olarak verilir.

Minimum y\"{o}nlendirme, bir a\u{g}a ba\u{g}l\i{} olmayan makinalarda, {\tt ifconfig}
yard\i{}m\i{}yla yap\i{}lan y\"{o}nlendirmedir. En \c{c}ok kullan\i{}lan statik y\"{o}nlendirme
\c{c}e\c{s}idinde,  az say\i{}da arayol ile d\i{}\c{s}ar\i{}ya ba\u{g}l\i{} olan bir makinada,
route komutuyla yap\i{}l\i{}r. Ayn\i{} adrese ula\c{s}an birden fazla arayol
olmas\i{} durumunda ise, kendi y\"{o}nlendirme tablosunu a\u{g}\i{}n durumuna g\"{o}re
de\u{g}i\c{s}tirebilen dinamik y\"{o}nlendirmeye ba\c{s}vurulabilir.

Linux'un y\"{o}nlendirici olarak kullan\i{}lmas\i{}na bir \"{o}rnek
verilebilir. Elimizde var oldu\u{g}unu bildi\u{g}imiz iki a\u{g} olsun. Bu a\u{g}lardan
birincisini, 144.122.71.0 a\u{g}\i{}, di\u{g}eri de 144.122.1.0 a\u{g}\i{} olarak kabul
edelim. 144.122.71.0 a\u{g}\i{}n\i{}n \.{I}nternet'e ba\u{g}lanabilmesi i\c{c}in 144.122.1.0
a\u{g}\i{}na ula\c{s}mas\i{} gereklidir. Y\"{o}nlendirici olarak kullan\i{}lacak makinay\i{}
71.0 a\u{g}\i{}nda kurup gerekli y\"{o}nlendirme talimatlar\i{} verildi\u{g}i anda bu a\u{g}a
ba\u{g}l\i{} olan di\u{g}er makinalar da \.{I}nternet'e a\c{c}\i{}labilecektir.

\"{O}rnek olarak 144.122.71.0 a\u{g}\i{} \"{u}zerindeki bir makina i\c{c}in ifconfig sat\i{}r\i{}

\begin{verbatim}
ifconfig eth0 144.122.71.1 broadcast 144.122.71.255 netmask 255.255.255.0
\end{verbatim}


olarak g\"{o}r\"{u}n\"{u}yor. Bu makinan\i{}n y\"{o}nlendirici g\"{o}revi yapabilmesi i\c{c}in
{\tt route} komutu kullan\i{}l\i{}r. Bu sayede bu bilgisayar, di\u{g}erlerine
ula\c{s}acakt\i{}r.

\begin{verbatim}
route add -net 144.122.71.0 netmask 255.255.255.0 dev eth0
\end{verbatim}


Bu, 144.122.71.0 a\u{g}\i{}nda olan makinalar\i{}n eth0 kart\i{} \"{u}zerinden
eri\c{s}ilebilece\u{g}ini g\"{o}sterir. Di\u{g}er adreslere eri\c{s}ebilmek i\c{c}in ise bir
\c{c}\i{}k\i{}\c{s}a (gateway) ihtiya\c{c} duyulmaktad\i{}r.

\begin{verbatim}
route add default gw 144.122.71.1 dev eth0
\end{verbatim}


Bu sat\i{}r sayesinde eldeki tablo yard\i{}m\i{}yla \c{c}\"{o}z\"{u}mlenemeyen adreslere
gitmesi gereken t\"{u}m paketler 144.122.71.1 \"{u}zerinden g\"{o}nderilmektedir. Bu
durumda bu makinan\i{}n paketleri nereye g\"{o}nderece\u{g}ini bildi\u{g}i
varsay\i{}lmaktad\i{}r.

Bu makina i\c{c}inde iki adet ethernet ba\u{g}lant\i{}s\i{} bulunmaktad\i{}r. Bunlardan
biri y\"{o}nlendiriciyi 144.122.71.0 a\u{g}\i{}na ba\u{g}larken di\u{g}eri 144.122.1.0
a\u{g}\i{}na ba\u{g}lamaktad\i{}r. \.{I}lk olarak bu iki kart i\c{c}in gereken tan\i{}mlamalar
/etc/rc.d/rc.inet1 i\c{c}erisinde a\c{s}a\u{g}\i{}dakine benzer \c{s}ekilde tan\i{}mlanm\i{}\c{s}t\i{}r.

\begin{verbatim}
ifconfig eth0 144.122.71.1 broadcast 144.122.71.255 netmask 255.255.255.0
ifconfig eth1 144.122.1.200 broadcast 144.122.71.255 netmask 255.255.255.0
\end{verbatim}


Birinci ethernet kart\i{} i\c{c}in eth0, ikinci ethernet kart\i{} i\c{c}in de eth1
k\i{}saltmalar\i{} kullan\i{}labilir. Do\u{g}al olarak her iki a\u{g} i\c{c}in bir 'route'
sat\i{}r\i{} gerekmekte :

\begin{verbatim}
route add -net 144.122.71.0 netmask 255.255.255.0 dev eth0
route add -net 144.122.1.0 netmask 255.255.255.0 dev eth1
\end{verbatim}


Bu sayede di\u{g}er makinalardan farkl\i{} olarak y\"{o}nlendirici hem
144.122.1.0 a\u{g}\i{}, hem de 144.122.71.0 a\u{g}\i{} \"{u}zerindeki adreslere direk
ula\c{s}abilmektedir. Di\u{g}er adreslere ula\c{s}abilmek i\c{c}in benzer bir y\"{o}ntem
ile 144.122.1.0 a\u{g}\i{} \"{u}zerindeki arayola (gateway) y\"{o}nlendirme yap\i{}l\i{}r.

\begin{verbatim}
route add default gw 144.122.1.200 dev eth1
\end{verbatim}


Bu \c{c}e\c{s}it y\"{o}nlendirmeye {\bf statik y\"{o}nlendirme} ad\i{} verilir. Burada t\"{u}m
ba\u{g}lant\i{}lar bir tablo halinde verilmi\c{s}tir. Birbiri arkas\i{}na a\u{g} eklendi\u{g}i
zaman statik y\"{o}nlendirme basitlik avantaj\i{}n\i{} kaybetmeye ba\c{s}lar. Bu
ama\c{c}la y\"{o}nlendiricilerin kendi aralar\i{}nda bildikleri yollar\i{} (y\"{o}nlendirme
bilgilerini) birbirlerine aktard\i{}klar\i{} dinamik y\"{o}nlendirme kullan\i{}l\i{}r.

A\u{g}a ba\u{g}lanmak amac\i{}yla birden fazla kart kullan\i{}yorsan\i{}z, {\em arp\/} komutunu
incelemenizi tavsiye ederim. Bu komut pek\c{c}ok opsiyon al\i{}r ve sistem
y\"{o}neticisinin Linux \"{u}zerindeki a\u{g}\i{} kontrol\"{u}n\"{u} kolayla\c{s}t\i{}r\i{}r.

\begin{verbatim}
# arp -a
           IP address      HW type                 HW address
           191.72.1.3      10Mbps Ethernet         00:00:C0:5A:42:C1
           191.72.1.2      10Mbps Ethernet         00:00:C0:90:B3:42
           191.72.2.4      10Mbps Ethernet         00:00:C0:04:69:AA
\end{verbatim}





\subsection{Birden Fazla Ethernet Kart\i{}n\i{}n Tan\i{}t\i{}lmas\i{}}



Yukar\i{}da \"{o}rne\u{g}ini verdi\u{g}imiz Linux y\"{o}nlendirici \"{u}zerinde iki ethernet
kart\i{} bulunuyor. Bu sayede Linux makinas\i{} iki ethernet a\u{g}\i{} aras\i{}nda
bir y\"{o}nlendirici olarak kullan\i{}labilmektedir. Bir Linux'a birden fazla
ethernet kart\i{} takmak m\"{u}mk\"{u}nd\"{u}r. Bu kartlar\i{} takarken a\c{s}a\u{g}\i{}daki maddelere
dikkat etmek gerekir:

\begin{enumerate}
\item \c{C}ekirdek i\c{c}erisinde her iki kart i\c{c}in destek bulunmal\i{}d\i{}r.
\item Ethernet kartlar\i{} sistemdeki di\u{g}er IO ve IRQ ayarlar\i{}n\i{} 
\c{c}ak\i{}\c{s}mayacak \c{s}ekilde ve farkl\i{} de\u{g}erlerde olmal\i{}d\i{}r.
\end{enumerate}


Birden fazla ethernet kart\i{} (ya da gibi herhangi iki veya daha fazla
PPP, SLIP gibi a\u{g} ba\u{g}lant\i{}s\i{}) olan makina bir y\"{o}nlendirici olarak 
kullan\i{}lacaksa, \c{c}ekirdek {\em IP FORWARDING\/} deste\u{g}iyle derlenmelidir.
Bunun yan\i{} s\i{}ra Linux'unuzun birinci g\"{o}revi y\"{o}nlendiricilik olacaksa
{\em optimize as router\/} sorusuna da `{\em y\/}' yan\i{}t\i{} vermeniz yararl\i{}
olacakt\i{}r.

\begin{verbatim}
IP: forwarding/gatewaying (CONFIG_IP_FORWARD) [N/y/?] y
...
IP: optimize as router not host (CONFIG_IP_ROUTER) [N/y/?] y
\end{verbatim}


Linux a\c{c}\i{}l\i{}rken \c{c}ekirdek tan\i{}d\i{}\u{g}\i{} donan\i{}mlar\i{} teker teker arayarak
bulmaya \c{c}al\i{}\c{s}\i{}r (probing). Birden fazla ethernet kart\i{} kullan\i{}m\i{}na s\i{}k
raslanmad\i{}\u{g}\i{}ndan Linux ilk ethernet kart\i{}n\i{} bulduktan sonra ikinci ve
daha fazla ethernet kart\i{} aramad\i{}\u{g}\i{}ndan iki kart\i{}n\i{}z bile olsa Linux
sadece birini g\"{o}recektir.  \c{C}ekirde\u{g}e ethernet kart\i{} ile ilgili
parametreler vererek birden fazla ethernet kart\i{}n\i{}n a\c{c}\i{}l\i{}\c{s}ta bulunmas\i{}
sa\u{g}lanabilir. LILO kullan\i{}ld\i{}\u{g}\i{} zaman {\tt /etc/lilo.conf} i\c{c}inde

\begin{verbatim}
append="ether=0,0,eth1"
\end{verbatim}


Yukar\i{}daki paramatre ile \c{c}ekirdek ikinci bir ethernet kart\i{}n\i{} ({\tt eth1}) 
da arayacakt\i{}r. Ayni \c{s}ekilde arka arkaya {\tt ether=....} parametreleri 
vererek varsa \"{u}\c{c}\"{u}nc\"{u}, d\"{o}rd\"{u}nc\"{u} ve daha fazla ethernet kart\i{}n\i{}n
arat\i{}lmas\i{} da m\"{u}mk\"{u}nd\"{u}r. Ethernet kartlar\i{}n\i{}z\i{}n adreslerini
biliyorsan\i{}z, kartlar\i{}n yanl\i{}\c{s} s\i{}rayla bulunmas\i{} tehlikesini de \"{o}nlemek
i\c{c}in,

\begin{verbatim}
append="ether=5,0x340,eth0 ether=15,0x300,eth1"
\end{verbatim}


gibi bir sat\i{}r eklenmesi yeterli olacakt\i{}r. Burada eth0 isimli ba\u{g}lant\i{}
IRQ 5 ve IOBASE 0x340 ve di\u{g}er ethernet ba\u{g}lant\i{}s\i{} eth1 IRQ 15 ve IOBASE
0x300 olacak \c{s}ekilde ayarlan\i{}r, bu durumda \c{c}ekirdek bir daha kartlar\i{}n
hangi adres ve IRQ'da oldu\u{g}una dair tahmin y\"{u}r\"{u}tmez, girilen de\u{g}erlerde
bulunan kartlar\i{} bulmaya \c{c}al\i{}\c{s}\i{}r.

Sistem a\c{c}\i{}ld\i{}ktan sonra ger\c{c}ekten istenen kartlar\i{}n istenen adreste
\c{c}al\i{}\c{s}t\i{}\u{g}\i{}na emin olmak i\c{c}in {\tt /var/adm/messages} dosyas\i{}na
bakabilirsiniz, ya da {\tt dmesg} komutuyla \c{c}ekirdek mesajlar\i{}n\i{}
g\"{o}rebilirsiniz.






\section{NFS}



{\em NFS\/} (Network File System), bir a\u{g} \"{u}zerinden disklerin payla\c{s}\i{}m\i{}n\i{}
sa\u{g}lamak \"{u}zere geli\c{s}tirilmi\c{s}tir. NFS sayesinde bir makinada yeralan
belirli bir disk b\"{o}l\"{u}m\"{u}, ba\c{s}ka makinalar taraf\i{}ndan okunabilir
veya yaz\i{}labilir. Bu i\c{s}leme \"{o}zellikle b\"{u}y\"{u}k organizasyonlarda, disk
alan\i{}ndan tasarruf etmek i\c{c}in ba\c{s}vurulur. Her makinada ayn\i{} dosyalar,
\c{c}al\i{}\c{s}t\i{}r\i{}labilir programlar olmas\i{} yerine bunlar tek sunucuda toplan\i{}r,
di\u{g}er bilgisayarlar bu alan\i{} ortakla\c{s}a payla\c{s}\i{}rlar. Payla\c{s}\i{}lan dizin,
sanki yerel makinan\i{}n bir diziniymi\c{s} gibi davran\i{}r. Kendi disk alan\i{}n\i{}
payla\c{s}t\i{}ran makinaya NFS sunucusu, bu diske eri\c{s}im yapan makinalara da
NFS istemcisi ad\i{} verilir.

NFS kullan\i{}m\i{}n\i{}n pek \c{c}ok avantaj\i{} say\i{}labilir. Bunlar k\i{}saca:

\begin{itemize}
\item Yerel bir i\c{s}letmede t\"{u}m kullan\i{}c\i{}lar tek bilgisayar \"{u}zerindeki
ayn\i{} disk alan\i{}n\i{} payla\c{s}abilirler. Di\u{g}er bilgisayarlar a\c{c}\i{}ld\i{}ktan sonra
bu diskleri kendi dosya sisteminlerine bindirebilirler. NFS'in NIS ile
birlikte kullan\i{}m\i{} sayesinde bir kullan\i{}c\i{} herhangi bir makinaya girip
di\u{g}er kullan\i{}c\i{}larla birlikte ayn\i{} dosya yap\i{}s\i{} ile \c{c}al\i{}\c{s}abilir.
\item Payla\c{s}\i{}m sayesinde b\"{u}y\"{u}k disk alan\i{} isteyen programlar tek bir
sunucuda toplanabilir ve bu sayede \"{o}nemli miktarda diskten tasarruf
sa\u{g}lanabilir.
\item Bir makina \"{u}zerinde yap\i{}lan de\u{g}i\c{s}iklik, her makinada yap\i{}lm\i{}\c{s}
gibi olur. B\"{o}ylece ayn\i{} yaz\i{}l\i{}m\i{} \"{o}rne\u{g}in 20 bilgisayara y\"{u}klemek zorunda
kalmazs\i{}n\i{}z.
\end{itemize}





\subsection{A\u{g} \"{U}zerinde Payla\c{s}\i{}m}



NFS'in \c{c}al\i{}\c{s}mas\i{}, yerel bir diskin mount edilmesi kadar kolayd\i{}r. \"{O}rnek
olarak NFS sunucusu olan aspendos makinas\i{}nda yeralan {\tt /home} dizinini,
yerel makinadaki {\tt /users} dizinine yerle\c{s}tirmek i\c{c}in :

\begin{verbatim}
# mount -t nfs aspendos:/home /users
\end{verbatim}


kullan\i{}l\i{}r. mount, kar\c{s}\i{} makinan\i{}n eri\c{s}im izinleri do\u{g}ru oldu\u{g}unu teyit
etti\u{g}i anda bu i\c{s}lemi ger\c{c}ekle\c{s}tirir. Sunucu ile istemci aras\i{}ndaki
mesaj al\i{}\c{s}-veri\c{s}ini {\tt mountd} program\i{} \"{u}stlenir.

NFS kullanabilmek i\c{c}in \c{c}ekirdekte NFS deste\u{g}i olmas\i{} \c{s}artt\i{}r. \c{C}ekirde\u{g}in
hangi dosya sistemlerini destekledi\u{g}ini {\tt /proc} dosya sistemi
alt\i{}ndaki filesystems dosyas\i{}n\i{} okuyarak anlayabilmek m\"{u}mk\"{u}nd\"{u}r.
E\u{g}er a\c{s}a\u{g}\i{}daki sat\i{}rlarda nfs kelimesi ge\c{c}miyorsa \c{c}ekirde\u{g}e NFS deste\u{g}i
verilerek tekrar derlenmesi gerekir.

\begin{verbatim}
$ cat /proc/filesystems
        minix
        ext2
        msdos
nodev   proc
nodev   nfs
\end{verbatim}


NFS i\c{c}in mount program\i{}n\i{}n genel kullan\i{}m\i{} \c{s}u \c{s}ekildedir :

\begin{verbatim}
mount -t nfs <sunucu-adresi:paylasma-dizini> <yerel-dizin> -o <secenekler>
\end{verbatim}


Sistem a\c{c}\i{}l\i{}rken {\tt /etc/fstab} dosyas\i{}nda yeralan bilgilerle
uzak makinan\i{}n diski otomatik olarak payla\c{s}t\i{}r\i{}labilir. Mount program\i{}
baz\i{} se\c{c}enekleri destekler. Bu se\c{c}enekler {\tt -o} yard\i{}m\i{}yla
komut sat\i{}r\i{}nda verilebildi\u{g}i gibi {\tt /etc/fstab} i\c{c}inde de
belirtilebilir. Her iki durumda da birden fazla se\c{c}enek kullan\i{}l\i{}rsa
bunlar birbirlerinden virg\"{u}lle ayr\i{}l\i{}rlar.

A\c{c}\i{}l\i{}\c{s} s\i{}ras\i{}nda {\em news\/} makinas\i{}ndaki {\tt /usr/spool/news}
dosyas\i{}n\i{} yerel makinadaki {\tt /usr/spool/news} dizini alt\i{}na
yerle\c{s}tiren {\tt /etc/fstab} sat\i{}r\i{}

\begin{verbatim}
news:/usr/spool/news  /usr/spool/news   nfs   timeo=20 
\end{verbatim}


\c{s}eklinde yaz\i{}l\i{}r. NFS ile kullan\i{}lan timeo se\c{c}ene\u{g}inin kar\c{s}\i{}s\i{}nda yeralan
say\i{} (saniyenin onda biri olarak), ba\u{g}lant\i{}n\i{}n kurulabilmesi i\c{c}in ge\c{c}ecek
maksimum zaman\i{} g\"{o}sterir. Bu zaman\i{}n a\c{s}\i{}lmas\i{} halinde sunucuyla ba\u{g}lant\i{}
kesilir.






\subsection{NFS Kurulumu}



Yerel makinan\i{}n sunucu olabilmesi i\c{c}in nfsd ve mountd programlar\i{}n\i{}n
\c{c}al\i{}\c{s}t\i{}r\i{}lmas\i{} gerekir. Bu yaz\i{}l\i{}mlar a\c{c}\i{}l\i{}\c{s} esnas\i{}nda a\c{s}a\u{g}\i{}da g\"{o}r\"{u}len
{\tt /etc/rc.d/rc.inet2} dosyas\i{}ndan ba\c{s}lat\i{}l\i{}rlar. {\tt telnetd},
{\tt fingerd} ve benzeri s\"{u}re\c{c}lerin aksine bu iki program {\tt inetd}
taraf\i{}ndan y\"{o}netilmezler. Dikkat etmeniz gereken bir durum da {\tt nfsd}
ve {\tt mountd} programlar\i{}n\i{}n {\tt rpc.portmap} program\i{}ndan sonra
\c{c}al\i{}\c{s}t\i{}r\i{}lmas\i{} gerekti\u{g}idir :

\begin{verbatim}
if [ -x /usr/sbin/rpc.mountd ]; then                    
# (rpc.mountd programi var ve calistirilabilir mi ?)
        /usr/sbin/rpc.mountd; echo -n " mountd" 
fi
if [ -x /usr/sbin/rpc.nfsd ]; then                      
# (rpc.nfsd programi var ve calistirilabilir mi ?)
        /usr/sbin/rpc.nfsd; echo -n " nfsd"
fi
\end{verbatim}


Sunucunun hangi dizinlerini, hangi istemci(ler) taraf\i{}ndan
payla\c{s}\i{}labilece\u{g}i {\tt /etc/exports} dosyas\i{}nda belirtilir. \"{O}rnek
bir exports dosyas\i{}n\i{}n g\"{o}r\"{u}n\"{u}m\"{u} a\c{s}a\u{g}\i{}daki gibidir :

\begin{verbatim}
/home            davul.cclub.metu.edu.tr, ordek.cclub.metu.edu.tr
/usr/ftp         (ro)
/cdrom           *.edu.tr
\end{verbatim}


Her sat\i{}r, yerel makinadaki dizin ismi ile ba\c{s}lar, bu dizini mount etmeye
izin verilen bilgisayar isimleri ile devam eder. Makina isimlerinde
? veya * joker karakterleri kullan\i{}labilir. Dosyan\i{}n \"{u}\c{c}\"{u}nc\"{u} sat\i{}r\i{}, sonu
.edu.tr ile biten t\"{u}m makinalar\i{}n {\tt /cdrom} dizinine ula\c{s}abilece\u{g}ini
belirtir.

Ayn\i{} dizini payla\c{s}acak birden fazla makina ad\i{}, aralar\i{}nda vir\"{u}l konarak
yaz\i{}labilir. Parantez i\c{c}inde yeralan ro kelimesi, dizinlerin salt okunur
mount edilmesi gerekti\u{g}ini belirtir.

Daha geni\c{s} bilgi i\c{c}in {\tt mount} program\i{}n\i{}n man dosyas\i{}na g\"{o}z
atman\i{}z\i{} tavsiye ederim.






\section{Uzaktan Ba\u{g}lant\i{} Kurulmas\i{}}

\.{I}nternet \"{u}zerinde kesinlikle yanl\i{}z olmad\i{}\u{g}\i{}n\i{}za g\"{o}re, kimi durumlarda
kendi Linux'unuz d\i{}\c{s}\i{}ndaki sistemlere girmek isteyeceksiniz. Bunun i\c{c}in
uyarlanm\i{}\c{s} \c{c}e\c{s}itli komutlar mevcuttur. Bu komutlar sadece ba\u{g}lanmak i\c{c}in
de\u{g}il, iki makina aras\i{}nda birtak\i{}m dosya transferi ger\c{c}ekle\c{s}tirmek i\c{c}in
de kullan\i{}labilir.

Linux (ve UNIX) i\c{c}in a\u{g} uygulamalar\i{}nda kullan\i{}lmak \"{u}zere geli\c{s}tirilen
temel olarak iki sistem vard\i{}r. Bunlardan {\bf UUCP} (Unix to Unix CoPy),
genel olarak iki makina aras\i{}nda bir kere ba\u{g}lant\i{} kurup veriyi iletir
ve ba\u{g}lant\i{}y\i{} kapat\i{}r. Eski bir protokol olan UUCP, genellikle modemler
aras\i{} veri ileti\c{s}iminde i\c{s}e yarar.

TCP/IP ise daha \"{o}nce de belirtildi\u{g}i gibi yerel a\u{g} veya \.{I}nternet \"{u}zerinde
rahatl\i{}kla kullan\i{}labilen bir protokold\"{u}r. TCP / IP 'nin uzaktan ba\u{g}lant\i{}
komutlar\i{} "r" harfi ile ba\c{s}lar. \"{O}rne\u{g}in {\tt rlogin} (remote login) bir
sistemden di\u{g}erine telnet ba\u{g}lant\i{}s\i{} yaparken {\tt rcp} (remote copy)
ise bir makinadan di\u{g}erine dosya kopyalar. Bu ve buna benzer uzaktan
ba\u{g}lant\i{} komutlar\i{} iyi bilmeniz size \c{c}al\i{}\c{s}malar\i{}n\i{}z s\i{}ras\i{}nda zaman
kazand\i{}racakt\i{}r.

"{\tt r}" komutlar\i{}n\i{} kullanabilmeniz i\c{c}in kesinlikle TCP/IP protokol\"{u}n\"{u}
tan\i{}yan bir a\u{g} (PPP, Ethernet, SLIP gibi) \"{u}zerinde olmal\i{}s\i{}n\i{}z.

{\bf rlogin} : Ge\c{c}erli bir hesab\i{}n\i{}z\i{}n oldu\u{g}u makinaya girmenizi
sa\u{g}lar. telnet komutuyla benzerlik g\"{o}sterir. Ayr\i{}ld\i{}klar\i{} nokta, kar\c{s}\i{}daki
sisteme girerken gerekli konfig\"{u}rasyonlar yap\i{}l\i{}rsa \c{s}ifre sormamas\i{}d\i{}r. Bu
k\i{}sma ileride de\u{g}inece\u{g}im.

A\c{s}a\u{g}\i{}daki komut ile ordek isimli makinaya giri\c{s} yap\i{}l\i{}yor. 

\begin{verbatim}
$ rlogin ordek
\end{verbatim}


E\u{g}er yukar\i{}daki gibi yazarsan\i{}z, ordek makinas\i{}na ait IP numaras\i{}
veya bu adresin tam isminin, \"{o}rne\u{g}in {\tt ordek.cclub.metu.edu.tr/etc/hosts} dosyas\i{}nda yerald\i{}\u{g}\i{}na emin olman\i{}z gerekir. Kar\c{s}\i{}
makinada ba\u{g}lan\i{}lacak kullan\i{}c\i{} ismi de komut sat\i{}r\i{}ndan belirlenebilir.

\begin{verbatim}
cclub:~$ rlogin ordek -l httpd
Password: 
Last login: Fri Feb 21 22:02:46 from cclub.metu.edu.tr
Linux 2.0.27.
ordek:~$ 
\end{verbatim}


Yukar\i{}da yapt\i{}\u{g}\i{}m\i{}z, cclub makinas\i{}ndan ordek isimli makinadaki httpd
kullan\i{}c\i{}s\i{}na ba\u{g}lanmak oldu. \"{U}zerinde Linux \c{c}al\i{}\c{s}an ordek makinas\i{} do\u{g}al
olarak bana bu kullan\i{}c\i{}ya ait \c{s}ifreyi sordu. ordek makinas\i{}nda yeralan
bir dosya \"{u}zerinde de\u{g}i\c{s}iklik yaparak istersem \c{s}ifre sorulmadan an\i{}nda
girilmesini sa\u{g}layabilirim. Bunu {\tt .rhosts} (remote hosts) dosyas\i{} sa\u{g}lar.

{\tt .rhosts} dosyas\i{}nda makinaya ba\u{g}lanabilecek olan kullan\i{}c\i{}lar
ve bunlar\i{}n hangi makinalardan ba\u{g}lanacaklar\i{}n\i{} g\"{o}steren bir liste
vard\i{}r. Biraz kar\i{}\c{s}\i{}k m\i{} oldu ? \c{S}u \"{o}rne\u{g}i inceleyelim :

\begin{verbatim}
ordek:~$ uname -a
Linux ordek 2.0.27 #1 Sun Jan 19 13:06:08 EET 1997 i486
ordek:~$ whoami
httpd
ordek:~$ cat ~/.rhosts
cclub.metu.edu.tr gorkem
\end{verbatim}


Yukar\i{}da \"{o}rdek makinas\i{} \"{u}zerindeki httpd kullan\i{}c\i{}s\i{}n\i{}n \c{c}al\i{}\c{s}ma dizininde
bulunan {\tt .rhosts} dosyas\i{}nda iki s\"{u}tun yeral\i{}yor. \.{I}lki, g\"{u}venilen
makinan\i{}n ismi (cclub.metu.edu.tr), ikincisi de bu makina \"{u}zerindeki
g\"{u}venilen kullan\i{}c\i{} (gorkem). {\tt .rhosts} dosyas\i{} \c{s}ifrenizi ba\c{s}kalar\i{}na
vermeden istedi\u{g}iniz makinadaki bir kullan\i{}c\i{}n\i{}n hesab\i{}n\i{}z\i{} kullanmas\i{}n\i{}
sa\u{g}lar. K\i{}saca bir sat\i{}rda herhangi bir kullan\i{}c\i{}n\i{}n makina ismi ve
hesap ismi bu dosyada varsa, sisteme giri\c{s} izni verilir.

Bu a\c{s}amadan sonra cclub.metu.edu.tr adresindeki gorkem kullan\i{}c\i{}s\i{} \c{s}ifre
girmeden ordek.cclub.metu.edu.tr adresindeki httpd kullan\i{}c\i{}s\i{} olarak
\c{c}al\i{}\c{s}mak isterse yapmas\i{} gereken :

\begin{verbatim}
cclub:~$ whoami
gorkem
cclub:~$ rlogin ordek.cclub.metu.edu.tr -l httpd
Last login: Sun Feb 23 11:19:04 from cclub.metu.edu.tr
Linux 2.0.27.
ordek:~$
\end{verbatim}


Art\i{}k ordek makinas\i{} \"{u}zerindeyiz. \c{S}ifre girmeden bir makinadan di\u{g}erine
atlam\i{}\c{s} olduk. {\tt .rhosts} dosyas\i{}nda e\u{g}er makina ismi yerine "+"
i\c{s}areti kullan\i{}l\i{}rsa her makinan\i{}n veya kullan\i{}c\i{} ismi yerine "+" i\c{s}areti
kullan\i{}l\i{}rsa her kullan\i{}c\i{}n\i{}n giri\c{s} izni oldu\u{g}u anla\c{s}\i{}l\i{}r. Makina isimleri
yerine IP adreslerini de kullanabilirsiniz. Birka\c{c} \"{o}rnek :

\begin{verbatim}
144.122.71.55  +        
# (144.122.71.55 makinasi uzerindeki tum kullanicilara giris izni ver)
+ murat 
# Butun makinalar uzerindeki murat kullanicilarina giris izni ver. 
# (Cok buyuk bir guvenlik acigi)
\end{verbatim}


{\bf rsh} : Baz\i{} durumlarda \c{c}al\i{}\c{s}t\i{}\u{g}\i{}n\i{}z makinada d\i{}\c{s}\i{}ndaki bir sistemde
bir veya birka\c{c} k\i{}sa komut \c{c}al\i{}\c{s}t\i{}rmak isteyebilirsiniz. \"{O}rne\u{g}in kar\c{s}\i{}
sistemde kimler, hangi i\c{s}leri yap\i{}yor veya \c{c}al\i{}\c{s}ma dizininde yeralan
dosyalar\i{} g\"{o}rmek gibi. B\"{u}t\"{u}n bunlar telnet veya rlogin program\i{}na gerek
duymadan {\tt rsh} (remote shell) ile yap\i{}labilir. Tek \c{s}art, \"{u}zerinde komut
i\c{s}letilecek makinadaki {\tt .rhosts} dosyas\i{}nda gerekli makina ve kullan\i{}c\i{}
ismi giri\c{s}i olmas\i{}d\i{}r.

Diyelim ki {\bf davul.cclub.metu.edu.tr} makinas\i{} \"{u}zerindeki
{\tt /home/gorkem} dizininde yeralan t\"{u}m dizin ve dosyalar\i{} g\"{o}rmek
i\c{c}in :

\begin{verbatim}
$ rsh davul.cclub.metu.edu.tr ls -al /home/gorkem
\end{verbatim}


komutunu girmelisiniz. {\tt rsh} komutundan sonra uzaktaki sistemin ismi,
ard\i{}ndan da \c{c}al\i{}\c{s}t\i{}r\i{}lacak olan komut gelmelidir. Di\u{g}er bir \"{o}rnek

\begin{verbatim}
$ rsh davul.cclub.metu.edu.tr cat README | lpr
\end{verbatim}


kar\c{s}\i{} sisteme giri\c{s} yapmadan {\tt README} dosyas\i{}n\i{} yaz\i{}c\i{}dan \c{c}\i{}kmas\i{}n\i{}
sa\u{g}layacakt\i{}r.






\section{Linux'ta \"{O}rnek A\u{g} Uygulamalar\i{} }

A\c{s}a\u{g}\i{}da, Linux ile ger\c{c}ekle\c{s}tirilebilecek birka\c{c} \"{o}rnek a\u{g} uygulamalar\i{}
yeralmaktad\i{}r. Her konu ile ilgili ayr\i{}nt\i{}l\i{} bilgileri {\em HOWTO\/} dosyalar\i{}ndan
\"{o}\u{g}renebilirsiniz.




\subsection{IP Accounting}



{\em IP accounting\/} \"{o}zelli\u{g}i, \c{c}ekirde\u{g}in a\u{g} \"{u}zerindeki trafi\u{g}in analizini yapmas\i{}n\i{}
sa\u{g}lar. Toplanan veriler, makinan\i{}n a\c{c}\i{}ld\i{}\u{g}\i{} andan itibaren kart \"{u}zerinden ge\c{c}en
paket ve toplam bayt say\i{}s\i{}d\i{}r. Bir konfig\"{u}rasyon dosyas\i{} yard\i{}m\i{}yla bu bilgiler
belirli s\i{}n\i{}flara ayr\i{}labilir. \c{C}ekirde\u{g}in derlenmesi a\c{s}amas\i{}nda IP accounting
se\c{c}ene\u{g}i kullan\i{}lmal\i{}d\i{}r.

\begin{verbatim}
* Networking options
...
IP: accounting (CONFIG_IP_ACCT) [N/y/?] y
\end{verbatim}


\c{C}ekirde\u{g}in derlenmesinden ve makinan\i{}n yeni \c{c}ekirdekle a\c{c}\i{}lmas\i{}ndan sonra,
{\tt ipfwadm} komutu ile IP accounting i\c{s}lemlerine ba\c{s}lanabilir. ipfwadm
paketi standart Slackware da\u{g}\i{}t\i{}m\i{} ile beraber gelmektedir.






\subsection{IP Aliasing}



Tek a\u{g} arabirimi (\"{o}rne\u{g}in ethernet veya seri ba\u{g}lant\i{}) kart\i{} i\c{c}in birden fazla IP numaras\i{}
gereken durumlarda IP Aliasing kullan\i{}l\i{}r. Genellikle \.{I}nternet Servis 
Sa\u{g}lay\i{}c\i{}lar\i{}, m\"{u}\c{s}terilerinin ftp ve www sunucular\i{}n\i{} tek makina 
\"{u}zerinde toplamak i\c{c}in bu yola ba\c{s}vururlar. Bu sayede bir makinaya atanm\i{}\c{s}
birden fazla www adresi ve herbirinin ayr\i{} html dosyalar\i{} farkl\i{} makinalardaym\i{}\c{s}
gibi kullan\i{}labilir.

Bu \"{o}zellikten yararlanabilmek i\c{c}in \c{c}ekirdekte IP Aliasing deste\u{g}i vermelisiniz.

\begin{verbatim}
*
* Networking options
...
Network aliasing (CONFIG_NET_ALIAS) [N/y/?] y
...
IP: aliasing support (CONFIG_IP_ALIAS) [N/y/m/?] y
\end{verbatim}


Her sanal a\u{g} adresi i\c{c}in bir {\em arabirim\/} (interface) tan\i{}mlamal\i{}s\i{}n\i{}z. Bu sayede
ayn\i{} bilgisayarda 255 adede kadar sanal makinaya izin verilebilir. Her sanal
arabirim, ba\u{g}l\i{} bulundu\u{g}u ger\c{c}ek arabirim \"{u}zerinden i\c{s}g\"{o}r\"{u}r.

\"{O}rnek olarak, elimizde kullanabilece\u{g}imiz ikinci adres (\"{o}rnek olarak   
100.100.100.101) ve tek ethernet kart\i{} bulunsun. \.{I}nternet 
\"{u}zerindeki di\u{g}er makinalar\i{}n, bu iki adrese ula\c{s}abilmeleri i\c{c}in \c{s}u sat\i{}rlar
yeterli olacakt\i{}r :

\begin{verbatim}
# ifconfig eth0:0 100.100.100.101 netmask 255.255.255.0 up
# route add -net 100.100.100.0 netmask 255.255.255.0 eth0:0
\end{verbatim}


Sanal bir arabirimi kald\i{}rmak i\c{c}in ise, ismin sonuna '-' karakteri getirmek
yeterli olur.

\begin{verbatim}
# ifconfig eth0:0- 0
\end{verbatim}







\subsection{IP Masquerading }



IP Masquerading, bir a\u{g}\i{}n arkas\i{}ndaki birden fazla makinan\i{}n bir Linux
\"{u}zerinden d\i{}\c{s}ar\i{}ya ba\u{g}lanmas\i{}d\i{}r. T\"{u}m makinalar d\i{}\c{s}ar\i{}dan ayn\i{} IP adresi 
gibi g\"{o}r\"{u}n\"{u}rler.

\"{O}rnek olarak \.{I}nternet'e ba\u{g}land\i{}n\i{}z. \.{I}nternet Servis Sa\u{g}lay\i{}c\i{}n\i{}z size
sadece bir IP numaras\i{} verdi ve odan\i{}zda \.{I}nternet'e ba\u{g}lanmay\i{} bekleyen
birden fazla bilgisayar var. Servis Sa\u{g}lay\i{}c\i{}ya her makina i\c{c}in para
\"{o}deyip bir hesap ismi almaktansa odadaki t\"{u}m makinalar bir Linux ve telefon
ba\u{g}lant\i{}s\i{} yard\i{}m\i{}yla \.{I}nternet'e eri\c{s}ebilirler.

IP Masquerading kullanabilmek i\c{c}in \c{c}ekirdekte bu deste\u{g}in verilmesi gerekiyor.
Bunun i\c{c}in IP Forwarding, IP Firewalling ve IP Masquerading se\c{c}eneklerini
a\c{c}\i{}k tutmal\i{}s\i{}n\i{}z. 

IP Masquerading i\c{c}in gerekli yaz\i{}l\i{}mlar Slackware da\u{g}\i{}t\i{}m\i{} ile birlikte
gelmektedir.






\subsection{SAMBA (NetBEUI ve NetBios deste\u{g}i)}



SMB,  Windows 3.11, NT ve 95 taraf\i{}ndan kullan\i{}lan ve disk ve yaz\i{}c\i{}
payla\c{s}\i{}m\i{}na olanak veren bir protokold\"{u}r. Linux, Samba deste\u{g}i ile bu i\c{s}letim
sistemleri veya kendi \"{u}zerinde bulunan disk ve yaz\i{}c\i{}lar\i{}n t\"{u}m makinalar
taraf\i{}ndan payla\c{s}\i{}lmas\i{}n\i{} sa\u{g}lar. 

Samba ile 4 i\c{s}lem ger\c{c}ekle\c{s}tirilebilir : Windows makinalar\i{}n\i{}n Linux diskini
payla\c{s}malar\i{}, Linux makinalar\i{}n\i{}n Windows sistemi diskini payla\c{s}malar\i{}, Windows 
makinalar\i{}n\i{}n Linux yaz\i{}c\i{}s\i{}n\i{} payla\c{s}malar\i{} ve Linux makinalar\i{}n\i{}n Windows 
yaz\i{}c\i{}s\i{}n\i{} payla\c{s}malar\i{}. 

Yine bu \"{o}zelli\u{g}i kullanabilmek i\c{c}in \c{c}ekirdekte Samba deste\u{g}i vermeniz
gerekecektir.

\begin{verbatim}
SMB filesystem support (to mount WfW shares etc..) (CONFIG_SMB_FS) [Y/m/n/?]
\end{verbatim}


{\em smbfs\/}, SMB protokol\"{u}n\"{u} tan\i{}yan dosya sistemine verilen isimdir. 
smbfs servisi verebilmek i\c{c}in smbfs.tgz paketini indirip derlemelisiniz.

{\em smbfs.tgz\/} paketini \url{ftp://ftp.metu.edu.tr/pub/linux/suniste/systems/filesystems/smbfs/}{ftp.metu.edu.tr} adresinden bulabilirsiniz.




\subsection{Novell Deste\u{g}i}



NCP (NetWare Core Protocol), IPX \"{u}zerinde yeralan ve Novell NetWare 
istemcilerinin sunucularla konu\c{s}mas\i{}n\i{} sa\u{g}layan protokole verilen isimdir.
Bu se\c{c}enek ile, NetWare dosya sunucular\i{}na di\u{g}er Unix makinalardaki
gibi ba\u{g}lanmak olas\i{}d\i{}r. 

NetWare dosya sistemlerine eri\c{s}ebilmek i\c{c}in \"{o}zel bir mount program\i{}
({\tt ncpmount/ncpumount}) kullanman\i{}z gerekecektir. Bu ve di\u{g}er programlar,
\url{ftp://ftp.metu.edu.tr/pub/linux/sunsite/system/filesystems/ncpfs}{ncpfs} paketinin i\c{c}inde vard\i{}r. Bunun i\c{c}in \c{c}ekirdekte 

\begin{verbatim}
The IPX protocol (CONFIG_IPX) [Y/m/n/?]
\end{verbatim}


ve 

\begin{verbatim}
NCP filesystem support (to mount NetWare volumes) (CONFIG_NCP_FS) [Y/m/n/?]
\end{verbatim}


deste\u{g}ini vermelisiniz. 

{\em lwared\/} ve {\em mars\_{}nwe\/} paketleri, Linux \.{I}\c{s}letim Sistemi'ne Novell sunucu 
olma \"{o}zelli\u{g}i verir. 




\subsection{Apple deste\u{g}i}



Ayn\i{} a\u{g} \"{u}zerinde yeralan Apple Macintosh makinalar\i{} ile ayn\i{} disk ve yaz\i{}c\i{}lar\i{}n
payla\c{s}\i{}m\i{}n\i{} sa\u{g}layan pakete {\em netatalk\/} ismi verilir. Bu deste\u{g}i kullanabilmek
i\c{c}in \c{c}ekirde\u{g}in derlenmesi s\i{}ras\i{}nda 

\begin{verbatim}
IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?]
...
The IPX protocol (CONFIG_IPX) [Y/m/n/?]
...
Appletalk DDP (CONFIG_ATALK) [Y/m/n/?]
\end{verbatim}


parametrelerine evet cevab\i{} vermelisiniz. Appletalk i\c{c}in daha fazla bilgiye
ve disk ile yaz\i{}c\i{} payla\c{s}\i{}m\i{} yapan pakete \url{http://www.umich.edu/~rsug/netatalk}{http://www.umich.edu/~rsug/netatalk} adresinden eri\c{s}ebilirsiniz.






\section{NIS }



NIS Network Information Service kelimelerinin ba\c{s} harflerinden
olu\c{s}maktad\i{}r. Amac\i{} bir a\u{g} \"{u}zerindeki b\"{u}t\"{u}n makinalara, b\"{u}t\"{u}n a\u{g}
taraf\i{}ndan bilinmek kayd\i{}yla bilgi ak\i{}\c{s}\i{} sa\u{g}lamakt\i{}r. NIS taraf\i{}ndan
da\u{g}\i{}t\i{}lacak bilgiler, hesap isimleri, \c{s}ifreler, kullan\i{}c\i{} dizinleri
ve grup bilgileri olabilir.

NIS yard\i{}m\i{}yla, \"{o}rne\u{g}in size ait \c{s}ifre NIS veri taban\i{}nda kay\i{}tl\i{} ise,
a\u{g} \"{u}zerinde NIS istemci programlar\i{}n\i{} \c{c}al\i{}\c{s}t\i{}ran b\"{u}t\"{u}n makinalara 
girebilirsiniz.

NIS'in biraz daha geli\c{s}mi\c{s} bir s\"{u}r\"{u}m\"{u} olan NIS+ , verileri korumak 
amac\i{}yla \c{s}ifreleme y\"{o}ntemi kullan\i{}r. Bu avantaj\i{}na ra\u{g}men NIS+ '\i{}n 
kurulumu ve kullan\i{}m\i{} daha zordur.




\subsection{NIS'in \c{C}al\i{}\c{s}ma Prensipleri }



Bir a\u{g} \"{u}zerinde en az bir makina NIS sunucusu olmak 
zorundad\i{}r. \.{I}ster herbiri farkl\i{} NIS ``domain'' lerine hizmet eden \c{c}oklu NIS
sunucular\i{}na sahip olabilirsiniz, ya da beraber \c{c}al\i{}\c{s}an NIS sunucular\i{}n\i{}z
olur. Bu durumda sunuculardan biri ana NIS sunucusu, di\u{g}erleri ise 
ikincil (slave) NIS sunucusu olabilirler.

\.{I}kincil sunucular sadece NIS veritaban\i{}n\i{}n kopyalar\i{}na sahiptirler ve bu
kopyalar\i{} ana NIS sunucusunda bulunan veri tabanlar\i{}nda de\u{g}i\c{s}iklik yap\i{}ld\i{}\u{g}\i{}
zaman ana sunucudan al\i{}rlar. A\u{g} \"{u}zerinde bulunan makina say\i{}s\i{}na ve
a\u{g} g\"{u}venli\u{g}ine ba\u{g}l\i{} olarak bir veya daha fazla ikincil sunucu
kurulabilir. Bir NIS sunucusu kapand\i{}\u{g}\i{}nda veya \c{c}ok yava\c{s} cevap
verdi\u{g}inde, di\u{g}er NIS istemcileri \c{c}al\i{}\c{s}an veya daha h\i{}zl\i{} bir
sunucu bulmaya \c{c}al\i{}\c{s}acakt\i{}r.

NIS veritabanlar\i{} DBM ad\i{} verilen yap\i{}dad\i{}r ve bu yap\i{} ASCII
veritabanlar\i{}ndan \c{c}\i{}kar\i{}l\i{}r. 
Ana NIS sunucusu hem ASCII veritabanlar\i{}n\i{} hemde DBM
veritabanlar\i{}n\i{} i\c{c}ermelidir. NIS sunucusu, ASCII yap\i{}daki {\tt /etc/passwd}
gibi veri tabanlar\i{}n\i{} DBM veri taban\i{}na \c{c}evirerek {\tt /var/yp} dizini
alt\i{}nda tutar.

\.{I}kincil sunucular NIS haritalar\i{}nda olu\c{s}acak de\u{g}i\c{s}ikliklerden {\tt yppush}
program\i{} arac\i{}l\i{}\u{g}\i{}yla haberdar edilecek ve veritabanlar\i{}n\i{} senkronize
etmek i\c{c}in otomatik olarak gereken de\u{g}i\c{s}iklikleri alacaklard\i{}r. NIS
istemcilerinin bunu yapmas\i{}na gerek yoktur \c{c}\"{u}nk\"{u} sunucudaki DBM
veritabanlar\i{}nda bulunan bilgileri okumak i\c{c}in devaml\i{} olarak NIS sunucusu
ile ba\u{g}lant\i{} kurmaktad\i{}r. \.{I}kincil sunuculara gayet b\"{u}y\"{u}k a\u{g}lar \"{u}zerinde
ihtiya\c{c} duyulur.




\subsection{NIS \.{I}stemcisi}



NIS'i kurmak i\c{c}in her\c{s}eyden \"{o}nce {\tt /usr/sbin/rpc.portmap}
program\i{}n\i{} \c{c}al\i{}\c{s}t\i{}rman\i{}z gerekir. Baz\i{} Linux da\u{g}\i{}t\i{}mlar\i{} (\"{o}rne\u{g}in
Slackware) bu daemon'u \c{c}al\i{}\c{s}t\i{}rmak i\c{c}in gereken kodu {\tt /etc/rc.d/rc.inet2}
dosyas\i{}nda bar\i{}nd\i{}r\i{}rlar. 

RPC portmapper ({\tt man 8 portmap}) program\i{} bir sunucu olup RPC program
numaralar\i{}n\i{} TCP/IP (veya UDP/IP) protokol port numaralar\i{}na \c{c}evirir. RPC
portmapper o makina \"{u}zerinde RPC \c{c}a\u{g}r\i{}lar\i{}n\i{} (NIS istemci yaz\i{}l\i{}m\i{}n\i{}n
yapt\i{}\u{g}\i{} i\c{s}) RPC sunucular\i{}na (NIS sunucular\i{} gibi) yap\i{}labilmesi i\c{c}in
\c{c}al\i{}\c{s}\i{}yor olmal\i{}d\i{}r. Bir RPC sunucusu ba\c{s}lad\i{}\u{g}\i{} zaman, portmap'a hangi
port numaras\i{}n\i{} dinledi\u{g}ini ve hangi RPC program numaralar\i{}na hizmet
edece\u{g}ini bildirir. Bir istemci verilen bir program numaras\i{}na RPC
\c{c}a\u{g}r\i{}s\i{} yapmak istedi\u{g}i zaman, ilk \"{o}nce sunucu makina \"{u}zerindeki portmap
ile ba\u{g}lant\i{} kurarak RPC paketlerinin nereye g\"{o}nderilece\u{g}ini belirler.

Normal olarak, baz\i{} RPC sunucular\i{} {\em inetd(8)\/} taraf\i{}ndan ba\c{s}lat\i{}l\i{}r,
bu y\"{u}zden portmap, inetd'den \"{o}nce \c{c}al\i{}\c{s}t\i{}r\i{}lmal\i{}d\i{}r.

NIS kurmadan \"{o}nce, yukar\i{}da da belirtildi\u{g}i gibi iki durumu de\u{g}erlendirmek
zorundas\i{}n\i{}z. Ya sizin makinan\i{}z halihaz\i{}rdaki NIS sunucular\i{}n\i{}n
bulundu\u{g}u bir a\u{g}\i{}n par\c{c}as\i{} olacakt\i{}r, ya da hen\"{u}z a\u{g}\i{}n\i{}zda herhangi bir
NIS sunucusu yoktur.

Birinci durumda, sadece istemci programlara ({\tt ypbind, ypwhich, ypcat,
yppoll, ypmatch}) ihtiyac\i{}n\i{}z vard\i{}r.  En \"{o}nemli program
{\tt ypbind}'d\i{}r. Bu program\i{} her zaman \c{c}al\i{}\c{s}t\i{}r\i{}yor olmal\i{}s\i{}n\i{}z.
{\tt ypbind} \c{c}al\i{}\c{s}\i{}r \c{c}al\i{}\c{s}maz, makinan\i{}z bir NIS
istemcisi durumuna gelir.

\.{I}kinci durumda, e\u{g}er NIS sunucular\i{}n\i{}z yoksa, bir de NIS sunucu program\i{}na
({\tt ypserv}) ihtiyac\i{}n\i{}z vard\i{}r. 




\subsubsection{NIS \.{I}stemcisi Kurulmas\i{}}



Slackware da\u{g}\i{}t\i{}m\i{}yla gelen NIS yaz\i{}l\i{}m\i{}n\i{} daha \"{o}nce kurmam\i{}\c{s}san\i{}z,
sisteminize y\"{u}kleyin. NIS istemcisi i\c{c}in {\tt ypbind} d\i{}\c{s}\i{}ndaki
\c{c}al\i{}\c{s}t\i{}r\i{}labilir dosyalar ({\tt ypwhich, yppoll, ypmatch})
b\"{u}t\"{u}n kullan\i{}c\i{}lar taraf\i{}ndan eri\c{s}ilebilir bir dizinde bulunmal\i{}d\i{}r.
\"{O}ncelikle yap\i{}lmas\i{} gereken {\tt ypbind}'\i{} test etmektir. Bunun i\c{c}in,

\begin{itemize}
\item  Domain ad\i{}n\i{}z\i{} belirledi\u{g}inizden emin olun. Bunun i\c{c}in, 

\begin{verbatim}
/bin/domainname-yp nis.domain
/bin/domainname-yp > /etc/defaultdomain 
\end{verbatim}


komutunu girin. \.{I}kinci sat\i{}rda, sistemde daha sonra kullan\i{}lmak \"{u}zere
{\tt /etc/defaultdomain} dosyas\i{}na domain ad\i{} yaz\i{}l\i{}r. Yukar\i{}daki komutta 
{\em nis.domain\/} herhangi bir kelime olabilir.
\item  E\u{g}er \c{c}al\i{}\c{s}m\i{}yorsa {\tt /usr/sbin/rpc.portmap} program\i{}n\i{} \c{c}al\i{}\c{s}t\i{}r\i{}n.
\item  {\tt /usr/sbin/ypbind} program\i{}n\i{} \c{c}al\i{}\c{s}t\i{}r\i{}n.
\item  {\tt rpcinfo -p localhost} komutunu kullanarak {\tt ypbind}
program\i{}n\i{}n {\tt portmapper}'da servislerini kay\i{}t ettirdi\u{g}ini kontrol
edin. {\tt rpcinfo} \c{s}\"{o}yle bir \c{c}\i{}kt\i{} \"{u}retmelidir:

\begin{verbatim}
program vers    proto   port
100000  2       tcp     111     portmapper
100000  2       udp     111     portmapper
100007  2       udp     637     ypbind
100007  2       tcp     639     ypbind
300019  1       udp     660
\end{verbatim}

\item Ayr\i{}ca {\tt rpcinfo -u localhost ypbind} komutunu da
\c{c}al\i{}\c{s}t\i{}rabilirsiniz. Bu komut ise \c{s}\"{o}yle bir \c{c}\i{}kt\i{} verir:

\begin{verbatim}
program 100007 version 2 ready and waiting
\end{verbatim}

\item  En son olarak, makina isim taramalar\i{} (host lookup) i\c{c}in
{\tt /etc/host.conf}
dosyas\i{}nda lookup s\i{}ras\i{}na nis bilgisini ekleyin. Bu dosyada yeralan
{\em order\/} sat\i{}r\i{}n\i{} istedi\u{g}iniz gibi d\"{u}zenleyebilirsiniz. 
Daha fazla bilgi i\c{c}in {\em resolv(8)\/} man sayfas\i{}na bak\i{}n.

\begin{verbatim}
$ cat /etc/host.conf
order nis, bind, hosts
multi on
\end{verbatim}

\end{itemize}


Bu noktadan sonra {\tt ypcat}, vb gibi NIS istemci programlar\i{}
kullan\i{}labilir. \"{O}rne\u{g}in, {\tt ypcat passwd} komutu b\"{u}t\"{u}n NIS
\c{s}ifre veritaban\i{}n\i{} g\"{o}sterir.

\c{S}imdi sistemde bulunan {\tt /etc/rc.d/rc.inet2} dosyas\i{}n\i{} ypbind
program\i{}n\i{}n sistem a\c{c}\i{}l\i{}rken \c{c}al\i{}\c{s}mas\i{} ve sisteminizin bir NIS istemcisi olarak g\"{o}rev yapmas\i{} i\c{c}in de\u{g}i\c{s}tirmek gerekir. Ayr\i{}ca, {\tt /etc/rc.d/rc.inet2} dosyas\i{}n\i{} a\c{c}\i{}n ve {\tt ypbind}'\i{} \c{c}al\i{}\c{s}t\i{}ran ve 
domain ad\i{}n\i{} belirleyen sat\i{}rlar\i{}n ba\c{s}\i{}ndaki \# i\c{s}aretini kald\i{}r\i{}n.

\begin{verbatim}
# domainname

if [ -r /etc/defaultdomain ] ; then
domainname-yp `cat /etc/defaultdomain`
fi

# Start the ypbind daemon

if [ -f ${NET}/ypbind -a -d /var/yp ]; then
  echo -n " ypbind"
  ${NET}/ypbind
fi
\end{verbatim}


NIS'i \c{c}al\i{}\c{s}t\i{}rmak i\c{c}in {\tt /etc/passwd} ve {\tt /etc/group}
dosyalar\i{}n\i{}n sonuna ``+:*:0:0:::'' sat\i{}r\i{}n\i{} ekleyin. {\tt ypbind}'\i{}
\"{o}ld\"{u}r\"{u}p yeniden \c{c}al\i{}\c{s}t\i{}r\i{}n.




\subsubsection{NIS Sunucusu Kurulmas\i{}}



NIS arac\i{}l\i{}\u{g}\i{} ile kullan\i{}ma a\c{c}\i{}k olacak dosyalardan ihtiyac\i{}n\i{}z
olanlar\i{}n belirlenmesi gerekir. {\tt /var/yp/Makefile/} dosyas\i{}nda 
gerekli ekleme/\c{c}\i{}kartmalar\i{} yap\i{}n. 

NIS veri taban\i{}n\i{} a\c{s}a\u{g}\i{}daki sat\i{}r\i{} yazarak olu\c{s}turun:

\begin{verbatim}
$ cd /var/yp; make
\end{verbatim}


Bu program\i{}n \c{c}al\i{}\c{s}t\i{}r\i{}lmas\i{}ndan sonra {\tt /var/yp} dizini 
alt\i{}nda NIS domain ad\i{}yla bir dizin yarat\i{}l\i{}r ve t\"{u}m veri tabanlar\i{}
burada tutulur. {\tt portmapper} program\i{}n\i{}n ({\tt rpc.portmap}) \c{c}al\i{}\c{s}t\i{}\u{g}\i{}ndan emin olduktan sonra {\tt ypserv} sunucusunu \c{c}al\i{}\c{s}t\i{}r\i{}n. {\tt rpcinfo} komutu
ile {\tt ypserv}'in \c{c}al\i{}\c{s}mas\i{}n\i{} kontrol edin.

\begin{verbatim}
$ rpcinfo -u localhost ypserv
program 100004 version 2 ready and waiting
\end{verbatim}


Art\i{}k sunucu \c{c}al\i{}\c{s}maktad\i{}r.




\subsection{yppasswdd Program\i{}}



NIS \c{s}ifre veritaban\i{}n\i{}n g\"{u}venilir olmas\i{} i\c{c}in ``yppasswd daemon'' gereklidir.
Kullan\i{}c\i{}lar {\tt yppasswd} komutu yard\i{}m\i{}yla sunucu \"{u}zerindeki \c{s}ifrelerini
de\u{g}i\c{s}tirebilirler. {\tt yppasswd daemon} (k\i{}saca {\tt yppasswdd}) bu 
de\u{g}i\c{s}ikliklerin do\u{g}ru bir \c{s}ekilde yap\i{}lmas\i{}n\i{} ve bu \c{s}ifre de\u{g}i\c{s}tirme
s\"{u}recini kontrol eden sunucudur.




\subsection{NIS'in Kontrol Edilmesi}



NIS, birka\c{c} basit komut ile kontrol edilebilir. 

\begin{verbatim}
$ ypwhich
\end{verbatim}


{\tt ypwhich} NIS sunucusunun hangi makina oldu\u{g}unu s\"{o}yleyecektir. 
Bu komut ise

\begin{verbatim}
$ ypmatch userid passwd
\end{verbatim}


({\em userid\/} herhangi bir kullan\i{}c\i{}n\i{}n login ad\i{} olmak kayd\i{}yla) size bu
kullan\i{}c\i{}n\i{}n NIS \c{s}ifre dosyas\i{}ndaki bilgilerini verir. {\tt ypwhich} ve
{\tt ypmatch} programlar\i{} NIS da\u{g}\i{}t\i{}m\i{} i\c{c}inde gelirler.

Bir NIS sunucusu kapand\i{}\u{g}\i{} ve tekrar ba\c{s}lad\i{}\u{g}\i{} zaman {\tt ypbind} a\c{s}a\u{g}\i{}daki
gibi bir mesaj ile ba\c{s}layabilir:

\begin{verbatim}
yp_match: clnt_call:RPC: Unable to receive; errno = Connection refused
\end{verbatim}


ve NIS veritaban\i{}nda kay\i{}tl\i{} olanlar sisteme giremezler. root olarak
sisteme girmeyi deneyin ve ba\c{s}ar\i{}l\i{} olursan\i{}z {\tt ypbind} i\c{s}lemini 
\"{o}ld\"{u}r\"{u}p yeniden ba\c{s}lat\i{}n.




\chapter{DNS (Alan \.{I}simlendirme Sistemi)}


\section{Giri\c{s}}



Bilgisayar  a\u{g}lar\i{}n\i{}n  g\"{u}n\"{u}m\"{u}zde  oldugu  kadar  yayg\i{}n  olmad\i{}\u{g}\i{}
d\"{o}nemlerde makina,  sunucu,  yaz\i{}c\i{}  vb. a\u{g} \"{u}zerindeki cihazlara ilgili
n\"{u}merik adresleri ile eri\c{s}mek  kullan\i{}c\i{}lar  i\c{c}in fazla zor  de\u{g}ildi.
\.{I}nternet'in  beklenenden  daha  h\i{}zl\i{}  b\"{u}y\"{u}mesiyle birlikte artan
kullan\i{}c\i{} ve a\u{g}  \"{u}zerindeki  cihazlarla  birlikte n\"{u}merik   isimler
yerine   alfan\"{u}merik hat\i{}rlanmas\i{}  kolay bir  yap\i{} geli\c{s}tirildi.  Bu
yap\i{}ya  Alan  \.{I}simlendirme Sistemi (Domain Name System)  ad\i{}
verilmektedir. Genellikle k\i{}salt\i{}lm\i{}\c{s} \c{s}ekliyle DNS  olarak da
kullan\i{}lmaktad\i{}r.

Alan isimleri verilirken alt isimler (subdomain) genelden  \"{o}zele  do\u{g}ru
s\i{}ra izler. \"{O}rne\u{g}in, T\"{u}rkiye Linux Kullan\i{}c\i{}lar\i{} Grubu olarak ODT\"{U}'de yer alan
kullan\i{}c\i{}lar\i{}n kullanabilece\u{g}i alan ad\i{},

{\tt  metu.linux.org.tr }

\c{s}eklindedir. Burda alt isim (.) ile  birbirinden  ayr\i{}lm\i{}\c{s}t\i{}r.
En  alt  seviye  olan 'metu' ODT\"{U}'de yer alan Linux kullan\i{}c\i{}lar\i{}n\i{}, 
'linux' Linux  grubunu,  'org'  Linux  grubunun ticari  kayg\i{}lar  
g\"{u}tmeyen  bir organizasyon oldu\u{g}unu, 'tr' ise ISO taraf\i{}ndan  belirlenen 
T\"{u}rkiye'nin  \"{u}lke  kodudur.  

En \"{u}st d\"{u}zeydeki baz\i{} alan isimleri asa\u{g}\i{}da listelenmi\c{s}tir.

\begin{enumerate}
\item   .com            ticari  kurulu\c{s}lar (commercial)
\item   .edu            \"{u}niversite d\"{u}zeyindeki e\u{g}itim  kurumlar\i{}  (educational)
\item   .k12            lise d\"{u}zeyindeki e\u{g}itim kurumlar\i{}
\item   .org            ticari olmayan organizasyonlar
\item   .mil            askeri kurulu\c{s}lar (military)
\item   .net            a\u{g}  organizayonlar\i{}  (network)
\item   .\"{u}lke kodu      ISO taraf\i{}ndan belirlenen \"{u}lke kodu
\end{enumerate}





\section{TCP/IP uygulamalar\i{} ve DNS}



Makinalara ait isimlerin n\"{u}merik adresleri yerine  alfan\"{u}merik
isimlerin kullan\i{}lmas\i{}yla birlikte  DNS  standart  bir  hale gelmi\c{s}
olup \.{I}nternet \"{u}zerindeki \c{c}o\u{g}u uygulamalarda do\u{g}rudan alan
isimleri kullan\i{}lmaktad\i{}r.  TCP/IP uygulamalar\i{}nda ise alan isimleri
g\"{u}nl\"{u}k kullan\i{}mda IP (32-bitlik) adreslerinin yerini  alm\i{}\c{s}
durumdad\i{}r.  \"{O}rne\u{g}in,  {\tt metu.linux.org.tr}'a telnet ba\u{g}lant\i{}s\i{}
yapabilmek i\c{c}in hem,

\begin{verbatim}
$ telnet metu.linux.org.tr 
\end{verbatim}


komutu 

\begin{verbatim}
$ telnet 144.122.199.199 
\end{verbatim}


komutu yard\i{}m\i{}yla ula\c{s}abilirsiniz.  Fakat  herhangi  bir  \c{s}ekilde
ODT\"{U}'de  yeralan {\tt metu.linux.org.tr} sunucusunun  IP
adresinde de\u{g}i\c{s}iklik olursa yukar\i{}daki IP adresini kullanarak
eri\c{s}emezsiniz.  Oysa IP adresi yerine {\tt metu.linux.org.tr}
sunucusuna ba\u{g}lan\i{}rken alan ad\i{}n\i{} kullan\i{}rsan\i{}z bu ve benzeri
de\u{g}i\c{s}iklikler sizi etkilemez.

\c{S}imdi  kabaca   herhangi   bir   kullan\i{}c\i{}n\i{}n   {\tt metu.linux.org.tr}
adresine ba\u{g}lanmak   istedi\u{g}inde   ger\c{c}eklesen   DNS   sorgusunun   nas\i{}l
i\c{s}ledi\u{g}ini  ve   T\"{u}rkiye'deki  yap\i{}y\i{}  da   anlatacak   \c{s}ekilde
\"{o}rnekleyelim.

\"{O}rne\u{g}in, Amerika'da herhangi bir \.{I}nternet Servis Sa\u{g}lay\i{}c\i{}s\i{}'ndan (\.{I}SS)
ba\u{g}lant\i{} yapan bir kullan\i{}c\i{} {\tt http://www.linux.org.tr}
adresine  ba\u{g}lanmak  istedi.  Kullan\i{}c\i{}n\i{}n  bu  adresi  taray\i{}c\i{}s\i{}na
girmesinden itibaren \"{o}ncelikli olarak kendi  alan ad\i{} sunucusuna (name
server)  bu adrese kar\c{s}\i{}l\i{}k gelen IP adresini bulmak i\c{c}in gerekli
sorguyu yollayacakt\i{}r.  Kendi  alan ad\i{} sunucusu en \"{u}st d\"{u}zeyde yer
alan {\tt .tr}'\i{} g\"{o}rd\"{u}\u{g}\"{u}  andan  itibaren  bu  sorguya  kendinin  yan\i{}t
veremeyece\u{g}ini anlay\i{}p  bir \"{u}st alan ad\i{} sunucusuna ilgili sorguyu
yollacakt\i{}r. T\"{u}rkiye'nin alan ad\i{} sunucusunun {\tt knidos.cc.metu.edu.tr} oldu\u{g}u
bilgisini ald\i{}\u{g}\i{} andan itibaren sorguyu bu kez {\tt knidos.cc.metu.edu.tr} sunucusuna g\"{o}nderecek ve buradan da {\tt linux.org.tr} alan\i{}na ait bilgilerin {\tt metu.linux.org.tr}
sunucusunda tutuldu\u{g}unu \"{o}\u{g}renecek. Nihayet son sorgu {\tt  metu.linux.org.tr} sunucusuna yollanacak ve buradan da {\tt www.linux.org.tr}
adresine kar\c{s}\i{}l\i{}k gelen IP adresini \"{o}\u{g}renecek.




\section{BIND Konfig\"{u}rasyonu}



BIND, Linux da\u{g}\i{}t\i{}mlar\i{}n\i{}n hepsi ile gelen ve 
alan ad\i{} sorgular\i{}na yan\i{}t veren yaz\i{}l\i{}m paketidir.
A\c{c}\i{}l\i{}m\i{} Berkley Internet Domain Name \c{s}eklindedir.

Do\u{g}rudan Linux kurulu olan bir sunucu \"{u}zerindeki BIND 
konfig\"{u}rasyonuna  ge\c{c}meden  DNS  ile  ilgili  temel birka\c{c} konudan
bahsetmekte fayda var.   DNS  ile  ilgili
yaz\i{}l\i{}mlar\i{}   {\em istemci\/} ve {\em sunucu\/} olarak ikiye
ay\i{}rmak daha do\u{g}ru  olur:

Sunucu, istemciden gelen sorgulara yan\i{}t veren ve s\"{u}rekli \c{c}al\i{}\c{s}an
bir  i\c{s}lem  olup  BIND  paketinden  \c{c}\i{}kan {\tt  named } yaz\i{}l\i{}m\i{} bu i\c{s}i
g\"{o}r\"{u}r. \.{I}stemcilerse Linux da\u{g}\i{}t\i{}mlar\i{}yla  gelen  {\tt host},  {\tt nslookup}
vb. programlar olup  sorguyu  yapan  yaz\i{}l\i{}mlard\i{}r.  Bununla  birlikte BIND
konfig\"{u}rasyonunda s\i{}kl\i{}kla kar\c{s}\i{}m\i{}za \c{c}\i{}kacak olan  birka\c{c}  kavram
a\c{s}a\u{g}\i{}da a\c{c}\i{}klanmaktad\i{}r. Yeri  geldik\c{c}e  di\u{g}er  kavramlara da
de\u{g}inilecektir.

\begin{description}
\item[ primary name server ] \mbox{}

O alana ait b\"{u}t\"{u}n  bilgilerin  bulunaca\u{g}\i{}
sunucu  olup  bu ama\c{c}la konfig\"{u}re edilmi\c{s} sunucudur. ``primary name server''
bir alan i\c{c}in ancak bir  tane  olabilir.  ``primary name server''
tan\i{}mlarken,  {\tt named.hosts},  {\tt named.boot},  {\tt named.rev} ve {\tt named.cache} gibi dosyalara ihtiya\c{c} vard\i{}r.



\item[ secondary  name server ] \mbox{}

O  alana  ait  veritaban\i{}ndaki  bilgileri
``primary name server'' dan belirli aral\i{}klarla alan sunucudur. Belirli
aral\i{}klarla transfer edilen bu dosyalara zone-file  ad\i{}  verilir.
``primary name server'' dan  al\i{}nabilecek  yan\i{}tlar\i{}n ayn\i{}s\i{} ``secondary name
server'' dan da do\u{g}ru \c{s}ekilde al\i{}nabilir.



\item[ caching only name server ] \mbox{}

Bu \c{s}ekilde konfig\"{u}re  edilen  DNS
sunucular\i{}   yap\i{}lan   sorgular\i{}   ``cache'' de   tutup   bir sonraki
sorgu i\c{c}in bir \"{o}nceki ayn\i{} sorguya al\i{}nan yan\i{}t  kullan\i{}l\i{}r.  Bir
\c{c}ok  DNS   sunucusu   bu   \c{s}eklide  konfig\"{u}re  ediliyor  olmas\i{}na
ra\u{g}men ``caching only''  sunucular   her   zaman   sorgulara    do\u{g}ru
yan\i{}t vermeyebilir.

\end{description}


BIND paketi b\"{u}t\"{u}n Linux da\u{g}\i{}t\i{}mlar\i{} ile gelir. BIND'\i{}n yeni versiyonuna
ihtiya\c{c} duydu\u{g}unuzda \url{ftp.metu.edu.tr/sunsite/system/daemons/dns/}{ftp.metu.edu.tr} adresinden paketi transfer edebilirsiniz.
Gerekli  kurulumlar\i{}  yapt\i{}\u{g}\i{}n\i{}zda {\tt /usr/sbin} dizini alt\i{}na {\tt named} binary dosyas\i{}n\i{} koyacakt\i{}r.

{\tt  named }  konfig\"{u}rasyonu  ile  ilgili dosyalar  ve i\c{s}levleri 
a\c{s}a\u{g}\i{}da yeral\i{}yor.

\begin{description}


\item[ named.boot ] \mbox{}

Genel {\tt  named } parametrelerini ve o alana  ait
veritaban\i{} bilgilerinin nerede olaca\u{g}\i{} belirtilir.



\item[ named.cache ] \mbox{}

\.{I}nternet    \"{u}zerindeki  root  domain
sunucular\i{}n\i{}n   listesini   i\c{c}erir.   



\item[ named.local ] \mbox{}

loopback adresine ait tan\i{}mlar\i{} i\c{c}erir.



\item[ named.hosts ] \mbox{}

O domain ait makina  isimlerine  kar\c{s}\i{}l\i{}k
gelen IP numaralar\i{}n\i{}n bulundu\u{g}u dosya.



\item[ named.reverse ] \mbox{}

IP  adresine  kar\c{s}\i{}l\i{}k  gelen   isimlerin
listesinin tutuldu\u{g}u dosya.



\end{description}


Yukar\i{}da belirtilen dosya isimlerinden named.boot d\i{}\c{s}\i{}ndaki dosya
isimleri  genelde kar\c{s}\i{}la\c{s}\i{}lan isimler oldu\u{g}u i\c{c}in kullan\i{}lm\i{}\c{s}t\i{}r.
Bu dosya isimlerini istedi\u{g}iniz gibi de\u{g}i\c{s}tirebilirsiniz.

``named''  konfig\"{u}rasyonuyla ilgili kullan\i{}lan \"{o}rnek dosyalar
{\tt linux.org.tr} alan\i{}n\i{}n alan ad\i{} sunuculu\u{g}unu yapan {\tt metu.linux.org.tr} makinas\i{}ndan al\i{}nm\i{}\c{s}t\i{}r ({\tt linux.org.tr} ve
{\tt metu.linux.org.tr} ayn\i{} sunuculard\i{}r).




\subsection{named.boot Dosyas\i{}}



{\tt  named.boot } dosyas\i{} {\tt named} program\i{} \c{c}al\i{}\c{s}t\i{}\u{g}\i{}  zaman
bakt\i{}\u{g}\i{}  ilk konfig\"{u}rasyon  dosyas\i{}d\i{}r ve {\tt /etc} dizini
alt\i{}ndad\i{}r. {\tt named}, bu konfig\"{u}rasyon dosyas\i{} ile di\u{g}er
dosyalara veya  DNS  tan\i{}mlar\i{}n\i{}n tutuldu\u{g}u  di\u{g}er  dosyalara  nas\i{}l
ula\c{s}aca\u{g}\i{}n\i{} \"{o}\u{g}renir. A\c{s}a\u{g}\i{}da {\tt linux.org.tr} sunucusuna ait {\tt named.boot} dosyas\i{}n\i{} g\"{o}receksiniz.

\begin{verbatim}
;
;    boot file for name server
;
directory /etc/namedb

;type           domain                source host/file          backup file

cache           .                                               root.cache
primary         linux.org.tr                                    named.hosts
primary         0.0.127.IN-ADDR.ARPA                            named.local
forwarders      144.122.199.20
\end{verbatim}


{\tt  named.boot }  dosyas\i{}nda  yer  alan  sat\i{}rlara  k\i{}saca  g\"{o}z  atacak
olursak,

\begin{description}
\item[ directory ] \mbox{}

{\tt  named.boot} dosyas\i{}nda belirtilen  di\u{g}er  dosyalar\i{}
hangi dizin alt\i{}nda {\tt  named} program\i{}n\i{}n arayaca\u{g}\i{}n\i{} belirtir.



\item[ cache ] \mbox{}

cache dosyas\i{}n\i{} belirtir.



\item[ primary ] \mbox{}

primary'den hemen sonra gelen alan\i{}n primary name
server  oldu\u{g}unu  belirtir  ve  ilgili bilgileri de alan ad\i{}ndan
hemen sonra verilen dosya i\c{c}erisinde tutar. Bu sat\i{}r birden fazla
olabilir, bu durumda ise konfig\"{u}re edilen sunucu birden fazla
alan i\c{c}in primary name server olarak g\"{o}rev yapar.



\item[ forwarders ] \mbox{}

Sorgular\i{}na yan\i{}t veremedi\u{g}i istekleri
y\"{o}nlendirece\u{g}i sunucular\i{}n listelendi\u{g}i sat\i{}r.



\item[ slave] \mbox{}

Yukar\i{}daki konfig\"{u}rasyon dosyas\i{}nda olmayan fakat
ba\c{s}ka  bir yerde kar\c{s}\i{}n\i{}za \c{c}\i{}kabilecek olan slave sat\i{}r\i{} eklendi\u{g}i 
zaman name server sorgulara yan\i{}t vermek i\c{c}in  sadece  ve  sadece
forwarders sat\i{}r\i{}nda belirtilen sunucular\i{} kullanabilir.

\end{description}





\subsection{Caching Only Alan Ad\i{} Sunucu Konfig\"{u}rasyonu}



{\tt  linux.org.tr} sunucusu \"{u}zerindeki alan ad\i{} sunucu sadece
{\em caching only\/} olarak  \c{c}al\i{}\c{s}acak  olsayd\i{},  yukar\i{}da belirtilen
konfig\"{u}rasyon sat\i{}r\i{} a\c{s}a\u{g}\i{}daki hale gelirdi.

\begin{verbatim}
named.boot 
-----------  
;
;    boot file for name server
;
;type           domain                source host/file          backup file

cache           .                                               root.cache
primary         0.0.127.IN-ADDR.ARPA                            named.local
\end{verbatim}


Bu konfig\"{u}rasyonla \c{c}al\i{}\c{s}an alan ad\i{} sunucusu, {\tt named.cache} dosyas\i{}nda yer
alan  root  sunucular\i{}  kullanarak  gelen  sorgulara  yan\i{}t verip,
sorgular\i{}n yan\i{}tlar\i{}n\i{} cache'te tutmaktad\i{}r.




\subsection{Primary ve Secondary Alan Ad\i{} Sunucu Konfig\"{u}rasyonu}

Yine {\tt  linux.org.tr named.boot} dosyas\i{}na bakacak olursak,

\begin{verbatim}
 primary         linux.org.tr            named.hosts 
\end{verbatim}


sat\i{}r\i{}yla  {\tt linux.org.tr} makinas\i{} {\tt linux.org.tr}  alan\i{}   i\c{c}in
primary sunucu ve bu domain ile ilgili bilgilerin tutuldu\u{g}u dosya
ise {\tt named.hosts} dosyas\i{}d\i{}r. 

Yukar\i{}daki sat\i{}r\i{} named.boot  dosyas\i{}na   yazmam\i{}zla   asl\i{}nda  
i\c{s}imiz  bitmiyor.

{\tt linux.org.tr} sunucusu   {\tt linux.org.tr}  alan\i{} i\c{c}in
primary  oldu\u{g}unu, T\"{u}rkiye i\c{c}in root sunucu olan {\tt knidos.cc.metu.edu.tr} sunucusunun da bilmesi gerekiyor. Bunun i\c{c}in de
{\tt http://www.metu.edu.tr/\~{}dnsadmin} adresinden gerekli form
doldurup tan\i{}mlar\i{}n ODT\"{U}'deki y\"{o}neticiler taraf\i{}ndan yap\i{}lmas\i{}
gerekiyor. Bu form do\u{g}rultusunda da {\tt knidos.cc.metu.edu.tr}
sunucusunda a\c{s}a\u{g}\i{}daki sat\i{}rlar\i{}n girilmesi \c{s}artt\i{}r.

\begin{verbatim}
linux.org.tr.           IN      NS      metu.linux.org.tr.
metu.linux.org.tr.      IN      A       144.122.199.199
\end{verbatim}


\c{S}u an bu i\c{s}lemler zaten yap\i{}lm\i{}\c{s} olup sadece bilginiz olmas\i{} i\c{c}in 
bu sat\i{}rlar yaz\i{}lm\i{}\c{s}t\i{}r.

\begin{verbatim}
primary         0.0.127.IN-ADDR.ARPA    named.local
\end{verbatim}


sat\i{}r\i{}yla {\tt linux.org.tr} makinas\i{}nda 127.0.0.1 IP adresine kar\c{s}\i{}l\i{}k
gelen  {\em loopback\/} isminin  tan\i{}mlar\i{}n\i{}n  yer  alaca\u{g}\i{}  dosya  ad\i{}
verilmi\c{s}tir. 

E\u{g}er T\"{u}rkiye Linux Kullan\i{}c\i{}lar\i{} Grubunun  kendine  ait  bir  IP
adres  blo\u{g}u, \"{o}rne\u{g}in \c{s}u an ODT\"{U}'de kullan\i{}lan 144.122.199.0 blo\u{g}u 
verilmi\c{s} ve bu blok kendi alt gruplar\i{}na da\u{g}\i{}t\i{}lm\i{}\c{s}
olsayd\i{} bu  adreslere  ait  reverse  tan\i{}mlar  yine  {\tt linux.org.tr}
makinas\i{}nda  tutulacakt\i{}. B\"{o}yle bir durumda {\tt named.boot} dosyas\i{}na
a\c{s}a\u{g}\i{}daki sat\i{}r benzeri bir sat\i{}r daha  eklemek  gerekecekti.

\begin{verbatim}
primary         199.122.144.IN-ADDR.ARPA    named.144.122.199
\end{verbatim}


T\"{u}rkiye Linux Kullan\i{}c\i{}lar\i{} Grubu i\c{c}in kullan\i{}lan IP adresine ait
gerekli reverse tan\i{}m\i{} ilgili \"{u}niversitenin alan ad\i{} sunucusunda
girilmi\c{s} durumdad\i{}r. \"{O}rne\u{g}in, {\tt metu.linux.org.tr}  i\c{c}in {\tt knidos.cc.metu.edu.tr} sunucusunda a\c{s}a\u{g}\i{}daki sat\i{}r tan\i{}mlanm\i{}\c{s}t\i{}r.

\begin{verbatim}
199.199.122.144         IN      PTR     metu.linux.org.tr.
\end{verbatim}


Baz\i{} programlar\i{}n reverse tan\i{}mlar\i{}n\i{} kullan\i{}yor olmas\i{} nedeniyle
(\"{o}rne\u{g}in tcpd) bu t\"{u}r tan\i{}mlar\i{}n girilmesi \"{o}nemlidir. Bir veya daha fazla
C s\i{}n\i{}f\i{} \c{s}eklinde IP adres bloklar\i{} ald\i{}\u{g}\i{}n\i{}z zaman IP adresi ald\i{}\u{g}\i{}n\i{}z
kurumdan,
bu adres aral\i{}\u{g}\i{}n\i{}n reverse tan\i{}mlar\i{}n\i{} sizin alan ad\i{} sunucunuza
y\"{o}nlendirilmesini isteyebilirsiniz.   Bir C s\i{}n\i{}f\i{}ndan az say\i{}daki IP adresleri
i\c{c}inse yine IP adresini ald\i{}\u{g}\i{}n\i{}z kurum gerekli reverse tan\i{}mlar\i{} sizin
i\c{c}in yapmak zorundad\i{}r.

\c{S}u an {\tt linux.org.tr} makinas\i{} herhangi bir ba\c{s}ka primary sunucunun
secondary  sunucusu olmad\i{}\u{g}\i{} i\c{c}in {\tt named.boot} dosyas\i{}nda secondary
ge\c{c}en bir sat\i{}ra rastlamad\i{}k. \"{O}rne\u{g}in {\tt linux.org.tr} sunucusu  {\tt linux.org} sunucusunun secondary  alan ad\i{} sunucusu  oldu\u{g}unu
varsayal\i{}m, bu durumda a\c{s}a\u{g}\i{}daki sat\i{}r\i{} {\tt named.boot} dosyas\i{}na
eklemememiz gerekecek.

\begin{verbatim}
secondary         linux.org     198.182.196.49    SEC.linux.org
\end{verbatim}


Bu sat\i{}r\i{} ekledi\u{g}imiz andan itibaren  {\em named\/}  belirli  aral\i{}klarla
gidip linux.org sunucusundan  DNS dosyalar\i{}n\i{}n bir kopyas\i{}n\i{}
linux.org.tr sunucusuna aktaracak. linux.org alan\i{}n\i{}n secondary
sunucusu oldugumuza dair bilginin de ayr\i{}ca linux.org alan\i{}n\i{}n primary
tan\i{}mlar\i{}n\i{} tutan sunucuda belirtilmesi gerekir.




\subsection{named Konfig\"{u}rasyon Dosyas\i{}}

 

named  konfig\"{u}rasyon  dosyalar\i{}nda   ({\tt named.hosts,   named.local,
named.cache,   named.rev})   kar\c{s}\i{}la\c{s}\i{}lan konfig\"{u}rasyon 
parametreleri ve ne anlama geldikleri a\c{s}a\u{g}\i{}da yeralmaktad\i{}r.

\begin{description}
\item[ SOA  (Start  of   authority) ] \mbox{}

\.{I}lgili   dosyan\i{}n   ne   kadar
zaman aral\i{}klar\i{}nda yenilenebilece\u{g}i gibi bilgileri i\c{c}erir.

\item[ NS  (Name  Server) ] \mbox{}

Alan ad\i{} sunucusu   oldu\u{g}unu
belirtir.

\item[ A(Adress)  ] \mbox{}

Makina ismini IP adresine \c{c}evirir.

\item[ PTR (Pointer) ] \mbox{}

IP adresini makina ismine \c{c}evirir.

\item[ MX (Mail Exchange) ] \mbox{}

O alana ait mesajlar\i{}  hangi
makinan\i{}n da\u{g}\i{}taca\u{g}\i{}n\i{} belirtir.

\item[ CNAME(Canonical  Name) ] \mbox{}

Bir  makinaya  verilen   isimler
birden fazla ise bu isimleri belirtirken kullan\i{}l\i{}r.

\item[ HINFO  (Host  Information) ] \mbox{}

Belirtilen  sunucunun   i\c{s}letim
sistemi veya donan\i{}m\i{} konusunda bilgi verir.

\end{description}


{\tt named.hosts, named.local} vb. dosyalara girilen standart  bir  DNS
kayd\i{} a\c{s}a\u{g}\i{}daki yap\i{}da kar\c{s}\i{}m\i{}za \c{c}\i{}kar.

\begin{verbatim}
[name] [ttl] IN type data
\end{verbatim}


[ ] i\c{c}erisinde belirtilen de\u{g}erler iste\u{g}e ba\u{g}l\i{} olup
gerekmedi\u{g}i durumlarda yaz\i{}lmayabilir.

\begin{description}
\item[name] \mbox{}

Bu k\i{}sma tam domain ismi, makina ismi yaz\i{}labilir. 

\item[ttl (time-to-live)] \mbox{}

Burada belirtilen s\"{u}re kadar (bu s\"{u}re saniye
cinsindendir)  cache tutulabilecegini belirtir.  E\u{g}er herhangi bir
s\"{u}re  verilmemi\c{s}  ise  SOA  k\i{}sm\i{}nda verilen s\"{u}re kullan\i{}l\i{}r.

\item[IN] \mbox{}

Girilen kayd\i{}n DNS kayd\i{} oldu\u{g}unu belirtir. 

\item[type] \mbox{}

Yukar\i{}da  bahsetti\u{g}imiz   k\i{}saltmalardan   ilgili   olan\i{}
yaz\i{}l\i{}r.

\item[data] \mbox{}

Bu k\i{}sma IP adresi yaz\i{}l\i{}r.

\end{description}


\c{S}imdi de  bu  k\i{}saltmalar\i{}n  bulundu\u{g}u  {\tt named.cache,  named.hosts,
named.local}  gibi  dosyalardan  birer  kesit al\i{}p i\c{c}eriklerine g\"{o}z
atal\i{}m.

\begin{verbatim}
metu:/etc/namedb# more named.cache
;       last update:    Nov 8, 1995
;       related version of root zone:   1995110800
;
;
; formerly NS.INTERNIC.NET
;
.                        3600000  IN  NS    A.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.      3600000      A     198.41.0.4
;
; formerly NS1.ISI.EDU
;
.                        3600000      NS    B.ROOT-SERVERS.NET.
B.ROOT-SERVERS.NET.      3600000      A     128.9.0.107
;
;
\end{verbatim}


Yukar\i{}daki dosya, root name server'lar\i{}n listesinin yer ald\i{}\u{g}\i{}
dosyad\i{}r. S\"{u}regelen de\u{g}i\c{s}iklikler do\u{g}rultusunda bu dosyada  yer
alan kay\i{}tlar da de\u{g}i\c{s}ebilirler. S\"{u}rekli g\"{u}ncel tutmak
amac\i{}yla {\tt ftp://nic.ddn.mil/netinfo/root-servers.txt}    adresinden
dosyan\i{}n yeni halini belirli aral\i{}klarla almakta fayda vard\i{}r.

{\em ttl\/} s\"{u}resi  ise  olabildi\u{g}ince b\"{u}y\"{u}k verilerek root sunucular\i{}n
herhangi bir \c{s}ekilde cache'ten silinmesi \"{o}nlenmi\c{s} olur.

\begin{verbatim}
metu:/etc/namedb# more named.local
;
;       @(#)named.local 1.1     (Berkeley)      86/01/21
;
$ORIGIN 0.0.127.in-addr.arpa.
@       IN      SOA     metu.linux.org.tr. root.metu.linux.org.tr.  (
                                1996012201 ; Serial
                                3600    ; Refresh
                                300     ; Retry
                                3600000 ; Expire
                                14400 )  ; Minimum
        IN      NS      metu.linux.org.tr.
1       IN      PTR     localhost.
\end{verbatim}


{\tt IN SOA} ile ba\c{s}layan sat\i{}rda {\tt metu.linux.org.tr} adresi
ilgili domain konusunda yetkili sunucuyu, 
{\tt root.metu.linux.org.tr} ise herhangi bir \c{s}ekilde sorun
oldu\u{g}unda ba\u{g}lant\i{} kurulacak e-posta adresini ({\em root@metu.linux.org.tr\/}) belirtir.

Di\u{g}er bilgilerse s\i{}rayla {\tt metu.linux.org.tr}'\i{}n ``primary name server''
oldu\u{g}unu ve 127.0.0.1 IP adresine localhost isminin kar\c{s}\i{}l\i{}k geldi\u{g}ini
belirtir. 

\begin{verbatim}
metu:/etc/namedb# more named.hosts
; Authoritative data for Berkeley.EDU (ORIGIN assumed Berkeley.EDU)
;
$ORIGIN linux.org.tr.
@               IN      SOA     metu.linux.org.tr. root.metu.linux.org.tr. (
                                1997072902      ; Serial
                                10800   ; Refresh 3 hours
                                3600    ; Retry   1 hour
                                3600000 ; Expire  1000 hours
                                86400 ) ; Minimum 24 hours
                IN      MX          10 metu
                IN      NS          metu
                IN      HINFO       "i486" "Linux 2.0.27"
localhost.      IN      A           127.1
metu            IN      A           144.122.199.199
                IN      A           144.122.199.199
www             IN      CNAME       metu
ftp             IN      CNAME       metu
gopher          IN      CNAME       metu
listproc        IN      CNAME       metu
ege             IN      A           155.223.97.31
www.ege         IN      CNAME       ege
\end{verbatim}


burada di\u{g}er {\tt named.local} dosyas\i{}ndan farkl\i{} olarak makina ismi - IP
adresi e\c{s}lemesi yap\i{}lm\i{}\c{s} olup {\tt MX} ve {\tt CNAME} kavramlar\i{} kullan\i{}lm\i{}\c{s}t\i{}r.

{\bf MX} tan\i{}m\i{}n bulundu\u{g}u sat\i{}rda
{\tt linux.org.tr} domaini i\c{c}in e-postalar\i{} alabilecek sunucu
{\tt metu.linux.org.tr} olarak tan\i{}mlanm\i{}\c{s}. 10 rakam\i{} ise
{\tt metu.linux.org.tr}'nin {\tt linux.org.tr} olarak gelmesi
gereken mesajlardaki \"{o}nceli\u{g}ini belirtir. Say\i{} ne kadar k\"{u}\c{c}\"{u}k
verilirse \"{o}nceli\u{g}i o kadar fazlad\i{}r. 

{\bf HINFO} tan\i{}m\i{}n\i{}n bulundu\u{g}u sat\i{}r {\tt metu.linux.org.tr}'\i{}n 
donan\i{}m, i\c{s}letim sistemi ve s\"{u}r\"{u}m bilgilerini tutuyor.

{\bf CNAME} ge\c{c}en sat\i{}rlar ise {\tt metu.linux.org.tr} makinas\i{}n\i{}n
olmas\i{} d\"{u}\c{s}\"{u}n\"{u}len di\u{g}er isimlerini tan\i{}mlamak i\c{c}in kullan\i{}ld\i{}. \"{O}rne\u{g}in,
{\tt www.linux.org.tr} ile {\tt metu.linux.org.tr} ayn\i{} sunucular
olup {\tt www.linux.org.tr}, {\tt metu.linux.org.tr}'\i{}n bir di\u{g}er
ad\i{} (alias'\i{}) olarak g\"{o}z\"{u}kmektedir.

B\"{u}t\"{u}n bu konfig\"{u}rasyon i\c{s}lemleri bittikten sonra,

\begin{verbatim}
metu:/etc/namedb# named
\end{verbatim}


komutunu \c{c}al\i{}\c{s}t\i{}r\i{}p {\tt nslookup} veya {\tt host} gibi programlar
yard\i{}m\i{}yla name server'\i{}m\i{}z\i{}n \c{c}al\i{}\c{s}\i{}p \c{c}al\i{}\c{s}mad\i{}\u{g}\i{}n\i{} denemek kal\i{}yor.
\c{C}al\i{}\c{s}t\i{}rd\i{}\u{g}\i{}m\i{}zda verilen hata mesajlar\i{} {\tt /usr/adm/mesages}
dosyas\i{}na yaz\i{}l\i{}r.




\section{host ve nslookup Programlar\i{}n\i{}n Kullan\i{}m\i{}}



{\tt host} veya {\tt nslookup} programlar\i{} yard\i{}m\i{}yla {\em bind\/}
konfig\"{u}rasyonumuzun ilgili sunucuda do\u{g}ru \c{c}al\i{}\c{s}\i{}p \c{c}al\i{}\c{s}mad\i{}\u{g}\i{}n\i{} 
test edelim.

\"{O}rnek olarak, {\tt host} komutunu kullanarak {\tt linux.org.tr} i\c{c}in
{\tt knidos.cc.metu.edu.tr} 'da girilmesi gereken tan\i{}mlar\i{}n
do\u{g}rulu\u{g}unu kontrol edebiliriz.

\begin{verbatim}
$ nslookup
Default Server:  knidos.cc.metu.edu.tr
Address:  144.122.199.20

> linux.org.tr
Server:  knidos.cc.metu.edu.tr
Address:  144.122.199.20

Name:    linux.org.tr
Address:  144.122.199.199

> exit
\end{verbatim}


Yukar\i{}daki sat\i{}rlarda {\tt nslookup} yard\i{}m\i{}yla \"{o}ntan\i{}ml\i{} DNS sunucusu
olan {\tt knidos} makinas\i{}na linux.org.tr makinas\i{}n\i{}n IP adresini sorduk.
{\tt nslookup} komutunun -t se\c{c}ene\u{g}i yard\i{}m\i{}yla bir makina hakk\i{}nda 
daha ba\c{s}ka veriler almak da m\"{u}mk\"{u}nd\"{u}r.

\begin{verbatim}
> server metu.linux.org.tr
Default Server:  metu.linux.org.tr
Address:  144.122.199.199

> ls -t HINFO linux.org.tr
[metu.linux.org.tr]
 linux.org.tr.                  Linux       2.0.27
> 
\end{verbatim}


{\tt nslookup} \"{u}zerine daha fazla bilgi i\c{c}in komuta ait man sayfas\i{}na
g\"{o}zat\i{}n.

{\tt host} komutu da {\tt nslookup} komutunun bir tamamlay\i{}c\i{}s\i{} gibidir. 
A\c{s}a\u{g}\i{}da birka\c{c} \"{o}rnekle {\tt host} komutu anlat\i{}l\i{}yor.

\begin{verbatim}
$ host linux.org.tr
linux.org.tr has address 144.122.199.199
linux.org.tr mail is handled (pri=10) by metu.linux.org.tr
$ host www.ege.linux.org.tr
www.ege.linux.org.tr is a nickname for ege.linux.org.tr
ege.linux.org.tr has address 155.223.97.31
\end{verbatim}


Yukar\i{}da yeralan ilk komut yard\i{}m\i{}yla {\tt linux.org.tr} makinas\i{}n\i{}n isim-IP
d\"{o}n\"{u}\c{s}\"{u}m\"{u} yap\i{}lm\i{}\c{s} ve makinaya kar\c{s}\i{}l\i{}k gelen adresin 144.122.199.199 
oldu\u{g}u anla\c{s}\i{}lm\i{}\c{s}t\i{}r. 

\.{I}kinci {\tt host} komutuyla da benzer \c{s}ekilde {\tt www.ege.linux.org.tr} 
adresinin IP numaras\i{}n\i{} \"{o}\u{g}rendik. Ayr\i{}ca ayn\i{} IP numaras\i{}na kar\c{s}\i{}l\i{}k gelen
ve linux.org.tr domain'ine ait olan iki isim bulundu\u{g}u da yukar\i{}dan
kolayca anla\c{s}\i{}l\i{}yor.










\chapter{Di\u{g}er Kullan\i{}c\i{}larla \.{I}leti\c{s}im }



\.{I}nternet, ba\c{s}d\"{o}nd\"{u}r\"{u}c\"{u} bir h\i{}zla geli\c{s}mekte. D\"{u}nyada \.{I}nternet'e her
g\"{u}n onbinlerce kullan\i{}c\i{} eklenirken \.{I}nternet'e ba\u{g}l\i{} T\"{u}rk insan\i{}n\i{}n
say\i{}s\i{} (\c{s}imdilik) y\"{u}zbinlerle ifade ediliyor. Bunda \"{o}zellikle medyan\i{}n,
\.{I}nternet'in tan\i{}t\i{}m\i{}na yapt\i{}\u{g}\i{} etki \c{c}ok b\"{u}y\"{u}k. Konuyla ilgili hemen her
yaz\i{}da, bu dev a\u{g}\i{}n di\u{g}er ucundaki kullan\i{}c\i{}lardan bahsediliyor. \.{I}leti\c{s}im
teknolojisiyle birlikte kar\c{s}\i{}l\i{}kl\i{} konu\c{s}may\i{} iyice azaltan kesimlerin
\.{I}nternet'e olan merak\i{} da buradan geliyor.

Ger\c{c}ekten de \.{I}nternet'e ba\u{g}land\i{}\u{g}\i{}n\i{}zda hi\c{c} de yaln\i{}z olmad\i{}\u{g}\i{}n\i{}z\i{}
farkediyorsunuz. Biraz merakla, biraz u\u{g}ra\c{s}la d\"{u}nyan\i{}n \"{o}teki ucundan
ba\u{g}lanan insanc\i{}klarla ba\u{g}lant\i{} kurmak gayet kolay. \.{I}nternet'le bilgisini,
k\"{u}lt\"{u}r\"{u}n\"{u} art\i{}ran, yaln\i{}zl\i{}ktan kurtulan, ho\c{s}\c{c}a vakit ge\c{c}iren, hatta
evlenenlere bile rastlan\i{}yor. Bazen de bunun tam tersine, hayal
k\i{}r\i{}kl\i{}\u{g}\i{}na u\u{g}rayanlar da var. Ama \c{c}o\u{g}unluk bu sonsuz derinli\u{g}e bir
girdi\u{g}i zaman sihrinden kurtulam\i{}yor.

Di\u{g}er kullan\i{}c\i{}larla ileti\c{s}im kurabilmek i\c{c}in say\i{}s\i{}z yol y\"{o}ntem
var. Bunlardan en \c{c}ok bilineni {\em e-posta\/}. Mektupla var\i{}\c{s}\i{} g\"{u}nlerce
s\"{u}rebilecek bir mesaj, e-posta ile g\"{o}nderdi\u{g}inizde bakm\i{}\c{s}s\i{}n\i{}z ki birka\c{c}
dakika sonra kar\c{s}\i{}da.

Bunun yan\i{}nda haber gruplar\i{}na ba\u{g}lanmak ve onbinlerce {\em tart\i{}\c{s}ma 
grubundan\/} hangisini okuyaca\u{g}\i{}n\i{} \c{s}a\c{s}\i{}rmak da var.

{\em irc\/} (internet relay chat) ile binlerce odal\i{} bir eve girip her \"{u}lkeden,
her zevkte s\"{u}resiz arkada\c{s}l\i{}klar kurmak m\"{u}mk\"{u}n.

Bunlar\i{}n hepsi Linux ile m\"{u}mk\"{u}n. Yaz\i{}l\i{}mlar\i{} kurdu\u{g}unuz anda y\"{u}zlerce
\"{u}lkeden milyonlarca kullan\i{}c\i{} sizi ekran kar\c{s}\i{}s\i{}nda bekliyor. A\c{s}a\u{g}\i{}da
ileti\c{s}im kurabilmek i\c{c}in kullanan yaz\i{}l\i{}mlardan birka\c{c}\i{} anlat\i{}l\i{}yor.






\section{Pine }



Pine, e-posta atma ve okuma i\c{c}in en \c{c}ok kullan\i{}lan yard\i{}mc\i{} programlardan
biridir. Kurulumu ve kullan\i{}lmas\i{} kolay olan pine, Linux alt\i{}nda s\"{u}rekli
g\"{u}ncellenen bir yaz\i{}l\i{}md\i{}r.

Daha \"{o}nce pine kurmad\i{}ysan\i{}z size en yak\i{}n sunsite ar\c{s}ivinden indirip
kurmak m\"{u}mk\"{u}nd\"{u}r. Pine, a\c{c}\i{}ld\i{}\u{g}\i{} zaman a\c{s}a\u{g}\i{}daki gibi bir g\"{o}r\"{u}nt\"{u}yle
sizi kar\c{s}\i{}lar :



\begin{verbatim}
PINE 3.95   MAIN MENU                             Folder: INBOX  4 Messages

       ?     HELP               -  Get help using Pine
       C     COMPOSE MESSAGE    -  Compose and send a message
       I     FOLDER INDEX       -  View messages in current folder
       L     FOLDER LIST        -  Select a folder to view
       A     ADDRESS BOOK       -  Update address book
       S     SETUP              -  Configure or update Pine
       Q     QUIT               -  Exit the Pine program

Copyright 1989-1994.  PINE is a trademark of the University of Washington.
                    [Folder "INBOX" opened with 4 messages]
? Help                     P PrevCmd                  R RelNotes
O OTHER CMDS L [ListFldrs] N NextCmd                  K KBLock
\end{verbatim}


Pine program\i{}, kurs\"{o}r tu\c{s}lar\i{} ile kolayca y\"{o}netilebilir. En \"{u}st sat\i{}rda
pine hakk\i{}nda detayl\i{} bilgi alabilece\u{g}iniz b\"{o}l\"{u}m vard\i{}r. Di\u{g}er sat\i{}rlar
s\i{}rayla :

\begin{itemize}
\item {\bf COMPOSE MESSAGE :} E-posta haz\i{}rlay\i{}p g\"{o}ndermek i\c{c}in
\item {\bf FOLDER INDEX :} Gelen ve giden e-postalar\i{} gruplanabilir. Bu se\c{c}enek se\c{c}ilen grup i\c{c}indeki e-postalar\i{} ekrana getirir.
\item {\bf FOLDER LIST :} Posta grubu se\c{c}mek i\c{c}in 
\item {\bf ADDRESS BOOK :} Adres rehberi
\item {\bf SETUP :} Pine'\i{}n konfig\"{u}rasyonu bu se\c{c}enekle yap\i{}l\i{}r. 
\item {\bf QUIT :} Programdan \c{c}\i{}kar.
\end{itemize}


Pine'\i{}n kullan\i{}c\i{} dostu \"{o}zelliklerinden birisi, her komutu tek tu\c{s}
ile belirtebilmesi ve bu tu\c{s}lar\i{}n ne i\c{s}e yarad\i{}klar\i{}n\i{}n ekran\i{}n en alt
k\i{}sm\i{}nda s\"{u}rekli g\"{o}r\"{u}lebilmesidir. Bir komutu hat\i{}rlayamazsan\i{}z ekran\i{}n
en alt k\i{}sm\i{}na bak\i{}n.






\subsection{E-posta G\"{o}nderme }



Bir e-posta g\"{o}nderebilmek i\c{c}in kar\c{s}\i{}daki kullan\i{}c\i{}n\i{}n e-posta adresini
bilmeniz gerekecektir. Ana men\"{u}de COMPOSE MESSAGE sat\i{}r\i{}n\i{}n kar\c{s}\i{}s\i{}na
gelin ve return tu\c{s}una bas\i{}n. Bu andan itibaren pine'\i{}n edit\"{o}r\"{u}ne
gireceksiniz.



\begin{verbatim}
To      :
Cc      :
Attchmnt:
Subject :
----- Message Text -----
\end{verbatim}




{\em To:\/} k\i{}sm\i{}na mesaj g\"{o}ndermek istedi\u{g}iniz ki\c{s}inin e-posta adresini
yaz\i{}n. {\em Cc: (Carbon Copy)\/} b\"{o}l\"{u}m\"{u}nde ise, g\"{o}nderilen e-postan\i{}n ikinci ki\c{s}i
taraf\i{}ndan al\i{}nmas\i{} da istiyorsan\i{}z o ki\c{s}inin de e-posta adresini belirtin.

Pine ile sadece mesajlar\i{} de\u{g}il, herhangi bir dosyay\i{} da g\"{o}ndermek
m\"{u}mk\"{u}nd\"{u}r. {\em Attchmnt\/} k\i{}sm\i{}na, dosyan\i{}n ad\i{}n\i{} yaz\i{}n. Pine, dosyay\i{} ev
dizininde arayacak ve at\i{}lacak e-postan\i{}n i\c{c}ine ekleyecektir.

Subject (ba\c{s}l\i{}k) k\i{}sm\i{}nda, mesaj\i{}n i\c{c}eri\u{g}ini belli eden birka\c{c} kelime
yaz\i{}n ve return tu\c{s}una bas\i{}n. Art\i{}k istedi\u{g}inizi yazabilirsiniz.

\begin{verbatim}
To      : sonmez@cclub.metu.edu.tr
Cc      :
Attchmnt: 1. /home/murat/adresler (2.8 KB) ""
Subject :
----- Message Text -----

Selam,
Istediklerini ekte yolluyorum. Umarim isine yarar.
Gorusuruz.
\end{verbatim}

Mesaj\i{} yollamak i\c{c}in {\tt Control-X}, vazge\c{c}mek i\c{c}in {\tt Control-C} tu\c{s}una
bas\i{}n. Yukar\i{}da da belirtildi\u{g}i gibi, {\tt pine}'\i{}n t\"{u}m komutlar\i{} ekran\i{}n alt
k\i{}sm\i{}na yaz\i{}lm\i{}\c{s}t\i{}r.






\subsection{E-posta Okuma}



Pine, a\c{c}\i{}ld\i{}\u{g}\i{} anda ana men\"{u}ye gelir. Herhangi bir alt men\"{u}den ana men\"{u}ye
ge\c{c}mek i\c{c}in m tu\c{s}una bas\i{}n. Buradayken gelen e-postalar\i{} okuyabilmek
i\c{c}in {\em FOLDER INDEX\/}'e ge\c{c}in.

\begin{verbatim}
+   1   Sep 15 To: root@linux.lin  (4,394) Register with the Linux counter proje
+   2   Sep 15 Patrick J. Volkerd  (2,671) Welcome to Linux!
\end{verbatim}


Burada gelen e-postalar\i{}n ne zaman, kim taraf\i{}ndan yolland\i{}\u{g}\i{}, uzunlu\u{g}u
ve ba\c{s}l\i{}\u{g}\i{} yeral\i{}r. Okumak i\c{c}in ok tu\c{s}lar\i{}yla bir tanesinin \"{u}zerine
gelip return tu\c{s}una bas\i{}n.






\subsection{E-posta Silme}



Gelen e-postalar\i{}n diskte fazla yer tutmas\i{}n\i{} \"{o}nlemek i\c{c}in bazen
kontrol etmelisiniz. \"{O}zellikle e-posta arac\i{}l\i{}\u{g}\i{}yla fazla miktarda
program al\i{}\c{s}-veri\c{s}i yap\i{}yorsan\i{}z k\i{}sa s\"{u}rede yer kalmad\i{}\u{g}\i{}n\i{} g\"{o}rmeniz
i\c{s}ten bile de\u{g}il. Ayr\i{}ca her eklenen e-posta, pine'\i{} a\c{c}\i{}l\i{}\c{s} s\i{}ras\i{}nda
yava\c{s}latacakt\i{}r.

E-postalar\i{} silebilmek i\c{c}in, ana men\"{u}den FOLDER INDEX'e ge\c{c}in. Burada
silmek istenilen e-postan\i{}n \"{u}zerine y\"{o}n tu\c{s}lar\i{} ile gelip D tu\c{s}una bas\i{}n.

\begin{verbatim}
+ D 1   Sep 15 To: root@linux.lin  (4,394) Register with the Linux counter project 
+   2   Sep 15 Patrick J. Volkerd  (2,671) Welcome to Linux!
\end{verbatim}


Sat\i{}r\i{}n ba\c{s}\i{}nda D karakteri belirecektir. Silmek istedi\u{g}iniz dosya
diskten hemen silinmez. Sistemden \c{c}\i{}karken Pine, bunlar\i{} silmek isteyip
istemedi\u{g}inizi sorar, sonra siler.






\section{Etkile\c{s}imli \.{I}leti\c{s}im Y\"{o}ntemleri }



Pine, kullan\i{}m kolayl\i{}\u{g}\i{} ile kullan\i{}c\i{}ya cazip gelirken, at\i{}lan
mesajlar\i{}n kar\c{s}\i{}ya an\i{}n\i{}nda gitmemesi, hatta yolda kaybolmas\i{} olas\i{}l\i{}\u{g}\i{}
bile vard\i{}r. Buna kar\c{s}\i{}n bir kere at\i{}ld\i{}\u{g}\i{} zaman e-postay\i{} alan ki\c{s}i
bunu istedi\u{g}i zaman okur, yani e-posta at\i{}l\i{}rken kar\c{s}\i{}daki kullan\i{}c\i{}n\i{}n
sistemde o an bulunmas\i{} \c{s}art de\u{g}ildir.

{\tt write, talk} ve {\tt irc}, daha pratik ve an\i{}nda ileti\c{s}ime izin veren programlard\i{}r. {\tt write} ile ayn\i{} makina \"{u}zerindeki kullan\i{}c\i{}yla an\i{}nda ileti\c{s}im kurmak m\"{u}mk\"{u}n olur. Komut sat\i{}r\i{}nda {\tt write} ve konu\c{s}mak istedi\u{g}iniz kullan\i{}c\i{}n\i{}n ismini yazmak yeterlidir.

\begin{verbatim}
linux:~$ write gorkem
cok aciktim. yemege gidelim
\end{verbatim}


Mesaj g\"{o}nderme bitti\u{g}i zaman Control-C yard\i{}m\i{}yla \c{c}\i{}k\i{}labilir. Ayn\i{}
\c{s}ekilde mesaj\i{} alan kullan\i{}c\i{} da {\tt write} ile cevap verebilir.

{\tt write}, k\i{}sa s\"{u}ren mesajla\c{s}malarda etkili olurken uzun s\"{u}recek konu\c{s}malarda
genellikle {\tt talk} kullan\i{}l\i{}r. {\tt talk} yard\i{}m\i{}yla mesajla\c{s}an kullan\i{}c\i{}lar\i{}n
herbirinin ekranlar\i{} enine ikiye b\"{o}l\"{u}n\"{u}r. Ekran\i{}n bir yar\i{}s\i{}nda gelen
mesajlar, \"{o}teki yar\i{}s\i{}nda giden mesajlar g\"{o}r\"{u}n\"{u}r.

{\tt talk} ve {\tt write} genellikle iki ki\c{s}i aras\i{}nda ileti\c{s}im kurmak i\c{c}in
kullan\i{}l\i{}r. Bunlar\i{}n yan\i{}nda {\tt irc}, ayn\i{} anda binlerce kullan\i{}c\i{}n\i{}n
ba\u{g}land\i{}\u{g}\i{} bir d\"{u}nyad\i{}r. Uygun bir yaz\i{}l\i{}mla d\"{u}nyan\i{}n d\"{o}rt bir yan\i{}nda
bulunan sunuculara ba\u{g}lanmak suretiyle {\tt irc}'ye girilebilir. \c{C}ok basit birka\c{c}
komutla y\"{u}zlerce kanala girip her kanaldaki onlarca ki\c{s}iyle yaz\i{}\c{s}mak
olas\i{}d\i{}r. \.{I}ster \"{o}zel mesaj g\"{o}nderirsiniz, ister belirli bir konuda
yap\i{}lan konferansa kat\i{}l\i{}rs\i{}n\i{}z. 

Linux'unuzda {\tt irc} yaz\i{}l\i{}m\i{} yoksa sunsite ar\c{s}ivinden al\i{}p kolayca kurabilirsiniz.






\section{Haber Gruplar\i{}}



Haber gruplar\i{}n\i{}, milyonlarca ki\c{s}inin e-posta al\i{}p g\"{o}nderdi\u{g}i bir yer
olarak d\"{u}\c{s}\"{u}nebiliriz. D\"{u}nya \"{u}zerinde haber gruplar\i{}na ait e-postalar\i{}
da\u{g}\i{}tma i\c{s}lemini \"{u}stlenmi\c{s} pek \c{c}ok omurga vard\i{}r. Bunlar, di\u{g}er alt haber
grubu sunucular\i{}na \"{u}creti kar\c{s}\i{}l\i{}\u{g}\i{}nda e-postalar\i{} g\"{o}nderirler. Normal
bir kullan\i{}c\i{} da bu sunuculara ba\u{g}lan\i{}p haberleri okur.

\.{I}nternet \"{u}zerinde bu haber sunucular\i{}na ba\u{g}lanmak i\c{c}in {\em NNTP\/} protokol\"{u}
kullan\i{}l\i{}r. Alternatif olarak kendi Linux makinan\i{}z \"{u}zerinde siz de
k\"{u}\c{c}\"{u}k bir haber sunucu yaratabilirsiniz.

Haber gruplar\i{}na ba\u{g}land\i{}\u{g}\i{}n\i{}zda kar\c{s}\i{}n\i{}za bir men\"{u} \c{c}\i{}kar. Bu men\"{u}de
konular\i{}na g\"{o}re s\i{}n\i{}fland\i{}r\i{}lm\i{}\c{s} gruplar vard\i{}r. Kullan\i{}c\i{} bu gruplardan
birini se\c{c}erek daha \"{o}nce yollanm\i{}\c{s} e-postalar\i{} okuyabilir ve isterse
kendisi de bir e-posta g\"{o}nderebilir. Her grubun bir ismi vard\i{}r ve bu
isimlerde alt gruplar\i{} belirtmek amac\i{}yla noktalar kullan\i{}l\i{}r. \"{O}rne\u{g}in
Linux grubuna ait onlarca haber grubundan {\em comp.os.linux, comp.os.linux.x\/}
ve {\em comp.os.linux.setup\/} \"{o}rnek verilebilir.

Haber gruplar\i{}n\i{} okumak i\c{c}in en \c{c}ok kullan\i{}lan iki program {\tt tin} ve
{\tt trn}'dir. tin'e girince ekranda \"{u}ye olunmu\c{s} haber gruplar\i{}n\i{}n bir listesi
\c{c}\i{}kar. Bunlardan istedi\u{g}iniz bir tanesine return tu\c{s}unu kullanarak
girebilirsiniz. Ard\i{}ndan ekranda bu gruba g\"{o}nderilen e-postalar
yeralacakt\i{}r. Burada yapabilecekleriniz aras\i{}nda bir mesaj\i{} okumak veya
cevap yazmak vard\i{}r. q tu\c{s}uyla {\tt tin}'den \c{c}\i{}kabilirsiniz.

A\c{s}a\u{g}\i{}da tin komutu \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}\u{g}\i{} anda ekrana gelen haber gruplar\i{}
yeral\i{}yor. \.{I}stedi\u{g}iniz haber grubuna s (subscribe) tu\c{s}uyla \"{u}ye olabilir,
istemediklerinizi u (unsubscribe) ile silebilirsiniz. Linux'unuzun
ba\u{g}land\i{}\u{g}\i{} sunucunun kapasitesine g\"{o}re teorik olarak onbinlerce haber grubunu okumak m\"{u}mk\"{u}nd\"{u}r.

\begin{verbatim}

           Group Selection (news.metu.edu.tr  18)               h=help

      1        alt.os.linux              Use comp.os.linux.* instead.
      2        comp.os.linux
      3        comp.os.linux.admin
      4        comp.os.linux.advocacy    Benefits of Linux compared to other o
      5        comp.unix.shell           Using and programming the Unix shell.
      6        gnu.bash.bug              Bourne Again SHell bug reports and su
      7        comp.lang.perl
      8        comp.graphics.algorithms  Algorithms used in producing computer
      9        metu.cc.hot-line
     10        alt.2600                  The magazine or the game system.  You
     11        comp.sys.cbm        The commodore computers
     12        alt.2600.codez            No description.
     13        alt.3d                    Use alt.3d.misc instead.
     14        alt.c64                   Use comp.sys.cbm instead.
     15        alt.cd-rom                Discussions of optical storage media.
     16        alt.cookies.yum.yum.yum   Use rec.food.baking instead.
     17        alt.music.ozzy            Blizzard of Osbourne.

      <n>=set current to n, TAB=next unread, /=search pattern, c)atchup,
   g)oto, j=line down, k=line up, h)elp, m)ove, q)uit, r=toggle all/unread,
     s)ubscribe, S)ub pattern, u)nsubscribe, U)nsub pattern, y)ank in/out
\end{verbatim}




Ekran\i{}n en alt\i{}nda tin komutlar\i{}n\i{}n bir listesi vard\i{}r. Bir e-postaya
cevap yazmak i\c{c}in o mesaj\i{} okurken f tu\c{s}una bas\i{}n.

Diyelim ki farkl\i{} bir haber sunucusuna ba\u{g}lanmak istiyorsunuz. tin komutu,
{\tt NNTPSERVER} kabuk de\u{g}i\c{s}kenini okuyarak bu de\u{g}i\c{s}kende bulunan sunucuya
ba\u{g}lan\i{}r. Buradaki makinan\i{}n ismini de\u{g}i\c{s}tirmek suretiyle diledi\u{g}iniz
bir sunucuya ba\u{g}lanman\i{}z olas\i{}d\i{}r.

\begin{verbatim}
$ export NNTPSERVER=news.metu.edu.tr
$ tin -r
\end{verbatim}





\chapter{\.{I}nternet Ara\c{c}lar\i{}}






\section{FTP }



{\em FTP\/} (file transfer protocol), bir makinadan di\u{g}erine yap\i{}lan dosya transferinde en \c{c}ok kullan\i{}lan yollardan biridir.  \.{I}nternet deste\u{g}i olan i\c{s}letim sistemlerinin hepsinde (MS-DOS, Windows, OS/2 ... ) ftp, standart program olarak kullan\i{}c\i{}lar\i{}n hizmetine sunulmu\c{s} durumdad\i{}r. Linux alt\i{}nda da ftp deste\u{g}i vard\i{}r. Ekte \.{I}nternet \"{u}zerinde yeralan Linux d\"{o}k\"{u}manlar\i{}n\i{}n listesine bakt\i{}\u{g}\i{}n\i{}z zaman \c{c}o\u{g}unun ftp adreslerinden temin edilebildi\u{g}ini g\"{o}receksiniz.

FTP, dosyalar\i{} alabilmenizle birlikte istedi\u{g}iniz adrese yollaman\i{}za da izin verir. E\u{g}er \.{I}nternet'e ba\u{g}l\i{}ysan\i{}z ve Linux kullan\i{}yorsan\i{}z {\tt ftp} vazge\c{c}emeyece\u{g}iniz bir program olacak\i{}r. 




\subsection{Temel FTP Komutlar\i{}}



FTP, \.{I}nternet'e ba\u{g}l\i{} olan makinalarda anlam kazan\i{}r ve g\"{u}c\"{u}n\"{u} hissettirir. Saniyeler i\c{c}inde onlarca dosya, y\"{u}zlerce kilobayt bilgi transfer edilebilir. FTP'ye ba\c{s}lamak i\c{c}in kullanabilece\u{g}iniz iki komut var. Birisi, standart ftp paketinden \c{c}\i{}karn 'ftp' komutu, di\u{g}eri de 'ncftp' komutu. \.{I}kisinin de avantajlar\i{} olmas\i{}na ra\u{g}men 'ncfp' nin kullan\i{}c\i{}ya y\"{o}nelik kullan\i{}m kolayl\i{}\u{g}\i{} vard\i{}r. Siz de 'ncftp' kullan\i{}n. 

Bir FTP adresine ba\u{g}lanmak i\c{c}in o adresin IP numaras\i{}n\i{} veya ismini bilmeniz yeterli. \c{C}ok geni\c{s} bir Linux ar\c{s}ivi olan linux.org.tr adresine ba\u{g}lanmak i\c{c}in:

\begin{verbatim}
# ftp linux.org.tr 
\end{verbatim}


yaz\i{}n. Ekranda a\c{s}a\u{g}\i{}daki gibi bir g\"{o}r\"{u}nt\"{u} gelecektir. {\em Ncftp\/}, ftp yapmak i\c{c}in gerekli olan kullan\i{}c\i{} kodunu ve \c{s}ifreyi kendisi g\"{o}nderir ve otomatik olarak kar\c{s}\i{}daki adrese ba\u{g}lan\i{}r. E\u{g}er ftp kullan\i{}yor olsayd\i{}n\i{}z, kullan\i{}c\i{} kodu i\c{c}in {\em anonymous\/} veya {\em ftp\/}, \c{s}ifre i\c{c}in de e-posta adresini girmeniz gerekecekti.

\begin{verbatim}
linux:~$ ftp linux.org.tr
Connected to linux.org.tr.
220 metu FTP server (Version wu-2.4(1) Tue Aug 8 15:50:43 CDT 1996) ready.
Name (linux.org.tr:root): ftp
331 Guest login ok, send your complete e-mail address as password.
Password:
230-Welcome, archive user!  This is an experimental FTP server.  If have any
230-unusual problems, please report them via e-mail to root@metu
230-If you do have problems, please try using a dash (-) as the first character
230-of your password -- this will turn off the continuation messages that may
230-be confusing your ftp client.
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> 
\end{verbatim}


Kar\c{s}\i{}daki makinaya ba\u{g}land\i{}k ve \"{o}n\"{u}m\"{u}ze bir komut sat\i{}r\i{} \c{c}\i{}kt\i{}. Bu komut sat\i{}r\i{}nda kullan\i{}labilecek ftp komutlar\i{}n\i{}n listesini g\"{o}rmek i\c{c}in 

\begin{verbatim}
ftp> help 
\end{verbatim}


yaz\i{}n. Bir komut hakk\i{}nda daha ayr\i{}nt\i{}l\i{} bilgi elde etmek i\c{c}in ise
'help' komutunun hemen ard\i{}ndan ftp komutunu getirebilirsiniz. \c{S}imdi
patika ismini bildi\u{g}imiz bir dosyay\i{} kendi hesab\i{}m\i{}za \c{c}ekelim. \"{O}ncelikle
nerede oldu\u{g}umuzu g\"{o}relim. Bunun i\c{c}in Linux komutunun benzeri olan {\tt ls}
veya {\tt dir} komutunu kullan\i{}n.

\begin{verbatim}
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 9
drwxrwxr-x   8 root     wheel        1024 Jan  7  1980 .
drwxrwxr-x   8 root     wheel        1024 Jan  7  1980 ..
drwxrwxr-x   2 root     wheel        1024 Jan  7  1980 bin
drwxrwxr-x   2 root     wheel        1024 Jan  7  1980 etc
drwxrwxr-x   2 root     wheel        1024 Dec  3  1993 incoming
drwxrwxr-x   2 root     wheel        1024 Nov 17  1993 lib
drwxrwxr-x  12 root     wheel        1024 Feb 14 08:08 pub
drwxrwxr-x   3 root     wheel        1024 Jan  7  1980 usr
-rw-r--r--   1 root     root          312 Aug  1  1994 welcome.msg
226 Transfer complete.
\end{verbatim}


Bir ftp adresine ba\u{g}land\i{}ktan sonra genelde her adreste yeralan {\em pub\/} , {\em incoming\/}, {\em bin\/} gibi dizinler g\"{o}receksiniz. Bunlardan \c{s}u an i\c{c}in i\c{s}imize yarayan\i{} pub dizini olacakt\i{}r. Bir dizine girmek i\c{c}in yine bir UNIX komutu olan 'cd' ve ard\i{}ndan 'pub' yaz\i{}n.

\begin{verbatim}
ftp> cd pub
\end{verbatim}


\c{S}imdi `pub' dizini alt\i{}nday\i{}z. Genellikle her t\"{u}rl\"{u} program, uygulama yaz\i{}l\i{}m\i{}, a\u{g} uygulamalar\i{} ve  \c{c}e\c{s}itli dosyalar bu dizin alt\i{}nda bulunur. Burada hangi dosya ve dizinler oldu\u{g}unu g\"{o}relim.

\begin{verbatim}
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 12
drwxrwxr-x  12 root     wheel        1024 Feb 14 08:08 .
drwxrwxr-x   8 root     wheel        1024 Jan  7  1980 ..
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 X
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 applications
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 development
drwxr-xr-x   2 root     root         1024 Feb 14 08:08 distributions
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 docs
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 games
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 graphics
drwxr-xr-x   2 root     root         1024 Feb 14 08:09 kernel
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 network
drwxr-xr-x   2 root     root         1024 Feb 14 08:07 sunsite
226 Transfer complete.
ftp>
\end{verbatim}


\"{O}rne\u{g}in 'kernel' dizini alt\i{}nda yeralan bir \c{c}ekirdek dosyas\i{}n\i{} kendi makinam\i{}za alal\i{}m.

\begin{verbatim}
ftp> cd kernel
250 CWD command successful.
\end{verbatim}


Ftp protokol\"{u}nde, dosyalar\i{}n bir makinadan di\u{g}erine ta\c{s}\i{}nmas\i{} esnas\i{}nda
dosyan\i{}n \c{c}al\i{}\c{s}t\i{}r\i{}labilir (ar\c{s}ivler, s\i{}k\i{}\c{s}t\i{}r\i{}lm\i{}\c{s} dosyalar ve di\u{g}erleri)
veya metin dosyas\i{} olmas\i{} hayati \"{o}nem ta\c{s}\i{}r. \.{I}nternet \"{u}zerinde, zamandan
tasarruf amac\i{}yla t\"{u}m dosyalar ASCII formatta ta\c{s}\i{}n\i{}rlar. \c{C}al\i{}\c{s}t\i{}r\i{}labilir
dosyalar 8 bitlik karakterlerden olu\c{s}tu\u{g}u i\c{c}in bunlar\i{} indirebilmek
i\c{c}in ta\c{s}\i{}ma i\c{s}leminin 8 bit halinde yap\i{}lmas\i{} gerekir.  'ftp' komutunu
kullan\i{}yorsan\i{}z \c{c}al\i{}\c{s}t\i{}r\i{}labilir dosyalar\i{} \c{c}ekmeden \"{o}nce

\begin{verbatim}
ftp> binary
\end{verbatim}


yaz\i{}n. Dosyan\i{}n t\"{u}r\"{u}n\"{u} bilmedi\u{g}iniz durumlarda yine 'binary' komutunu kullan\i{}n. Siz en iyisi, ftp yaparken kar\c{s}\i{}daki makinaya girdikten hemen sonra 'binary' yaz\i{}n. {\tt ncftp} kullan\i{}rken program bunu sizin i\c{c}in otomatik olarak yapacakt\i{}r. 

Dosyay\i{} indirmeden \"{o}nce, kontrol edilmesi gereken bir \c{s}ey de dosyan\i{}n indirilece\u{g}i yerel dizinini belirtmektir. Burada {\tt linux-1.3.56.tar.gz} program\i{}n\i{} 'kernel' dizininin alt\i{}na \c{c}ekelim. Bunun i\c{c}in {\tt lcd} komutunu kullanal\i{}m.

\begin{verbatim}
ftp> lcd /root/kernel
Local directory now /root/kernel
\end{verbatim}


Art\i{}k istedi\u{g}imiz dosyay\i{} indirebiliriz. Dosyalar\i{} almak i\c{c}in {\tt get} komutu kullan\i{}l\i{}r. 

\begin{verbatim}
ftp> dir
200 PORT command successful.
150 Opening ASCII mode data connection for /bin/ls.
total 5838
drwxr-xr-x   2 root     root         1024 Feb 14 08:09 .
drwxrwxr-x  12 root     wheel        1024 Feb 14 08:08 ..
-rw-r--r--   1 root     root      5951488 Feb 14 08:10 linux-1.3.56.tar.gz
226 Transfer complete.
ftp> get linux-1.3.56.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for linux-1.3.56.tar.gz (5951488 bytes).
226 Transfer complete.
5951488 bytes received in 26 secs (2.2e+02 Kbytes/sec)
\end{verbatim}


26 saniye i\c{c}inde yakla\c{s}\i{}k 6 MB b\"{u}y\"{u}kl\"{u}\u{g}\"{u}ndeki dosyay\i{} \c{c}ektik. Sizin \.{I}nternet'e ba\u{g}lant\i{} h\i{}z\i{}n\i{}za ba\u{g}l\i{} olarak dosyay\i{} yerel diske yazma s\"{u}resinde de\u{g}i\c{s}iklikler olabilir. Yukar\i{}daki i\c{s}lemleri istedi\u{g}iniz kadar tekrar edip gereken dosyalar\i{} \c{c}ektikten sonra ftp'den \c{c}\i{}kmak i\c{c}in 

\begin{verbatim}
ftp> quit
221 Goodbye.
\end{verbatim}


komutunu kullan\i{}n. Sunucu makinayla ba\u{g}lant\i{}n\i{}z kesilecek ve kabuk komut sat\i{}r\i{}na geri d\"{o}neceksiniz.






\section{WWW (World Wide Web)}



\.{I}nternet'in kimli\u{g}ini bulmas\i{}n\i{} sa\u{g}layan etmenlerden ba\c{s}l\i{}cas\i{} WWW'dir. WWW sayesinde \c{c}e\c{s}itli yap\i{}da dosyalar, grafik arabirimi kullan\i{}ls\i{}n veya kullan\i{}lmas\i{}n kolayl\i{}kla iletilebilir. Linux'u bir web sunucu haline getirmek i\c{c}in tek yap\i{}lmas\i{} gereken, bu dosyalar\i{} belirli bir dizin alt\i{}na yerle\c{s}tirip WWW sunucusunu ba\c{s}latmak. 

\.{I}nternet'te yeralan bilginin hesab\i{} yoktur. Bu bilgi deposunu
verimli \c{s}ekilde kolayca kullanabilir, hatta g\"{u}nl\"{u}k ya\c{s}am\i{}n\i{}zla
birle\c{s}tirebilirsiniz. \"{O}\u{g}renciler, ev \"{o}devlerini ansiklopediler
kar\i{}\c{s}t\i{}rmak yerine \.{I}nternet'ten bulup \c{c}\i{}karabilirler. \"{O}\u{g}retmenler, s\i{}nav
sorular\i{}n\i{} \.{I}nternet'ten bulabilirler. \"{U}niversitelerdeki baz\i{} fak\"{u}ltele
hocalar\i{} \"{o}devleri \.{I}nternet'te sunuyor ve cevaplar\i{} da e-posta olarak
istiyorlar. 

Web \"{u}zerinde tarama yapmak amac\i{}yla kurulan ve her hafta milyonlarca
ziyaret\c{c}isi bulunan baz\i{} adresler vard\i{}r. Bu sayfalara ba\u{g}lanmak suretiyle
bir anahtar kelime yard\i{}m\i{}yla bu anahtar kelimenin ge\c{c}ti\u{g}i WWW adresleri
taranabilir. A\c{s}a\u{g}\i{}da s\i{}k\c{c}a kullan\i{}lan arama-tarama adresleri yeral\i{}yor.

\begin{itemize}
\item \url{http://www.altavista.digital.com}{altavista}
\item \url{http://www.yahoo.com}{yahoo}
\item \url{http://www.lycos.com}{lycos}
\item \url{http://www.webcrawler.com}{webcrawler}
\item \url{http://www.infoseek.com}{infoseek}
\end{itemize}


\"{O}zellikle birinci s\i{}radaki altavista WWW sunucusu, 40 milyonun \"{u}zerinde
adres girdisiyle inan\i{}lmaz geni\c{s}likte bir bilgi bankas\i{} olarak g\"{o}ze
\c{c}arp\i{}yor.

WWW sayfalar\i{}na eri\c{s}ebilmek i\c{c}in kullan\i{}lan programlar aras\i{}nda metin
temelli olan ve ekranda resim g\"{o}stermeye imkan vermeyen {\em lynx\/} ve X Window
alt\i{}nda \c{c}al\i{}\c{s}an ve onlarca \c{c}e\c{s}it d\"{o}k\"{u}man yap\i{}s\i{}n\i{} tan\i{}yabilen {\em Netscape\/}
say\i{}labilir.

Web sayfalar\i{}na ba\u{g}lan\i{}rken kullan\i{}lan protokole HTTP (HyperText Transfer
Protocol) ad\i{} verilir.






\subsection{WWW Sunucusunun Konfig\"{u}rasyonu}



Linux'un web sunucusu olarak g\"{o}rev yapabilmesi i\c{c}in httpd daemon'un
\c{c}al\i{}\c{s}mas\i{} gereklidir. Bu yaz\i{}l\i{}m genellikle sistemin a\c{c}\i{}l\i{}\c{s}\i{} s\i{}ras\i{}nda
\c{c}al\i{}\c{s}t\i{}r\i{}larak arkaplana at\i{}l\i{}r.

Di\u{g}er kullan\i{}c\i{}lar\i{}n sorumlu oldu\u{g}unuz Linux \"{u}zerindeki dosyalara WWW
\"{u}zerinden eri\c{s}melerini sa\u{g}lamak i\c{c}in sadece birka\c{c} dakikaya ihtiya\c{c}
var. Ftp adreslerinde, \"{o}zellikle Sunsite ar\c{s}ivinden birka\c{c} de\u{g}i\c{s}ik
sunucu program\i{} al\i{}nabilir. Halen Linux i\c{c}in benim bildi\u{g}im ve s\i{}k\c{c}a
kullan\i{}lan APACHE, NCSA veya CERN http (web) sunuculardan birini \c{c}ekerek
kurman\i{}z gerekecektir. Bununla birlikte, olumsuz yan\i{}t vermemi\c{s}seniz
httpd yaz\i{}l\i{}m\i{} Linux'un kurulumu a\c{s}amas\i{}nda sisteme yerle\c{s}tirilmi\c{s}tir.

httpd paketi kurulduktan sonra birka\c{c} alt dizin olu\c{s}ur. Bunlardan
\"{o}nemlileri,

\begin{itemize}
\item {\bf conf}, http konfig\"{u}rasyon dosyalar\i{}
\item {\bf cgi-bin}, \"{o}rnek CGI (Common Gateway Interface) programlar\i{}
\item {\bf cgi-src}, CGI kaynak programlar\i{}
\item {\bf logs}, sunucunun sistem kay\i{}tlar\i{}
\end{itemize}


Sunucunun \c{c}al\i{}\c{s}t\i{}r\i{}labilmesi i\c{c}in conf dizini alt\i{}nda yeralan 4 dosyan\i{}n
i\c{c}inde baz\i{} de\u{g}i\c{s}iklikler yapmak gerekiyor. Bunlardan ba\c{s}l\i{}calar\i{},
{\tt httpd.conf} dosyas\i{}ndaki {\em ServerRoot\/} (httpd yaz\i{}l\i{}m\i{}n\i{}n a\c{c}\i{}ld\i{}\u{g}\i{} yer) ve
{\em ServerName\/} (makina ismi), {\tt srm.conf} dosyas\i{}ndaki {\em DocumentRoot\/} (ana sayfan\i{}n
dosyalar\i{}n\i{}n tutuldu\u{g}u dizin), {\em ScriptAlias\/} (CGI programlar\i{}n\i{}n bulundu\u{g}u
dizin) ve {\em Directory\/} (CGI programlar\i{}\i{}n bulundu\u{g}u dizine ait parametreler)
de\u{g}i\c{s}kenleridir. Dosyada hi\c{c} de\u{g}i\c{s}iklik yapmadan da sunucunun istedi\u{g}i
dizinler \"{u}zerinde gerekli sembolik ba\u{g}lant\i{}lar\i{}, istedi\u{g}iniz dizini
i\c{s}aret edecek \c{s}ekilde yerle\c{s}tirmek m\"{u}mk\"{u}nd\"{u}r.

httpd program\i{}n\i{}n ba\c{s}lat\i{}lmas\i{} gayet kolayd\i{}r. {\tt /etc/rc.d/rc.inet2}
program\i{}n\i{}n i\c{c}inde httpd ile ilgili sat\i{}r\i{}n ba\c{s}\i{}nda varsa '\#'
karakterlerini kald\i{}r\i{}n. B\"{o}yle bir sat\i{}r yoksa a\c{s}a\u{g}\i{}daki komutu
ekleyebilirsiniz.

\begin{verbatim}
httpd -f <konfigurasyon-dosyasi>
\end{verbatim}


konfig\"{u}rasyon dosyas\i{} yerine {\tt httpd.conf} dosyas\i{}n\i{}n bulundu\u{g}u yer
girilir. (\"{o}rne\u{g}in {\tt /home/httpd/conf/httpd.conf})

Web dosyalar\i{}n\i{} haz\i{}rlamak, gerekli d\"{u}zenlemeleri yapabilmek i\c{c}in ayr\i{}
bir kullan\i{}c\i{} tan\i{}mlanabilir. 




\section{HTML ve CGI }



Bir http protokol\"{u}n\"{u}n sundu\u{g}u dosya tipi genellikle HTML dosyas\i{}d\i{}r. HTML
d\"{o}k\"{u}manlar\i{} tamam\i{} ASCII karakterlerden ve herhangi bir edit\"{o}rde
yaz\i{}labilen metinlerden olu\c{s}ur. UNIX \"{u}zerinde pico veya vi kullanarak
HTML d\"{o}k\"{u}manlar\i{}n\i{}z\i{} haz\i{}rlayabilirsiniz. Bunun d\i{}\c{s}\i{}nda, kullan\i{}c\i{}n\i{}n
bu dili bilmedi\u{g}i farzedilerek Windows ve DOS alt\i{}nda \c{c}al\i{}\c{s}an \c{c}e\c{s}itli
programlar haz\i{}rlanm\i{}\c{s}t\i{}r (FrontPage, HotDog gibi). Ayr\i{}ca, HTML kodunun
do\u{g}rulu\u{g}unu kontrol eden yard\i{}mc\i{} programlara da Internet \"{u}zerinden
eri\c{s}ilebilir.

HTML, Hypertext tabanl\i{} bir dildir ve program i\c{c}inde \c{c}oklu ortam
(multimedia) programlar\i{}n\i{}n konulmas\i{}na izin verir. Ses, hareketli veya
hareketsiz g\"{o}r\"{u}nt\"{u} yan\i{}s\i{}ra Java ad\i{} verilen ve kullan\i{}c\i{} ile etkile\c{s}ime
girebilen programlar da HTML dosyalar\i{} i\c{c}inde yeralabilir. Grafik destekli
Web programlar\i{}n\i{}n tablo deste\u{g}i ile \c{c}ok \c{c}e\c{s}itli istatistiki bilgiler,
programlar, her t\"{u}rl\"{u} listeler ekranda derli toplu g\"{o}sterilebilir. Linux
i\c{c}in Java deste\u{g}ini \url{ftp://ftp.blackdown.org}{ftp.blackdown.org}
adresindeki \url{ftp://ftp.blackdown.org/pub/Java/linux}{pub/Java/linux} dizini
alt\i{}nda bulabilirsiniz.




\subsection{Temel HTML Belirte\c{c}leri}



Daha \"{o}nce bir programlama diliyle u\u{g}ra\c{s}mam\i{}\c{s} olsan\i{}z bile HTML'in
kolayl\i{}\u{g}\i{} ve \c{c}ok k\i{}sa zamanda bu dile hakimiyet sa\u{g}layabilmek sizi
hayrete d\"{u}\c{s}\"{u}recektir. \c{C}e\c{s}itli \c{c}eviriciler yard\i{}m\i{}yla hemen her t\"{u}r dosyan\i{}n
bu dile \c{c}evrilebilmesi, HTML dilini bilmeyenlerin bile dikkati bu y\"{o}ne
\c{c}ekmeye yeter. Burada HTML komutlar\i{}na k\i{}sa bir giri\c{s} yap\i{}lacakt\i{}r, buradaki
bilgilerle kendi web sayfan\i{}z\i{} haz\i{}rlaman\i{}z m\"{u}mk\"{u}n olacak. Daha geni\c{s}
bilgi i\c{c}in \url{http://www.w3.org}{www.w3.org} veya \url{http://www.yahoo.com}{www.yahoo.com} adreslerine
g\"{o}z atabilirsiniz. Bu adreslerin yans\i{}lar\i{} \url{http://www.linux.org.tr}{Linux Kullan\i{}c\i{}lar\i{} Grubu} ana web sayfas\i{}ndan da eri\c{s}ilebilir.

Basit bir HTML dosyas\i{} a\c{s}a\u{g}\i{}daki gibi yaz\i{}labilir:

\begin{verbatim}
<title> Burasi konunun yazilacagi yer </title>
<h1> Bu, 1 numarali baslik </h1>
HTML dunyasina hosgeldiniz. <br>
Birinci paragrafimiz. <p>
Bu da ikinci.. <p>
\end{verbatim}


HTML yazarken, metnin Web program\i{}n\i{}n anlayaca\u{g}\i{} \c{s}ekilde g\"{o}sterilebilmesi
i\c{c}in belirte\c{c}ler kullan\i{}r. Yukar\i{}daki \"{o}rnekte:

{\tt {$<$}title{$>$}} ve {\tt </title{$>$}} belirte\c{c}leri, d\"{o}k\"{u}man\i{}n konusunu g\"{o}sterir.

{\tt {$<$}h1{$>$}} ve {\tt {$<$}/h1{$>$}} belirte\c{c}leri, d\"{o}k\"{u}man\i{}n ba\c{s}l\i{}\u{g}\i{}n\i{} tan\i{}mlar.  {\tt {$<$}p{$>$}} belirteci, paragraf tan\i{}mlar.

T\"{u}m HTML belirte\c{c}leri, k\"{u}\c{c}\"{u}kt\"{u}r i\c{s}areti ({$<$} ), belirte\c{c} ismi ve
b\"{u}y\"{u}kt\"{u}r i\c{s}aretinden ({$>$} ) olu\c{s}ur. Genellikle her belirtecin {$<$}h1{$>$}
ve {$<$}/h1{$>$} \"{o}rneklerindeki gibi bir \c{c}ifti olur ve sondaki belirtecin ismi
\"{o}n\"{u}ne ayra\c{c} gelir. Yukar\i{}daki \"{o}rnekte {$<$}h1{$>$} , Web program\i{}na 1 numaral\i{}
ba\c{s}l\i{}k format\i{}nda yazmas\i{}n\i{}, {$<$}/h1{$>$} ise bu format\i{} kapatmas\i{}n\i{} s\"{o}yler. 
{$<$}p{$>$} belirteci istisna bir durumdur ve {$<$}/p{$>$} olarak kapat\i{}lmaz.

Her HTML sayfas\i{}n\i{}n ile ayr\i{}lan bir konusu olmak zorundad\i{}r. Konular
sayfadan ba\u{g}\i{}ms\i{}z olarak ekran\i{}n en \"{u}st\"{u}ne bas\i{}l\i{}r.

\begin{verbatim}
<title> Sayfamin konusu </title>
\end{verbatim}


HTML, 1'den 6'ya kadar numaralanm\i{}\c{s} 6 \c{c}e\c{s}it ba\c{s}l\i{}k destekler. Ba\c{s}l\i{}klar
normal karakterlerden daha b\"{u}y\"{u}k ve kal\i{}n yaz\i{}l\i{}rlar. Temel olarak,

\begin{verbatim}
<Hy> Sayfamin basligi </Hy>
\end{verbatim}


olarak tan\i{}mlanm\i{}\c{s} bir belirte\c{c}te y, 1 ile 6 aras\i{} bir de\u{g}er alabilir. Y say\i{}s\i{} artt\i{}k\c{c}a yaz\i{}tipinin b\"{u}y\"{u}kl\"{u}\u{g}\"{u} azal\i{}r. Pek \c{c}ok uygulamada, sayfan\i{}n konusu ile ba\c{s}l\i{}\u{g}\i{}n\i{} ayn\i{} tutabilirsiniz.

Di\u{g}er kelime i\c{s}lemcilerdekinin aksine, HTML d\"{o}k\"{u}manlar\i{}nda programc\i{}
\"{o}zel bir belirte\c{c} kullanmad\i{}k\c{c}a bir c\"{u}mle herhangi bir yerinden ayr\i{}l\i{}p
kalan k\i{}sm\i{} altta g\"{o}r\"{u}nebilir, birden fazla bo\c{s} sat\i{}r tek sat\i{}r olarak
alg\i{}lan\i{}r. A\c{s}a\u{g}\i{}daki \"{o}rnekte, kaynak kodunda iki sat\i{}r olmas\i{}na kar\c{s}\i{}n,
WWW taray\i{}c\i{} bunu alg\i{}lamaz ve ekranda tek sat\i{}r olarak g\"{o}r\"{u}nt\"{u}ler. Bir
html taray\i{}c\i{} sat\i{}r sonlar\i{}n\i{} ve bo\c{s} sat\i{}rlar\i{} g\"{o}zard\i{} edece\u{g}inden,
paragraflar\i{} mutlaka {$<$}p{$>$} belirteci ile ay\i{}rmal\i{}s\i{}n\i{}z.

\begin{verbatim}
HTML'ye hosgeldiniz <br>
Bu ilk paragraf <p>
\end{verbatim}


{\bf Sat\i{}r sonu belirteci} : Paragraf, iki sat\i{}r aras\i{}nda bir sat\i{}r bo\c{s}luk
b\i{}rak\i{}rken, sat\i{}r sonu belirteci kullan\i{}ld\i{}\u{g}\i{} kurs\"{o}r alta ge\c{c}er ve takip
eden t\"{u}m metin,bo\c{s}luk b\i{}rakmadan bir alttan yaz\i{}l\i{}r.

\begin{verbatim}
Bu ilk satir. <br>
Ikinci satir daha uzun. <br>
Ama bu bir paragraf sonu.. <p>
\end{verbatim}


Paragraflar ortalan\i{}rken {$<$}center{$>$} ve {$<$}/center{$>$} belirte\c{c}lerinden yararlan\i{}l\i{}r. Ortalanmas\i{} istenen t\"{u}m metin, bu iki belirtecin aras\i{}na yaz\i{}l\i{}r.

\begin{verbatim}
<center>
Linux Sayfasi
</center>
\end{verbatim}


HTML'nin en b\"{u}y\"{u}k \"{o}zelliklerinden birisi, tek sayfa ile s\i{}n\i{}rl\i{}
kalmamas\i{}d\i{}r. B\"{o}ylece bir sayfadan di\u{g}erine ba\u{g}lant\i{} yap\i{}labilir. HTML'in
bu g\"{o}revini yerine getirmesini sa\u{g}layan belirte\c{c} {$<$}a{$>$}'d\i{}r. D\"{o}k\"{u}man\i{}n\i{}zdan
ba\c{s}ka d\"{o}k\"{u}mana ba\u{g}lant\i{} yapabilmek i\c{c}in:

\begin{itemize}
\item Belirteci girin. (K\i{}saca ilk sat\i{}ra {$<$}a yaz\i{}n)
\item Hangi d\"{o}k\"{u}mana ge\c{c}i\c{s} yapmak istiyorsan\i{}z, ismini yaz\i{}n. (HREF="dosyaismi")
\item Bu d\"{o}k\"{u}man\i{} ekranda hangi isimle g\"{o}stermek istedi\u{g}inizi belirtin.
\item Belirteci kapat\i{}n. {$<$}/a{$>$}
\end{itemize}


K\i{}sa bir \"{o}rnekle a\c{c}\i{}klayal\i{}m:

\begin{verbatim}
<a href="internet.html"> Internet nedir? </a>
\end{verbatim}


Ekranda "\.{I}nternet Nedir?" yaz\i{}s\i{} belirecek ve kullan\i{}c\i{}dan buray\i{} se\c{c}meyi
bekleyecektir. Kullan\i{}c\i{} fare ile bu yaz\i{} \"{u}zerine t\i{}klad\i{}\u{g}\i{}nda ise program
kontrol\"{u} yine bir HTML dosya olan internet.html dosyas\i{}na b\i{}rakacakt\i{}r. Bu
durumda bulundu\u{g}unuz dizinden farkl\i{} bir dizindeki dosyaya ba\u{g}lant\i{} yapmak
isterseniz, o dosyan\i{}n ait oldu\u{g}u dizini yazmak zorundas\i{}n\i{}z. Buna g\"{o}re
{\tt linux/shells/bash.html} dosyas\i{}n\i{} kullanabilmek i\c{c}in

\begin{verbatim}
<a href="linux/shells/bash.html"> Bash </a>
\end{verbatim}


\c{s}eklinde bir belirte\c{c} yazmak gerekir.

HTML'in bir di\u{g}er \"{o}zelli\u{g}i ise, tek bir makinaya ba\u{g}\i{}ml\i{} kalmadan di\u{g}er
\.{I}nternet servisleriyle ba\u{g}lant\i{} kurabilmesidir. Bunun i\c{c}in {\em URL\/} (Uniform
Resource Locator) kullan\i{}l\i{}r. URL, http,gopher, news ve telnet gibi alt
hizmet birimleri olabilir. Kullan\i{}m\i{} \c{s}u \c{s}ekildedir :

\begin{verbatim}
URL-ismi://makina-ismi[:port]/dizinler/dosya-ismi
\end{verbatim}


Burada URL,

\begin{itemize}
\item {\bf file},  Kendi sisteminizde bir dosyaya,
\item {\bf http}, Bir WWW sunucusu \"{u}zerindeki dosyaya,
\item {\bf gopher}, Gopher sunucusu \"{u}zerindeki dosyaya,
\item {\bf news}, Bir UseNet haber grubundaki dosyaya,
\item {\bf WAIS}, WAIS sunucusu \"{u}zerindeki dosyaya
\end{itemize}


eri\c{s}mek i\c{c}in kullan\i{}l\i{}r. \"{O}rne\u{g}in sayfan\i{}zdan Linux Kullan\i{}c\i{}lar\i{} Grubu'nun ana web sayfas\i{}na ula\c{s}mak i\c{c}in :

{\tt {$<$}a href=http://www.linux.org.tr/{$>$} Linux Kullan\i{}c\i{}lar\i{} Grubu {$<$}/a{$>$} }

sat\i{}r\i{}n\i{} web dosyas\i{}nda girmek gerekir. Port numaras\i{}, genellikle
yaz\i{}lmaz. Size aksi durum belirtilmedik\c{c}e, kullanman\i{}za gerek yoktur.

D\"{o}k\"{u}manlar\i{}n g\"{o}ze ho\c{s} g\"{o}r\"{u}nmelerini sa\u{g}lamak amac\i{}yla listeler yayg\i{}n
olarak kullan\i{}l\i{}r. HTML, pek \c{c}ok liste \c{c}e\c{s}idi destekler. Bunlar, d\"{u}z
listeler, numaral\i{} listeler, tan\i{}ml\i{} listeler ve i\c{c}i\c{c}e listelerdir.

D\"{u}z liste yaratmak i\c{c}in,

\begin{itemize}
\item Listeye ba\c{s}lamak i\c{c}in belirte\c{c} a\c{c}\i{}l\i{}r. ( {$<$}ul{$>$} )
\item Liste elemanlar\i{}n\i{} teker teker girerken ba\c{s}\i{}na ( {$<$}li{$>$} ) belirteci girilir. Kapatmak i\c{c}in {$<$}/li{$>$} belirtecine gerek yoktur.
\item Listeyi bitirmek i\c{c}in belirte\c{c} kapat\i{}l\i{}r. ( {$<$}/ul{$>$} )
\end{itemize}


\"{O}rnek olarak,

\begin{verbatim}
<ul>
<li> Elma
<li> Armut
</ul>
\end{verbatim}


\"{O}rnek, ekranda \c{s}u \c{s}ekilde g\"{o}r\"{u}l\"{u}r :

\begin{itemize}
\item Elma
\item Armut
\end{itemize}


{$<$}li{$>$} belirte\c{c}leri i\c{c}inde paragraflar, di\u{g}er d\"{o}k\"{u}manlara ba\u{g}lant\i{}lar, ve di\u{g}er belirte\c{c}ler kullanabilirsiniz.

Numaral\i{} listeler, d\"{u}z listelerden farkl\i{} olarak, {$<$}ul{$>$} belirteci yerine {$<$}ol{$>$} kullan\i{}rlar. Ekranda liste elemanlar\i{}n\i{}n ba\c{s}\i{}nda 1'er artan numaralar g\"{o}r\"{u}n\"{u}r. A\c{s}a\u{g}\i{}daki HTML kodu,

\begin{verbatim}
<ol>
<li> Linux 
<li> Digerleri :-)
</ol>
\end{verbatim}


ekrana \c{s}unlar\i{} yazar:

\begin{enumerate}
\item Linux \.{I}\c{s}letim Sistemi
\item Di\u{g}erleri :-)
\end{enumerate}


HTML'de, programda yaz\i{}ld\i{}\u{g}\i{} gibi ekrana \c{c}\i{}kt\i{} vermeyi sa\u{g}layan komutlar {$<$}pre{$>$} ve {$<$}/pre{$>$} belirte\c{c} \c{c}iftleridir. Bunlar kullan\i{}ld\i{}\u{g}\i{} zaman t\"{u}m metin, yaz\i{}ld\i{}\u{g}\i{} gibi ekranda g\"{o}r\"{u}n\"{u}r. A\c{s}a\u{g}\i{}daki sat\i{}rlar,

\begin{verbatim}
<pre>
  PATH=.:~/bin/:$PATH
  export PATH
  # Set up the terminal:
         stty erase "^?" kill "^U" intr "^C" eof "^D"
         stty hupcl ixon ixoff
  date '+Tarih :%D'
  TERM=vt100
</pre>
\end{verbatim}


ekranda \c{s}u \c{s}ekilde g\"{o}r\"{u}n\"{u}r :

\begin{verbatim}
    PATH=.:~/bin/:$PATH
    export PATH
    # Set up the terminal:
           stty erase "^?" kill "^U" intr "^C" eof "^D"
           stty hupcl ixon ixoff
    date '+Tarih :%D'
    TERM=vt100
\end{verbatim}


E\u{g}er Web sayfalar\i{}n\i{} gezerken grafik destekleyen bir program (Mosaic,
Netscape) kullan\i{}yorsan\i{}z, ekranda resimlerin, arkaplanlar\i{}n ve hatta
animasyonlar\i{}n oldu\u{g}unu farketmi\c{s}sinizdir. Bu resimler genellikle X
Bitmap (XBM) , GIF, veya JPG formatl\i{} olurlar ve dosyaya g\"{o}rsel bir
\c{c}ekicilik katarlar. Buna ra\u{g}men ayn\i{} ekranda \c{c}ok miktarda resim
kullanmaktan sak\i{}nmal\i{}d\i{}r, \c{c}\"{u}nk\"{u} bu durumda resimler kullan\i{}c\i{}ya daha
ge\c{c} bir s\"{u}rede ula\c{s}\i{}r.

Ekranda resim g\"{o}r\"{u}nt\"{u}lemek i\c{c}in,

\begin{verbatim}
<img src="resmin bulundugu dizin">
\end{verbatim}


demeniz yeterlidir. Burada, nas\i{}l HTML d\"{o}k\"{u}manlar\i{}n hepsi {\tt .html}
ile bitiyorsa, t\"{u}m resim dosyalar\i{}n\i{}n sonu da {\tt .xbm} , {\tt .gif}
veya {\tt .jpg} ile bitmelidir.

\c{S}imdi k\"{u}\c{c}\"{u}k bir \"{o}rnek haz\i{}rlayal\i{}m. \~{} dizininde iken {\tt public\_{}html}
isimli bir dizin a\c{c}\i{}n ve buraya girin. \.{I}stedi\u{g}iniz \"{o}rnek bir HTML dosyas\i{}
yarat\i{}p {\tt index.html} isminde kaydedin.

\begin{verbatim}
$ cd ~
/home/gorkem
$ mkdir public_html
$ cd public_html
$ ls index.html
index.html
\end{verbatim}


Ard\i{}ndan a\c{s}a\u{g}\i{}daki sat\i{}rlar\i{} yaz\i{}n. Burada web i\c{c}in kullan\i{}lan taray\i{}c\i{} lynx'tir. E\u{g}er X ortam\i{}nda \c{c}al\i{}\c{s}\i{}yorsan\i{}z Netscape de kullanabilirsiniz.

\begin{verbatim}
$ lynx http://cclub.metu.edu.tr/~ilker
\end{verbatim}


Haz\i{}rlad\i{}\u{g}\i{}n\i{}z web sayfas\i{} ekrana gelecektir.






\subsection{Form Haz\i{}rlama (CGI)}



CGI web \"{u}zerinden kullan\i{}c\i{} aray\"{u}zleri haz\i{}rlamak i\c{c}in kullan\i{}lan en
yayg\i{}n y\"{o}ntemdir. En yayg\i{}n kullan\i{}m alanlar\i{} aras\i{}nda veri taban\i{}
sorgu sistemleri say\i{}labilir. A\c{s}a\u{g}\i{}daki d\"{o}k\"{u}manda genel olarak CGI
tan\i{}t\i{}m\i{} yaparken \"{o}zellikle C ile CGI programlar\i{} haz\i{}rlayacaklara
yard\i{}mc\i{} olabilir.

Bu d\"{o}k\"{u}man\i{}n baz\i{} k\i{}s\i{}mlar\i{} okuyucular\i{}n az da olsa C ve programlama
bilgisinin oldu\u{g}u varsay\i{}larak haz\i{}rlanm\i{}\c{s}t\i{}r.

\.{I}nternet \"{u}zerindeki hemen hemen b\"{u}t\"{u}n kullan\i{}c\i{} aray\"{u}zleri,
Common Gateway Interface (CGI), kullan\i{}larak haz\i{}rlanm\i{}\c{s}t\i{}r. CGI WWW
kullan\i{}c\i{}lar\i{}n\i{}n WWW sunucusunun \c{c}al\i{}\c{s}t\i{}\u{g}\i{} makina \"{u}zerinde belirlenen
programlar\i{} \c{c}al\i{}\c{s}t\i{}rmas\i{}n\i{} sa\u{g}layan bir sistemdir. CGI ile haz\i{}rlanan
kullan\i{}c\i{} aray\"{u}zlerinin  ba\c{s}l\i{}ca avantajlar\i{}n\i{} a\c{s}a\u{g}\i{}daki gibi
s\i{}ralayabiliriz:

\begin{itemize}
\item Kolay ve h\i{}zl\i{} haz\i{}rlanabilmesi. CGI aray\"{u}zlerinde, di\u{g}er kullan\i{}c\i{} y\"{u}zlerindeki bir\c{c}ok \c{c}abaya gerek yoktur. Kullan\i{}c\i{}yla ili\c{s}kiyi WWW taray\i{}c\i{}s\i{} (web browser) yapt\i{}\u{g}\i{}ndan, siz zaten web taray\i{}c\i{}s\i{} i\c{c}in     \c{c}oktan haz\i{}rlanm\i{}\c{s} karma\c{s}\i{}k kullan\i{}c\i{} aray\"{u}z\"{u} i\c{s}lemleriyle u\u{g}ra\c{s}mak zorunda kalmazs\i{}n\i{}z.
\item \.{I}stedi\u{g}iniz herhangi bir programlama dili kullanabilirsiniz. Buradaki uygulamam\i{}zda C kulland\i{}\u{g}\i{}m\i{}z i\c{c}in a\c{s}a\u{g}\i{}da CGI programlar\i{}n\i{} \"{o}zel olarak C ile nas\i{}l yazaca\u{g}\i{}n\i{}z anlat\i{}lm\i{}\c{s}t\i{}r, ama deneyimli programc\i{} herhangi bir programlama dili i\c{c}in gerekli ipu\c{c}lar\i{}n\i{} a\c{s}a\u{g}\i{}daki a\c{c}\i{}klamadan \c{c}\i{}karabilir.
\item De\u{g}i\c{s}ik ortamlarda \c{c}al\i{}\c{s}abilir. Program\i{}n\i{}z\i{}n as\i{}l \c{c}al\i{}\c{s}t\i{}\u{g}\i{} sistem web sunucusunun \c{c}al\i{}\c{s}t\i{}\u{g}\i{} sistem olmas\i{}na kar\c{s}\i{}n, program\i{}n\i{}za bilgisayar a\u{g}\i{}na ba\u{g}l\i{} herhangi bir bilgisayardan ula\c{s}\i{}labilir. Kullanabilece\u{g}iniz hemen hemen b\"{u}t\"{u}n i\c{s}letim sistemleri ve ortamlar i\c{c}in web taray\i{}c\i{}s\i{}     bulabilece\u{g}iniz i\c{c}in, yazd\i{}\u{g}\i{}n\i{}z tek program bir\c{c}ok farkl\i{} ortamdan kullan\i{}labilir.
\item Da\u{g}\i{}t\i{}k ortamlarda kullan\i{}labilme olas\i{}l\i{}\u{g}\i{}. Program\i{}n\i{}z\i{}n kullan\i{}c\i{} aray\"{u}z\"{u} (web taray\i{}c\i{}s\i{}) ba\c{s}ka bir ortamda, web html formlar\i{}n\i{}z ba\c{s}ka bir sistemde, CGI programlar\i{}n\i{}z ba\c{s}ka bir sistemde olabilir.
\end{itemize}


Bu avantajlar\i{}n yan\i{}nda say\i{}labilecek birka\c{c} dezavantaj,

\begin{itemize}
\item Dikkatsiz yaz\i{}lm\i{}\c{s} CGI programlar\i{} g\"{u}venlik a\c{c}\i{}klar\i{}na neden olabilirler.
\item Kullan\i{}c\i{} aray\"{u}zleri \c{c}ok kolay ve h\i{}zl\i{} olu\c{s}turulmalar\i{}na kar\c{s}\i{}n, web taray\i{}c\i{}s\i{}n\i{}n yetenekleriyle s\i{}n\i{}rl\i{}d\i{}r.
\end{itemize}





\subsubsection{CGI Yap\i{}s\i{}}



En basit haliyle bir CGI program\i{}, standart giri\c{s} dosyas\i{}na \c{c}\i{}kt\i{}lar\i{}n\i{} veren herhangi bir program olabilir. Tek farkl\i{}l\i{}k, herhangi bir \c{c}\i{}kt\i{}dan \"{o}nce yazman\i{}z gereken iki sat\i{}r. Bu sat\i{}rlardan ilki,

\begin{verbatim}
Content-type: text/html
\end{verbatim}


olmal\i{}. \.{I}kincisi ise bo\c{s} bir sat\i{}r. A\c{s}a\u{g}\i{}daki C \"{o}rne\u{g}i bu konuda
daha a\c{c}\i{}klay\i{}c\i{} olacakt\i{}r. Bundan sonra ekrana yazaca\u{g}\i{}n\i{}z her\c{s}ey
web taray\i{}c\i{}s\i{} taraf\i{}ndan HTML ile yaz\i{}lm\i{}\c{s} bir d\"{o}k\"{u}man olarak
de\u{g}erlendirilecektir.

CGI programlar\i{} girdilerini HTML formlar\i{}ndan al\i{}rlar. HTML formlar\i{} ayr\i{}
bir HTML dosyas\i{}nda olabilecekleri gibi, bir CGI program\i{}n\i{}n \c{c}\i{}kt\i{}s\i{}
olabilirler, hatta ayn\i{} program hem formu olu\c{s}turup, hem de \c{c}\i{}kt\i{}y\i{}
de\u{g}erlendirerek gerekli i\c{s}lemi yapabilir.

A\c{s}a\u{g}\i{}da \"{o}rnekleriyle formlar\i{} nas\i{}l olu\c{s}turulabilece\u{g}ini, ve CGI
programlar\i{}n\i{}n nas\i{}l yaz\i{}laca\u{g}\i{} konusunda ayr\i{}nt\i{}l\i{} bilgi bulacaks\i{}n\i{}z.

Form {\em HTML2.0\/} standard\i{}yla gelen bir kullan\i{}c\i{} aray\"{u}z\"{u}. Formlarda bir
dizi de\u{g}i\c{s}ik y\"{o}ntemle kullan\i{}c\i{}dan girdi al\i{}nabilir. Bunlar\i{} a\c{s}a\u{g}\i{}da
maddeler halinde g\"{o}rece\u{g}iz.

Bir html formu {\em {$<$}form{$>$}\/} ile ba\c{s}lay\i{}p, {\em {$<$}/form{$>$}\/} ile
biter. {$<$}form{$>$} birka\c{c} parametre al\i{}r. HTML'de parametreler {$<$}form
p1=de\u{g}er1 p2=de\u{g}er2 p3{$>$} \c{s}eklinde verilir. Bu \"{o}rnekte formun p1 ve p2 iki
de\u{g}er alan parametre, p3 adl\i{} de\u{g}er almayan bir parametresi var. forma
verilebilecek ve verilmesi gereken parametreler,

{\bf METHOD} : Bu parametre, formun ne \c{s}ekilde hangi html metodu kullan\i{}laca\u{g}\i{}n\i{}
belirler. POST ya da GET de\u{g}erini alabilir. POST daha \c{c}ok kar\c{s}\i{} tarafta
herhangi bir etkisi olan programlar i\c{c}in, GET ise sadece sonu\c{c} veren
programlar i\c{c}in kullan\i{}l\i{}r. Ama yayg\i{}n i\c{s}lem her ikisi i\c{c}in de POST
kullanmakt\i{}r. Biz uygulamam\i{}zda her iki durum i\c{c}in de POST kulland\i{}k.

{\bf ACTION} : Bu parametreyle, formun \c{c}al\i{}\c{s}t\i{}raca\u{g}\i{} CGI program\i{} belirtilir. Verilen CGI program\i{} ayn\i{} makinada olabilece\u{g}i gibi Internet \"{u}zerindeki herhangi bir makinada da olabilir. 

{\bf ENCTYPE} : Form'un sonu\c{c}lar\i{}n\i{}n CGI program\i{}na ne \c{s}ekilde g\"{o}nderilece\u{g}i bu parametreyle belirtilir. Belirtilmemesi durumunda standart 'application/x-www-form-urlencoded' kullan\i{}l\i{}r. Bizim \"{o}nerimiz, bu se\c{c}ene\u{g}in belirtilmemesi ve standart kullan\i{}ma gidilmesi. Bu \c{s}ekilde program\i{}n\i{}z hem heryerde \c{c}al\i{}\c{s}\i{}r, hem de bu kodlama bi\c{c}imi i\c{c}in haz\i{}r k\"{u}t\"{u}phanelerden yararlanabilirsiniz

Formun i\c{c}inde bir dizi de\u{g}i\c{s}ik girdi tipi tan\i{}mlayabilirsiniz. Bunlar
{$<$}INPUT{$>$} ile verilir. INPUT i\c{c}in bir dizi input tipi kullan\i{}labilir. Bu
tipleri a\c{s}a\u{g}\i{}daki gibi s\i{}ralayabiliriz:

{\bf TEXT} : Bu tip tek sat\i{}rl\i{}k metin girdiler i\c{c}in kullan\i{}l\i{}r, birden
fazla sat\i{}r i\c{c}in {$<$}TEXTAREA{$>$} kullanmal\i{}s\i{}n\i{}z.

Yukar\i{}da belirtilen her bir INPUT tipi i\c{c}in verebilece\u{g}iniz ya da
vermeniz gereken bir ya da birka\c{c} parametre vard\i{}r. Bu parametrelerin
ayr\i{}nt\i{}lar\i{}na burda yer vermiyoruz. Bu ayr\i{}nt\i{}lar\i{} \url{http://www.w3.org}{www.w3.org} 'dan ula\c{s}abilece\u{g}iniz bir\c{c}ok d\"{o}k\"{u}mandan ya da bu d\"{o}k\"{u}man\i{}n kaynak kodu dahil
olmak \"{u}zere \.{I}nternet \"{u}zerinde bulaca\u{g}\i{}n\i{}z bir\c{c}ok formun kaynak kodundan
yararlanarak \"{o}\u{g}renebilirsiniz.






\subsubsection{\"{O}rnek CGI Program\i{}}



S\i{}radan bir CGI program\i{} bir html formundan girdilerini al\i{}p, \c{c}\i{}kt\i{}lar\i{}
HTML format\i{}nda ekrana yazar. CGI program\i{}n\i{}n \c{c}\i{}kt\i{}lar\i{} web taray\i{}c\i{}n\i{}z
taraf\i{}ndan yorumlan\i{}r.

Bir GCI program\i{}, herhangi bir programalama dilinde yaz\i{}labilir. \c{C}ok
kullan\i{}lan diller aras\i{}nda C, Perl ve daha \c{c}ok basit i\c{s}ler i\c{c}in de olsa
shell g\"{o}sterilebilir. Bu uygulamada C kulland\i{}k. A\c{s}a\u{g}\i{}da en basit haliyle
CGI i\c{c}in bir {\tt helloworld.c} g\"{o}ruyorsunuz.

\begin{verbatim}
/* helloworldcgi.c -- ilk CGI programi. Bu program formdan gelen girdiyi
 * dikkate almayip, sadece ekrana(html tarayicisina) 'hello world' yazisini
 * basar
 */
#include <stdio.h>

main (){
/*      DIKKAT!!! asagidaki satir olmazsa programiniz calismaz.
*/
        printf("Content-type: text/html\n\n");
        printf("hello world!");
}
\end{verbatim}


Ayn\i{} \"{o}rne\u{g}i bir bash program\i{} olarak yazacak olsayd\i{}k:

\begin{verbatim}
#!/bin/bash
# CGI icin ornek kabuk programi

echo 'Content-type: text/html'
echo
echo
echo 'hello world!'
\end{verbatim}


Bu d\"{o}k\"{u}man\i{}n bundan sonraki k\i{}sm\i{}ndaki \"{o}rnekler C i\c{c}in haz\i{}rlanm\i{}\c{s}t\i{}r. CGI
program\i{} yazmak i\c{c}in gereken daha fazla bilgi sadece, C (ya da ilgili dil)
ve HTML bilgisine ek olarak sadece program\i{}n\i{}z\i{}n girdiyi nas\i{}l alaca\u{g}\i{}. C
i\c{c}in en sevdi\u{g}iniz C kitab\i{}n\i{}, HTML i\c{c}inse \.{I}nternet \"{u}zerinde bulaca\u{g}\i{}n\i{}z
d\"{o}k\"{u}manlar\i{} \"{o}neririz.

HTML Form'unun \c{c}\i{}kt\i{}s\i{} 'ad=de\u{g}er' \c{s}eklinde '\&' ile ayr\i{}lm\i{}\c{s} tek sat\i{}rl\i{}k
bir karakter dizisinden olu\c{s}ur. Bu dizideki bo\c{s}luklar '+' ile ASCII
setindeki alfa-n\"{u}merik karakterler d\i{}\c{s}\i{}ndaki b\"{u}t\"{u}n karakterler (\%, +, \c{c},
\"{O} gibi) \"{u}\c{c} karakterlik '\%XX' \c{s}eklinde bir ifadeyle g\"{o}sterilir. Buradaki
XX ifade edilen karakterin onalt\i{}l\i{}k say\i{} sistemindeki kodudur. Formun
\c{c}\i{}kt\i{}s\i{}n\i{}, gets(), scanf() gibi herhangi bir C I/O fonksiyonuyla okuduktan
sonra, eldeki karakter dizisinden istedi\u{g}iniz bilgileri almal\i{}s\i{}n\i{}z. Bu
diziyi isterseniz kendi yazd\i{}\u{g}\i{}n\i{}z programla isterseniz \.{I}nternet \"{u}zerinde
heryerde bulabilece\u{g}iniz haz\i{}r k\"{u}t\"{u}phanelerle i\c{s}leyebilirsiniz.

CGI program\i{}n\i{}n \c{c}\i{}kt\i{}s\i{} istedi\u{g}iniz gibi bir HTML d\"{o}k\"{u}man\i{} olabilir. \"{O}rnek
bir HTML ve FORM dosyas\i{} a\c{s}a\u{g}\i{}daki gibidir :

\begin{verbatim}
<hr>
<p>
<form method="POST" action="http://penguen.cclub.metu.edu.tr/cgi-bin/deneme"<P>
E-mail adresiniz :  <INPUT NAME="e-mail" SIZE=38></P><P>
Isminiz : <INPUT NAME="isim" SIZE=42><P>
Buraya birseyler yazabilirsiniz: <P>
<TEXTAREA name="body" rows=10 cols=50> birseyler </TEXTAREA>
<P>
<input type="submit" value="Gonder">
<input type="reset" value="Temizle"></P>
</FORM>
<p>
<hr>
\end{verbatim}


Form, hayali penguen.cclub.metu.edu.tr adresi \"{u}zerindeki "deneme" isimli
program\i{} \c{c}al\i{}\c{s}t\i{}racak \c{s}ekilde ayarlanm\i{}\c{s}t\i{}r.








\chapter{X Window Grafik Arabirimi}



A\c{c}\i{}k sistemlerin kullan\i{}c\i{}ya sundu\u{g}u en b\"{u}y\"{u}k \"{o}zelliklerinden biri
olan X Window, Linux'un do\u{g}du\u{g}u andan itibaren destek g\"{o}rmeye ba\c{s}lad\i{}.
\.{I}nternet \"{u}zerinde bedava da\u{g}\i{}t\i{}lmas\i{}yla Linux da\u{g}\i{}t\i{}m\i{} alt\i{}nda bir
standart olarak kendine yer edindi. Daha \"{o}nce bir UNIX sistem \"{u}zerinde
X Window kulland\i{}ysan\i{}z bu b\"{o}l\"{u}m\"{u} kavramak gayet kolay olacakt\i{}r.

X Window'un Linux alt\i{}ndaki son s\"{u}r\"{u}m\"{u} Nisan 1994'te \c{c}\i{}kan {\em X11R6\/}'d\i{}r.
Aradan uzunca bir s\"{u}re ge\c{c}mesine ra\u{g}men bu s\"{u}r\"{u}mde kayda de\u{g}er bir
de\u{g}i\c{s}iklik olmad\i{}. Bunun yan\i{}nda X Window'da kullan\i{}lan pencere
y\"{o}neticisi (window manager) \c{c}e\c{s}idi neredeyse 20'ye yakla\c{s}t\i{}. Pencere
denetleyicilerin herbirinin farkl\i{} zevkten kullan\i{}c\i{}lar i\c{c}in farkl\i{}
\"{o}zellikleri vard\i{}r. Bunlar, X Window'a a\c{c}\i{}lan ve uygulama programlar\i{}
ile kullan\i{}c\i{} aras\i{}ndaki bilgi al\i{}\c{s}-veri\c{s}ini sa\u{g}layan arabirimdir.

X Window (veya k\i{}saca X) istemci-sunucu modeline g\"{o}re \c{c}al\i{}\c{s}\i{}r. Ana
makina \"{u}zerinde \c{c}al\i{}\c{s}an X sunucusu, grafik donan\i{}m\i{} \"{u}zerindeki t\"{u}m
giri\c{s}-\c{c}\i{}k\i{}\c{s} yetkilere sahiptir. Bir X istemcisi, sunucuya ba\u{g}lanarak
istedi\u{g}i i\c{s}lemleri sunucuya yapt\i{}r\i{}r. \.{I}stemcinin g\"{o}revi emir vermek,
sunucunun ise verilen emri g\"{o}r\"{u}n\"{u}r hale getirmektir.

Asl\i{}nda bilinmesi gereken en \"{o}nemli kavram, X'in a\u{g} tabanl\i{} bir yap\i{}ya
sahip olmas\i{}d\i{}r. Bir istemci ve sunucunun oldu\u{g}u her yerde a\u{g}dan da s\"{o}z
edebiliriz. X, ister konsol \"{u}zerinde (yerel makinada) isterse a\u{g}
\"{u}zerinde (uzak makinada) \c{c}al\i{}\c{s}abilir. Ba\c{s}ka bir makina \"{u}zerindeymi\c{s}
gibi o makinan\i{}n X Window uygulama ve  kaynaklar\i{}ndan
yararlanabilirsiniz.

Yukar\i{}da k\i{}saca bahsedilen pencere y\"{o}neticisi, ekrandaki pencerelerin
denetiminde s\"{o}z sahibi olan tek programd\i{}r. Her pencerenin nas\i{}l
g\"{o}r\"{u}nece\u{g}ini, ne kadar b\"{u}y\"{u}k oldu\u{g}unu bilir; kullan\i{}c\i{} taraf\i{}ndan
verilen k\"{u}\c{c}\"{u}ltme, pencere kapatma gibi komutlar\i{} i\c{s}ler.






\section{X Window Kurulumu ve Konfig\"{u}rasyonu}



X Window' un 386 ve yukar\i{} tabanl\i{} makinalar i\c{c}in geli\c{s}tirdi\u{g}i sisteme
{\em Xfree86\/} ad\i{} verilir. Linux da Xfree86'y\i{} Slackware da\u{g}\i{}t\i{}m\i{}na ekleyerek
kullan\i{}c\i{}lar\i{}n hizmetine sunmu\c{s}tur. Xfree86 s\"{u}r\"{u}m 3.1'in destekledi\u{g}i
kartlara ait \c{c}ipsetler kitab\i{}n ba\c{s}\i{}nda verilmi\c{s}tir. Bu \c{c}ipsetler, PCI ve VLB
dahil, her t\"{u}r veri yoluna sahip anakartlar \"{u}zerinde sorunsuz \c{c}al\i{}\c{s}\i{}r.

Linux ile uyumlu \c{c}al\i{}\c{s}abilen yeralan \c{c}ipsetlerin hepsi 256 renk (8 bit) desteklerler. E\u{g}er
kart \"{u}zerinde yeteri kadar RAM var ise (en az 2MB), ekran\i{}n\i{}z\i{} 16 bit
(65536 renk) a\c{c}ma imkan\i{}n\i{}z olur. \"{O}zellikle S3 kartlar\i{} Linux Xfree86
alt\i{}nda sorun \c{c}\i{}kartmadan 65536 rengi kolayca g\"{o}sterebilirler. 

X Window \"{u}zerinde rahat\c{c}a \c{c}al\i{}\c{s}abilmek i\c{c}in en az 486 tabanl\i{} bir
bilgisayara ihtiyac\i{}n\i{}z var. Bana sorarsan\i{}z rahat bir \c{c}al\i{}\c{s}ma i\c{c}in 16
MB RAM ve Pentium 100 bilgisayar i\c{s}inizi g\"{o}recektir. Renk sorunu
ya\c{s}amamak i\c{c}in ise 2MB g\"{o}r\"{u}nt\"{u} haf\i{}zas\i{} olan bir grafik kart\i{} kullan\i{}n.
X Window, sistemi fazlaca y\"{u}kledi\u{g}inden takas alan\i{} i\c{c}in fazla s\"{o}z
s\"{o}ylemeye gerek yok san\i{}r\i{}m. Unutmay\i{}n ki, X'e yat\i{}r\i{}m yapmak
istiyorsan\i{}z paran\i{}z\i{} haf\i{}za i\c{c}in ay\i{}r\i{}n.

Xfree86, Slackware taraf\i{}ndan da\u{g}\i{}t\i{}lan paketlerin X b\"{o}l\"{u}m\"{u}nde
yeral\i{}yor. Herhangi bir nedenden dolay\i{} sistemde X yoksa 'pkgtool'
yard\i{}m\i{}yla sisteminize kurun. Gerekli k\"{u}t\"{u}phaneleri eklemeyi
unutmay\i{}n.






\section{X Konfig\"{u}rasyonu}



X Window kurulumu basit olmas\i{}na ra\u{g}men konfig\"{u}rasyonu biraz ba\c{s}\i{}n\i{}z\i{}
a\u{g}r\i{}tabilir. Slackware 2.2 da\u{g}\i{}t\i{}m\i{} ile gelen konfig\"{u}rasyon
programlar\i{}, kullan\i{}c\i{}n\i{}n hata yapmas\i{}n\i{} affetmiyordu. Yanl\i{}\c{s}l\i{}kla
bas\i{}lan bir tu\c{s} y\"{u}z\"{u}nden ba\c{s}tan ba\c{s}lamak zorunda kal\i{}nabiliyordu.
Slackware 3.3 alt\i{}nda, grafik arabirimini kullanan {\tt XF86Setup} program\i{}
ile bir fare yard\i{}m\i{}yla rahatl\i{}kla ve k\i{}sa s\"{u}rede X konfig\"{u}rasyonu
tamamlanabiliyor. \"{U}cretli s\"{u}r\"{u}mlerden bir tanesi elinizin alt\i{}nda ise
i\c{s}ler daha da kolayla\c{s}\i{}yor, neredeyse donan\i{}m hakk\i{}nda hi\c{c} bir \c{s}ey
bilmeden X kurulabiliyor.

Konfig\"{u}rasyon i\c{s}lemlerinden \"{o}nce haz\i{}rl\i{}k a\c{s}amas\i{}nda {\tt XF86Config(1)} ve
{\tt Xfree86(1)} man sayfalar\i{}n\i{} okuyun. Bu dosyalarda X Window i\c{c}in
olu\c{s}turulacak olan {\tt /etc/XF86Config} dosyas\i{}n\i{}n hakk\i{}nda detayl\i{} bilgi
vard\i{}r. XF86Config dosyas\i{} X a\c{c}\i{}l\i{}rken okunur ve fare, ekran
\c{c}\"{o}z\"{u}n\"{u}rl\"{u}\u{g}\"{u}, renk say\i{}s\i{} gibi \"{o}zellikler belirlenir. Ekran\i{}n\i{}z\i{}n
kalitesine g\"{o}re a\c{c}mak istedi\u{g}iniz \c{c}\"{o}z\"{u}n\"{u}rl\"{u}k hakk\i{}nda bir miktar fikir
sahibi olmal\i{}s\i{}n\i{}z. Baz\i{} eski ekranlar 1024x768 \c{c}\"{o}z\"{u}n\"{u}rl\"{u}\u{g}\"{u}
desteklemezler, bu y\"{u}zden 800x600 gibi d\"{u}\c{s}\"{u}k bir \c{c}\"{o}z\"{u}n\"{u}rl\"{u}k ile i\c{s}e
ba\c{s}lay\i{}n. Daha ayr\i{}nt\i{}l\i{} bilgi i\c{c}in XFree86-HOWTO d\"{o}k\"{u}manlar\i{}na g\"{o}z
atabilirsiniz.

Linux'un Slackware 3.3 s\"{u}r\"{u}m\"{u}, kullan\i{}c\i{}ya X konfig\"{u}rasyonu i\c{c}in iki
program sunar. Birincisi, yukar\i{}da da belirtilen ve zay\i{}f bir
arabirimi olan xf86config, di\u{g}eri de XF86Setup. \.{I}kincisini kullanman\i{}z,
her bak\i{}mdan avantaj olarak g\"{o}ze \c{c}arp\i{}yor. Program, baz\i{} ayarlamalar\i{}
kullan\i{}c\i{}ya b\i{}rakmadan (\"{o}rne\u{g}in \c{c}ipsetin se\c{c}imi) kendisi hallediyor.
Burada yeralan sorular\i{} do\u{g}ru bir \c{s}ekilde cevaplad\i{}ktan sonra X a\c{c}maya
haz\i{}rs\i{}n\i{}z demektir.

A\c{s}a\u{g}\i{}da XF86Config dosya format\i{} hakk\i{}nda biraz bilgi verilmi\c{s}tir. X
Window'u kurduktan sonra kendi zevkiniz do\u{g}rultusunda bu dosya \"{u}zerinde
de\u{g}i\c{s}iklik yapabilirsiniz.

Dosya, pek\c{c}ok b\"{o}l\"{u}mden (section) olu\c{s}ur ve her b\"{o}l\"{u}m, {\em Section
"b\"{o}l\"{u}m-ismi"\/} ve {\em Endsection\/} kelimeleri aras\i{}nda yeral\i{}r. Ekran
yaz\i{}tiplerinin ve kullan\i{}lacak renklerin patikas\i{}n\i{} belirleyen b\"{o}l\"{u}m dosya
alt\i{}nda \c{s}u \c{s}ekilde g\"{o}r\"{u}necektir :

\begin{verbatim}
Section "Files"
        RgbPath         "/usr/X11R6/lib/X11/rgb"
        FontPath        "/usr/X11R6/lib/X11/fonts/misc"
        FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"
EndSection
\end{verbatim}


\.{I}stedi\u{g}imiz kadar yaz\i{}tipi giri\c{s}i yapabiliriz. \"{U}\c{c} tan\i{}m sat\i{}r\i{}n\i{}n aras\i{}na,
\"{o}rne\u{g}in X alt\i{}nda kullanaca\u{g}\i{}m\i{}z T\"{u}rk\c{c}e yaz\i{}tiplerini yerle\c{s}tirelim. Bu
yaz\i{}tiplerini daha \"{o}nce kurmu\c{s} ve gerekli konfig\"{u}rasyon i\c{s}lemlerini yapm\i{}\c{s}
olman\i{}z gereklidir. X i\c{c}in T\"{u}rk\c{c}e yaz\i{}tiplerini \url{ftp://ftp.metu.edu.tr/pub/metu/trfonts}{ftp.metu.edu.tr}
adresinde bulabilirsiniz. Adreste yaz\i{}tiplerinin nas\i{}l kurulaca\u{g}\i{}na
ili\c{s}kin gerekli d\"{o}k\"{u}manlar da bulunmaktad\i{}r.

\begin{verbatim}
Section "Files"
        RgbPath         "/usr/X11R6/lib/X11/rgb"
        FontPath        "/usr/X11R6/lib/X11/fonts/misc"
        FontPath        "/usr/X11R6/lib/X11/fonts/75dpi"
        FontPath        "/usr/X11R6/lib/X11/fonts/turkce/75dpi"
EndSection
\end{verbatim}


Klavye ve farenin tan\i{}mland\i{}\u{g}\i{} b\"{o}l\"{u}mler, ``Keyboard'' ve ``Pointer'' ad\i{}
alt\i{}ndad\i{}r. A\c{c}\i{}klama sat\i{}rlar\i{}n\i{}n ba\c{s}\i{}nda ``\#'' karakteri yeral\i{}r. \"{O}rnek
dosyan\i{}n yerald\i{}\u{g}\i{} makinada farenin kulland\i{}\u{g}\i{} protokol, ``MouseSystems''
olup hemen her standart fare i\c{c}in bu protokol \"{o}nerilir. Di\u{g}er
protokoller aras\i{}nda {\em Busmouse, Logitech, Microsoft, MMSeries, Mouseman,
MouseSystems, PS\/}2, MMHitTab/ vard\i{}r. X a\c{c}\i{}ld\i{}\u{g}\i{} zaman her\c{s}ey yolunda
gitmesine ra\u{g}men farenin ikonu hareket etmiyor veya ekranda deli gibi
oradan buraya ko\c{s}u\c{s}turuyorsa farenin kulland\i{}\u{g}\i{} protokol\"{u} de\u{g}i\c{s}tirin.
Baz\i{} farelerin alt\i{}ndaki k\"{u}\c{c}\"{u}k anahtar\i{}n bulundu\u{g}u konumu de\u{g}i\c{s}tirmeniz
de i\c{s}e yarayabilir.

\begin{verbatim}
Section "Keyboard"
        Protocol "Standard"
        Autorepeat 500 5
        ServerNumLock
EndSection

Section "Pointer"
        Protocol "MouseSystems"
        Device "/dev/mouse"     
Emulate3buttons         # iki tuslu microsoft farede 3. tusun, 
                        # iki tusla basilmasini saglamak icin...
ChordMiddle             # 3 tuslu Logitech fareler icin 
EndSection
\end{verbatim}


Farenin kulland\i{}\u{g}\i{} seri port /dev/mouse 'dur. Bu dosya, genellikle
uygun olan bir seri arabirime (\"{o}rne\u{g}in /dev/ttyS0) ba\u{g}l\i{}d\i{}r.

{\tt XF86Config} dosyas\i{}n\i{}n en \"{o}nemli b\"{o}l\"{u}m\"{u} monit\"{o}rle ilgili bilgilerin
yerald\i{}\u{g}\i{} k\i{}s\i{}md\i{}r. Bu b\"{o}l\"{u}mde monit\"{o}r\"{u}n yatay (Horizontal Sync) ,d\"{u}\c{s}ey
frekanslar\i{} (VertRefresh) ve frekans aral\i{}klar\i{}yla s\"{u}r\"{u}c\"{u} saat frekans\i{}
(dot-clock frequency) belirtilir. Kulland\i{}\u{g}\i{}n\i{}z monit\"{o}rle ilgi
konfig\"{u}rasyon s\i{}ras\i{}nda girilen bilgiler bu b\"{o}l\"{u}mde yeral\i{}r.

\begin{verbatim}
Section "Monitor"
        Identifier "CTX 5468 NI"
        
HorizSync 30-38, 47-50
        VertRefresh 50-90

        # Modes : Name     Dotclock     horiz        vert

        Modeline "640x480"   25   640 664 760 800   480 491 ...
        ...

EndSection
\end{verbatim}


``Identifier'',  kullan\i{}lan monit\"{o}r\"{u}n tipini verir. X bunu kullanmaz,
istedi\u{g}iniz herhangi bir kelimeyi yazabilirsiniz. HorizSync, monit\"{o}r\"{u}n
yatay frekans\i{}n\i{} kHz cinsinden belirtir. VertRefresh ise monit\"{o}r\"{u}n
tazeleme frekans\i{} olup Hz cinsindendir. Her iki de\u{g}er, frekans aral\i{}\u{g}\i{}
veya tek say\i{} olarak verilebilir.

``Modeline'' kelimesi ile ba\c{s}layan sat\i{}rda belirli bir \c{c}\"{o}z\"{u}n\"{u}rl\"{u}k i\c{c}in
gerekli ``Dotclock'' (s\"{u}r\"{u}c\"{u} saat frekans\i{}) ile yatay ve d\"{u}\c{s}ey tarama
frekanslar\i{} MHZ cinsinden yaz\i{}l\i{}d\i{}r. Bu tan\i{}mlar ile ilgili daha geni\c{s}
bilgiyi /usr/X11/lib/X11/doc dizini i\c{c}inde bulabilirsiniz. Yukar\i{}da
yeralan bilgileri kendiniz i\c{c}in kullanmaman\i{}z, monit\"{o}r\"{u}n\"{u}z\"{u}n sa\u{g}l\i{}\u{g}\i{}
a\c{c}\i{}s\i{}ndan tavsiye edilir.

Monit\"{o}r bilgilerinin yerald\i{}\u{g}\i{} b\"{o}l\"{u}mden sonra ekran ve alt b\"{o}l\"{u}m\"{u} olan
g\"{o}r\"{u}nt\"{u} b\"{o}l\"{u}m\"{u} gelir.

\begin{verbatim}
Section "Screen"
        ...
                Depth 8 
                Modes "1024x768" "800x600" 
                ViewPort 0 0
                Virtual 1024 768
EndSubsection 
EndSection
\end{verbatim}




Driver k\i{}sm\i{}nda kullan\i{}lacak olan X sunucusunun tipi (SVGA,
h\i{}zland\i{}r\i{}lm\i{}\c{s}, vb.) girilir. S3, Weitek, ATI gibi h\i{}zland\i{}r\i{}lm\i{}\c{s} bir
g\"{o}r\"{u}nt\"{u} kart\i{} kullan\i{}l\i{}yorsa ``Accel'', normal (generic) bir kart ve
kaliteli bir monit\"{o}r varsa ``SVGA'' ve siyah beyaz VGA bir monit\"{o}rle
birlikte tek renk (monochrome) destekleyen kart kullan\i{}l\i{}yorsa ``VGA2''
yaz\i{}l\i{}d\i{}r.

``Indentifier'' ve ``Monitor'' b\"{o}l\"{u}mlerinde yaz\i{}lanlar g\"{o}zard\i{} edilebilir.

``Display'' alt b\"{o}l\"{u}m\"{u}nde, g\"{o}r\"{u}nt\"{u} \"{o}zellikleri yeral\i{}r. ``Depth''
kelimesinin kar\c{s}\i{}s\i{}nda yeralan rakam, piksel ba\c{s}\i{}na ka\c{c} bitin, ba\c{s}ka
bir deyi\c{s}le ka\c{c} rengin kullan\i{}laca\u{g}\i{}n\i{} belirtir. Monit\"{o}r\"{u}n belirli bir
\c{c}\"{o}z\"{u}n\"{u}rl\"{u}kte ka\c{c} renk birden g\"{o}sterebilece\u{g}ini bulmak i\c{c}in bu say\i{}y\i{}
2'nin kuvveti olarak yaz\i{}n ve hesaplay\i{}n. G\"{u}n\"{u}m\"{u}z XFree86 sunucular\i{}
genellikle 256 (8 bit), 65536 (16 bit) ve 16.7 milyon (24 bit) renge
kadar \c{c}\i{}kabilirler.

``Modes'' kar\c{s}\i{}s\i{}nda yeralan ekran \c{c}\"{o}z\"{u}n\"{u}rl\"{u}k listesi, Linux'un X
alt\i{}nda \c{c}al\i{}\c{s}\i{}rken g\"{o}r\"{u}nt\"{u}leyebilece\u{g}i \c{c}\"{o}z\"{u}n\"{u}rl\"{u}kleri belirtir. X
alt\i{}nda burada yaz\i{}l\i{} \c{c}\"{o}z\"{u}n\"{u}rl\"{u}kler aras\i{}nda ge\c{c}i\c{s} yapabilmek i\c{c}in
Control-Alt-N\"{u}merik + veya Control-Alt-N\"{u}merik - tu\c{s}lar\i{}n\i{}
kullanabilirsiniz. ``Modes'' ile ba\c{s}layan sat\i{}rdaki ilk \c{c}\"{o}z\"{u}n\"{u}rl\"{u}k, X
Window a\c{c}\i{}ld\i{}\u{g}\i{} zaman kullan\i{}lacak olan \c{c}\"{o}z\"{u}n\"{u}rl\"{u}kt\"{u}r (yukar\i{}daki
\"{o}rnekte 1024x768).

``Virtual'' kar\c{s}\i{}s\i{}nda yeralan x ve y say\i{}lar\i{} s\i{}rayla ekran\i{}n
geni\c{s}li\u{g}ini ve y\"{u}ksekli\u{g}ini belirtir. X a\c{c}\i{}ld\i{}ktan sonra ekran
geni\c{s}li\u{g}i yetmedi\u{g}i durumlarda kullan\i{}labilir. Bu iki say\i{}y\i{}, g\"{o}r\"{u}nt\"{u}
kart\i{} haf\i{}zas\i{} yetene kadar art\i{}r\i{}n. \"{O}rnek olarak 1024x768 ekran
\c{c}\"{o}z\"{u}n\"{u}rl\"{u}\u{g}\"{u}nde 1152 ve 900 say\i{}lar\i{}n\i{} yerle\c{s}tirin. X Window a\c{c}\i{}ld\i{}\u{g}\i{}
zaman fare ile ekran\i{}n sa\u{g} alt k\"{o}\c{s}esine gidin. Ekran\i{}n kayd\i{}\u{g}\i{}n\i{}
g\"{o}receksiniz. Ger\c{c}ek ekran boyutunu ``Virtual'' parametreleri belirler.

``Virtual'' girdilerinin ard\i{}ndan verilen ``ViewPort'' parametresi de
ekran\i{}n sol \"{u}st k\"{o}\c{s}esinin hangi koordinatlara tekab\"{u}l edece\u{g}ini
tan\i{}mlar. Yukar\i{}daki \"{o}rnekte s\"{o}zkonusu noktay\i{} (0, 0) olarak
belirttik.






\section{X Window Komutlar\i{} }



Konfig\"{u}rasyon i\c{s}lemini bitirdi\u{g}imize g\"{o}re s\i{}rada X Window'u denemek
var. A\c{s}a\u{g}\i{}daki komutu yazmadan \"{o}nce PATH de\u{g}i\c{s}keninin i\c{c}inde
{\tt /usr/X11/bin} oldu\u{g}undan emin olun.

\begin{verbatim}
$ startx
\end{verbatim}


Ekranda X sunucunun dosyadan okudu\u{g}u sat\i{}rlar ile ilgili bilgileri
s\i{}rayla g\"{o}receksiniz. Ard\i{}ndan ekran kararacak ve X a\c{c}\i{}lacakt\i{}r.
Hevesinizi ald\i{}ktan sonra Control-Alt-Backspace (Delete de\u{g}il! :)
tu\c{s}lar\i{}na bas\i{}n ve X sunucusunu \"{o}ld\"{u}rerek ba\c{s}lad\i{}\u{g}\i{}n\i{}z vt100
terminaline geri d\"{o}n\"{u}n.

Diyelim ki ekran karard\i{} ama X a\c{c}\i{}lmad\i{}. Konfig\"{u}rasyonda hatalar
olabilir. Ekranda \c{c}\i{}kan hata mesajlar\i{}n\i{} kaydedip incelemeniz gerekir.
\c{C}ok yap\i{}lan konfig\"{u}rasyon hatalar\i{}n\i{}n ba\c{s}\i{}nda \c{c}ipsetin ve ekran kart\i{}
bilgilerinin yanl\i{}\c{s} girilmesi, ``Virtual'' parametrelerinin hatal\i{} olmas\i{}
ve g\"{o}r\"{u}nt\"{u} kart\i{} haf\i{}zas\i{}n\i{}n ekran\i{} a\c{c}maya yetmemesi vard\i{}r. Bu sefer
hata mesajlar\i{}n\i{} ay\i{}klay\i{}p bir dosyan\i{}n i\c{c}ine atarak sunucuyu tekrar
\c{c}al\i{}\c{s}t\i{}r\i{}n. Sonra da dosyay\i{} inceleyip sorunun nerede oldu\u{g}unu
bulabilirsiniz.

\begin{verbatim}
$ startx > /tmp/hatalar 2>&1
\end{verbatim}


Ekrana \c{c}\i{}kmas\i{} gereken t\"{u}m sat\i{}rlar {\tt /tmp/hatalar} dosyas\i{}na
y\"{o}nlendirilecektir. \c{C}ipseti do\u{g}ru olarak se\c{c}mek i\c{c}in {\tt SuperProbe}
program\i{}n\i{} kullanabilirsiniz. Bu komutu kulland\i{}ktan sonra ekrandaki
\c{c}\i{}kt\i{}dan ald\i{}\u{g}\i{}n\i{}z bilgileri konfig\"{u}rasyon s\i{}ras\i{}nda programa girin.

X sunucuyu ba\c{s}latmaya yarayan {\tt startx} komutu, ev dizini i\c{c}indeki
{\tt .xinitrc} dosyas\i{}n\i{} arar. Bulamazsa sistemde
{\tt /usr/X11/lib/X11/xinit/} dizini i\c{c}inde yeralan xinitrc
dosyas\i{}n\i{} okur. Bu dosyan\i{}n i\c{c}ine X a\c{c}\i{}ld\i{}\u{g}\i{} zaman ba\c{s}layacak olan
programlar\i{} koyabilir, ekran\i{}n renk d\"{u}zenlemesini yapabilirsiniz. \"{O}rnek
bir {\tt .xinitrc} dosyas\i{} a\c{s}a\u{g}\i{}daki gibidir :

\begin{verbatim}
#!/bin/bash
#
#start xterms
#
xterm -geometry 80x25+10+10 -bg black -fg white &
xterm -geometry 80x25 -bg darkgray -fg white &

xclock &
xload &
xbiff &
xsetroot -solid darkblue &

# startx wm
exec fvwm 
#
\end{verbatim}


{\tt .xinitrc} dosyas\i{} gayet kolay ve anla\c{s}\i{}l\i{}r bir dile sahiptir. Sadece
hangi X programlar\i{}n\i{} \c{c}al\i{}\c{s}t\i{}rmak istedi\u{g}inizi buraya yaz\i{}n ve
arkaplanda b\i{}rak\i{}n (bunu unutursan\i{}z X'ten \c{c}\i{}k\i{}ncaya kadar sadece ilk
program \c{c}al\i{}\c{s}\i{}r). \.{I}lk iki sat\i{}rda xterm \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}yor. Hemen hemen t\"{u}m
X programlar\i{}n\i{}n ortak \"{o}zelli\u{g}i, kullan\i{}c\i{}n\i{}n bu programlar\i{} ekranda
hangi koordinatlara yerle\c{s}tirileceklerini belirleyebilmesidir. \.{I}lk
xterm program\i{} 80x25 karakter boyutlar\i{}nda olup sol \"{u}st k\"{o}\c{s}eden
itibaren 10 piksel sola, 10 piksel sa\u{g}a yerle\c{s}tirilecektir. Xterm'\"{u}n
arkaplan ve yaz\i{}tipi rengi s\i{}rayla {\em -bg\/} ve {\em -fg\/} parametreleriyle belirtilir.
Renkler ingilizce isimleriyle verilir. Bunlar hakk\i{}nda daha fazla bilgi
i\c{c}in {\tt /usr/X11/lib/X11} dizini alt\i{}ndaki {\tt rgb.txt} dosyas\i{}na g\"{o}z
gezdirin.

Ard\i{}ndan s\i{}ras\i{}yla {\em xclock\/} (X alt\i{}nda \c{c}al\i{}\c{s}an saat program\i{}), {\em xload\/}
(sisteme ne kadar y\"{u}k bindi\u{g}ini g\"{o}sterir) ve {\em xbiff\/} (e-posta gelince
haber verir) \c{c}al\i{}\c{s}t\i{}r\i{}l\i{}yor. Asl\i{}nda bo\c{s} vaktinizde bakman\i{}z\i{} bekleyen,
X Window ile birlikte gelen onlarca uygulama program\i{} vard\i{}r. Bunlar\i{}
da arkaplanda \c{c}al\i{}\c{s}t\i{}r\i{}n.

Sondan bir \"{o}nceki komut olan {\tt xsetroot}, baz\i{} ho\c{s} \"{o}zellikleri olan bir
programd\i{}r. Bu sat\i{}rdaki g\"{o}revi, X Window arkaplan rengini koyu mavi
yapmakt\i{}r. Unutmay\i{}n, {\tt .xinitrc} dosyas\i{}n\i{}n i\c{c}ine X a\c{c}\i{}l\i{}rken  ba\c{s}latmak
istedi\u{g}iniz her program\i{} koyabilirsiniz.

Danan\i{}n kuyru\u{g}unun koptu\u{g}u son sat\i{}rda ise X sunucusu, pencere
y\"{o}neticisini \c{c}al\i{}\c{s}t\i{}r\i{}yor. Daha \"{o}nce de belirtildi\u{g}i gibi wm, kullan\i{}c\i{}
ile X aras\i{}ndaki idareyi sa\u{g}l\i{}yor. E\u{g}er yeterli RAM'\i{}n\i{}z varsa ve h\i{}zl\i{} bir 
bilgisayara sahipseniz \url{http://www.plig.org/xwinman}{bu sayfadaki} AfterStep ve Enlightenment pencere denetleyicilerini
deneyebilirsiniz. 






\section{Fvwm Pencere Y\"{o}neticisi }



Fvwm, Linux i\c{c}in \"{o}zel olarak geli\c{s}tirilmi\c{s} bir wm'dir. Di\u{g}er wm'lere
kar\c{s}\i{} belirli \"{u}st\"{u}nl\"{u}kleri olan fvwm'in rahat\c{c}a konfig\"{u}re edilebilir
bir rc dosyas\i{}, renkli ikon deste\u{g}i, ``pager'' (birden fazla ekran\i{} ayn\i{}
anda kontrol etme yetene\u{g}i), farenin tu\c{s}lar\i{}na bas\i{}ld\i{}\u{g}\i{} zaman ekrana
gelen ``popup'' men\"{u}leri ve Motif deste\u{g}i vard\i{}r.

``Pager'', fvwm'i \"{u}st\"{u}n k\i{}lan ve kullan\i{}c\i{}n\i{}n "olsa da kullansak"
beklentilerine tam anlam\i{}yla cevap veren bir \"{o}zelliktir. Ekran\i{}n bir
k\"{o}\c{s}esine yerle\c{s}tirilen bir pencere ile farenin tu\c{s}lar\i{}na basarak
istedi\u{g}iniz ba\c{s}ka bir ekrana ge\c{c}mek m\"{u}mk\"{u}n olur.

Fvwm \c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}\u{g}\i{} zaman ev dizininde yeralan {\tt .fvwmrc} dosyas\i{}n\i{}
okumaya \c{c}al\i{}\c{s}\i{}r, bu dosyay\i{} bulamazsa sistemdeki \"{o}rnek fvwmrc dosyas\i{}n\i{}
({\tt /usr/X11/lib/X11/fvwm/system.fvwmrc}) a\c{c}\i{}l\i{}\c{s} konfig\"{u}rasyon
dosyas\i{} olarak kabul eder. E\u{g}er Slackware 3.0'dan daha yeni bir da\u{g}\i{}t\i{}m
kullan\i{}yorsan\i{}z, sistemde X a\c{c}arken \"{o}ntan\i{}ml\i{} olarak fvwm95 kullan\i{}yor
olacaks\i{}n\i{}z. fvwm95 pencere y\"{o}neticisinin \"{o}rnek konfig\"{u}rasyon
dosyalar\i{}n\i{} {\tt /usr/X11/lib/X11/fvwm95-2} dizininde bulabilirsiniz.
Be\u{g}eninize hitap eden pencere denetleyicisine uygun olarak
sistemde yeralan \"{o}rnek dosyay\i{} kopyalay\i{}p zevkinize g\"{o}re istedi\u{g}iniz
de\u{g}i\c{s}iklikleri yapabilirsiniz. Burada fvwm'in birka\c{c} \"{o}zelli\u{g}ine de\u{g}inip
\"{o}rnek bir konfig\"{u}rasyon dosyas\i{}ndaki baz\i{} sat\i{}rlar\i{} inceleyece\u{g}iz.

\begin{verbatim}
#set up colors
StdForeColor            white
StdBackColor            midnightblue
HiForeColor             white
HiBackColor             red
Font                    -adobe-helvetica-meduum-r-normal-*-*-120-*
WindowFont              -adobe-helvetica-bold-r-normal-*-*-120-*
#
\end{verbatim}


Farenin \"{u}zerinde kalan pencerelerin rengini (ki bu s\i{}rada pencereye
klavyeden bilgi giri\c{s}i yap\i{}labilir) di\u{g}erlerinden ay\i{}rmak m\"{u}mk\"{u}nd\"{u}r.
B\"{o}ylece kullan\i{}c\i{} hangi pencerenin aktif oldu\u{g}una dair teredd\"{u}te
d\"{u}\c{s}mez. HiForeColor ve HiBackColor de\u{g}erlerinin g\"{o}sterdi\u{g}i renk, aktif
pencerenin rengidir. ForeColor, pencerede yeralan metnin rengi,
BackColor ise pencere arkaplan rengini temsil eder.

Aktif olmayan pencereler i\c{c}in StdForeColor ve StdBackColor komutlar\i{}
ge\c{c}erlidir. Font ve WindowFont parametreleri de s\i{}rayla pencerenin
ismini g\"{o}steren yaz\i{}tipi ve pencere i\c{c}inde kullan\i{}lan yaz\i{}tipini belirler.

S\i{}k\c{c}a kullan\i{}lan bir ba\c{s}ka parametre de ``Style'' d\i{}r. Style yard\i{}m\i{}yla
ekrandaki bir pencerenin di\u{g}er pencerelerle olan hiyerar\c{s}ik d\"{u}zenini
ayarlayabilirsiniz.

\begin{verbatim}
Style "xclock" NoBorder 
Style "xbiff" StaysOnTop
Style "xterm" Sticky
\end{verbatim}


\.{I}lk s\i{}rada yeralan komut ile xclock saat program\i{}, fvwm taraf\i{}ndan
penceresiz olarak ekrana konuyor. \.{I}kinci komut ile xbiff uygulama
program\i{}, \"{u}zerine hangi pencere gelirse gelsin \"{u}stte kal\i{}yor. Sticky
ise Pager yard\i{}m\i{}yla pencere de\u{g}i\c{s}tirdi\u{g}iniz zaman istedi\u{g}iniz
program\i{}n ekranda eski yerini almas\i{}n\i{} sa\u{g}l\i{}yor.

Farenin sa\u{g} tu\c{s}una bast\i{}\u{g}\i{}n\i{}z zaman ekrana gelen men\"{u}ye "popup" ismi
verilir. Bu men\"{u}lere de .fvwmrc dosyas\i{} yard\i{}m\i{}yla kolayca ekleme
yap\i{}labilir, \"{u}zerinde de\u{g}i\c{s}iklik uygulabilir. Men\"{u}, konfig\"{u}rasyon
dosyas\i{} i\c{c}inde, "Popup" ve "EndPopup" sat\i{}rlar\i{} aras\i{}nda tan\i{}mlan\i{}r ve
bir isim verilir:



\begin{verbatim}
Popup "Menu ismi"
        Title "XClients" 
        Exec "Mosaic"   exec Mosaic &
        Exec "xterm"    exec xterm &
        Exec "emacs"    exec emacs &
        Nop ""
Exec "rlogin"   exec xterm -e rlogin orca &
        Exec "telnet"   exec xterm -e telnet &
        Nop ""
Exec "xcalc"    exec xcalc &
        Exec "xman"     exec xman  &
EndPopup
\end{verbatim}


Farenin tu\c{s}una bas\i{}l\i{}nca ekrana, {\em exec\/} kelimesinin sa\u{g}\i{}nda yeralan ve
iki t\i{}rnak i\c{c}ine al\i{}nan men\"{u} ba\c{s}l\i{}klar\i{} gelir. Her men\"{u} ba\c{s}l\i{}\u{g}\i{}n\i{}n
kar\c{s}\i{}s\i{}nda, o program se\c{c}ildi\u{g}i zaman \c{c}al\i{}\c{s}acak olan program yeral\i{}r.
``Nop'', men\"{u} \"{u}zerinde yatay bir \c{c}izgi \c{c}eker.

X alt\i{}nda kullan\i{}labilecek yaz\i{}tipi say\i{}s\i{} neredeyse s\i{}n\i{}rs\i{}z denilebilecek
kadar \c{c}oktur. Bu yaz\i{}tiplerini kullanmak i\c{c}in iki yolunuz var. X Window
a\c{c}\i{}l\i{}rken \c{c}al\i{}\c{s}t\i{}r\i{}lan xterm'e standart parametre olarak girilir, veya
do\u{g}rudan komut sat\i{}r\i{} \"{u}zerinde kullanmak istedi\u{g}iniz yaz\i{}tipi 
se\c{c}ebilirsiniz. Halihaz\i{}rda kullan\i{}labilecek olan yaz\i{}tiplerini g\"{o}rebilmek
i\c{c}in \c{s}u komutu kullan\i{}n :

\begin{verbatim}
$ xlsfonts 
\end{verbatim}


Ekran b\"{u}y\"{u}k bir h\i{}zla kayacak ve xinitrc dosyas\i{}n\i{}n FontPath
parametresinin g\"{o}sterdi\u{g}i dizin alt\i{}ndaki dosyalar\i{} temsil eden yaz\i{}tipleri
ekrana gelecektir. Her sat\i{}r, bir yaz\i{}tipi ismine tekab\"{u}l eder. G\"{o}r\"{u}ld\"{u}\u{g}\"{u}
gibi X alt\i{}nda kullan\i{}lan yaz\i{}tipleri isimleri gayet uzun olup toplam 14
parametreden olu\c{s}ur. Bu sat\i{}rlardan uygun olan birini se\c{c}ip (\"{o}rne\u{g}in
kal\i{}n yaz\i{}tipini)

\begin{verbatim}
$ xlsfonts | grep bold
\end{verbatim}


veya belirli bir s\i{}ray\i{} izlemek i\c{c}in 

\begin{verbatim}
$ xlsfonts -fn -*-*-bold-*-*-*-*-*-*-70-iso8859-9
\end{verbatim}


komut sat\i{}r\i{} \"{u}zerinden di\u{g}er xterm'\"{u} a\c{c}abilirsiniz. 

\begin{verbatim}
$ xterm  -fn -misc-fixed-bold-r-normal--13-100-100-100-c-70-iso8859-9
\end{verbatim}


iso8859-9, i\c{c}inde T\"{u}rk\c{c}e yaz\i{}y\"{u}zlerinin bulundu\u{g}u standart\i{} g\"{o}sterir. 




\subsection{X Alt\i{}nda T\"{u}rk\c{c}e Yaz\i{}tipi ve Klavye Kullan\i{}m\i{}}



Kulland\i{}\u{g}\i{}n\i{}z her i\c{s}letim sisteminde T\"{u}rk\c{c}e karakterlerin g\"{o}sterimi ve
T\"{u}rk\c{c}e klavye uyarlamas\i{} s\i{}k\i{}nt\i{}s\i{} \c{c}ekiyor olmal\i{}s\i{}n\i{}z. Linux'ta T\"{u}rk\c{c}e
yaz\i{}tipleri {\tt xterm} alt\i{}nda {\tt -fn} parametresi ile rahatl\i{}kla
g\"{o}r\"{u}lebilir, b\"{o}ylelikle T\"{u}rk\c{c}e okuyabilirsiniz.  \url{ftp://ftp.metu.edu.tr/pub/metu/trfonts}{ftp.metu.edu.tr} 
adresinden temin edece\u{g}iniz {\em Turkcebdf.tgz\/} paketinin i\c{c}inden \c{c}\i{}kan
k\"{u}\c{c}\"{u}k program, T\"{u}rk\c{c}e klavye da\u{g}\i{}l\i{}m\i{}n\i{} ayarl\i{}yor. Bu program
\c{c}al\i{}\c{s}t\i{}r\i{}ld\i{}ktan sonra Alt tu\c{s}u yard\i{}m\i{}yla T\"{u}rk\c{c}e karakterlerin
bas\i{}lmas\i{}n\i{} sa\u{g}lanabilir. \"{O}rnek olarak {\em Alt-u\/} ile \"{u}, {\em Alt-i\/} ile
\i{} karakterleri g\"{o}r\"{u}nt\"{u}lenebilir.

T\"{u}rk\c{c}e karakterlerinin g\"{o}r\"{u}nt\"{u}leyebilmek i\c{c}in \"{o}nceden T\"{u}rk\c{c}e yaz\i{}tiplerini sisteminize kurmu\c{s} olmal\i{}s\i{}n\i{}z. 

Bu \c{c}\"{o}z\"{u}mlerin \c{c}al\i{}\c{s}mas\i{} i\c{c}in X konfig\"{u}rasyonu s\i{}ras\i{}nda XKB isteyip
istemedi\u{g}iniz sorusuna hay\i{}r, Alt keys -{$>$} Meta keys d\"{o}n\"{u}\c{s}\"{u}m\"{u} isteyip
istemedi\u{g}iniz sorusuna evet yan\i{}t\i{} vermelisiniz.

Ayr\i{}ca baz\i{} yaz\i{}l\i{}mlarda T\"{u}rk\c{c}e harfleri kullanabilmeniz i\c{c}in iso8859-9
karakter setini se\c{c}meniz gerekir. \"{O}rne\u{g}in {\tt pine}'\i{}n Setup-{$>$}Config
men\"{u}s\"{u}nde ya da {\tt .pinerc} dosyas\i{}nda bulunan character-set de\u{g}i\c{s}kenine
iso8859-9 de\u{g}erini vermelisiniz. {\tt elm} i\c{c}in de benzer \c{s}ekilde {\tt .elmrc}
dosyas\i{}nda ayarlama yap\i{}lmal\i{}d\i{}r.




\chapter{Linux \.{I}\c{s}letim Sisteminde G\"{u}venlik}



Bilgisayar a\u{g}lar\i{} ve \"{o}zellikle \.{I}nternet, kullan\i{}c\i{}lara b\"{u}y\"{u}k olanaklar verirken ciddi g\"{u}venlik sorunlar\i{}n\i{} da beraberinde getirdi. A\u{g}a ba\u{g}l\i{} bilgisayarlarda \c{c}al\i{}\c{s}anlar\i{}n bu g\"{u}venlik sorunlar\i{} konusunda bilgili olmalar\i{} zorunlu hale geldi. Ancak g\"{u}venlik ile kullan\i{}m kolayl\i{}\u{g}\i{}n\i{}n \c{c}o\u{g}u zaman birbirleriyle \c{c}eli\c{s}mesi ve kullan\i{}c\i{}lar\i{}n se\c{c}imlerini genellikle kullan\i{}m kolayl\i{}\u{g}\i{}ndan yana kullanmalar\i{} g\"{u}venlik \"{o}nlemlerinin yerle\c{s}mesini engelledi. Bu b\"{o}l\"{u}m, akademik ortamlarda yayg\i{}n olarak kullan\i{}lan Linux i\c{s}letim sisteminde sistem sorumlular\i{}na g\"{u}venlik i\c{c}in yapabilecekleri konusunda yol g\"{o}stermek ve kullan\i{}c\i{}lara tehlikeleri tan\i{}tmak amac\i{}yla haz\i{}rlanm\i{}\c{s}t\i{}r.




\section{\c{S}ifreler ve \c{S}ifre Se\c{c}imi}



\c{C}ok kullan\i{}c\i{}l\i{} i\c{s}letim sistemlerinde kullan\i{}c\i{}n\i{}n kimli\u{g}inin belirlenmesi b\"{u}y\"{u}k \"{o}nem ta\c{s}\i{}r. Hem sistemi kullanmaya yetkisi olmayan ki\c{s}ilerin sisteme girmelerinin engellenmesi, hem de sistemdeki kullan\i{}c\i{}lar\i{}n birbirlerinden ay\i{}rdedilebilmeleri i\c{c}in, her kullan\i{}c\i{}ya bir \c{s}ifre verilir ve sisteme giri\c{s} ba\c{s}ta olmak \"{u}zere t\"{u}m kritik i\c{s}lemlerde kullan\i{}c\i{}ya \c{s}ifresi sorulur. \c{S}ifreler, di\u{g}er kullan\i{}c\i{} bilgileriyle birlikte, {\tt /etc/passwd} veya {\tt /etc/shadow} dosyas\i{}nda tutulur. 

Baz\i{} uygulamalar\i{}n \c{s}ifre dosyas\i{}n\i{}n baz\i{} alanlar\i{}na eri\c{s}meleri gerekti\u{g}inden \c{s}ifre dosyas\i{}, sistemdeki b\"{u}t\"{u}n kullan\i{}c\i{}lar taraf\i{}ndan okunabilecek bir dosya olmal\i{}d\i{}r. Bu nedenle \c{s}ifreler bu dosyaya a\c{c}\i{}k halde de\u{g}il, \c{s}ifrelenerek yaz\i{}l\i{}rlar. 

\c{S}ifre y\"{o}nteminin g\"{u}venilirli\u{g}i, sistemdeki kullan\i{}c\i{}lar\i{}n \c{s}ifre se\c{c}iminde g\"{o}sterdikleri \"{o}zene ba\u{g}l\i{}d\i{}r. Kolay ak\i{}lda kalacak \c{s}ifreler, \c{c}o\u{g}u zaman kolay tahmin edilebilir. Buna kar\c{s}\i{}l\i{}k, zor tahmin edilebilen \c{s}ifreler kullan\i{}c\i{}lar\i{}n ak\i{}llar\i{}nda kalmayabileceklerinden bir yere yazmalar\i{}na ve b\"{o}ylece yeni tehlikeler olu\c{s}turmalar\i{}na zemin haz\i{}rlayabilir. 

\c{S}u tip \c{s}ifreler kolay tahmin edilebilen \c{s}ifreler say\i{}lmaktad\i{}r:

\begin{enumerate}
\item Kullan\i{}c\i{} ile yak\i{}nl\i{}\u{g}\i{} olan ki\c{s}ilerinkiler (kendisi, ailesi, arkada\c{s}lar\i{}, yak\i{}nlar\i{}) ba\c{s}ta olmak \"{u}zere b\"{u}t\"{u}n erkek ve kad\i{}n isimleri
\item Do\u{g}um tarihleri
\item Kullan\i{}c\i{} ile ilgili herhangi bir bilgi (kullan\i{}c\i{} ad\i{}, oda numaras\i{}, telefon numaras\i{}, arabas\i{}n\i{}n plaka numaras\i{}, sosyal g\"{u}venlik numaras\i{})
\item Klavyede belli bir d\"{u}zene g\"{o}re ardarda gelen harflerden olu\c{s}an \c{s}ifreler (\"{o}rne\u{g}in qwerty veya abcdefg gibi)
\item Anlaml\i{} bir s\"{o}zc\"{u}k (bilgisayar terimleri, yer isimleri)
\item Yaln\i{}zca k\"{u}\c{c}\"{u}k (ya da yaln\i{}zca b\"{u}y\"{u}k) harflerden olu\c{s}an \c{s}ifreler
\item Yukar\i{}dakilerden birinin ba\c{s}\i{}na ya da sonuna bir rakam eklenerek olu\c{s}turulan \c{s}ifreler
\item Yukar\i{}dakilerin ters yaz\i{}l\i{}\c{s}lar\i{}
\end{enumerate}


\.{I}yi bir \c{s}ifre \"{u}retmek i\c{c}in \"{o}nerilen iki y\"{o}ntem vard\i{}r:

\begin{enumerate}
\item \.{I}ki s\"{o}zc\"{u}\u{g}\"{u}n aralar\i{}na bir rakam ya da noktalama i\c{s}areti konarak birle\c{s}tirilmesi
\item Se\c{c}ilen bir c\"{u}mlenin s\"{o}zc\"{u}klerinin ba\c{s} harfleri
\end{enumerate}





\subsection{Tehlikeler}



\c{S}ifre dosyas\i{}na eri\c{s}imi olmayan bir sald\i{}rgan, hedef se\c{c}ti\u{g}i bir kullan\i{}c\i{}n\i{}n \c{s}ifresini deneyerek bulmak zorundad\i{}r. Olas\i{} b\"{u}t\"{u}n \c{s}ifrelerin \c{c}oklu\u{g}u g\"{o}z\"{o}n\"{u}ne al\i{}n\i{}rsa bu tip bir sald\i{}r\i{}n\i{}n etkisiz olaca\u{g}\i{} d\"{u}\c{s}\"{u}n\"{u}lebilir. Ancak, \c{c}o\u{g}u sistemde, \c{s}ifresi bo\c{s} olan, kullan\i{}c\i{} ad\i{}yla ayn\i{} olan ya da sistem sorumlusunun ge\c{c}ici olarak verdi\u{g}i basit \c{s}ifreyi de\u{g}i\c{s}tir(e)meyen kullan\i{}c\i{}lar\i{}n say\i{}s\i{} az\i{}msanamayacak d\"{u}zeydedir. Bir tek kullan\i{}c\i{}n\i{}n bile \c{s}ifresinin elde edilmesi sisteme giri\c{s} i\c{c}in yeterli oldu\u{g}undan g\"{u}venlik a\c{c}\i{}s\i{}ndan b\"{u}y\"{u}k sorunlar yaratabilir.

Sald\i{}rgan, \c{s}ifre dosyas\i{}n\i{}n bir kopyas\i{}n\i{} alabilirse i\c{s}i olduk\c{c}a
kolayla\c{s}\i{}r. Hem \c{c}ok daha h\i{}zl\i{} \c{c}al\i{}\c{s}abilir, hem de hedef sistemin
sorumlusunun dikkatini \c{c}ekmek tehlikesinden kurtulur. Bir sald\i{}rgan\i{}n
\c{s}ifre dosyas\i{}n\i{} eline ge\c{c}irmesi birka\c{c} \c{s}ekilde m\"{u}mk\"{u}n olabilir. \"{O}rne\u{g}in
bir kullan\i{}c\i{}n\i{}n \c{s}ifresini elde ederek sisteme girer ve dosyay\i{} al\i{}r,
baz\i{} programlardaki hatalardan yararlanarak sisteme girmeden dosyay\i{}
elde edebilir, sistemdeki bir kullan\i{}c\i{} \c{s}ifre dosyas\i{}n\i{} sald\i{}rgana
g\"{o}nderebilir veya sald\i{}rgan, sistemdeki kullan\i{}c\i{}lardan biridir.

{\tt /etc/passwd} dosyas\i{}ndaki \c{s}ifreleri k\i{}rmaya \c{c}al\i{}\c{s}an \c{c}e\c{s}itli
yaz\i{}l\i{}mlar bulunmaktad\i{}r. Bunlar\i{}n en etkililerinden ve en yayg\i{}n
kullan\i{}lanlar\i{}ndan biri {\em Crack\/} isimli programd\i{}r. Alec E. Muffett
taraf\i{}ndan geli\c{s}tirilen Crack, s\"{o}zl\"{u}k sald\i{}r\i{}s\i{} y\"{o}ntemini kullanan bir
\c{s}ifre k\i{}rma program\i{}d\i{}r. Giri\c{s} olarak verilen s\"{o}zl\"{u}klerdeki s\"{o}zc\"{u}kleri
\c{s}ifre dosyas\i{}ndaki 'salt' bilgileriyle \c{s}ifreleyerek \c{s}ifre olarak
kullan\i{}l\i{}p kullan\i{}lmad\i{}klar\i{}na bakar. Ayr\i{}ca sistemin kullan\i{}c\i{}
bilgilerinden de olas\i{} \c{s}ifreler \"{u}retmeye \c{c}al\i{}\c{s}\i{}r. Bu paketi \url{ftp://ftp.metu.edu.tr/pub/sunsite/system/admin}{ftp.metu.edu.tr} adresinden temin edebilirsiniz.




\subsection{\"{O}nlemler}



\c{S}ifre g\"{u}venli\u{g}inin en \"{o}nemli \c{s}art\i{}, ba\c{s}ta sistem sorumlular\i{} olmak
\"{u}zere, b\"{u}t\"{u}n kullan\i{}c\i{}lar\i{}n iyi \c{s}ifre se\c{c}menin \"{o}nemini kavramalar\i{}d\i{}r.
Herkes, \c{s}ifresinin yetkisiz birinin eline ge\c{c}mesi durumunda kendisi ve
di\u{g}er kullan\i{}c\i{}lar a\c{c}\i{}s\i{}ndan olu\c{s}an tehlikeleri anlamal\i{}d\i{}r. Nelerin
k\"{o}t\"{u} \c{s}ifre oldu\u{g}u ve nas\i{}l iyi \c{s}ifre se\c{c}ilebilece\u{g}i konusunda
kullan\i{}c\i{}lar e\u{g}itilmelidir. Bu ko\c{s}ul ger\c{c}ekle\c{s}medik\c{c}e a\c{s}a\u{g}\i{}da s\"{o}z\"{u}
ge\c{c}en \"{o}nlemlerin \c{c}o\u{g}u da ba\c{s}ar\i{}s\i{}z olacakt\i{}r.

\begin{enumerate}
\item {\bf \c{S}ifre se\c{c}iminin kullan\i{}c\i{}ya b\i{}rak\i{}lmamas\i{}} : \c{S}ifreler, sistem sorumlusu taraf\i{}ndan ya da rasgele \c{s}ifre \"{u}reten bir program taraf\i{}ndan se\c{c}ilerek verilir ve kullan\i{}c\i{}lara \c{s}ifrelerini de\u{g}i\c{s}tirme hakk\i{} tan\i{}nmaz. Bu y\"{o}ntem, iyi \c{s}ifreler \"{u}retmekle birlikte, kullan\i{}c\i{}lar\i{}n ak\i{}llar\i{}nda tutamayacaklar\i{} \c{s}ifreleri bir yere yazmalar\i{}na neden olur. 
\item {\bf \c{S}ifre se\c{c}iminin k\i{}s\i{}tlanmas\i{}} : Kullan\i{}c\i{}n\i{}n k\"{o}t\"{u} oldu\u{g}u bilinen bir \c{s}ifre se\c{c}mesi engellenir. 
\item {\bf \c{S}ifre dosyas\i{}n\i{}n sistem sorumlusu taraf\i{}ndan k\i{}r\i{}lmas\i{}} : Sistem sorumlusu, zaman zaman, \c{s}ifre dosyas\i{}n\i{} Crack tipi bir program ile tarayarak zay\i{}f \c{s}ifreleri arar. Buldu\u{g}u zay\i{}f \c{s}ifreli kullan\i{}c\i{}lar\i{}n hesaplar\i{}n\i{} kilitler.
\item {\bf \c{S}ifrelerin ge\c{c}erlilik s\"{u}relerinin k\i{}s\i{}tlanmas\i{}} : Yeterince s\i{}k de\u{g}i\c{s}tirilmeyen \c{s}ifreler, kuvvetli de olsalar, sald\i{}rgana aramak i\c{c}in daha uzun zaman tan\i{}d\i{}klar\i{}ndan tehlike yarat\i{}rlar. Bu nedenle, \c{s}ifrelerin belli bir s\"{u}re sonunda ge\c{c}erliliklerini yitirerek yeni bir \c{s}ifre verilmesi zorunlulu\u{g}u getirilebilir. 
\item {\bf G\"{o}lge \c{s}ifreler (shadow passwords)} : \c{S}ifre dosyas\i{}n\i{}n baz\i{} alanlar\i{}n\i{}n herkes taraf\i{}ndan okunabilir olmas\i{} gerekse de, \c{s}ifre alan\i{}n\i{}n herkes taraf\i{}ndan okunabilir olmas\i{} gerekmez. Bu nedenle, \c{s}ifrelenmi\c{s} \c{s}ifreler ancak sistem sorumlusunun okuyabilece\u{g}i bir dosyaya al\i{}nabilir. \c{S}ifre  dosyas\i{}ndaki \c{s}ifre alan\i{}na herhangi bir bilgi yaz\i{}l\i{}rken (kullan\i{}c\i{} ad\i{}, * i\c{s}areti gibi), g\"{o}lge dosyas\i{}na (/etc/shadow) \c{s}ifrelenmi\c{s} \c{s}ifreler konur.

John F. Hough II taraf\i{}ndan geli\c{s}tirilen Shadow Password Suite, sistemdeki \c{s}ifre g\"{u}venli\u{g}ini art\i{}rmaya y\"{o}nelik bir pakettir. G\"{o}lge \c{s}ifrelerin yan\i{}s\i{}ra, daha uzun \c{s}ifreleri (16 karakter) desteklemesi ve \c{s}ifrelerin ge\c{c}erlilik s\"{u}relerini k\i{}s\i{}tlamas\i{} nedeniyle sistem sorumlular\i{}n\i{}n \c{c}ok\c{c}a kulland\i{}\u{g}\i{} ara\c{c}lar aras\i{}nda yer al\i{}r. \url{ftp://ftp.metu.edu.tr/pub/sunsite/system/admin}{ftp.metu.edu.tr} adresinde bulunabilir. Slackware 3.2 s\"{u}r\"{u}m\"{u}nden itibaren shadow deste\u{g}i vard\i{}r.
\end{enumerate}





\section{Dosya G\"{u}venli\u{g}i}



Her dosyan\i{}n bir sahibi, bir de grubu vard\i{}r. Dosya uzerinde kimin hangi i\c{s}lemleri yapabilece\u{g}ine dosyan\i{}n sahibi olan kullan\i{}c\i{} karar verir. Eri\c{s}im haklar\i{}, dosyan\i{}n sahibi, grubu ve di\u{g}erleri i\c{c}in ayr\i{} ayr\i{} belirtilir. 

\begin{verbatim}
-rwxr-x---   1 uyar     users           4030 Dec  4 15:30 dene
\end{verbatim}


Dizinler i\c{c}in de ayn\i{} eri\c{s}im haklar\i{} modeli ge\c{c}erlidir. Bir dizin
\"{u}zerindeki okuma izni, dizin alt\i{}ndaki programlar\i{}n listesinin
al\i{}n\i{}p al\i{}namayaca\u{g}\i{}n\i{}, yazma izni dizinde yeni bir dosya yarat\i{}l\i{}p
yarat\i{}lamayaca\u{g}\i{}n\i{}, \c{c}al\i{}\c{s}t\i{}rma izni de o dizine ge\c{c}ilip ge\c{c}ilemeyece\u{g}ini
belirler. Yetkili kullan\i{}c\i{}n\i{}n (root) b\"{u}t\"{u}n dosyalar ve dizinler
\"{u}zerinde (birka\c{c} sistem dosyas\i{} ve dizini haricinde) b\"{u}t\"{u}n i\c{s}lemleri
yapma yetkisi vard\i{}r.






\subsection{Tehlikeler}



\.{I}\c{s}letim sisteminde ya da uygulama programlar\i{}nda bir hata olmad\i{}\u{g}\i{} s\"{u}rece eri\c{s}im izni olmayanlar dosyay\i{} zaten okuyamayacaklard\i{}r. As\i{}l tehlike, yetkili kullan\i{}c\i{}n\i{}n yetkisini k\"{o}t\"{u}ye kullanarak kullan\i{}c\i{}lar\i{}n ki\c{s}isel dosyalar\i{}n\i{} ve mektuplar\i{}n\i{} okumas\i{}d\i{}r. Her \c{s}eye yetkisi olan bir kullan\i{}c\i{}, sistemin kararl\i{}l\i{}\u{g}\i{}n\i{} korumak i\c{c}in gerekli olmakla birlikte, g\"{u}venli\u{g}i ve \"{o}zel bilgilerin gizlili\u{g}ini bir ki\c{s}inin ahlak\i{}na b\i{}rakmas\i{} a\c{c}\i{}s\i{}ndan Linux (ve Unix) i\c{s}letim sisteminin g\"{u}venli\u{g}inin en zay\i{}f noktalar\i{}ndan biri olarak de\u{g}erlendirilmektedir.

Sald\i{}rgan, sisteme girince, hem sonraki giri\c{s}lerini kolayla\c{s}t\i{}rmak, hem de
daha rahat \c{c}al\i{}\c{s}abilmek i\c{c}in baz\i{} sistem dosyalar\i{}n\i{} ya da programlar\i{}n\i{}
de\u{g}i\c{s}tirebilir. \"{O}rne\u{g}in, \c{s}ifre dosyas\i{}na bir kay\i{}t ekleyerek kendine
yetkili bir kullan\i{}c\i{} yaratabilir. Kullan\i{}c\i{}lar\i{}n \c{s}ifrelerini \"{o}\u{g}renmek
i\c{c}in login, passwd gibi programlar\i{} de\u{g}i\c{s}tirebilir.






\subsection{\"{O}nlemler}



\c{S}ifre g\"{u}venli\u{g}i sa\u{g}land\i{}\u{g}\i{} s\"{u}rece dosya eri\c{s}imlerinde fazla bir g\"{u}venlik sorunu olmayacakt\i{}r. Bu konuda sistem sorumlusuna d\"{u}\c{s}en, kullan\i{}c\i{}lar\i{}n\i{} eri\c{s}im haklar\i{}n\i{} nasil d\"{u}zenleyecekleri konusunda bilgilendirmektir.

\c{S}ifre dosyas\i{} gibi metin dosyalar\i{}nda de\u{g}i\c{s}iklik olup olmad\i{}\u{g}\i{} g\"{o}zle inceleme yaparak ya da basit komut sat\i{}r\i{} programlar\i{} kullanarak bulunabilir. \c{C}al\i{}\c{s}t\i{}r\i{}labilir dosyalar g\"{o}zle kontrol edilemeyece\u{g}inden en uygun y\"{o}ntem, dosya imzalar\i{} olu\c{s}turarak sa\u{g}lam oldu\u{g}u bilinen imzalarla yeni hesaplanan imzalar\i{} kar\c{s}\i{}la\c{s}t\i{}rmakt\i{}r. {\em Tripwire\/} paketi, dosyalarda yap\i{}lan de\u{g}i\c{s}iklikleri farketmekte sistem sorumlusuna ve kullan\i{}c\i{}lara yard\i{}mc\i{} olur.  \"{O}nce sa\u{g}lam oldu\u{g}u bilinen dosyalar\i{}n dosya imzalar\i{} olu\c{s}turularak bir yerde saklan\i{}r. Sonraki \c{c}al\i{}\c{s}t\i{}rmalarda imzalar yeniden hesaplanarak eskileriyle kar\c{s}\i{}la\c{s}t\i{}r\i{}l\i{}r ve farkl\i{} olanlar varsa bildirilir. D\"{u}zg\"{u}n \c{c}al\i{}\c{s}ma i\c{c}in \"{o}zg\"{u}n imzalar\i{}n iyi korunmas\i{}, m\"{u}mk\"{u}nse, \"{u}st\"{u}ne yaz\i{}lamayan bir ortamda saklanmas\i{} gerekir. \url{ftp://coast.cs.purdue.edu/pub/COAST/Tripwire}{coast.cs.purdue.edu} adresinden temin edilebilir.




\section{TCP/IP Ortam\i{}nda G\"{u}venlik}



IP paketleri a\u{g}a a\c{c}\i{}k halde g\"{o}nderildiklerinden ileti\c{s}im fiziksel olarak
tamam\i{}yla g\"{u}vensizdir. A\u{g}dan paketleri alabilen herkes i\c{c}eriklerini
rahatl\i{}kla okuyabilir. \"{O}zellikle, bir ortak yol (bus) ile ger\c{c}eklenen
a\u{g}larda \c{c}ok belirgin olarak ortaya \c{c}\i{}kan bu sorun, \c{s}ifreler ba\c{s}ta olmak
\"{u}zere pek \c{c}ok duyarl\i{} bilginin kolayca ele ge\c{c}irilmesine yol a\c{c}ar.

Bir istemci, hizmet almak i\c{c}in bir sunucuya ba\u{g}lan\i{}rken ger\c{c}e\u{g}e ayk\i{}r\i{} bir
say\i{}sal ya da sembolik adres bildirebilir. Internet'teki temel g\"{u}venlik
sorunlar\i{}ndan biri, say\i{}sal - sembolik adres d\"{o}n\"{u}\c{s}\"{u}mleri i\c{c}in kullan\i{}lan
sunucular\i{}n yerel sistem sorumlusunun denetimi d\i{}\c{s}\i{}nda olmalar\i{} ve \c{c}o\u{g}u
protokol\"{u}n g\"{u}venlik ko\c{s}ullar\i{}n\i{}n sa\u{g}lanabilmesi i\c{c}in bunlara gereksinim
duymalar\i{}d\i{}r.

Bir sald\i{}rgan, sunucu bir makinayi \c{c}\"{o}kerterek hizmetlerin verilemez hale
gelmesine yol a\c{c}abilir. Buna, TCP/IP protokol ailesinin tasar\i{}m\i{}ndan,
sunucu s\"{u}re\c{c}lerdeki hatalardan veya i\c{s}letim sistemindeki hatalardan
kaynaklanan a\c{c}\i{}klar neden olabilir.

{\tt rsh}, {\tt rcp} ve {\tt rlogin} komutlar\i{}n\i{}n kullan\i{}lmas\i{}nda \c{s}ifre denetimlerinin
atlanabilmesi i\c{c}in ya t\"{u}m kullan\i{}c\i{}lar i\c{c}in ge\c{c}erli sistem dosyas\i{}nda
({\tt /etc/hosts.equiv}) ya da kullan\i{}c\i{}ya \"{o}zel eri\c{s}im dosyas\i{}nda ({\tt .rhosts})
ayarlamalar yap\i{}lmal\i{}d\i{}r. Sistem dosyas\i{}nda yer alan makinalar g\"{u}venilen
(trusted) makinalar kabul edilirler ve bu makinalardan ba\u{g}lanan
kullan\i{}c\i{}lar\i{}n isimleri yerel \c{s}ifre dosyas\i{}nda varsa \c{s}ifre denetimi
yap\i{}lmaz.






\subsection{\"{O}nlemler}



\.{I}nternet hizmetlerini ger\c{c}ekle\c{s}tiren programlar\i{}n \c{c}o\u{g}u halen \"{u}zerinde
geli\c{s}tirme ve hata ay\i{}klama i\c{s}lemleri s\"{u}ren programlard\i{}r. Sistem
sorumlusu, kulland\i{}\u{g}\i{} programlar\i{}n geli\c{s}imini izleyerek bilinen hatas\i{}
bulunmayan son s\"{u}r\"{u}mlerini edinmeli ve \c{c}al\i{}\c{s}t\i{}rmal\i{}d\i{}r. Ayr\i{}ca, Usenet'te
g\"{u}venlik ile ilgili forumlar\i{} izleyerek ve CERT (Computer Emergency
Response Team - \url{http://www.cert.org}{www.cert.org}) \"{o}nerilerine uyarak g\"{u}ncel olan
g\"{u}venlik bo\c{s}luklar\i{}n\i{} \"{o}\u{g}renmeli ve \"{o}nlemlerini almal\i{}d\i{}r.

Yap\i{}labilecek en temel i\c{s}lerden biri, verilmesine gerek olmayan ya da
ta\c{s}\i{}d\i{}\u{g}\i{} riske de\u{g}meyece\u{g}i d\"{u}\c{s}\"{u}n\"{u}len hizmetlerin sunucu s\"{u}re\c{c}lerini
\c{c}al\i{}\c{s}t\i{}rmamakt\i{}r. S\"{o}zgelimi, yerel a\u{g}da hi\c{c}bir NIS istemci makinas\i{}
bulunmad\i{}\u{g}\i{} halde bir bilgisayar\i{}n NIS sunucu s\"{u}recini \c{c}al\i{}\c{s}t\i{}r\i{}yor
olmas\i{} gereksiz bir risk i\c{c}erir. Baz\i{} sistem sorumlular\i{}, kullan\i{}c\i{}
isimleri ve sistemde kimin \c{c}al\i{}\c{s}t\i{}\u{g}\i{} gibi bilgileri d\i{}\c{s}ar\i{}ya aktard\i{}\u{g}\i{}
i\c{c}in finger hizmetini tehlikeli bularak kapat\i{}rlar. Hizmetin engellenmesi
i\c{c}in i\c{s}letim sisteminin a\c{c}\i{}l\i{}\c{s} dosyalar\i{}ndan ({\tt /etc/rc.d/rc.*}) ilgili
sunucular\i{} \c{c}al\i{}\c{s}t\i{}ran sat\i{}rlar (\"{o}zellikle netstat ve systat) kald\i{}r\i{}lmal\i{}d\i{}r.

Baz\i{} durumlarda, hizmeti b\"{u}t\"{u}n\"{u}yle kapatmaktansa, eri\c{s}imi ko\c{s}ullara ba\u{g}lamak daha anlaml\i{} olabilir. Bu ko\c{s}ullar, hizmetin hangi makinalara, hangi kullan\i{}c\i{}lara, hangi saatlerde verilece\u{g}i ya da verilmeyece\u{g}i \c{s}eklinde belirtilebilir. Bu tip k\i{}s\i{}tlamalar getiren programlar\i{}n en yayg\i{}n kullan\i{}lanlar\i{} {\em tcpwrapper\/} ve {\em xinetd\/} paketleridir.  Wietse Venema taraf\i{}ndan geli\c{s}tirilen tcpwrapper, sunuculara eri\c{s}imi ba\u{g}lant\i{} iste\u{g}inde bulunan makina ve kullan\i{}c\i{}ya gore k\i{}s\i{}tlayan ve ba\u{g}lant\i{} istekleriyle ilgili kay\i{}tlar tutan bir pakettir.

Bu paket Linux'un Slackware da\u{g}\i{}t\i{}m\i{}yla birlikte gelmektedir.

G\"{u}venli\u{g}in \"{o}nem ta\c{s}\i{}d\i{}\u{g}\i{} yerlerde giderek yayg\i{}nla\c{s}an alev duvar\i{} tekni\u{g}i, yerel a\u{g}daki bilgisayarlar\i{}n d\i{}\c{s}ar\i{}daki a\u{g}a do\u{g}rudan eri\c{s}imlerini kald\i{}rmay\i{} \"{o}ng\"{o}r\"{u}r. A\u{g}\i{}n y\"{o}nlendiricisi, a\u{g}da g\"{u}venli \c{c}al\i{}\c{s}t\i{}\u{g}\i{} bilinen yaln\i{}zca bir makinan\i{}n d\i{}\c{s}ar\i{}yla ba\u{g}lant\i{} kurmas\i{}na izin verir. Di\u{g}er bilgisayarlar d\i{}\c{s} a\u{g}a \c{c}\i{}kmak i\c{c}in bu makinadaki s\"{u}re\c{c}lere ba\u{g}lan\i{}rlar.






\section{Kay\i{}t Tutulmas\i{}}



G\"{u}venli\u{g}in en \"{o}nemli par\c{c}alar\i{}ndan biri, sistemin s\"{u}rekli izlenerek, g\"{u}venli\u{g}e ayk\i{}r\i{} durumlar olu\c{s}up olu\c{s}mad\i{}\u{g}\i{}n\i{}n, olu\c{s}tuysa bunlar\i{}n sorumlular\i{}n\i{}n kimler oldu\u{g}unun belirlenmesidir. Bunun i\c{c}in, g\"{u}venli\u{g}i ilgilendirebilecek her t\"{u}rl\"{u} olay\i{}n kayd\i{} tutulmal\i{}d\i{}r. \c{S}u tip bilgiler, g\"{u}venlik a\c{c}\i{}s\i{}ndan de\u{g}er ta\c{s}\i{}rlar:

\begin{itemize}
\item Ba\c{s}ar\i{}s\i{}z veya ba\c{s}ar\i{}l\i{} olmu\c{s} sisteme giri\c{s} denemeleri
\item Nerelerden, hangi hizmetler i\c{c}in ba\u{g}lant\i{} istekleri geldi\u{g}i
\item Hizmetler s\i{}ras\i{}nda ger\c{c}ekle\c{s}en dosya aktar\i{}mlar\i{}
\end{itemize}


Linux'ta kay\i{}t tutulmas\i{} i\c{s}ini syslogd s\"{u}reci g\"{o}r\"{u}r. Hangi t\"{u}r mesajlar\i{}n
hangi dosyaya yaz\i{}laca\u{g}\i{} konfig\"{u}rasyon dosyas\i{}nda ({\tt /etc/syslog.conf})
belirtilir. Genellikle makina ilk a\c{c}\i{}ld\i{}\u{g}\i{} zaman {\tt /var/adm/messages}
dizini alt\i{}ndaki {\tt messages}, {\tt xferlog}, {\tt syslog} gibi dosyalara yaz\i{}lan bu bilgileri iste\u{g}inize g\"{o}re daha sistematik bir yap\i{}da saklamak da m\"{u}mk\"{u}nd\"{u}r. A\u{g} ile ilgili hizmetleri denetleyen s\"{u}re\c{c}ler ({\em tcpwrapper\/}, {\em xinetd\/} gibi paketler) kay\i{}t dosyalar\i{}na girmesini istedikleri bilgileri syslogd s\"{u}recine bildirirler.






\chapter{EK}






\section{\.{I}nternet \"{u}zerinde yeralan Linux d\"{o}k\"{u}manlar\i{}}

{\bf Linux S\i{}k\c{c}a Sorulan Sorular (Linux \c{C}SS)} : Bu i\c{s}letim sistemi hakk\i{}nda linux@bilkent.edu.tr listesinden se\c{c}ilerek biraraya getirilen onlarca soru ve cevab\i{} bu belgede bulabilirsiniz. Linux'u hi\c{c} bilmeyenler kadar az bilgisi olanlara da yol g\"{o}steren ve genel sorunlara \c{c}\"{o}z\"{u}m getiren bu kaynak, ASCII ve HTML formatlar\i{}nda \c{s}u adresten temin edilebilir :

\begin{itemize}
\item \url{ftp://ftp.bilkent.edu.tr/pub/TURKCE}{ftp.bilkent.edu.tr}
\item \url{http://www.linux.org.tr}{www.linux.org.tr}
\item \url{http://www.ankara.edu.tr/start}{www.ankara.edu.tr}
\end{itemize}


{\bf Linux-NASIL d\"{o}k\"{u}manlar\i{}} : tr-ldp@metu.edu.tr listesinde bulunan
g\"{o}n\"{u}ll\"{u}lerin \c{c}\i{}kard\i{}\u{g}\i{} bu g\"{u}zel \c{c}al\i{}\c{s}ma, \c{c}e\c{s}itli Linux-HOWTO
d\"{o}k\"{u}manlar\i{}n\i{}n \c{c}evirisinden olu\c{s}uyor. Her bir dosya, \"{o}zel bir konuyu ele
al\i{}p yo\u{g}un olarak bu konunun i\c{s}lenmesinden ibaret olup Linux'u \"{o}\u{g}renmek
isteyen, fakat ana dili \.{I}ngilizce olmayanlar i\c{c}in b\"{u}y\"{u}k f\i{}rsat niteli\u{g}ini
ta\c{s}\i{}yor. Yakla\c{s}\i{}k 20 kadar \c{c}eviriden olu\c{s}an Linux-NASIL belgelerinin
bulunabilece\u{g}i adresler :

\begin{itemize}
\item \url{ftp://ftp.cclub.metu.edu.tr/pub/tr-ldp}{cclub.metu.edu.tr}
\item \url{ftp://ftp.linux.org.tr}{ftp.linux.org.tr}
\item \url{http://www.linux.org.tr}{www.linux.org.tr}
\end{itemize}


Yukar\i{}dakilerin d\i{}\c{s}\i{}nda, \url{ftp.metu.edu.tr/sunsite/docs/howto}{ftp.metu.edu.tr} adresinde,
Linux i\c{s}letim sistemi hakk\i{}nda yabanc\i{} kaynakl\i{} (\.{I}ngilizce, Frans\i{}zca
ve Almanca) d\"{o}k\"{u}manlar ve \c{c}eviriler vard\i{}r. Burada s\"{o}zkonusu \.{I}nternet
adresinde neler bulundu\u{g}unu belirtmek imkans\i{}z. Birka\c{c} HOWTO \"{o}rne\u{g}i
vermek gerekirse:

\begin{itemize}
\item {\bf Linux Installation-HOWTO} : Genel olarak Linux y\"{u}klemeyi anlatan bir kaynak
\item {\bf Linux Meta FAQ} : Genel olarak Linux hakk\i{}nda bilgi veren bir kaynak
\item {\bf Linux Bootdisk HOWTO} : Boot ve root disketlerini, bunlar\i{}n yarat\i{}lmas\i{}n\i{} inceleyen bir kaynak
\item {\bf Linux Distribution HOWTO} : Hangi da\u{g}\i{}t\i{}mlar\i{}n bulundu\u{g}unu ve nas\i{}l elde edilebileceklerini ayr\i{}nt\i{}lar\i{} ile anlatan bir kaynak.
\item {\bf Linux Hardware Compatibility HOWTO} : Linux taraf\i{}ndan desteklenen donan\i{}mlar\i{} \"{o}zetleyen bir kaynak.
\item {\bf Linux INFO-SHEET} : Linux hakk\i{}nda genel bilgi. 
\item {\bf Linux Kernel HOWTO} : \c{C}ekirdek hakk\i{}nda bilgi veren, nas\i{}l derlenebilece\u{g}ini, nereden bulunabilece\u{g}ini ve \c{c}ekirde\u{g}in i\c{s}levleri hakk\i{}nda bilgi veren bir kaynak. 
\item {\bf Linux NET-3 HOWTO} : Linux'\i{}n Network deste\u{g}i hakk\i{}nda bilgi veren kaynak. 
\item {\bf Linux DOS2Linux mini-HOWTO} : DOS kullan\i{}c\i{}lar\i{}na Linux hakk\i{}nda k\i{}sa bilgiler veren sevimli k\i{}sa bir yard\i{}m dosyas\i{} 
\item {\bf Linux LILO mini-HOWTO} : \c{C}e\c{s}itli de\u{g}i\c{s}ik LILO \"{o}rnekleri 
\item {\bf Linux Linux+DOS+Win95+OS2 mini-HOWTO} : Ad\i{} \"{u}zerinde ayn\i{} bilgisayarda hepsi birden.
\item {\bf Linux Linux+OS2+DOS mini-HOWTO} : Ad\i{} \"{u}zerinde 
\item {\bf Linux Linux+Win95 mini-HOWTO} : Ad\i{} \"{u}zerinde
\item {\bf Linux Multiple Disks Layout mini-HOWTO} : De\u{g}i\c{s}ik diskler \"{u}zerinde \c{c}e\c{s}itli disk b\"{o}l\"{u}mleri kullan\i{}rken dikkat etti\u{g}i noktalar\i{} a\c{c}\i{}klayan bir kullan\i{}c\i{}n\i{}n haz\i{}rlad\i{}\u{g}\i{} d\"{o}k\"{u}man
\item {\bf Linux Reading List} : Linux ile \c{c}al\i{}\c{s}\i{}rken yararlan\i{}labilecek kaynaklar\i{} s\i{}ralayan bir d\"{o}k\"{u}man. 
\item {\bf Linux Upgrade mini-HOWTO} : Bilgisayarda y\"{u}kl\"{u} mevcut Linux da\u{g}\i{}t\i{}m\i{}n\i{}n nas\i{}l g\"{u}ncellenebilece\u{g}ini anlatan bir kaynak. 
\item {\bf Linux Win95+Win+Linux mini-HOWTO} : Yani belirtmeme gerek var m\i{} ? :)
\end{itemize}


Siteye eri\c{s}ti\u{g}iniz zaman farkedece\u{g}iniz zenginlik sizi \c{s}a\c{s}\i{}rtacakt\i{}r. Bu
adresin yans\i{}s\i{}n\i{} T\"{u}rkiye'de ODT\"{U} ve B\.{I}LKENT \"{U}niversitelerinde yeralan
servisler tutmaktad\i{}r.

{\bf Yurtd\i{}\c{s}\i{} HOWTO adresi}
\begin{itemize}
\item \url{ftp://sunsite.unc.edu/pub/linux}{sunsite.unc.edu}
\end{itemize}


{\bf Di\u{g}er LDP ve HOWTO yans\i{}lar\i{}} 
\begin{itemize}
\item \url{http://www.metu.edu.tr:8080/ldp}{www.metu.edu.tr}
\item \url{http://www.ehb.itu.edu.tr/ldp/}{www.ehb.itu.edu.tr}
\item \url{http://www.bilkent.edu.tr/pub/linux}{www.bilkent.edu.tr}
\end{itemize}


Bu arada, t\"{u}m ftp adresleri i\c{c}in 'pub' dizininden sonra gelen neredeyse
tek ortak dizin {\em linux\/}'dur. D\"{u}\c{s}\"{u}k h\i{}z sizin i\c{c}in sorun ta\c{s}\i{}m\i{}yorsa
buradaki ftp ve www adreslerine ba\u{g}\i{}ml\i{} kalmak zorunda de\u{g}ilsiniz.

{\bf Linux Documentation Project (Linux d\"{o}k\"{u}man projesi)} ad\i{} alt\i{}nda, 1990
y\i{}l\i{}ndan beri Linux d\"{o}k\"{u}manlar\i{} haz\i{}rlan\i{}yor. Bu d\"{o}k\"{u}manlar hem \.{I}nternet
\"{u}zerinde bedava bulunmakta, hem de yaz\i{}c\i{} ve ka\u{g}\i{}t masraf\i{} gibi ince
i\c{s}lerle u\u{g}ra\c{s}mak istemeyenler i\c{c}in kitap olarak da bast\i{}r\i{}lmaktad\i{}r. Bir
dizi g\"{o}n\"{u}ll\"{u}n\"{u}n olu\c{s}turdu\u{g}u bu d\"{o}k\"{u}manlar, hem i\c{s}letim sisteminin h\i{}zla
geli\c{s}mesi, hem de \c{c}al\i{}\c{s}ma kapsam\i{}n\i{}n gittik\c{c}e geni\c{s}lemesi nedeniyle
herg\"{u}n g\"{u}ncellenerek geli\c{s}tirilmektedir. Linux i\c{c}in kullan\i{}m klavuzlar\i{}
(ve bu klavuzlar\i{} haz\i{}rlayan gruba) LDP Linux Documentation Project ad\i{}
verilir. Bu d\"{o}k\"{u}manlar:

\begin{itemize}
\item {\em Linux Installation and Getting Started, Matt Welsh\/} : Yeni ba\c{s}layanlar i\c{c}in m\"{u}kemmel denilebilecek bir kitap. Hemen her t\"{u}rl\"{u} bilgiye yer verilmi\c{s}. Tabii ki tek eksi\u{g}i T\"{u}rk\c{c}e olmamas\i{}.
\item {\em Linux System Administrators' Guide, Lars Wirzenius\/} : Linux \.{I}\c{s}letim Sistemini kurduktan sonra \c{c}ok kullan\i{}c\i{}l\i{} ortama ge\c{c}mek isteyenlere yol g\"{o}steren bir kaynak. Unutmay\i{}n ki siz de bir g\"{u}n sistem g\"{o}revlisi olabilirsiniz.
\item {\em Linux Network Administrator's Guide, Olaf Kirch\/} : Linux alt\i{}nda belli bir mesafe katettikten sonra \.{I}nternet ve a\u{g} yap\i{}s\i{}na girmek i\c{c}in bulunmaz bir kaynak. Gayet g\"{u}zel haz\i{}rlanan bu kitapta hemen her istedi\u{g}iniz bilgiyi bulabiliyorsunuz. 
\item {\em The Linux Kernel Hackers' Guide, Michael Johnson\/} : \c{C}ekirdek kaynak kodu birlikte verilen tek i\c{s}letim sistemi olan Linux'un en b\"{u}y\"{u}k avantaj\i{}, bu canavar\i{} asl\i{}nda istedi\u{g}iniz gibi y\"{o}netmenize izin vermesi. Linux Kernel Hacker's Guide, sistem programc\i{}l\i{}\u{g}\i{} hakk\i{}nda biraz altyap\i{}s\i{} olanlar i\c{c}in.
\item {\em Linux Users' Guide\/} : Temel kullan\i{}c\i{}ya Linux'un \"{o}zelliklerini detaylar\i{}yla verir ve bu i\c{s}letim sistemi \"{u}zerinde a\c{c}l\i{}ktan \"{o}lmemesi i\c{c}in yol g\"{o}sterir.
\item {\em The Linux Kernel, David A. Rusling\/} : \c{C}ekirde\u{g}in \c{c}al\i{}\c{s}ma prensipleri.
\item {\em The Linux Programmer's Guide\/} : Programc\i{}lara y\"{o}nelik.
\end{itemize}


{\bf Linux Gazette ve Linux Journal} : Linux Journal, {\em SSC\/} firmas\i{}
taraf\i{}ndan haz\i{}rlan\i{}p d\"{u}nyan\i{}n d\"{o}rt bir yan\i{}ndaki \"{u}yelerine
da\u{g}\i{}t\i{}l\i{}yor. Ayl\i{}k \c{c}\i{}kan bu dergi, profesyonel bir yay\i{}mc\i{} kitlesi
taraf\i{}ndan haz\i{}rlan\i{}yor ve Linux ile u\u{g}ra\c{s}anlar taraf\i{}ndan \c{c}ok tutulan
bir kaynak \"{o}zelli\u{g}ini ta\c{s}\i{}yor. Bunun yan\i{}nda Linux Gazette, i\c{c}erik olarak
Linux Journal'a yak\i{}n, ama sadece \.{I}nternet \"{u}zerinden bedava da\u{g}\i{}t\i{}l\i{}yor.

{\bf Linux Gazette ve Linux Journal ana sayfas\i{}}
\begin{itemize}
\item \url{http://www.ssc.com}{www.ssc.com}
\end{itemize}


{\bf T\"{u}rkiye'deki yans\i{}lar\i{}}
\begin{itemize}
\item \url{http://www.metu.edu.tr/ldp}{www.metu.edu.tr}
\item \url{http://www.linux.org.tr}{linux.org.tr}
\item \url{http://www.ehb.itu.edu.tr}{www.ehb.itu.edu.tr}
\end{itemize}


{\bf Haber Gruplar\i{}} : Usenet olarak da bilinen haber gruplar\i{}, onbinlerce
konu alt\i{}nda tart\i{}\c{s}ma gruplar\i{}n\i{} biraraya getirir. Bu konu yo\u{g}unlu\u{g}u
i\c{c}inde Linux i\c{c}in yakla\c{s}\i{}k 10-15 kadar tart\i{}\c{s}ma grubu a\c{c}\i{}kt\i{}r. \.{I}lk
olarak alt.os.linux ismi kullan\i{}larak yap\i{}lan tart\i{}\c{s}malar, Linux'un
b\"{u}y\"{u}k bir h\i{}zla yay\i{}lmas\i{}yla alt konulara ayr\i{}lm\i{}\c{s}t\i{}r.

\begin{itemize}
\item {\em comp.os.linux:\/} \.{I}nternet'in en \c{c}ok okunan 20 haber grubundan biri olan comp.os.linux'ta her t\"{u}rl\"{u} soru ve cevaplar\i{} bulabilirsiniz. 
\item {\em comp.os.linux.announce: \/}Linux i\c{s}letim sistemi hakk\i{}nda son haberler buraya y\"{o}nlendiriliyor. Hemen her t\"{u}rl\"{u} yaz\i{}l\i{}m, program hatalar\i{}, Linux seminer ve konferans haberleri an\i{}nda postalan\i{}yor.
\item {\em comp.os.linux.setup: \/}Linux kurulumu ve i\c{s}letimi hakk\i{}nda soru ve cevaplar\i{}n\i{} i\c{c}erir.
\item {\em comp.os.linux.hardware: \/}Linux'un destekledi\u{g}i donan\i{}mlar ve bunlarla ilgili genel tart\i{}\c{s}ma listesi
\item {\em comp.os.linux.networking: \/}Linux'un a\u{g} deste\u{g}i (TCP/IP, SLIP, PPP vs.) konusunda tart\i{}\c{s}ma listesi. E\u{g}er bu grubu takip etmek istiyorsan\i{}zi, comp.os.linux.hardware'a da g\"{o}z at\i{}n.
\item {\em comp.os.linux.x: \/}X Window kurulumu ve kullan\i{}m\i{} hakk\i{}nda soru ve cevaplar. Linux'a \"{o}zg\"{u} olmayan bir di\u{g}er X Window haber grubu da comp.windows.x.i386unix'tir. 
\item {\em comp.os.linux.advocacy: \/}Okumaktan en ho\c{s}land\i{}\u{g}\i{}m haber grubu. Linux'un di\u{g}er i\c{s}letim sistemleri \"{u}zerindeki \"{u}st\"{u}nl\"{u}kleri ve zay\i{}fl\i{}klar\i{} burada tart\i{}\c{s}\i{}l\i{}yor. Benim gibi MS-DOS sevmeyen birisi iseniz, buras\i{} sizi olduk\c{c}a tatmin edecektir. 
\item {\em comp.os.linux.misc: \/}Di\u{g}er gruplar\i{}n konular\i{} d\i{}\c{s}\i{}nda kalan tart\i{}\c{s}malar burada s\"{u}rd\"{u}r\"{u}l\"{u}yor. 
\end{itemize}


{\bf Tart\i{}\c{s}ma Listeleri} : E-posta at\i{}p alabilme imkan\i{}n\i{}z varsa, haber
gruplar\i{}n\i{}n ayr\i{} olarak listelere de \"{u}ye olabilirsiniz. Listeler,
tart\i{}\c{s}ma gruplar\i{}na g\"{u}zel bir alternatif te\c{s}kil ederler. T\"{u}rkiye'de
linux hakk\i{}nda a\c{c}\i{}lm\i{}\c{s} 4-5 tart\i{}\c{s}ma listesi bulunmaktad\i{}r. Bunlar\i{}n
aras\i{}nda g\"{o}ze \c{c}arpan ve en \c{c}ok kullan\i{}c\i{}s\i{} olan tart\c{s}ma listesi Bilkent
\"{U}niversitesi'nde yeralan listedir. Bu listeye \"{u}ye olmak i\c{c}in mesaj
k\i{}sm\i{}nda '{\em sub linux isim soyisim\/}' yaz\i{}l\i{} (isim ve soyisim yerine kendi
isminizi ve soyad\i{}n\i{}z\i{} kullan\i{}n) bir e-postay\i{} {\em listserv@bilkent.edu.tr\/}
adresine yollay\i{}n. En k\i{}sa zamanda listeye \"{u}yeli\u{g}iniz ger\c{c}ekle\c{s}ecektir.

{\bf RFC (Request For Comment)} : Standartlar, tezler ve di\u{g}er resmiyet
kokan pek\c{c}ok bilgiye buradan eri\c{s}ilebilir. Ba\c{s}lang\i{}\c{c} i\c{c}in \"{o}nermiyorum.
ODT\"{U} ftp adresinde, \url{ftp://ftp.metu.edu.tr/pub/documents/rfc}{ftp.metu.edu.tr/pub/rfc} dizini alt\i{}nda yans\i{}s\i{} tutulmaktad\i{}r.

A\c{s}a\u{g}\i{}da T\"{u}rkiye'de ve yurtd\i{}\c{s}\i{}nda \c{c}e\c{s}itli Linux kaynak dosyalar\i{}
bulabilece\u{g}iniz ftp adresleri verilmi\c{s}tir. T\"{u}rkiye i\c{c}inde ODT\"{U}, onlarca
gigabyte yer kaplayan sunsite adresinin yans\i{}s\i{}n\i{}n sadece bir k\i{}sm\i{}n\i{}
tutabilmektedir. Bu y\"{u}zden zaman zaman yurtd\i{}\c{s}\i{} adreslere ba\u{g}lanman\i{}z\i{}
hararetle sal\i{}k veririm. \url{ftp://tsx-11.mit.edu}{tsx-11.mit.edu}, \url{ftp://sunsite.unc.edu}{sunsite.unc.edu} ve \url{ftp://nic.funet.fi}{nic.funet.fi} adresleri Linux'un ana adresleri olup en yeni
yaz\i{}l\i{}mlar \"{o}nce bu adreslere gelir. \.{I}nternet trafi\u{g}ini me\c{s}gul etmemek
i\c{c}in size en yak\i{}n makinay\i{} se\c{c}in.

{\bf Yurti\c{c}i :}

\begin{itemize}
\item \url{ftp://ftp.linux.org.tr}{ftp.linux.org.tr}
\item \url{ftp://ftp.metu.edu.tr/pub/linux}{ftp.metu.edu.tr}
\item \url{ftp://ftp.ehb.itu.edu.tr/pub/linux}{ftp.ehb.itu.edu.tr}
\item \url{ftp://bilkent.edu.tr/pub/linux}{ftp.bilkent.edu.tr}
\item \url{ftp://ftp.itu.edu.tr/pub/linux}{ftp.itu.edu.tr}
\item \url{ftp://ftp.ankara.edu.tr/pub/linux}{ftp.ankara.edu.tr}
\end{itemize}


{\bf Yurtd\i{}\c{s}\i{} :}

\begin{itemize}
\item \url{ftp://tsx-11.mit.edu/pub/linux}{tsx-11.mit.edu}
\item \url{ftp://sunsite.unc.edu/pub/Linux}{sunsite.unc.edu}
\item \url{ftp://nic.funet.fi/pub/OS/linux}{nic.funet.fi}
\item \url{ftp://wuarchive.wustl.edu/systems/linux}{wuarchive.wustl.edu}
\end{itemize}




\end{document}
