3. Aygıt Dosyaları

Ön Bilgi

Bu bölümde aygıt dosyalarının ne olduğu ve nasıl yaratılacağı temel bilgiler eşliğinde anlatılmaktadır. Ayrıca daha genel aygıt dosyaları listelenmiştir. Şayet Linux çekirdeğinin kaynak kodlarına sahipseniz genel olarak aygıt listelerini /usr/src/linux/Documentation/devices.txt içerisinde bulabilirsiniz.

3.1. MAKEDEV Betiği

Aygıt dosyalarının pek çoğu sistem yüklemesi sırasında kurulmuş ve kullanıma hazır bir biçimde beklemektedir. Şayet sisteminizde olmayan bir aygıt dosyası yaratmak zorunda kalırsanız MAKEDEV betiğini kullanmalısınız. Bu betik /dev/MAKEDEV olarak bulunabir. Fakat /sbin/MAKEDEV'e de sembolik bir bağ verilmiş olabilir. Şayet PATH içerisinde tanımlanmamışsa, bu betiği kullanabilmek için yolunu PATH içeriğinde tanımlamalısınız. Betiğin genel kullanımı şu şekildedir:

#/dev/MAKEDEV -v ttyS0
create ttyS0   c 4 64 root:dialout 0660

Burada 4. anadüğüm, 64. altdüğümde sahibi root ve grubu dialout için erişim izni 660 olan /dev/ttyS0 karakter aygıtı yaratılmış oldu.

ttyS0 bir seri porttur. Anadüğüm ve altdüğüm numaraları, çekirdek tarafından algılanacak olan numaralardır. Çekirdek donanım aygıtlarına numaralar aracılığı ile ulaşır. Bizim için bunu yapmak çok zor olduğundan biz dosya isimlerini kullanırız. Erişim izinleri kullanıcı için (root) okuma ve yazma; grubu (dialout) için okuma ve yazma şeklindedir. Başka hiçbir kimse bu aygıta erişemez.

3.2. mknod komutu

MAKEDEV halihazırda var olmayan aygıt dosyalarını yaratmak için kullanılır. Bununla beraber bazı zamanlar MAKEDEV yaratmak istediğiniz aygıta ilişkin dosyayı tanımayabilir. Burada mknod(1) komutu devreye girer. Bu komutu kullanabilmek için anadüğüm ve altdüğüm numaralarını bilmek zorundasınız. Çekirdek içerisindeki devices.txt dosyası, bu bilgilerin yer aldığı temel kaynaktır.

Diyelim ki bizim elimizdeki MAKEDEV istediğimiz /dev/ttyS0 aygıt dosyasını nasıl yapacağını bilmiyor. Bu durumda mknod komutunu kullanmak zorundayız. devices.txt dosyasından bakarak 4. anadüğüm ve 64. altdüğümde bir karakter aygıt yapmamız gerektiğini öğreniriz.

# mknod /dev/ttyS0 c 4 64
# chown root.dialout /dev/ttyS0
# chmod 0644 /dev/ttyS0
# ls -l /dev/ttyS0
crw-rw----   1 root dialout    4,   64 Oct 23 18:23 /dev/ttyS0

Gördüğünüz gibi bir dosyayı çok fazla adımda yaratmak durumundayız. Bu örnekte gereken süreçleri görebilmekteyiz. Burada /dev/ttyS0 aygıt dosyasının MAKEDEV komutu tarafından yaratılamamış olması uç bir örnektir.

3.3. Aygıt Listesi

Aşağıdaki aygıt listesinde çok fazla ayrıntıya girilmemiştir. Bu aygıt dosyalarının pek çoğu çekirdekte derlenmiş halde bulunmakta ve donanımları doğrudan desteklemektedir. Daha fazla ayrıntı için çekirdek belgelerini okuyabilirsiniz.

Şayet burada bulunması gerektiğini düşündüğünüz ama burada olmayan aygıt dosyaları var ise lütfen bana bildirin. Onları da diğer sürümde bu listeye ekleyeceğim.

/dev/dsp

Digital Signal Processor - Sayısal Sinyal İşlemci. Ses kartı ile ses üreten yazılım arasındaki arayüz olarak tanımlanabilir. 14. anadüğüm, 3. altdüğümde bulunan bir karakter aygıtıdır.

/dev/fb0

Birinci karetamponu (framebuffer) aygıtı. Karetamponu grafik donanımı ile yazılımı arasındaki soyut bir katmandır. Uygulamalar, ne tür grafik donanımı kullandığınızı bilmek zorunda kalmadan, sadece açıkça tanımlanmış ve standart haline getirilmiş olan karetamponu sürücüsünün uygulama geliştirme arayüzü (API - Application Programming Interface) ile nasıl haberleşeceklerini bilir. Birinci karetamponu 29. anadüğüm, 0. altdüğümde bir karakter aygıtıdır.

/dev/hda

/dev/hda birincil IDE denetleyicisine bağlı ana IDE sürücüdür. Birinci IDE kablosuna bağlı master olarak ayarlanmış sabit disk olarak da tanımlanabilir. /dev/hdb birincil IDE denetleyicisine bağlı yardımcı sürücüdür. /dev/hdc /dev/hdd ise ikincil IDE denetleyicisine bağlı ana ve yardımcı IDE sürücüleridir. Her disk bölümlere ayrılmıştır. 1-4 arası bölümler birincil bölümler, 5 ve üzeri bölümler ise ek bölüm içindeki mantıksal bölümlerdir. Bu yüzden her bölüm için yapılmış aygıt dosyaları çeşitli bölümlerden meydana gelmişlerdir. Örneğin; /dev/hdc9 ikincil IDE denetleyicisine takılmış bir ana IDE sabit diskinin ek bölümü içerisindeki bir mantıksal bölümü işaret eder. Ana ve alt düğüm numaraları biraz karmaşıktır. Birincil IDE denetleyicisi için bütün bölümler 3. anadüğümdeki blok aygıtlarıdır. Ana sürücü hda için altdüğüm 0, yardımcı sürücü hdb için altdüğüm 64'tür. Sürücü içindeki her bölümün, bölüm numarası bu altdüğüm numarasına eklenir. Örneğin; /dev/hdb5 için anadüğüm 3, altdüğüm ise 69 (64+5) dur. İkincil IDE sürücüye bağlı sürücünün hesaplamaları da aynı yöntemle yapılır. Tek fark anadüğüm numarası 22 dir.

/dev/ht0

Birinci IDE teyp sürücüdür. Sonraki sürücüler ht1, ht2 şeklinde sıralanır. 37. anadüğümdeki karakter aygıtlarıdır ve ht0 için altdüğüm 0, ht1 için 1, ht2 için 2 olarak sıralanır.

/dev/js0

Birinci analog oyun çubuğu. Sonraki oyun çubukları js1, js2, js1, ... şeklinde sıralanır. 15. ana düğümdeki karakter aygıtlarıdır. Analog oyun çubukları 0. alt düğümden 127. alt düğüme kadar sıralanır. Sayısal oyun çubukları ise 128. alt düğümden başlar.

/dev/lp0

Birinci paralel yazıcı aygıtı. Diğer yazıcılar lp1, lp2, lp3, ... şeklinde sıralanır. 6. ana düğümdeki karakter aygıtlardır. Alt düğümler 0 dan başlar ve her aygıt için ardışık şekilde devam eder.

/dev/loop0

Birinci geridönüş (loopback) aygıttır. Geridönüş aygıtları diskler üzerinde bulunmayan blok aygıtlarındaki dosya sistemlerini bağlamak için kullanılır. Şayet bir iso9660 CD ROM'u bir CD'yi okumadan bağlamak istiyorsak geridönüş aygıtlarını kullanmalıyız. Bu genellikle kullanıcıya açıktır ve mount komutu tarafından kullanılır. mount(8) ve losetup(8) kılavuz sayfalarına göz atmanız bu kavramları anlamak için oldukça faydalı olacaktır. Geri dönüş aygıtları 7. ana düğümdeki blok aygıtlarıdır. Alt düğümler 0 dan başlar ve ardışık devam eder.

/dev/md0

Birinci meta disk grubu. Meta diskler RAID (Redundant Array of Independent Disk - Birleştirilmiş Bağımsız Disk Dizisi) aygıtları ile bağlantılıdır. Daha ayrıntılı bilgi için LDP'deki (Linux Document Project - Linux Belgelendirme Projesi) RAID-HOWTO belgelerine başvurabilirsiniz. Meta diskler 6. ana düğümdeki blok aygıtlarıdır. 0. alt düğümden başlar ve ardışık devam eder.

/dev/mixer

Bu OSS'nin ( Open Sound Driver - Açık Ses Sürücüsü) bir parçasıdır. http://www.opensound.com/ adresindeki OSS belgelerinden daha ayrıntılı bilgi edinebilirsiniz. 14. ana düğüm, 0. alt düğümdeki karakter aygıtıdır.

/dev/null

Gönderilen her verinin bir daha tekrar geri dönmemek üzere yok edildiği bir kara deliktir. /dev/null'a gönderilen her şey görünmez olur. Bu, bir komut çalıştırmak ama uçbirimde her hangi bir geri bildirim almamak istediğiniz durumlarda faydalı olabilir. 1. ana düğüm, 3. alt düğümdeki bir karakter aygıtıdır.

/dev/psaux

PS/2 fare portudur. 10. ana düğüm, 1. alt düğümdeki bir karakter aygıtıdır.

/dev/pda

Paralel port IDE diskleri. Dahili IDE denetleyicileri gibi isimlendirilir. Blok aygıtlardır ve anadüğüm numarası 45 dir. Alltdüğüm numaraları için biraz daha fazla açıklamaya ihtiyaç vardır. İlk aygıt /dev/pda'dır ve aldüğüm numarası 0 dır. Bölüm numaraları altdüğüm numarasına eklenerek bu aygıttaki bölümler bulunur. Her aygıt 15 bölüm ile sınırlandırılmıştır. Dahili IDE aygıtlarında bu 63 dür. /dev/pdb için aldüğüm numarası 16'da başlar, /dev/pdc için 32'de, /dev/pdd için 48'de başlar. Örneğin; /dev/pdc6 için altdüğüm numarası 38 (32+6) dir. Bu düzen her biri 15 bölümlü 4 paralel disk ile bizi sınırlar.

/dev/pcd0

Paralel port CD ROM sürücüsü. 0'dan başlayarak numaralandırılır. 46. anadüğümdeki blok aygıtlarıdır. Altdüğümler /dev/pcd0 için 0 dan başlar ve ardışık devam eder (/dev/pcd1 için 1, /dev/pcd2 için 2, /dev/pcd3 için 3, ...).

/dev/pt0

Paralel port teyp sürücüsü. Teyplerin bölümleri olmadığı için sadece ardışık biçimde numaralandırılır. Karakter aygıtlardır ve anadüğüm numarası 96 dır. Altdüğümi /dev/pt0 için 0, /dev/pt1 için 1, /dev/pt2 için 2, ... şeklinde sıralanır.

/dev/parport0

İşlenmemiş paralel port. Paralel porta bağlanan pek çok aygıt kendi sürücülerini kullanır. Bu ise porta doğrudan ulaşmak için kullanılan bir aygıttır. Anasüğüm numarası 99 olan karakter aygıtıdır. Alltdüğüm numarası 0'dan başlar ve ardışık olarak her bir aygıt için birer artarak devam eder.

/dev/random veya /dev/urandom

Bunlar çekirdeğin rasgele sayı üreteçleridir. /dev/random rasgele sayı üreten ve o an için üretilmiş sayıya bakıp gelecek sayısı tahmin edilebilen üreteçlere benzemez. Sayı üretmek için sistem donanımlarının arabirimlerinin ürettiği ganimetler (entropy)[51] kullanır. Kullanılacak ganimet kalmadığında daha fazlasının toplanması için beklemek zorunda kalır. Bu durumda iken daha fazla sayı okunmasına izin vermez. /dev/urandom da buna benzer şekilde çalışır. İlk olarak sistem donanımlarının ganimetlerini kullanır ama ganimetler bitince karışık rasgele sayı üreten bir formül üzerinden çalışmaya ve sayı vermeye devam eder. Şifrelenmiş çift anahtar üreteçleri gibi çok önemli amaçlar için bu sistem biraz güvensiz görünebilir. Şayet güvenlik birinci planda önemli ise /dev/random'u kullanın, eğer hız önemli ise /dev/urandom'u kullanın. Rasgele sayı üreteçleri ana düğüm numarası 1 olan karakter aygıtlarındandır. /dev/random için alt düğüm numarası 8, /dev/urandom/dev/urandom için ise 9'dur.

/dev/zero

Pek çok sıfır elde etmenin en kolay yoludur. Bu aygıttan her okuduğunuzda veri sıfıra dönüşür. İçeriği önemli olmayan sabitlenmiş uzunluktaki bir dosya ile ilgilendiğiniz zamanlarda bu aygıt yararlı olabilir. 1. ana düğümün 5. alt düğümündeki karakter aygıtıdır.



[51] Ç.N.: Burada entropy ile ifade edilen şey, farenin ekran koordinatları, diskin okunan ya da yazılan sektör numarası, klavyede basılan tuş numarası gibi sayılardır. Olay bir oyunda oyuncunun ganimet toplamasına benzetilebilir.