2013-03-24 39 views
5

Tôi đang cố gắng biên dịch hạt nhân Linux 2.6.32.6 với một số mô-đun được tích hợp vào hạt nhân vì một lý do rất cụ thể. Tôi đã bao gồm hệ thống tập tin gốc trên NFS trong một nỗ lực để PXE khởi động cứu Live-CD tùy chỉnh của riêng tôi qua mạng LAN. Sau khi bao gồm các phụ thuộc và mô-đun cần thiết cho ROOT_NFS, tôi cố gắng biên dịch hạt nhân Linux với make bzImage. Khi điều này chạy tôi nhận được lỗiBiên dịch Lỗi hạt nhân Linux xt_CONNMARK.h

make[4]: *** No rule to make target './linux-2.6.32.6/include/linux/netfilter/xt_CONNMARK.h', needed by './linux-2.6.32.6/usr/include/linux/netfilter/.install'. Stop. 

Bây giờ tôi đã cố gắng vô hiệu hóa các module Netfilter trong cấu hình và cố gắng để tìm thấy bất kỳ phụ thuộc mà làm cho yêu cầu Netfilter, nhưng lỗi này vẫn tiếp tục xảy ra.

Bất kỳ đề xuất nào để giải quyết lỗi này đều tuyệt vời.

+0

Bạn có thể cần phải xóa 'phụ thuộc' cho tệp đó. Các * kbuild * nên đã chọn thực tế bạn thay đổi '.config', nhưng có thể không phải với phiên bản Linux cũ hơn này. –

+0

Thực hiện 'làm sạch' trước tiên hoặc thủ công loại bỏ thông tin phụ thuộc' Makefile'. Vấn đề của bạn dường như không quen thuộc, nhưng tôi không thể nhớ vấn đề là gì. Nó có thể liên quan đến 'làm O = ... '. –

+0

Sau một vài lần thử, tôi đã xóa mục nhập cụ thể trong Kbuild. điều kỳ lạ tuy nhiên là có 2 mục cho 'xt_CONNMARK.h'. Một trong những thất bại là tất cả các mũ trong khi một trong những khác là tất cả các trường hợp thấp hơn. Chạy vào một vài trường hợp với điều này nhưng một khi tôi loại bỏ tất cả các sự kiện (khoảng 5 trong tổng số) hệ thống biên dịch và khởi động đúng cách. – Blackninja543

Trả lời

10

Điều này rất có thể do bạn đã mất mất một số tệp từ cây nguồn do bị chuyển qua hệ thống tệp không phân biệt chữ hoa chữ thường. Có khoảng 15 tệp khác nhau trong cây nguồn Linux từ các thời điểm khác nhau được đặt tên giống nhau, nhưng có cách viết hoa khác. Đây không phải là vấn đề bình thường đối với những người xây dựng hạt nhân Linux, bởi vì tất cả các hệ thống tệp hợp lý đều phân biệt chữ hoa chữ thường.

Đối với những người tò mò, các tệp theo cách này đều nằm trong cây netfilter - xem include/linux/netfilter/xt_CONNTRACK.h so với include/linux/netfilter/xt_conntrack.h trong v3.0 chẳng hạn.

Vì vậy, những tệp đó tồn tại nhưng bạn đã mất chúng. Lấy cây nguồn mới, giải nén nó trên một hệ thống tập tin phân biệt chữ hoa chữ thường và bạn sẽ không còn lỗi này nữa. Ngoài ra, hãy sao chép các tệp từ cây nguồn "nguyên sơ" hoặc github mirror of the kernel nếu bạn sợ mất các thay đổi đối với cây của mình - chúng có thể không bị thay đổi so với bản phát hành trong phiên bản bạn đang biên soạn.

Các vấn đề liên quan