System.map

System.map 파일은 리눅스에서 커널이 사용하는 심볼 테이블이다.

심볼 테이블은 심볼 이름과 메모리의 해당 주소를 조회하는 것이다. 심볼 이름은 변수 이름일 수도 있고 함수 이름일 수도 있다. System.map은 심볼 이름의 주소나 주소의 심볼 이름이 필요할 때 필요하다. 커널 패닉커널 웁스를 디버깅하는 데 특히 유용한다. 커널은 CONFIG_KALLSYMS가 활성화되면 자체적으로 주소를 이름으로 변환하므로 ksymoops와 같은 도구가 필요하지 않다.[1]

내부

다음은 System.map 파일의 일부이다.[2]

c041bc90 b packet_sklist
c041bc94 b packet_sklist_lock
c041bc94 b packet_socks_nr
c041bc98 A __bss_stop
c041bc98 A _end
c041c000 A pg0
ffffe400 A __kernel_vsyscall
ffffe410 A SYSENTER_RETURN
ffffe420 A __kernel_sigreturn
ffffe440 A __kernel_rt_sigreturn

주소는 한 빌드에서 다음 빌드로 변경될 수 있으므로 커널의 각 빌드마다 새로운 System.map이 생성된다.[3]

같이 보기

각주

  1. “FAQ/System.map - Linux Kernel Newbies”. kernelnewbies.org. 2006년 4월 14일. 2014년 4월 6일에 확인함. 
  2. Peter Jay Salzman (2003년 5월 28일). “The system.map File”. Rlworkman.net. 2014년 4월 6일에 확인함. 
  3. “Kernel-HOWTO”. faqs.org. 2014년 4월 6일에 확인함.