Teoria
Kernel Hacking HOWTO.
Spis treści.
- Wstęp. prosze tego nie czytać!!!
- Czym jest Kernel ?
- Jaki język programowania?
- Co mogę zrobić z Kernelem ?
- Książki o Kernelu.
- Jak zdobyć kod kernela?
- Sposób odradzany.
- Dlaczego powinienem zdobyć kod kernela?
- Jak zdobyć kod źródłowy Kernela?
- Gdzie szukać najnowszych wersji kernela?
- Przygotowywanie systemu do hackowania kernela.
- Pomoce do kompilacji i instalacji.
- Pomoce do debugowania kernela.
- Kompilacja i instalacja kernela.
- Dlaczego rekompilować kernel?
- Numerowanie wersji kernela.
- Konfiguracja jądra do kompilacji
- Instalowanie jądra na dysku twardym
- Konfiguracja programu rozruchowego (Grub i LILO)
- Rzut okiem na drzewo kody kernela.
- Krótki opis każdego z katalogów..
- Zmiany pomiędzy 2.4 kernel a 2.6 kernel (new features).
- Wykorzystanie funkcji printk() w jądrze
- Debugging Kernel
- Czego potrzeba do poprawienia buga?
- Funkcja printk()
- Błąd oops
- Dodatkowe opcje przy kompilacji
- Powodowanie błędu oraz wyświetlanie dodatkowych informacji
- Magic SysRq Key.
- Jak używać debuggerów?
- Różne sztuczki co umilają życie.
- Gdy wszystko się sypnie…
- Kernel Programming Style Guidelines
- Styl kodowania kernela
- Wcięcia
- Przerywanie długich linii i łańcuchów.
- Ułożenie nawiasów i spacji
- Spacje
- Nazwy
- Typedefs
- Funkcje
- Scentralizowany powrót z funkcji
- Komentarze
- Namieszałeś ?
- Pliki konfiguracyjne
- Struktury danych
- Makra, typy wyliczeniowe i RTL
- Wypisywanie wiadomości kernela
- Alokacja pamięci
- Inline'owa zaraza
- Function return values and names Funkcje zwracające wartości i nazwy.
- Nie odkrywaj już raz odkrytych makr !!!
- Subsystems
- Tworzenie, zarządzanie i niszczenie procesu
- Szeregowanie procesów
- Wywołania systemowe
- Obsługa wyjątków i przerwań.
- (Deferring Work: Tasklets and SoftIRQ)
- Synchronizacja
- Zarządzanie czasem
- Zarządzanie pamięcią
- Wirtualny system plików
- Block I/O Layer
- Przestrzeń adresowa procesu
- Page Cache
- Komunikacja między procesami
- Odzyskiwanie Stron (Reclaiming Pages)
- Accessing Directories and Files
- Security Subsystem and SELinux
- TCP/IP Stack and Netfilter
- Device Drivers, Kobjects and Sysfs
- Module Management: Insert Code at Run-Time
- API (Kernel Internal Use)
- Device Drivers
- How to contribute to kernel community?
- Jak uzyskać pomoc?
- Jak mogę pomóc?