Computer >> Máy Tính >  >> Phần mềm >> Máy ảo

Lỗi biên dịch VirtualBox Guest Additions - Cách khắc phục

Trước hết, tiêu đề của bài viết này hứa hẹn rất nhiều. Vì vậy, hãy thu hẹp nó xuống và sắp xếp các kỳ vọng. Điểm bắt đầu là trước đây bạn đã sử dụng VirtualBox và đã cài đặt Guest Additions trong các máy ảo Linux của mình. Giờ đây, vì một số lý do, dịch vụ VirtualBox không còn chạy trong hệ điều hành khách của bạn nữa. Nếu bạn cố gắng cài đặt lại các mô-đun, bạn sẽ gặp phải một lỗi kỳ lạ, điều này chỉ ra rằng cấu hình hạt nhân không hợp lệ, thiếu nguồn và tiêu đề cũng như các sự cố tương tự. Những điều, không ai trong số này có ý nghĩa.

Bạn có các tiêu đề và nguồn nhân phù hợp, nhưng vì lý do nào đó, VirtualBox không nhìn thấy chúng và do đó, quá trình biên dịch mô-đun nhân chính không thành công, do đó ảnh hưởng đến cách máy ảo của bạn đang hoạt động. Hơn nữa, điều này dường như xảy ra gần như ngẫu nhiên và đôi khi xảy ra sau khi cập nhật kernel. Với tất cả những điều này và hơn thế nữa, bây giờ chúng ta sẽ cố gắng giải quyết vấn đề bằng một số thủ thuật gọn gàng và đơn giản.

Vấn đề hiện tại

Hãy chứng minh bằng một máy ảo CentOS. Bạn có tất cả các công cụ xây dựng cần thiết và chúng tôi đã thực hiện bài tập này nhiều lần trước đây, kể cả khi chúng tôi cố gắng thiết lập trình điều khiển Nvidia cho hệ điều hành này. Bài tập tương tự cũng được áp dụng ở đây. Nhưng ngay cả khi bạn đang chạy các bản phân phối khác, thì quy trình để có được các công cụ và phần mềm phù hợp để có thể biên dịch cũng rất giống nhau. Một khi bạn hiểu rõ về nó, thật dễ dàng. Tuy nhiên, trong khi xây dựng mô-đun (/VBoxLinuxAdditions.run), lệnh không thành công:

Xây dựng các mô-đun hạt nhân VirtualBox Guest Additions
Không tìm thấy tiêu đề cho kernel đang chạy. Nếu
quá trình biên dịch mô-đun sau không thành công thì đây có thể là
lý do. Gói bị thiếu có thể được cài đặt với
yum cài đặt kernel-devel-...

Xây dựng mô-đun Bổ sung khách chính                [FAILED]
(Hãy xem /var/log/vboxadd-install.log để tìm hiểu điều gì đã xảy ra)

Nhưng nếu bạn cố cài đặt gói được cho là bị thiếu:

Gói kernel-devel-... đã được cài đặt và phiên bản mới nhất
Không có gì để làm

Giải pháp

Chúng ta phải tham khảo nhật ký và đây là một bài tập khắc phục sự cố tuyệt vời sẽ giúp bạn trau dồi kỹ năng giải quyết vấn đề Linux của mình, nhiệm vụ cuối cùng ở đây trên Dedoimedo. Mở tệp nhật ký và nhìn thoáng qua bên trong. Bạn nên bắt đầu từ dưới lên trên, với lỗi cuối cùng và cố gắng tìm hiểu điều gì đã xảy ra. Một trong những lỗi đáng chú ý hơn sẽ là:

Lỗi:không thể tìm thấy nguồn nhân Linux hiện tại của bạn. Chỉ định KERN_DIR= và chạy lại Make. Dừng lại.

Thú vị. Có vẻ như VirtualBox thực sự không nhìn thấy các nguồn kernel của chúng tôi. Sau đó, hãy khắc phục và sau đó chạy lại lệnh để xem liệu chúng tôi đã khắc phục được sự cố mà chúng tôi đang gặp phải chưa.

xuất KERN_DIR=/usr/src/kernels/`uname -r`

Tuy nhiên, không tốt. Chúng ta cần tìm một lỗi khác. Thật vậy, quay trở lại vấn đề cài đặt, tập lệnh phàn nàn về tiêu đề hơn là nguồn. Điều đó có nghĩa là vấn đề của chúng ta rất có thể nằm ở chỗ khác. Và duyệt qua nhật ký một lần nữa, với một số thông tin chi tiết bổ sung. Một trong những dòng - bỏ qua phiên bản kernel cụ thể, nó không quan trọng.

grep:/lib/modules/3.10.0-123.20.1.el7.x86_64/build/include/
linux/version.h:Không có tệp hoặc thư mục như vậy

Đây gần như là một lỗi kỳ lạ, bởi vì chúng tôi biết rằng chúng tôi có các tiêu đề tại chỗ, khi lệnh yum trả về. Nếu chúng ta cd thủ công vào thư mục /lib/modules cho kernel đang chạy, chúng ta có thể thấy rằng chúng ta thực sự đang đối mặt với một liên kết tượng trưng bị hỏng.

Liên kết xây dựng trỏ đến một đường dẫn tương đối, đây không bao giờ là một ý tưởng hay và do đó, VirtualBox không thể tìm thấy phần mềm mong đợi. Chúng tôi sẽ khắc phục điều này bằng cách sử dụng một đường dẫn tuyệt đối và do đó tránh được sự cố hoàn toàn.

cd /lib/modules/`uname -r`/
ln -sf /usr/src/kernels/3.10.63-11.el7.x86_64 bản dựng

Bây giờ, các liên kết tượng trưng đã được sửa:

Và chúng ta có thể vui vẻ biên dịch:

Kết luận

Chúng ta đã hoàn thành phần hướng dẫn của mình, khôn ngoan hơn, thông minh hơn, thoải mái hơn, hạnh phúc hơn một chút. Những loại vấn đề này thực sự có thể khiến mọi người phát điên, bởi vì có hàng tá triệu chứng dương tính giả có thể gây ra các lỗi tương tự. Nhưng nếu chúng tôi loại trừ các vấn đề về bản dựng, hãy nhớ rằng điều này từng hoạt động tốt, thì chúng tôi có thể quên đi sự không tương thích giữa VirtualBox và kernel và tìm kiếm ở một nơi khác.

Trong trường hợp của chúng tôi, một liên kết tượng trưng được triển khai kém là nguồn [sic] của tất cả các vấn đề của chúng tôi. Lý do cho điều đó, tôi không chắc hoặc tại sao nó lại thay đổi, nhưng một số gói được cài đặt có thể đã thay đổi nó hoặc một thứ gì đó trong hệ thống đã quyết định hoạt động sai. Điều quan trọng là chúng tôi hiểu quy trình công việc và chúng tôi có thể theo dõi lại cũng như khắc phục sự cố. Tuyệt vời phải không? Vâng, điều đó làm cho hướng dẫn của chúng tôi hoàn thành. Vui thích.

Chúc mừng.