Debian Etch’de ASUS NX 1101 ethernet kartı sürücüsü derlemek

Debian Etch makinamıza 1gbit bir ethernet kartı takalım dedik ve ASUS NX 1101 1000MB ethernet kartı alıp taktık. Maalesef Debian bu aygıtımızı tanımayınca iÅŸ baÅŸa düştü. Biraz uÄŸraÅŸtıktan sonra ethernet kartımız için beraberinde gelen CD’de Linux için sürücü kodlarını (source files) derleyerek, ethernet kartını çalıştırdım. Bu süreç aslında herhangi bir aygıt sürücüsünün (device driver) Linux bir makinaya tanıtılmasında üç aÅŸağı beÅŸ yukarı aynı olduÄŸu için bu süreci ihtiyacı olanlara aktarmak ve kendim için de not olarak saklamak amacıyla yazayım istedim.

Önce malzemelerimizi sayalım : Debian Etch yüklü bir PC, bu PC’ye takılmış ASUS NX 1101 ethernet kartı ve bu kartın beraberinde gelen “driver installation CD” yani sürücü yükleme CD’si.

Sürücü CD’sini dolaÅŸtığımızda Driver isimli bir klasör altında “Linux v2.09e” diye bir klasör görüyoruz. Burada sürücünün derlenmesi gereken C kodları ve diÄŸer bazı dosyalar bulunuyor. Bu dosyaları /usr/src altında bir klasör oluÅŸturup, oluÅŸturduÄŸumuz klasöre kopyalıyoruz. AÅŸağıdaki iÅŸlemlerin çoÄŸunu yaparken root izni gerekeceÄŸi için sudo -s ile root olarak oturum açmak iÅŸimizi kolaylaÅŸtırabilir.

sudo -s
mkdir /usr/src/ethdriver
cp -R /media/cdrom/Drivers/Linux v2.09e/* /usr/src/ethdriver

Bu kopyaladığımız kodları derleyebilmek için öncelikle linux-source paketine ihtiyacımız olacak. Ayrıca kernel-headers paketini de yüklemek olası bağımlılıkları baÅŸtan çözmemize yardımcı olacaktır. Ancak burada önemli olan kullandığınız kernel versiyona ait paketleri yüklemektir. Kernel versiyonunuzu “uname -r” komutu ile öğrenebilirsiniz. Benim kernel versiyonum ‘2.6.18-4-686′ olduÄŸu için 2.6.18 versiyonuna ait paketleri yükleyeceÄŸim

apt-get install linux-kernel-headers linux-source-2.6.18

Tabii ki bu paketler haricinde derleme iÅŸlemini gerçekleÅŸtirmek için gcc, make gibi standart araçların da yüklenmiÅŸ olması gerekiyor. Bu paketlerden herhangi birisi olmadığında alacağınız hata “böyle bir komut ya da program yok” cinsinden olacaktır zaten.

Linux source paketini yüklediÄŸinizde aslında sadece kaynak kodların sıkıştırılmış bir halini sisteminize kopyalamış oluyorsunuz. Bu dosyayı açarak /usr/src/linux adresine sembolik link ile linklemeniz gerekiyor. Bu linki de ln -s /usr/src/linux /lib/modules/(kernel_versiyonu)/build adresine tekrar linklemek gerekiyor. Kaynak kodların bzip ile sıkıştırılmış halini /usr/src klasörü altında “linux-source-2.6.18.tar.bz2″ gibi bir isme sahip bir dosya halinde bulacaksınız.

cd /usr/src
bunzip2 linux-source-2.6.18.tar.bz2
tar xvf linux-source-2.6.18.tar
ln -s linux-source-2.6.18 /usr/src/linux
ln -s /usr/src/linux /lib/modules/2.6.18-4-686/build

Daha sonra kernel dosyalarını derleme işlemi için hazır hale getirmemiz gerekiyor. Bunun için aşağıdaki komutları sıra ile uyguluyoruz. Bu komutlardan ikincisi bir derleme işlemi gerçekleştireceği için makinanızın konfigürasyonuna göre 30-60 dk arasında bir zaman alabilir.

cd /usr/src/linux
make oldconfig && make prepare
make bzImage modules

Bu komutlardan sonuncusu x86 ve x64 iÅŸlemci mimarileri için kullanılıyor. EÄŸer iÅŸlemciniz IA64 mimarisine sahipse son yazdığımız komut yerine “make compressed modules” komutunu çalıştırmak lazım.

Bundan sonraki aşamada yapacağımız işlem, aygıt sürücüsünün kodlarını derlemek olacak. Bunu aşağıdaki komutlardan birini yazarak yapabiliriz. Eğer ilk komut problemsiz çalışırsa ikincisini denemeye gerek yok. İkincisinde -C den sonra yazdığımız klasör linux kaynak kodlarının olduğu klasör olacak. Eğer yukarıdaki linklemeleri yapmış iseniz birşey değiştirmenize gerek yok.

cd /usr/src/ethdriver
make all
make -C /usr/src/linux  SUBDIRS=$PWD modules

EÄŸer derleme esnasında “error: `UTS_RELEASE’ undeclared here (not in a function)” gibi bir hata alıyorsanız. Hatanın oluÅŸtuÄŸu dosyaya bir eklenti yapmanız gerekecek. Bunu yapmak için hatanın olduÄŸu dosyayı en sevdiÄŸiniz text editörünüz ile açarak dosyanın en başında aÅŸağıdakine benzer satırları bulun.

#include <linux/config.h>
#include <linux/version.h>
#include <linux/module.h>

Bu satırlardan sonra aşağıdaki satırı ekleyin.

#include <linux/utsrelease.h>

Dosyayı kaydettikten sonra yukarıda belirttiÄŸim komutlardan size uygun olanını tekrar deneyin. EÄŸer herhangi bir hata almadan iÅŸlem tamamlanarak bulunduÄŸunuz klasörde “ko” uzantılı bir dosya oluÅŸmuÅŸ ise, derleme iÅŸlemi tamamlanmış demektir. Bizim örneÄŸimizde ipg.h dosyasına yukarıdaki satırı ekleyip, “make all” ile derledikten sonra ipg.ko ve ipg.o isimli dosyalar oluÅŸtu.

Bundan sonrasında oluÅŸturduÄŸumuz bu sürücü modülünü sisteme kalıcı olarak yükleyeceÄŸiz. AÅŸağıdaki komutları .ko uzantılı dosyamızın bulunduÄŸu klasörde sıra ile çalıştıralım. Siz eÄŸer baÅŸka bir aygıtın sürücüsünü derliyorsanız, onun .ko uzantılı dosyasının ismini yazacaksınız. Bizim örneÄŸimizde bu dosya “ipg.ko”.

insmod ipg.ko
depmod -a
rmmod ipg
modprobe ipg
lsmod | grep ipg

EÄŸer son komutun çıktısında yüklemeye çalıştığınız modülün ismini görüyorsanız. Modül yükleme iÅŸlemi de baÅŸarılı olmuÅŸ demektir. rmmod ve modprobe ve lsmod komutları aslında yükleme iÅŸlemimizi test etmemize yarayan komutlar. Bu komutlardan ilki, yüklediÄŸimiz modülü kernel’dan çıkarmaya, modprobe ise çıkarılan bu modülü tekrar yüklemeye yarıyor. lsmod ise, çalıştırıldığı anda kernel’de yüklenmiÅŸ olan modülleri göstermeye yarıyor.

Buraya kadar başarılı bir şekilde gelmiş iseniz, modülün sistem restart edildiğinde otomatik olarak yüklenmesini sağlamak için yapmanız gereken son şey, /etc/modules dosyasına modülünüzün ismini (sadece ismini, dosya uzantısı ile birlikte değil) yeni bir satır olarak eklemenizdir.

Yorumunuzu Ekleyin

Ad - Soyad: (Gerekli)

E-posta: (Gerekli)

Web siteniz:

Yorumunuz: