Co to jest format pliku KO?
Plik .ko to ładowalny moduł jądra (LKM) dla jądra Linux - binarna wtyczka, która rozszerza funkcjonalność jądra w czasie rzeczywistym, bez konieczności ponownego uruchamiania systemu lub rekompilacji. Typowe zastosowania obejmują sterowniki urządzeń (grafika, sieć, pamięć masowa), implementacje systemów plików oraz podsystemy bezpieczeństwa.
Strukturalnie plik .ko jest relokowalnym obiektem ELF (typ ET_REL), współdzielącym standardowe magiczne bajty ELF (0x7F 0x45 0x4C 0x46) z bibliotekami współdzielonymi .so. Cechą wyróżniającą jest sekcja ELF .modinfo, która przechowuje metadane klucz=wartość możliwe do odczytania przez modinfo: autora, opis, licencję, vermagic (dokładna wersja jądra + SMP + ciąg ABI) oraz wpisy parm dla konfigurowalnych parametrów. Konwencja nazewnictwa .ko zastąpiła starszy sufiks .o w jądrze Linux 2.6 (2003).
Moduły są ładowane za pomocą insmod lub modprobe i usuwane za pomocą rmmod - wszystkie te narzędzia są częścią pakietu kmod. Ciąg vermagic musi dokładnie pasować do uruchomionego jądra; niezgodność powoduje odrzucenie ładowania. Opcjonalna sekcja ELF __versions przechowuje sumy kontrolne CRC32 dla każdego eksportowanego symbolu w celu weryfikacji ABI.
Od wersji jądra 3.3+, moduły dystrybucyjne są rutynowo kompresowane jako .ko.xz, .ko.gz lub .ko.zst; modprobe dekompresuje je w sposób przezroczysty. W systemach z Secure Boot, podpisywanie modułów (CONFIG_MODULE_SIG) dołącza podpis RSA lub ECDSA po zawartości ELF; jądra z włączonym trybem lockdown odrzucają niepodpisane moduły.
Bezpieczeństwo
RYZYKO: HIGHModuły jądra działają z uprawnieniami ring-0 (jądro) - najwyższym poziomem uprawnień. Złośliwy plik .ko może zrobić wszystko: zainstalować rootkity, przechwytywać wywołania systemowe, wyłączyć logowanie audytowe. Nigdy nie ładuj plików .ko z niezaufanych źródeł. Moduły dystrybucyjne są podpisane; Secure Boot wymusza weryfikację podpisu modułu. Jeśli plik .ko odmawia załadowania z powodu błędu podpisu, zbadaj przyczynę zamiast wyłączać wymuszanie podpisów.
Szczegóły formatu
w pigułceProgramy otwierające pliki KO
Szczegóły techniczne
specyfikacja| Typ formatu | Relokowalny obiekt ELF (ET_REL), 32-bitowy lub 64-bitowy w zależności od docelowej architektury |
| Magiczne bajty | 0x7F 0x45 0x4C 0x46 (0x7F po którym następuje ASCII „ELF”) na początku pliku - identyczne jak w bibliotekach współdzielonych .so |
| Kolejność bajtów | Zależna od architektury: little-endian na x86/ARM, big-endian na MIPS/PowerPC |
| Kluczowa sekcja ELF | .modinfo - przechowuje metadane autora, licencji, vermagic, wersji, parm i aliasów jako pary klucz=wartość |
| Wymuszanie ABI | Ciąg vermagic w .modinfo koduje dokładną wersję jądra + flagi SMP; niezgodność powoduje odrzucenie ładowania |
| CRC symboli | Opcjonalna sekcja ELF __versions z CRC32 dla każdego eksportowanego symbolu jądra w celu weryfikacji ABI |
| Podpisywanie modułów | Podpis RSA/ECDSA dołączony po danych ELF (CONFIG_MODULE_SIG); jądra z włączonym lockdown wymagają poprawnego podpisu |
| Kompresja | Moduły dystrybucyjne kompresowane jako .ko.xz, .ko.gz lub .ko.zst; modprobe dekompresuje przezroczyście (jądro 3.3+) |
| Narzędzia ładowania | insmod (bezpośrednie ładowanie), modprobe (uwzględnia zależności), rmmod (usuwanie) - wszystkie części pakietu kmod |
| Narzędzie metadanych | modinfo(8) odczytuje sekcję .modinfo; depmod(8) buduje mapę zależności modules.dep |
| Typowy rozmiar | 5 KB - 10 MB (moduły sterowników urządzeń znacznie się różnią) |
| Historia nazewnictwa | Sufiks .ko zastąpił .o dla modułów jądra począwszy od Linux 2.6.0 (2003) |
| Przenośność | Tylko Linux; niekompatybilny z innymi systemami opartymi na ELF bez infrastruktury modułów po stronie jądra |
| Wydano | 2003 (Linux kernel 2.6; .ko replaced .o module naming convention) |
| Najnowsza wersja | N/A (ELF format is stable; kernel ABI versioning via vermagic string) |
| Otwarty standard | Tak · bezpłatny (royalty-free) |
| Specyfikacja | www.kernel.org |
Konwersje KO
Pytania i odpowiedzi społeczności
pytania użytkownikówBrak pytań - bądź pierwszą osobą, która zapyta o pliki KO.