Modül yükleme
- C kursu
- Uzman
- Ders 7/47
- 5 dk
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
#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
#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
printk(KERN_INFO "Module %s loaded
", ____);
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 |