next next
Next: KGDB i KDB Previous: Uruchamianie i odpluskwianie UM

Odpluskwianie modułów w UML

Co to są moduły jądra?

Moduły jądra to skompilowane pliki obiektowe, które kodują funkcjonalności rozszerzające możliwości jądra. Mogą być one wedle potrzeby ładowane dynamicznie do pamięci i z niej usuwane. Dzięki temu jądro Linuxa na mniejszy rozmiar, ale też ciągłe ładowanie i usuwanie modułów z pamięci może powodować fragmentację kodu wykonywalnego jądra umieszczonego w pamięci i przez to pewien spadek wydajności sytemu.

Odpluskwianie modułów

Możliwość dynamicznego dodawania i usuwania modułów powoduje, iż do ich odpluskwiania w UML jest użyteczny skrypt umlgdb. Skrypt umlgdb działa dla jądra pracującego w trybie TT.  Aby uruchomić skrypt należy odnaleźć i dopisać w jego treści nazwy i adresy plików obiektowych w systemie plików, które będą debugowane. Należy znaleźć i zmienić według potrzeby następujący fragment skryptu:


set MODULE_PATHS {
"hostfs" "/home/jdike/linux/2.4/um/arch/um/fs/hostfs/hostfs.o"
}

Skrypt należy umieścić w katalogu, w którym jest UML i tam go uruchomić. Skrypt uruchamia gdb, który wczytuje informacje z danych plików obiektowych potrzebne gdb do odpluskwiania ich. Następnie wypisuje sposób w jaki należy uruchomić UML aby ten podłączył się do już skonfigurowanego gdb:
./linux <kernel switches> debug gdb-pid=7750

W chwili załadowania modułu do jądra gdb automatycznie rozpozna symbole modułu oraz zatrzyma się.

Skrypt umlgdb

Strony o umlgdb: