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.

Benzer Konular

Tags: , , , , , , ,


You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

AddThis Social Bookmark Button
12345 (No Ratings Yet)
Loading ... Loading ...

3 Responses to “Debian Etch’de ASUS NX 1101 ethernet kartı sürücüsü derlemek”

  1. Merhaba,

    Dediklerinizi aynen uyguluyorum ama Hata2 uyarısını alıyorum. Messenger ile görüşebilmemiz mümkünmü?

  2. Selamın Aleykum,

    Arkadasım ben bunu ubuntuda deniyorum fakat cok takılı kaldım bu konuda nasıl gorusebiliriz acaba?

  3. Merhaba,

    Driver derlemesini test edebilmek için ilgili donanımın bilgisayarda olması gerekiyor. Benim şu anda ASUS NX 1101 ethernet kartına sahip bir bilgisayarım yok. Bu nedenle kurulumu Ubuntu’da denemek gibi bir şansım yok. Ancak nerede takıldığınızla ilgili detaylı bilgi iletebilirseniz size yardımcı olmaya çalışırım. Bana bu tür sorularla ulaşabilmek için http://linux-tr.net adresinde ilgili başlık altında sorunuzu iletebilirsiniz. Oradaki sorulara elimden geldiği kadarıyla yardımcı olmaya çalışıyorum.

Leave a Reply