Làm thế nào để tôi có được mã nguồn kernel?


25

Tôi đang dự định viết một số trình điều khiển thiết bị và tôi cần lấy nguồn nhân Linux. Phiên bản nhân Linux của tôi là 3.2.0-23-generic-pae và tôi đã tải xuống hình ảnh từ đây . Trong nhiều bài viết tôi đã đọc, nó cho tôi biết rằng tôi cần phải có toàn bộ cây nhân để bắt đầu chèn các mô-đun mới.

Có đủ không nếu tôi tải hình ảnh này và dán nó vào usr/src/thư mục hoặc tôi phải làm gì khác?


1
Tôi thường chỉ cài đặt gói 'linux-source' từ synaptic khi tôi biên dịch tùy chỉnh cho một trong các máy của mình, nhưng nếu bạn đang phát triển, bạn có thể cần phiên bản mới nhất. Liên kết này có thể hữu ích cho bạn: help.ubfox.com/community/Kernel/Compile
Đánh dấu Paskal

Câu trả lời:


27

Điều này sẽ nhận được nguồn của kernel stock:

apt-get source linux-source

Bạn có thể kiểm tra phiên bản kernel nào đang chạy như thế này:

uname -r

Mà sẽ in một cái gì đó như:

3.13.0-46-generic

Bạn có thể tìm thấy danh sách các phiên bản gói nguồn hiện tại có sẵn trên hệ thống của mình thông qua:

apt-cache search linux-source

Để có được phiên bản ngược dòng của kernel:

git clone git://kernel.ubuntu.com/ubuntu/ubuntu-trusty.git

Trong liên kết trên, 'đáng tin cậy' là tên mã cho phiên bản Ubuntu. Bạn có thể tìm ra tên mã cho phiên bản Ubuntu bạn đã cài đặt qua:

cat /etc/lsb-release

Nếu tôi sử dụng git để sao chép, làm thế nào để tôi chỉ định phiên bản. Ngoài ra Nếu tôi sao chép nó là đủ nếu tôi sao chép pate vào thư mục usr / src
Sab

Kho git đó được giữ ở mức 3.2.0 cụ thể; nó tuân theo những gì trong Ubuntu Precise (12.04). Nếu bạn muốn một phiên bản khác, hãy thay đổi ubfox-precision.git thành ubfox-quantal.git hoặc bất cứ điều gì. Sẽ ổn khi chỉ cần sao chép vào usr / src.
Bryce

Được rồi. Cảm ơn- Nhưng làm thế nào bạn tìm thấy liên kết git đó?
Sab


Và nơi nào tôi có thể tìm thấy cây nguồn khi cài đặt với ... Chết tiệt, tôi nên đọc tốt hơn. Câu trả lời nói apt-get sourcekhông apt-get install. Hơn cây nguồn sẽ kết thúc trong đường dẫn hiện tại của bạn .
Sao lưu chuyên nghiệp

8
apt-get source linux

là cách dễ nhất Nó sẽ tải xuống nguồn từ kho lưu trữ của bạn - và nó sẽ giống với phiên bản bạn đang chạy (giả sử bạn chưa tùy chỉnh nó).

Nhưng nếu bạn muốn tìm nơi duy trì nguồn, bạn có thể chạy:

apt-cache showsrc linux

Tìm thuộc tính 'Vcs-' (Hệ thống kiểm soát phiên bản). Nó thường sẽ là một kho chứa git (Vcs-Git) hoặc đồng bóng.

Lưu ý - các lệnh này hoạt động với bất kỳ gói nào. Chỉ cần thay thế 'linux' bằng gói bạn quan tâm. Và cũng lưu ý rằng 'apt-get source' không cần truy cập sudo và sẽ kết xuất nguồn trong thư mục hiện tại của bạn.


Điều này đòi hỏi máy bạn đang tải xuống để khớp với máy đích. Thực sự chỉ hoạt động nếu bạn có một mạng. Hầu hết các độc giả truy cập vào trang này sẽ không có mạng (do đó tại sao họ đột nhiên cần nguồn). Tôi cần nó như một tarball trên một ngón tay cái và tôi không có khả năng làm việc.
mckenzm

Điều này chỉ tải xuống các tiêu đề linux vào /usr/src- không phải là nguồn kernel đầy đủ - trên Ubuntu 16.04
Pierz

4

Tải xuống nguồn trực tiếp từ Launchpad

Thật kỳ lạ, mọi người đều khuyên bạn apt-get source không nên làm việc hầu hết thời gian nếu bạn đang tìm kiếm một phiên bản kernel cụ thể:

Giả sử bạn cần nguồn kernel cho 3.19.0-58:
apt-get source linux-image-3.19.0-58-genericsẽ lấy nguồn cho kernel mới nhất trong sê-ri: 3.19.0-80 trong trường hợp này, đây không phải là điều bạn yêu cầu.

Vì vậy, bạn có hai lựa chọn:

1) Từ bỏ, cài đặt kernel 3.19.0-80 và sử dụng apt-get source

2) Nhận nguồn trực tiếp từ launchpad:

liên kết

  • Đặt chúng trong một thư mục mới, giải nén với dpkg-source -x *.dsc

Ghi chú:

  • Phải có cách tốt hơn.
  • Bạn có thể lấy phiên bản bạn muốn từ git, nhưng bạn đang tải xuống. Xem "Lấy nguồn hạt nhân cho bản phát hành Ubuntu bằng git" trong Mã nguồn kernel của Wiki Wiki .

Cảm ơn bạn đã giải thích điều này rất rõ ràng. Tuy nhiên, tôi vẫn không thể tìm thấy nguồn cho linux-image-4.15.0-39-generic. Quá trình này là phức tạp không cần thiết. Tôi đã thử googling cho nó nhưng tôi vẫn tìm thấy các gói chỉ vài kilobyte. Bất cứ lời khuyên?
quên

3

Chỉ cần chọn một từ:

sudo apt install linux-source  # downloads into system directory
sudo apt source linux-source  # downloads into working directory

Nếu bạn được yêu cầu cung cấp một số URL 'nguồn' sources.list, hãy chỉnh sửa /etc/apt/sources.listtệp của bạn và bỏ ghi chú dòng mong muốn deb-src, ví dụ (nếu bạn đang chạy Xenial):

deb http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted
# deb-src http://fr.archive.ubuntu.com/ubuntu/ xenial main restricted

Xóa dòng #trên dòng cuối cùng này cho phép kho lưu trữ nguồn để tải xuống, bao gồm cả nguồn kernel.

Nhận xét:

  • Sử dụng các công cụ hiện đại; tránh apt-get.
  • Các lệnh này tải xuống mã nguồn cho kernel hiện tại của bạn ( 4.4.0-75-genericví dụ trong trường hợp của tôi ).
  • Khi tải xuống thư mục hệ thống, các tệp được lưu trữ trong /usr/src/linux-source-4.4.0/(ví dụ).

Không hoạt động đối với tôi (nhưng phiên bản apt-get cũng không hoạt động). Tôi đang chạy Ubuntu 16.04.4, kernel 4.4.0-98. Nó nói, "Bạn phải đặt một số URI 'nguồn' vào nguồn.list của bạn". Tôi không biết làm thế nào để làm điều đó.
Andrew Bainbridge

@AndrewBainbridge Tôi đã thêm thông tin về điều đó. Điều đó có ổn với bạn bây giờ không?
Tim

Vâng cảm ơn. Đó là một nhận xét ngu ngốc từ tôi. Tôi chỉ cần google thông báo lỗi. Dù sao, có một upvote cho nỗ lực của bạn.
Andrew Bainbridge
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.