Tóm tắt
Bạn có thể muốn cài đặt gói được gọi linux-headers-generic
.
Nếu việc chạy uname -r
mang lại cho bạn thứ gì đó ngoài generic
số phiên bản, hãy thay thế generic
bằng linux-headers-generic
. (Điều này có thể là server
hoặc generic-pae
trên một số cài đặt của một số bản phát hành Ubuntu và có một vài "hương vị" thỉnh thoảng khác của hạt nhân.)
Vì rất có thể bạn cần điều này để bạn có thể xây dựng trình điều khiển (có thể là tự động, bạn có thể không phải là "tự mình xây dựng"), nên cài đặt build-essential
quá tốt để có thể có tất cả các công cụ cần thiết .
Giải thích đầy đủ
Theo hiểu biết tốt nhất của tôi, không có hệ điều hành nào có một gói được gọi Linux-kernel-devel
. Đây là vì hai lý do:
- Tên gói bắt đầu bằng chữ in hoa là cực kỳ hiếm, đối với bất kỳ HĐH nào giống Unix.
- Các hệ điều hành GNU / Linux thường đặt tên cho các gói liên quan đến kernel của chúng để các tên chứa kernel kernel hoặc từ linux , nhưng không phải cả hai. (Trên Ubuntu, đó là từ linux .)
Nó phổ biến cho các gói liên quan đến kernel trên các hệ thống sử dụng Trình quản lý gói Red Hat ( rpm
) và các tiện ích liên quan để có kernel
tên của gói. Ví dụ, Mageia có một số gói có tên bắt đầu kernel
và kết thúc devel
. Các gói này hầu như luôn luôn (trên Mageia và bất kỳ HĐH nào có chúng) cung cấp các tệp tiêu đề cần thiết để xây dựng trình điều khiển từ nguồn để sử dụng với kernel. Họ cũng có thể cung cấp các tiện ích liên quan để tạo điều kiện. Các gói này:
- làm không cung cấp mã nguồn đầy đủ của hạt nhân. Điều đó được cung cấp bởi các gói khác.
- làm không cung cấp một hạt nhân có thể sử dụng trước khi biên dịch. Điều đó được cung cấp bởi các gói khác.
- làm không cung cấp một trình biên dịch hoặc hầu hết các công cụ mục đích xây dựng khác. Những người cũng vậy, được cung cấp bởi các gói khác.
Trong Ubuntu, như có thể thấy trong danh sách ở đây , các gói cung cấp tiêu đề kernel có tên bắt đầu bằng linux-headers
. Thông thường các gói chính xác để cài đặt là linux-headers-generic
. Tuy nhiên, để chắc chắn gói nào sẽ được cài đặt để có được các tiêu đề tương ứng với kernel hiện đang chạy của bạn, hãy chạy:
uname -r
Bạn sẽ nhận được đầu ra trông giống như:
3.5.0-36-generic
Nghĩa là, bạn sẽ có một số phiên bản (sẽ bao gồm các .
ký tự và thường có ít nhất một ký tự -
), theo sau là một -
, theo sau là một hoặc nhiều từ cho biết loại hạt nhân nào bạn đang chạy.
Nếu bạn chỉ muốn các tiêu đề cho phiên bản cụ thể bạn tình cờ được chạy ngay bây giờ, bạn có thể cài đặt các gói có tên linux-headers-*
nơi *
được thay thế bằng toàn bộ sản lượng uname -r
. Ví dụ: trên hệ thống của tôi, tôi có thể chạy:
sudo apt-get update && sudo apt-get install linux-headers-3.5.0-36-generic
Tôi thậm chí có thể tự động hóa nó:
sudo apt-get update && sudo apt-get install linux-headers-`uname -r`
Những cách tiếp cận này là tương đương, nhưng chúng thường không phải là cách tốt nhất để đi.
Thay vào đó, bạn thường sẽ muốn cài đặt siêu dữ liệu luôn cung cấp các tiêu đề kernel mới nhất dưới dạng bản cập nhật (bằng cách tùy thuộc vào bất kỳ gói tiêu đề nào mới nhất). Điều này tương đồng với cách cài đặt kernel đã chạy, biên dịch của bạn và được cập nhật. Để làm điều đó, chỉ nhìn vào phần uname -r
đầu ra sau số phiên bản. Đó là, nếu uname -r
cung cấp cho bạn 3.5.0-36-generic
, chỉ lấy generic
một phần.
Sau đó cài đặt gói được gọi là linux-headers-*
nơi *
được thay thế bởi phần đó. Vì vậy, trên hệ thống của tôi, nó sẽ là linux-headers-generic
một cách tôi có thể cài đặt nó là chạy:
sudo apt-get update && sudo apt-get install linux-headers-generic
Đối với hầu hết mọi người nó là linux-headers-generic
, nhưng tùy thuộc vào những gì Ubuntu phát hành bạn đang chạy, những gì kiến trúc và loại thiết bị bạn đang chạy nó trên, và làm thế nào nó được cài đặt và cấu hình, khả năng khác bao gồm generic-pae
, highbank
, omap
, server
, và virtual
.
Gói liên quan
Các tệp tiêu đề tạo điều kiện phát triển và biên dịch / xây dựng phần mềm sử dụng các tiện ích được cung cấp bởi phần mềm có tệp tiêu đề đang được sử dụng. Lý do phổ biến nhất bạn có thể cần các tiêu đề kernel là nếu bạn định xây dựng trình điều khiển (mô-đun kernel) từ mã nguồn. Một số ứng dụng, như VMware và VirtualBox, đôi khi sẽ yêu cầu điều này và sẽ tự động hóa bản dựng.
Ngoài các tệp tiêu đề, để xây dựng phần mềm, một trình biên dịch và các công cụ khác là cần thiết. Để tối đa hóa khả năng bạn có các công cụ cần thiết, bạn cũng nên cài đặt build-essential
gói.
Bất kỳ ai cũng cần mã nguồn hạt nhân đầy đủ thực tế (tất nhiên trừ khi bạn dự định xây dựng hạt nhân của mình từ nguồn). Nhưng nếu bạn cần điều đó, bạn cũng sẽ phải cài đặt một gói khác. Trong Ubuntu, gói mã nguồn hạt nhân đầy đủ được gọi linux-source
. (Điều này phù hợp với quy ước đặt tên Debian / Ubuntu về các gói đặt tên cung cấp các phần thực chất của nhân Linux linux
chứ không phải kernel
.)
Nếu bạn vẫn gặp rắc rối
Nếu bạn cố gắng cài đặt bất kỳ gói nào trong số các gói này nhưng gặp sự cố và bạn muốn được trợ giúp, thì bạn sẽ phải bao gồm văn bản đầy đủ và chính xác từ Terminal, bao gồm các dòng nơi bạn đã nhập lệnh. Cách tốt nhất để cung cấp điều này là bằng cách chỉnh sửa câu hỏi của bạn, nhưng nếu quá dài, bạn có thể dán nó ở đâu đó như http: //paste.ub Ubuntu.com và cung cấp cho chúng tôi URL nơi chúng tôi có thể truy cập.
Nếu bạn bình luận về câu hỏi này, tôi sẽ được thông báo. Bạn có thể chỉnh sửa câu hỏi của mình và cũng bình luận tại đây để thu hút sự chú ý đến thông tin bạn đã cung cấp trong câu hỏi của mình. (Thông tin quan trọng được lưu giữ tốt nhất trong các câu hỏi và câu trả lời.) Chúc may mắn!