CodeBlanks Logo Icon CodeBlanks

Modül yükleme

insmod ve rmmod ile modül yüklemeyi öğrenirsin.

Çekirdek modülü yükleme

Linux çekirdeği modüller ile çalışma sırasında genişletilebilir. Bir modül, çekirdek adres alanına yüklenen kod parçasıdır; yeniden başlatma gerektirmez.

insmod modul.ko komutu modülü yükler, rmmod modul kaldırır. lsmod yüklü modülleri listeler; modprobe bağımlılıkları da çözer. Modüller .ko uzantılıdır ve çekirdek ile uyumlu sürümde derlenmelidir. Yükleme sırasında modülün module_init fonksiyonu çalışır; bu nedenle modüller dikkatli yazılır.

Modül yaşam döngüsü

Bir modülün yaşam döngüsü dört aşamadan oluşur: derleme, yükleme, çalışma ve kaldırma. Her aşamada çekirdek modülün durumunu izler.

Yükleme sırasında module_init çağrılır; modül kaynaklarını hazırlar. Kaldırma sırasında module_exit çağrılır; modül temizlik yapar. Eğer modül kullanımdaysa rmmod reddedilir. Kullanım sayacı try_module_get ve module_put ile yönetilir. Modüller çekirdek sürümüyle uyumlu olmalı; uyumsuzluk yüklemede hata verir.

Uygulama Modül komutlarını yazdır

void print_module_cmd(const char *cmd, const char *desc) fonksiyonunu tanımla; gövdesi printf("%s: %s\n", cmd, desc); olsun. main içinde dört komut için çağır: ("insmod", "load"), ("rmmod", "unload"), ("lsmod", "list"), ("modprobe", "resolve").

Başlangıç kodu

main.c
#include <stdio.h>

// print_module_cmd fonksiyonunu tanımla
// insmod, rmmod, lsmod, modprobe için çağır

int main(void) {
    return 0;
}

Örnek çözüm

main.c
#include <stdio.h>

void print_module_cmd(const char *cmd, const char *desc) {
    printf("%s: %s\n", cmd, desc);
}

int main(void) {
    print_module_cmd("insmod", "load");
    print_module_cmd("rmmod", "unload");
    print_module_cmd("lsmod", "list");
    print_module_cmd("modprobe", "resolve");
    return 0;
}

Beklenen çıktı

insmod: load
rmmod: unload
lsmod: list
modprobe: resolve

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Bir modülü yüklemek için hangi komut kullanılır?

  • modprobe -r
  • rmmod
  • insmod Doğru cevap
  • lsmod

Açıklama: insmod bir .ko dosyasını çekirdeğe yükler.

2 printk ile modül adı yaz

Soru
printk(KERN_INFO "Module %s loaded
", ____);
Cevap
printk(KERN_INFO "Module %s loaded
", name);

Açıklama: name değişkeni modül adını taşır.

3 Modül komutlarını eşle

Kavram Anlamı
insmod Modül yükler
rmmod Modül kaldırır
lsmod Yüklü modülleri listeler
modprobe Bağımlılıkları çözer

Uzman bölümündeki tüm dersler