System.map 파일은 커널을 컴파일 할 때마다 새로 생성되는 파일로 커널에 들어 있는 심벌에 대한 정보를 담고 있다. 이 파일은 커널 부팅 과정에서 사용되지 않고, 부팅 이후 디버깅을 하는 프로그램 등에 의해 사용된다. 그렇더라도 부팅 과정에서 파일 버전이 틀리다고 불평하는 경우가 있다.

 우선 가장 손쉬운 해결 방법은 커널 컴파일을 하면 생기는 System.map 파일을 /boot/ 디렉토리에 복사를 하는 것이다. System.map 파일은 /usr/src/linux 디렉토리에 있다. /boot에는 System.map 파일이 있는데, 파일이 있는 경우도 있지만 버전별로 System.map-(version) 파일이 있고, 여기에 심벌릭 링크로 되어 있는 경우도 있다. 심벌릭 링크로 되어 있는 경우는 링크를 새로 만들어서 복사를 하면 된다.

 시스템에 여러 버전의 커널이 설치되어 있고, LILO를 이용하여 다른 버젼의 커널로 부팅할 수도 있다. 이 때는 부팅하는 버전별로 System.map 파일을 자동으로 바꿀 수 있다. 먼저 /boot에 버전별로 System.map 파일을 만들어 둔다. 예를 들어 2.2.16 버전의 System.map 파일은 /boot/System.map-2.2.16으로 만든다. 그리고 /etc/rc.d/rc.sysinit에 root filesystem을 Read/Write로 마운트를 한 부분 뒤에 다음 스크립트를 추가한다.

kernel_version='uname -r'
rm -f /boot/System.map
ln -s /boot/System.map-$(kernel_version) /boot/System.map

ln -sf /boot/System.map-$(uname -r) /boot/System.map

 이 스크립트는 부팅한 커널 버전에 따라서 자동으로 심벌릭 링크를 만들어 준다.


+ Recent posts