System.map 파일 업데이트

System.map 파일 업데이트

System.map 파일에 기호 주소가 포함되어 있음을 발견했습니다. 시스템 호출이 관련되어 있습니까? 새 커널이 컴파일될 때만 업데이트된다는 것을 읽었습니다.

그렇다면 이는 새로운 커널 컴파일을 제외하고 항상 동일한 주소에 저장된다는 의미입니까?

답변1

System.map포함기호표즉, 각 함수 코드의 주소가 메모리에 로드되는 Linux 커널의 함수 이름 목록입니다(이 주소는 물리적 주소가 아니며 커널에 로드된 실행 가능한 기호 테이블과 마찬가지로 커널의 주소 공간에 위치합니다). 프로세스 주소 공간). 이는 시스템 호출(사용자 프로세스에 노출되는 인터페이스)에만 국한되지 않습니다. 파일에는 로드된 모듈에서 호출할 수 있는 함수, 심지어 내부 함수도 나열됩니다. 시스템 호출은 이름이 로 시작하는 기호입니다 sys_.

주소는 특정 커널 바이너리(또는 다른 형식, 이미지 형식은 주소를 변경하지 않고 단지 인코딩일 뿐임)와 vmlinux연결되어 있으며 bzImage주어진 커널 소스, 구성 및 컴파일러에 대해 재현 가능합니다. 이 파일은 다음에 의해 생성되었습니다.scripts/mksysmap커널 빌드 프로세스가 거의 끝나면 출력은 다음과 같습니다.nm주문하다.

이 파일은 주로 디버깅에 사용되지만 불안정한 커널 인터페이스(한 버전에서 다음 버전으로 변경하는 등 불안정함)를 사용하는 일부 타사 모듈을 컴파일할 때도 읽혀집니다.

관련 정보