Kernel modülü, kernele sonradan eklenip çıkartılabilen kodlardır. C ile geşliştirilen Kernel Modülleri aslında sıradan bir programdan çok da farklı değildir. Kernelinizde kurulu olan modülleri lsmod komutuyla görebilirsiniz.
Neden Modül Kullanmalıyız ?
Linux’da donanımlar kernel sürücüleri tarafından kullanılırlar. Bu modüller genellikle lib/modules dizisi altında bulunurlar ve açılış anında yüklenirler. Sistem içerisinde hazır modüller olduğu gibi kendimiz de modül ekleyebiliriz. Kernelin fonksiyonelliğini sistemi yeniden başlatmadan modüller sayesinde arttırılabilir. Bir donanım sürücüsünü düşünecek olursak, sürücü ile kernel, sistem ve donanım arasındaki bağlantıyı sağlayacaktır. Fakat bu işlem için kernele eklenti yapmamız gerekecektir. Kernele yapılacak her hangi bir müdahalede, kernelin tekrar derlenmesi ve sistmein yeniden başlatılması gerekir. Suncu sistemleri gibi sürekli açık kalması gereken bilgisayarlar için yeniden başlatma işlemi istenmeyen bir durumdur. Bu tip durumları önlemek için modüller kullanılmaktadır.
Şimdi kernel katmanında çalışan basit bir uygulama yazalım. Kendime modules diye bir klasör oluşturdum ve içerisin bir .c uzantılı c kod dosyası oluşturdum. module_param(inputname, charp,0000) methodu sırayla değişken ismi, türü ve 0000 rakamı ile yetki derecesini parametre olarak alıyor. Init fonksiyonu main fonk. gibi düşünebiliriz. Exit fonk. ise tahmin edilebileği üzere programdan çıkışta kernel loglarına çıkış yapıldığına dair log basmakta.

Makefile dosyaları genellikle bir veya birden fazla kaynak kod dosyasından oluşan yazılım projelerini derlememizi kolaylaştırmaya yarar.
MakeFile dosyamızı oluşturuyoruz. Terminalden “gedit Makefile” komutu ile de oluşturabilirsiniz.

Artık make komutu ile modülü derleyebiliriz.
sudo -s
Komutuyla root kullanıcısına geçiyoruz.

Derledikten sonra birkaç dosya oluşuyor. StringReverser.ko adında dosya oluştuğunu görüyoruz. Oluşan modülümüzü yükleyebiliriz.
insmod StringReverser.ko InputString=’Budenemeicinyazildi’
Komutu ile modülü yüklüyoruz.

dmesg
komutu ile log a bakıyoruz.

rmmod StringReverser
Komutu ile modülü kaldırıyoruz,Başarılı bir şekilde kaldırılmışsa logları kontrol ettiğimizde “String Reversed” yazdığını görebiliriz.

