Major ve Minor Numaraları Nasıl Bulunur? [Mini2440]

Başlatan Tagli, 12 Eylül 2011, 12:45:19

Tagli

Konuyu doğru yere açtığımdan çok da emin değilim, çünkü soracağım şey mini2440 kartına bağımlı bir yanıt gerektiriyor olabilir.

Soru şu: Aygıtların major ve minor numaraları kernel kaynak kodu içinde nerelerde tanımlanıyor? Aramam gereken şeyin "MKDEV" makrosu olduğunu biliyorum, ancak doğal olarak bu ifade pek çok dosyada geçiyor ve işime yarayanı bir türlü bulamadım.

Soruyu biraz açayım: Amacım mini2440 için sıfırdan oluşturacağım bir rootfs için aygıt dosyalarını oluşturmak. Bunun için de tabi major ve minor numaralarını bilmek gerekiyor. Bunlarla ilgili bir liste kernel kaynak kodunda devices.txt  içinde mevcut. Ancak bu listede mini2440'a özel aygıtlar yok. Benim kullanmaya çalıştığım kernel ise mini2440'ın üreticisi FriendlyArm tarafından sunulan ve donanıma göre modifiye edilmiş bir kernel kaynak kodu. Aygıt sürücülerinin kernel'de desteği var, çünkü config sırasında bunları görüyorum ve seçiyorum. Ama major/minor numaralarını bilmediğimden /dev içinde dosyaları oluşturamıyorum.
Gökçe Tağlıoğlu

SpeedyX

Merhaba,

Artık udev kullanılıyor, udev otomatik olarak device ları bulup /dev de node oluşturuyor.
Bunun dışında mdev -s ile de yapılabilir, udev kadar detaycı değil ama yine iş görüyor.
/sys içinde biryerlerde bu minor/major numaraları yazıyor zaten, eğer elle girmek istenirse.

udev yada mdev kullanılmasını tavsiye ederim çünkü bazı driver lar dinamik numaralar üretirler ve her seferinde tek tek bunlarla uğraşmak anlamsız.

Tagli

Teşekkürler SpeedyX hocam.

Öncelikle udev kullanayım diyerek araştırmalara başladım ancak ağustos sonunda kernel.org'un hack'lenmesi meselesi ortaya çıkınca siteyi bakıma almışlar. Bu sebeple kaynak koduna erişemedim. Belki git ile erişmek mümkün olabilirdi ama onun da adresini bilmiyordum.

Dün sorunu mdev kullanarak çözdüm. Kaynak olarak da bu siteden faydalandım. Belki faydalı olur düşüncesiyle, mini2440 için busybox ile kullandığım /etc/init.d/rcS betiğini paylaşıyorum. Kendim inittab betiği yazmadım. Yazılmayınca busybox'ın init'i varsayılan bir betik kullanıp rcS betiğine bakıyor.

#!/bin/sh

mount -t proc none /proc
mount -t sysfs none /sys

mount -t tmpfs mdev /dev
mkdir /dev/pts
mount -t devpts devpts /dev/pts

echo /bin/mdev > /proc/sys/kernel/hotplug
mdev -s

/bin/sh
Gökçe Tağlıoğlu