Ở đâu / đó là nguồn hạt nhân thực tế?


8

Tôi đang theo dõi điều này để học cách biên dịch kernel. Tôi đã sử dụng

apt-get source linux-image-$(uname -r)

để tải xuống mã nguồn của nhân Linux mà tôi đang sử dụng.

Sau khi chạy lệnh trên, các tệp sau (và thư mục) đã được tải xuống.

user $ ls -l
total 130972
drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0
-rw-rw-r--  1 sps sps  10980684 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz
-rw-rw-r--  1 sps sps      7396 Oct  5 10:54 linux-lts-vivid_3.19.0-30.34~14.04.1.dsc
-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz
user $ 

Trong cùng một trang, nó được đề cập:

Xây dựng kernel khá dễ dàng. Thay đổi thư mục làm việc của bạn thành thư mục gốc của cây nguồn kernel và sau đó nhập các lệnh sau:

Nhưng tôi không chắc đó là "gốc của cây nguồn kernel".

Đây có phải là thư mục hiện tại (nơi tôi đã chạy apt-get source ...và nơi tôi có các tệp được liệt kê ở trên) không?

Hoặc, nó là thư mục:

drwxrwxr-x 27 sps sps      4096 Oct 16 03:10 linux-lts-vivid-3.19.0

hoặc, tôi nên trích xuất tarball

-rw-rw-r--  1 sps sps 123115155 May  6 21:35 linux-lts-vivid_3.19.0.orig.tar.gz

Đầu ra cho uname -r:

user $ uname -r
3.19.0-30-generic
user $ 

Câu trả lời:


8

Từ Wiki Wiki :

Các gói nguồn cung cấp cho bạn tất cả các tệp cần thiết để biên dịch hoặc nói cách khác, xây dựng phần mềm mong muốn.

Nó bao gồm, ở dạng đơn giản nhất, gồm ba tệp:

  • Tarball ngược dòng với kết thúc .tar.gz

  • Một tập tin mô tả với kết thúc .dsc. Nó chứa tên của gói, cả hai, trong tên tệp cũng như nội dung của nó (sau từ khóa Source:).

  • Một tarball, với bất kỳ thay đổi nào được thực hiện đối với nguồn ngược dòng, cộng với tất cả các tệp được tạo cho gói Debian.

    • Cái này có .debian.tar.gz (định dạng nguồn: 3.0)
    • hoặc kết thúc .diff.gz (định dạng nguồn: 1.0)

Nó khá giống với Ubuntu và trong trường hợp của bạn:

  • "linux -lts - -30,34 ~ 14.04.1.diff.gz ";
  • "linux-lts-sôi_3.19.0-30.34 ~ 14.04.1.diff.gz": một tarball, với bất kỳ thay đổi nào được thực hiện đối với nguồn ngược dòng, cộng với tất cả các tệp được tạo cho gói Debian;
  • "linux-lts-sôi_3.19.0-30.34 ~ 14.04.1.dsc": một tập tin giải mã ".dsc" kết thúc. Nó chứa tên của gói, cả hai, trong tên tệp cũng như nội dung của nó (sau từ khóa Source:);
  • "linux-lts-sôi_3.19.0.orig.tar.gz": tarball ngược dòng với kết thúc ".tar.gz" (lưu ý rằng theo kinh nghiệm của tôi, nó không phải luôn luôn là tệp ".tar.gz" các định dạng khác nhau, chẳng hạn như ".tar.xz");

Khi bạn chạy apt-get source linux-image-$(uname -r), tarball ngược dòng sẽ tự động được vá với các sửa đổi được liệt kê trong "linux-lts-sôi_3.19.0-30.34 ~ 14.04.1.diff.gz" trong "linux-lts-sinh động-3.19.0":

% apt-get source linux-image-$(uname -r)
# ...
dpkg-source: info: extracting linux in linux-3.19.0
dpkg-source: info: unpacking linux_3.19.0.orig.tar.gz
dpkg-source: info: applying linux_3.19.0-30.34.diff.gz
# ...

4

Thư mục gốc của cây nhân của bạn là thư mục linux-lts-vivid-3.19.0.

Về các tệp khác:

Trong tarball, linux-lts-vivid_3.19.0.orig.tar.gzbạn có thể tìm thấy hạt nhân "vani", như được phát hành ngược dòng; với kernel này, các nhà phát triển Ubuntu đã thêm các bản vá, trình điều khiển, thay đổi những thứ được thu thập trong diffđó được nén linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.


4

Hừm. Khi bạn chạy lệnh

apt-get source linux-image-`uname -r`

lệnh sẽ tự động trích xuất các tarball nguồn và vá chúng để tạo một thư mục được gọi sau kernel của bạn. Trong trường hợp của bạn, có vẻ như nó được gọi là 'linux-lts-sôi động-3.19.0' - nó có trong danh sách thư mục của bạn.

Vì vậy, đó là thư mục nguồn, bạn nên chạy:

cd linux-lts-vivid-3.19.0

và sau đó tiếp tục làm theo hướng dẫn

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.