কম্পিউটার টিউটোরিয়াল

VirtualBox 게스트 애디션 빌드 에러 해결: 단계별 수정 가이드

우선, 이 기사의 제목은 많은 것을 약속합니다. 그래서 그것을 좁히고 기대를 맞춰봅시다. 시작점은 당신이 이전에 VirtualBox를 사용했고, 리눅스 가상 머신들에 게스트 애디션이 설치되어 있었다는 것입니다. 이제, 어떤 이유로, VirtualBox 서비스가 더 이상 당신의 게스트 운영 체제들에서 실행되지 않습니다. 모듈들을 다시 설치하려고 하면, 나쁜 커널 구성, 누락된 소스와 헤더, 그리고 유사한 문제들을 가리키는 이상한 실패를 얻게 됩니다. 문제는, 이들 중 어느 것도 말이 안 된다는 것입니다.

당신은 올바른 커널 소스와 헤더를 가지고 있지만, 어떤 이유로 VirtualBox는 그것들을 보지 못하고, 따라서 메인 커널 모듈의 컴파일이 실패하고, 이는 차례로 당신의 가상 머신들이 작동하는 방식에 영향을 미칩니다. 게다가, 이것은 거의 무작위로 발생하는 것 같고, 커널 업데이트 후에 때때로 나타납니다. 이 모든 것을 염두에 두고, 우리는 이제 몇 가지 깔끔하고 간단한 트릭들을 사용하여 문제를 해결하려고 시도할 것입니다.

당면한 문제

CentOS 가상 머신으로 시연해 봅시다. 당신은 모든 필수 빌드 도구들을 가지고 있고, 우리는 이 연습을 이전에 여러 번 했습니다, 우리가 이 운영 체제에 Nvidia 드라이버를 설정하려고 했을 때를 포함해서. 같은 드릴이 여기 적용됩니다. 하지만 당신이 다른 배포판을 실행하고 있다 해도, 다시, 올바른 도구들과 컴파일할 수 있게 하는 소프트웨어를 얻는 과정은 매우 유사합니다. 일단 요령을 터득하면, 그것은 쉽습니다. 그러나 모듈을 빌드하는 동안 (<mount>/VBoxLinuxAdditions.run), 명령이 실패합니다:

Building the VirtualBox Guest Additions kernel modules
The headers for the current running kernel were not found. If
the following module compilation fails then this could be the
reason. The missing package can be probably installed with
yum install kernel-devel-...

Building the main Guest Additions module [FAILED]
(Look at /var/log/vboxadd-install.log to find out what went wrong)

하지만 만약 당신이 소위 누락된 패키지를 설치하려고 시도한다면:

Package kernel-devel-... already installed and latest version
Nothing to do

해결책

우리는 로그를 참조해야 하며, 이것은 당신의 리눅스 문제 해결 기술을 연마하는 데 도움이 되어야 할 훌륭한 트러블슈팅 연습입니다, 여기 Dedoimedo에서의 궁극적인 미션. 로그 파일을 열고 안을 들여다보세요. 마지막 에러부터 시작하여 바닥에서 위로 올라가며 무슨 일이 일어났는지 파악하려고 노력해야 합니다. 더 주목할 만한 에러 중 하나는:

Error: unable to find the sources of your current Linux kernel. Specify KERN_DIR=<directory> and run Make again. Stop.

흥미롭습니다. VirtualBox가 정말로 우리 커널 소스들을 보지 못하는 것 같습니다. 고쳐봅시다, 그리고 우리가 직면한 문제를 고쳤는지 보기 위해 명령을 다시 실행해 봅시다.

export KERN_DIR=/usr/src/kernels/`uname -r`

여전히 소용없습니다. 우리는 다른 에러를 찾아봐야 합니다. 실제로, 설치 문제로 돌아가서, 스크립트는 소스보다는 헤더에 대해 불평했습니다. 이는 우리의 문제가 대부분 다른 곳에 있음을 의미합니다. 그리고 약간의 추가 통찰력으로 로그를 다시 한 번 살펴봅시다. 라인 중 하나 - 특정 커널 버전은 무시하세요, 중요하지 않습니다.

grep: /lib/modules/3.10.0-123.20.1.el7.x86_64/build/include/
linux/version.h: No such file or directory

이것은 거의 이상한 버그처럼 보입니다, 왜냐하면 우리는 yum 명령어가 반환하듯이 헤더들이 제자리에 있다는 것을 알기 때문입니다. 만약 우리가 실행 중인 커널에 대한 /lib/modules 디렉토리로 수동으로 cd하면, 우리는 실제로 깨진 심볼릭 링크에 직면하고 있음을 볼 수 있습니다.

build 링크는 상대 경로를 가리키는데, 이는 결코 좋은 생각이 아니며, 따라서 VirtualBox는 예상된 소프트웨어를 찾을 수 없습니다. 우리는 절대 경로를 사용함으로써 이 문제를 완전히 피할 수 있도록 이것을 고칠 것입니다.

cd /lib/modules/`uname -r`/
ln -sf /usr/src/kernels/3.10.63-11.el7.x86_64 build

이제 심볼릭 링크가 고쳐졌습니다:

그리고 우리는 즐겁게 컴파일할 수 있습니다:

결론

우리는 우리의 튜토리얼의 끝에 도달했습니다, 약간 더 현명해지고, 더 똑똑해지고, 더 편안해지고, 더 행복해졌습니다. 이런 종류의 문제들은 정말로 사람들을 미치게 만들 수 있습니다, 왜냐하면 수십 개의 거짓 양성 증상들이 유사한 에러들을 일으킬 수 있기 때문입니다. 하지만 우리가 빌드 이슈들을 제외하고, 이것이 예전에는 잘 작동했음을 상기한다면, 우리는 VirtualBox 대 커널 비호환성을 잊고, 다른 곳을 볼 수 있습니다.

우리의 경우, 형편없이 구현된 심볼릭 링크가 우리의 모든 문제들의 원천 [sic]입니다. 그 이유에 대해, 저는 확신하지 못합니다, 또는 왜 그것이 변경되었는지, 하지만 설치된 패키지들 중 일부가 그것을 변경했을 수도 있고, 시스템의 무언가가 잘못 행동하기로 결정했을 수도 있습니다. 중요한 점은 우리가 워크플로를 이해하고, 그것을 거슬러 올라가 추적하고, 문제를 고칠 수 있다는 것입니다. 멋지지 않나요? 자, 이것이 우리의 가이드를 완성합니다. 즐기세요.

치어스.

  1. VirtualBox-এ Ubuntu ফ্রিজিং সমস্যা সমাধান

  2. Adobe_air.dll ত্রুটি দ্রুত সমাধান: ধাপে ধাপে ট্রাবলশুটিং গাইড

  3. DDraw.dll ত্রুটি সমাধান: DirectX সমস্যা সমাধানের ধাপে ধাপে গাইড

  4. VirtualBox মাস্টার করুন: ডিস্ক ইমেজ ক্লোনিং-র ধাপে ধাপে গাইড