kmod 1

kmod 1

    przez -
    0 308
    Linux Tux
    Lucas De Marchi i Gustavo Barbieri z ProFUSION opracowali bibliotekę libkmod i zestaw narzędzi kmod. Celem nowego projektu jest zaoferowanie innym programom potrzebnej elastyczności i łatwej kontroli nad wstawianiem, usuwaniem, konfiguracją i wykazem modułów jądra Linux. Dzięki użyciu biblioteki jest możliwa interakcja z modułami jądra bez potrzeby polegania na innych narzędziach. Takie narzędzia brakowała od dawna, i było to jedno z życzeń z listy Plumbera dla Linuksa.

    Cytując go:

    zapewnić odpowiednią bibliotekę libmodprobe.so z module-init-tools:
    wczesne narzędzie uruchamiania, instalatorów, sterownika instalacji dysków i dostępu do nich
    informacje nt dostępnych modułów, w celu optymalizacji obsługi uruchamiania

    Programiści poszli o krok dalej, i nie tylko oferują API do ładowania i usuwania modułów jądra, ale również inne proste operacje. Pierwszym użytkownikiem API będzie udev, który jest odpowiedzialny za sprawdzanie dostępnego sprzętu, tworzeniu dowiązań do urządzeń w /dev i ładowaniu modułów jądra dla wykrytego sprzętu. W jądrze dystrybucji jest niezwykle prosto zrobić większość rzeczy, jako modułów. Udev czyta system plików /sys w celu sprawdzenia dostępnego sprzętu i próbuje załadować potrzebne moduły. Potem tłumaczy setki zapytań do programu modprobe, dzięki czemu wiadomo, które z nich są już załadowane, a które wbudowane w jądro. Dzięki kmod cała operacja jest wykonywana przy pomocy kilku linii kodu, bez potrzeby konfiguracji i indeksowania już otwartych i sprawdzonych modułów.

    Były już także przeprowadzone rozmowy z Kay Sievers, odpowiedzialnym za udev, i Lennart Poettering, zajmującym się systemd, aby zaimplementować współpracę biblioteki z udev i systemd.

    Przykładowy kod:
    W celu dodania modułu z nazwą bez żadnych opcji i dziwnych konfiguracji, jest zalecane zrobienie tego w ten sposób:

    struct kmod_ctx *ctx = kmod_new(NULL, NULL);
    struct kmod_module *mod;
    kmod_module_new_from_name(ctx, name, &mod);
    kmod_module_insert_module(mod, 0, NULL);
    kmod_module_unref(mod);
    kmod_unref(ctx);

    Narzędzia

    Poza samą biblioteką, przeprojektowano narzędzia module-init-tools na bazie nowego API, które stworzono. W pierwszej wersji są zapewniane kompatybilne binarki dla lsmod, rmmod, insmod i modprobe (z pewnymi brakami funkcjonalności). Następna wersja ma zapewnić owe braki, a także dodać wsparcie dla depmod i modinfo.

    Licencja

    Całość jest wydawana na licencji GPLv2 i późniejsze.

    Plan wydawniczy

    kmod 2
    Zapewnienie API do brakujących cech w kmod-modprobe, szczególnie: zrzut konfiguracji i indeksowanie, proste zależności, polecenia instalacji i usuwania. Nadal będzie brakować funkcjonalności manipulacji ELF, jednakże będą zapewnione wszystkie narzędzia dostępne w module-init-tools. Kilka z nich, jak depmod mogą być skopiowane z module-init-tools dla późniejszych konwersji

    kmod 3
    Ma zapewniać pojedyncze narzędzie kmod, które będzie emulowało wszystkie inne, akceptując komendy, takie jak kmod list, kmod remove, kmod insert. Dystrybucje mogą wtedy używać symlinków z dostępnych narzędzi, do programu kmod i będzie możliwe ubicie ‘kmod-*’, które zostało przedstawione w kmod 1.