우선, 이 기사의 제목은 많은 것을 약속합니다. 범위를 좁히고 기대치를 맞추자. 시작점은 이전에 VirtualBox를 사용했고 Linux 가상 머신에 Guest Additions를 설치한 것입니다. 이제 어떤 이유로 VirtualBox 서비스가 게스트 운영체제에서 더 이상 실행되지 않습니다. 모듈을 다시 설치하려고 하면 잘못된 커널 구성, 누락된 소스 및 헤더 및 유사한 문제를 가리키는 이상한 오류가 발생합니다. 이것들 중 어느 것도 말이되지 않습니다.
올바른 커널 소스와 헤더가 있지만 어떤 이유로 VirtualBox에 표시되지 않으므로 기본 커널 모듈의 컴파일이 실패하고 이는 가상 머신이 작동하는 방식에 영향을 미치고 있습니다. 더욱이 이것은 거의 무작위로 발생하는 것처럼 보이며 때때로 커널 업데이트 후에 발생합니다. 이 모든 것을 염두에 두고 이제 몇 가지 깔끔하고 간단한 트릭을 사용하여 문제를 해결하려고 시도할 것입니다.
당면한 문제
CentOS 가상 머신으로 시연해 보겠습니다. 필요한 모든 빌드 도구가 있으며 이 운영 체제용 Nvidia 드라이버를 설정하려고 시도했을 때를 포함하여 이전에 여러 번 이 작업을 수행했습니다. 동일한 드릴이 여기에 적용됩니다. 그러나 다른 배포판을 실행하는 경우에도 컴파일할 수 있는 올바른 도구와 소프트웨어를 얻는 프로세스는 매우 유사합니다. 일단 요령을 터득하면 쉽습니다. 그러나 모듈(
VirtualBox Guest Additions 커널 모듈 빌드
현재 실행 중인 커널의 헤더를 찾을 수 없습니다. 만약에
다음 모듈 컴파일이 실패하면 다음일 수 있습니다.
이유. 누락된 패키지는 다음을 사용하여 설치할 수 있습니다.
yum install 커널 개발-...
기본 게스트 추가 모듈 빌드 [실패]
(무엇이 잘못되었는지 알아보려면 /var/log/vboxadd-install.log를 보십시오.)
그러나 누락된 것으로 추정되는 패키지를 설치하려고 하면:
패키지 kernel-devel-...이(가) 이미 설치되어 있고 최신 버전입니다.
할 일이 없습니다.
솔루션
우리는 로그를 참조해야 하며 이것은 Dedoimedo의 궁극적인 임무인 Linux 문제 해결 기술을 연마하는 데 도움이 되는 훌륭한 문제 해결 연습입니다. 로그 파일을 열고 내부를 엿봅니다. 마지막 오류부터 아래에서 위로 시작하여 무슨 일이 일어났는지 파악해야 합니다. 더 주목할만한 오류 중 하나는 다음과 같습니다.
오류:현재 Linux 커널의 소스를 찾을 수 없습니다. KERN_DIR=
흥미로운. VirtualBox가 실제로 커널 소스를 보지 못하는 것 같습니다. 그런 다음 문제를 수정한 다음 명령을 다시 실행하여 직면한 문제가 수정되었는지 확인합니다.
내보내기 KERN_DIR=/usr/src/kernels/`uname -r`
그래도 좋지 않습니다. 다른 오류를 찾아야 합니다. 실제로 설치 문제로 돌아가서 스크립트는 소스가 아닌 헤더에 대해 불평했습니다. 이는 우리의 문제가 다른 곳에 있을 가능성이 높다는 것을 의미합니다. 그리고 몇 가지 추가적인 통찰력을 가지고 로그를 한 번 더 탐색합니다. 라인 중 하나 - 특정 커널 버전을 무시하십시오. 중요하지 않습니다.
그렙:/lib/modules/3.10.0-123.20.1.el7.x86_64/build/include/
linux/version.h:그런 파일이나 디렉토리가 없습니다
yum 명령이 반환될 때 헤더가 제자리에 있다는 것을 알고 있기 때문에 이것은 거의 이상한 버그처럼 보입니다. 실행 중인 커널의 /lib/modules 디렉토리로 수동으로 cd하면 실제로 깨진 심볼릭 링크에 직면하고 있음을 알 수 있습니다.
빌드 링크는 절대 좋은 생각이 아닌 상대 경로를 가리키므로 VirtualBox는 예상되는 소프트웨어를 찾을 수 없습니다. 절대 경로를 사용하여 이 문제를 해결하여 문제를 완전히 방지합니다.
cd /lib/modules/`uname -r`/
ln -sf /usr/src/kernels/3.10.63-11.el7.x86_64 빌드
이제 심볼릭 링크가 수정되었습니다:
그리고 즐겁게 컴파일할 수 있습니다:
결론
우리는 조금 더 현명하고, 더 똑똑하고, 더 편안하고, 더 행복한 튜토리얼의 끝에 도달했습니다. 이러한 종류의 문제는 유사한 오류를 유발할 수 있는 수십 가지 거짓 양성 증상이 있기 때문에 사람들을 정말 미치게 만들 수 있습니다. 그러나 빌드 문제를 제외하면 잘 작동했던 것을 기억하고 VirtualBox와 커널 비호환성을 잊어버리고 다른 곳을 볼 수 있습니다.
우리의 경우 잘못 구현된 심볼릭 링크가 모든 문제의 원인입니다. 그 이유는 확실하지 않거나 변경된 이유는 모르지만 설치된 패키지 중 일부가 변경되었거나 시스템에서 오작동을 결정했을 수 있습니다. 중요한 점은 작업 흐름을 이해하고 이를 역추적하여 문제를 해결할 수 있다는 것입니다. 굉장하지? 글쎄, 그것은 우리 가이드를 완성합니다. 즐기다.
건배.