apa perbedaan antara src versi 3. * dan 3. * - generik

10

Di Linux / Ubuntu lokal saya, saya punya dua direktori untuk Linux src

/usr/src/linux-3.16.0
/usr/src/linux-3.16.0-generic

Saya menemukan kode di 3.16.0 jauh lebih banyak daripada di 3.16.0-generik. Saya bertanya-tanya mengapa dan bagaimana kedua direktori itu berbeda (dan apa yang mereka wakili?)

Richard
sumber

Jawaban:

1

Dua direktori disediakan oleh paket yang sesuai, yang berisi file header untuk kernel. Gunakan dpkgperintah untuk menemukan paket mana yang menyediakan direktori.

$ dpkg -S /usr/src/linux*
linux-headers-X.XX.X-XX: /usr/src/linux-headers-X.XX.X-XX
linux-headers-X.XX.X-XX-generic: /usr/src/linux-headers-X.XX.X-XX-generic
...

Direktori pertama /usr/src/linux-headers-X.X.XX-XXterdiri dari file header untuk beberapa arsitektur, termasuk x86, amd64, powerpc dan lainnya, menghasilkan lebih banyak file dan ukuran paket yang lebih besar.

Direktori lain /usr/src/linux-headers-X.X.XX-XX-generictampaknya berisi sebagian besar kode sumber yang relevan dengan arsitektur x86 yang ditargetkan untuk instalasi lokal.

Paket yang sesuai telah mengisyaratkan dalam deskripsi, misalnya:

$ apt-cache show linux-headers-3.16.0-25 | grep -A3 Description-en
Description-en: Header files related to Linux kernel version 3.16.0
 This package provides kernel header files for version 3.16.0, for sites
 that want the latest kernel headers. Please read
 /usr/share/doc/linux-lts-utopic-headers-3.16.0-25/debian.README.gz for details

Sejauh yang saya ketahui, kedua direktori hanya berisi kode sumber dan bukan binari. Dan perbedaan antara keduanya terutama arsitektur target dari kode sumber.

Terkait: Apa yang mengandung pohon sumber kernel? Apakah ini terkait dengan header kernel Linux?

Jawaban yang diperluas (2015.07.30)

karena keduanya menyimpan x86kode terkait, apa bedanya dengan x86kode di dua direktori? - Richard 29 Jul '15 pada 19:11

Sebagian besar direktori dan file yang terkandung di dalamnya /usr/src/linux-headers-X.X.XX-XX-genericadalah tautan simbolik, yang menunjuk ke direktori dan file aktual di /usr/src/linux-headers-X.X.XX-XX. Dengan kata lain, yang arch/x86ditemukan di kedua direktori tersebut hanyalah perbedaan tautan aktual dan simbolis, dengan beberapa file asmheader yang tersisa di *-genericcounterpart.

Di antara kedua paket tersebut, satu mungkin melihat perbedaan utama lainnya adalah keberadaan configdan generateddirektori di *-genericmitra.

Pada pemahaman terbaik saya, saya akan berpikir bahwa *-genericdirektori memegang file header yang diperlukan untuk mengkonfigurasi dan mengkompilasi modul yang relevan dengan x86arsitektur, tanpa membuat perubahan pada direktori sumber linux-headers-x.x.xx-xx.

Yang terpenting, kedua direktori tersebut mungkin merupakan pendekatan "bersih" untuk mengemas dan menyusun paket pada platform masing-masing. Meskipun, saya tidak dalam posisi untuk mengklarifikasi masalah ini.


Catatan Penjawab: Saya menulis jawaban ini secara naif pada saat itu - tidak yakin apa yang benar atau salah - dan beberapa penjelasan mungkin tidak ada di antaranya. Karenanya jawaban ini sekarang adalah wiki komunitas, sehingga siapa pun dengan reputasi minimum dapat memperbaiki pos ini untuk sepenuhnya menjelaskan perbedaannya.

clearkimura
sumber
karena keduanya menyimpan x86kode terkait, apa bedanya dengan x86kode di dua direktori?
Richard
@ Richard Saya telah memperbarui jawaban saya di atas dengan sepengetahuan terbaik saya, sesederhana mungkin. Jawaban saya mungkin dianggap naif, jadi Anda mungkin ingin mencari jawaban yang lebih baik dari orang lain.
clearkimura