System.map — файл, всередині якого знаходиться символьна таблиця адрес функцій і процедур, що використовуються ядром операційної системи Linux. У цій таблиці перераховані імена змінних і функцій та їх адреси в пам'яті комп'ютера. Ця таблиця дуже корисна при налагодженні ядра в разі Kernel panic або Linux oops. System.map генерується при компіляції ядра.
Символьна таблиця адрес для завантаженого ядра також знаходиться в файлі /proc/kallsyms.
Створення файлу Файл System.map можна створити командою nm -n vmlinux > System.map. При компіляції ядра використовується наступна команда (скрипт /usr/src/linux/scripts/mksysmap, версія ядра 2.6.35): $NM -n $1 | grep -v '\( [aNUw] \)\|\(__crc_\)\|\( \$[adt]\)' > $2, де $1 — файл vmlinux, $2 — файл System.map.
Вміст файлу Приклад вмісту файлу System.map: c040f4ec b local_apic_timer_verify_ok c040f4f0 b calibration_result c040f4f4 b enabled_via_apicbase c040f4f8 b apic_phys c040f500 b apic_pm_state c040f538 B nmi_active c040f53c B nmi_watchdog_enabled c040f540 B unknown_nmi_panic c040f544 b backtrace_mask c040f548 b lock.19318 c040f54c b nmi_pm_active c040f550 b last_irq_sums c040f560 b alert_counter
Друга колонка позначає тип символу (великі літери означають глобальний або експортований символ, малі - локальний): A — абсолютне значення. B — символ у секції неініціалізованих даних. D — символ у секції ініціалізованих даних. N — налагоджувальний символ. R — символ у секції ініціалізованих даних ReadOnly. T — символ у секції коду. System.map створюється при кожній збірці ядра з огляду на те, що в різних версіях можуть бути різні адреси процедур.
Примітки