Di mana / yang merupakan sumber kernel aktual?

8

Saya mengikuti ini untuk belajar mengkompilasi kernel. Saya menggunakan

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

untuk mengunduh kode sumber kernel Linux yang saya gunakan saat ini.

Setelah menjalankan perintah di atas, file-file berikut (dan direktori) diunduh.

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 $ 

Di halaman yang sama disebutkan:

Membangun kernel cukup mudah. Ubah direktori kerja Anda ke root dari pohon sumber kernel dan kemudian ketik perintah berikut:

Tetapi saya tidak yakin yang merupakan "root dari pohon sumber kernel".

Apakah ini direktori saat ini (di mana saya berlari apt-get source ...dan di mana saya memiliki file yang tercantum di atas)?

Atau, apakah itu direktori:

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

atau, haruskah saya mengekstrak tarball

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

Output untuk uname -r:

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

Jawaban:

8

Dari Wiki Debian :

Paket sumber memberi Anda semua file yang diperlukan untuk dikompilasi atau sebaliknya, membangun perangkat lunak yang diinginkan.

Ini terdiri, dalam bentuk paling sederhana, dari tiga file:

  • Tarball hulu dengan akhiran .tar.gz

  • File deskripsi dengan akhiran .dsc. Ini berisi nama paket, baik dalam nama file maupun kontennya (setelah Sumber: kata kunci).

  • Tarball, dengan perubahan apa pun yang dibuat ke sumber upstream, ditambah semua file yang dibuat untuk paket Debian.

    • Ini memiliki .debian.tar.gz (format sumber: 3.0)
    • atau akhiran .diff.gz (format sumber: 1.0)

Ini sama untuk Ubuntu, dan dalam kasus Anda:

  • "linux-lts-vivid-3.19.0": kernel aktual , ditambal mulai dari tarbal hulu "linux-lts-vivid_3.19.0.orig.tar.gz" dengan modifikasi yang tercantum dalam "linux-lts-vivid_3.19.0 -30.34 ~ 14.04.1.diff.gz ";
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz": tarball, dengan perubahan apa pun yang dibuat ke sumber upstream, ditambah semua file yang dibuat untuk paket Debian;
  • "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.dsc": a descrition file ".dsc" berakhir. Ini berisi nama paket, baik dalam nama file maupun kontennya (setelah Sumber: kata kunci);
  • "linux-lts-vivid_3.19.0.orig.tar.gz": tarball hulu dengan akhiran ".tar.gz" (ingatlah bahwa dalam pengalaman saya ini tidak selalu berupa file ".tar.gz", bisa dalam bentuk sedikit format yang berbeda, seperti ".tar.xz");

Ketika Anda menjalankan apt-get source linux-image-$(uname -r), tarball hulu secara otomatis ditambal dengan modifikasi yang terdaftar di "linux-lts-vivid_3.19.0-30.34 ~ 14.04.1.diff.gz" dalam "linux-lts-vivid-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
# ...
kos
sumber
4

Akar pohon kernel Anda adalah direktori linux-lts-vivid-3.19.0.

Tentang file lain:

Di tarball linux-lts-vivid_3.19.0.orig.tar.gzAnda dapat menemukan kernel "vanilla", seperti dirilis di hulu; untuk kernel ini pengembang Ubuntu telah menambahkan tambalan, driver, mengubah hal-hal yang dikumpulkan di diffmana dikompresi di linux-lts-vivid_3.19.0-30.34~14.04.1.diff.gz.

Rmano
sumber
4

Hmmm. Saat Anda menjalankan perintah

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

perintah harus secara otomatis mengekstrak tarbal sumber dan menambalnya untuk membuat direktori yang dipanggil setelah kernel Anda. Dalam kasus Anda, sepertinya itu disebut 'linux-lts-vivid-3.19.0' - ada di daftar direktori Anda.

Jadi, itu adalah direktori sumber, Anda harus menjalankan:

cd linux-lts-vivid-3.19.0

dan kemudian terus ikuti instruksi

Nick Veitch
sumber