!["지도 파일을 찾을 수 없습니다"는 정말 심각한 문제입니다. 메시지를 시작하시겠습니까?](https://linux55.com/image/120939/%22%EC%A7%80%EB%8F%84%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%B0%BE%EC%9D%84%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4%22%EB%8A%94%20%EC%A0%95%EB%A7%90%20%EC%8B%AC%EA%B0%81%ED%95%9C%20%EB%AC%B8%EC%A0%9C%EC%9E%85%EB%8B%88%EB%8B%A4.%20%EB%A9%94%EC%8B%9C%EC%A7%80%EB%A5%BC%20%EC%8B%9C%EC%9E%91%ED%95%98%EC%8B%9C%EA%B2%A0%EC%8A%B5%EB%8B%88%EA%B9%8C%3F.png)
이것은 제가 질문한 또 다른 질문에 대한 후속 질문입니다.여기.
요약하자면: LFS(Linux From Scratch) 설치의 일부로 직접 구성하고 구축한 Linux 커널을 부팅하려고 합니다. 그러나 다음 줄이 표시됩니다 /var/log/kern.log
.
Oct 9 17:24:17 <lee_lfs> kernel: Cannot find map file.
나는 klogd의 소스 코드(SysVinit를 사용하고 있음)를 읽었는데 문제는 매핑 파일에 klogd가 찾고 있는 "version" 행이 포함되어 있지 않은 것 같습니다.
어쨌든 내 질문은 이 문제가 얼마나 큰가 하는 것입니다. 이로 인해 어떤 유형의 문제가 발생할 수 있나요? 이 문제는 무시해도 됩니까? 시스템이 여전히 정상적으로 작동해야 합니까, 아니면 해결해야 할 문제입니까?
답변1
이게 얼마나 큰 문제입니까.
매우 중요합니다. 예를 들어 배포판이 작동하지 않을 수 있습니다.
이로 인해 어떤 유형의 문제가 발생할 수 있나요?
이것은 말하기가 약간 어렵지만 커널 로그를 보면 꽤 빨리 알 수 있습니다.
이 문제는 무시해도 됩니까? 시스템이 여전히 정상적으로 작동해야 합니까, 아니면 해결해야 할 문제입니까?
안정성을 중시한다면 이는 무시할 수 없는 문제라고 생각합니다. 제가 이렇게 말하는 이유는 그것 없이는 시스템을 디버깅하기가 어렵기 때문입니다.
글쎄요, 무슨 일이 일어나고 있는지 알 수 있어요.
커널이 system.map을 빌드하지 않았거나, 심볼릭 링크가 생성되지 않았거나, 일부 권한으로 인해 문제가 발생했습니다.
도움이 된다면 system.map을 기호 테이블이라고도 합니다. 앞서 안정성에 영향을 미친다고 언급했지만 시스템 디버깅을 더 어렵게 만드는 경우가 많습니다.
무슨 일이 일어나고 있는지 확인할 수 있는 Makefile의 항목은 다음과 같습니다.
nm /boot/vmlinux-2.4.18-19.8.0 > System.map
# Below is the line from /usr/src/linux/Makefile
nm vmlinux | grep -v '\(compiled\)\|\(\.o$$\)\|\( [aUw] \)\|\(\.\.ng$$\)\|\(LASH[RL]DI\)' | sort > System.map
cp /usr/src/linux/System.map /boot/System.map-2.4.18-14 # For v2.4.18
따라서 먼저 이 복사본이 발생하는지 확인하세요.
상황을 더 복잡하게 만들기 위해 klogd에 system.map이 있는 위치를 알려주지 않으면 다음과 같이 표시됩니다.
- /boot/system.map
- /system.map
- /usr/src/linux/System.map
Linux 커널 컴파일 출력이 /usr/src/linux-version/System.map으로 이동하지만 klogd가 거기에서 전혀 볼 수 없는 경우가 있습니다. 문제가 있는 경우 파일 사본을 통해 즉시 알려드립니다.
답변2
내 질문에 대답하자면: 매핑 파일이 완전히 삭제된 경우에도 내가 만든 사용자 정의 커널이 부팅되고 제대로 실행되는 것 같다는 것을 확인할 수 있습니다. 따라서 이는 부팅 시스템 관점에서 볼 때 중요한 요구 사항은 아닌 것 같습니다. 그러나 Matt O.가 답변에서 말했듯이 메모리 위치가 System.map 파일에 포함된 기호와 일치하지 않으면 디버깅이 더 어려워질 수 있는 것 같습니다.