Bagaimana saya mendapatkan kode sumber kernel?


25

Saya berencana untuk menulis beberapa driver perangkat dan saya perlu mendapatkan sumber kernel Linux. Versi kernel Linux saya adalah 3.2.0-23-generic-pae dan saya mengunduh gambar dari ini . Dalam banyak artikel yang telah saya baca, ia memberi tahu saya bahwa saya harus memiliki seluruh pohon kernel untuk mulai memasukkan modul baru.

Apakah cukup jika saya mengunduh gambar ini dan menempelkannya ke usr/src/folder atau apakah saya harus melakukan sesuatu yang lain?


1
Saya biasanya hanya menginstal paket 'sumber linux' dari sinaptik ketika saya mengkompilasi kustom untuk salah satu mesin saya, tetapi mengingat Anda sedang melakukan pengembangan, Anda mungkin memerlukan versi terbaru. Tautan ini mungkin berguna bagi Anda: help.ubuntu.com/community/Kernel/Compile
Mark Paskal

Jawaban:


27

Ini akan mendapatkan sumber kernel persediaan:

apt-get source linux-source

Anda dapat memeriksa versi kernel mana yang berjalan seperti ini:

uname -r

Yang akan mencetak sesuatu seperti:

3.13.0-46-generic

Anda dapat menemukan daftar versi paket sumber saat ini yang tersedia di sistem Anda melalui:

apt-cache search linux-source

Untuk mendapatkan versi upstream dari kernel:

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

Di tautan di atas, 'trusty' adalah nama kode untuk versi Ubuntu. Anda dapat mengetahui nama kode untuk versi Ubuntu yang telah Anda instal melalui:

cat /etc/lsb-release

Jika saya menggunakan git untuk mengkloning bagaimana saya menentukan versi. Juga Jika saya Mengkloning itu cukup jika saya salin pate ke folder usr / src
Sab

Repositori git disimpan pada 3.2.0 secara khusus; itu mengikuti apa yang ada di Ubuntu Precise (12.04). Jika Anda ingin versi yang berbeda, ubah ubuntu-exact.git ke ubuntu-quantal.git atau apa pun. Seharusnya tidak apa-apa untuk hanya menyalin ke usr / src.
Bryce

Oke. Terima kasih- Tapi bagaimana Anda menemukan tautan git itu?
Sab


Dan di mana saya harus dapat menemukan pohon sumber ketika menginstal dengan ... Sial, saya harus membaca lebih baik. Jawabannya mengatakan apt-get sourcetidak apt-get install. Daripada pohon sumber akan berakhir di jalur Anda saat ini .
Pro Backup

8
apt-get source linux

adalah cara termudah. Ini akan mengunduh sumber dari repositori Anda - dan itu akan sama dengan versi yang Anda jalankan (dengan asumsi Anda belum mengubahnya).

Tetapi jika Anda ingin menemukan di mana sumber dikelola, Anda dapat menjalankan:

apt-cache showsrc linux

Cari atribut 'Vcs-' (Sistem kontrol versi). Biasanya akan berupa git (Vcs-Git) atau repositori lincah.

Catatan - perintah ini berfungsi dengan paket apa pun. Ganti saja 'linux' dengan paket yang Anda minati. Dan juga perhatikan bahwa 'apt-get source' tidak perlu akses sudo dan akan membuang sumbernya di direktori Anda saat ini.


Ini membutuhkan mesin yang Anda unduh untuk mencocokkan dengan mesin target. Benar-benar hanya berfungsi jika Anda memiliki jaringan. Sebagian besar pembaca yang mendarat di halaman ini tidak akan memiliki jaringan (karenanya mereka tiba-tiba membutuhkan sumber). Saya membutuhkannya sebagai tarball di thumb drive dan saya tidak memiliki apt.
mckenzm

Ini hanya mengunduh linux-header ke /usr/src- bukan sumber kernel lengkap - di Ubuntu 16.04
Pierz

4

Sumber unduhan langsung dari Launchpad

Cukup aneh semua orang merekomendasikan apt-get source yang tidak berfungsi sebagian besar waktu jika Anda mencari versi kernel tertentu:

Katakanlah Anda membutuhkan sumber kernel untuk 3.19.0-58:
apt-get source linux-image-3.19.0-58-genericakan mendapatkan sumber untuk kernel terbaru dalam seri: 3.19.0-80 dalam kasus ini, yang bukan yang Anda minta.

Jadi, Anda memiliki dua opsi:

1) Menyerah, instal kernel 3.19.0-80 dan gunakan apt-get source

2) Dapatkan sumber langsung dari launchpad:

tautan

  • Tempatkan mereka di direktori baru, buka dengan dpkg-source -x *.dsc

Catatan:

  • Pasti ada cara yang lebih baik.
  • Anda bisa mendapatkan versi yang Anda inginkan dari git, tetapi Anda akan mengunduh banyak. Lihat "Memperoleh sumber kernel untuk rilis Ubuntu menggunakan git" di Ubuntu Wiki Kernel Source Code .

Terima kasih telah menjelaskan ini dengan sangat jelas. Namun, saya masih belum dapat menemukan sumber untuk linux-image-4.15.0-39-generic. Proses ini sangat rumit. Saya sudah mencoba googling untuk itu tetapi saya tetap menemukan paket yang hanya beberapa kilobyte. Ada tips?
forgetso

3

Cukup pilih satu dari:

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

Jika Anda diminta untuk memberikan beberapa URL 'sumber' di Anda sources.list, pergi sunting /etc/apt/sources.listfile Anda dan batalkan komentar pada deb-srcbaris yang diinginkan , misalnya (jika Anda menjalankan Xenial):

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

Menghapus #pada baris terakhir ini memungkinkan repositori sumber untuk diunduh, termasuk sumber kernel.

Komentar:

  • Gunakan alat-alat modern; hindari apt-get.
  • Perintah-perintah ini mengunduh kode sumber untuk kernel Anda saat ini (dalam kasus saya 4.4.0-75-genericmisalnya).
  • Ketika diunduh ke direktori sistem, file disimpan di /usr/src/linux-source-4.4.0/(misalnya).

Tidak bekerja untuk saya (tetapi juga versi apt-get). Saya menjalankan Ubuntu 16.04.4, kernel 4.4.0-98-generik. Dikatakan, "Anda harus meletakkan beberapa 'sumber' URI di sumber Anda. Daftar". Saya tidak tahu bagaimana melakukannya.
Andrew Bainbridge

@AndrewBainbridge Saya menambahkan info tentang itu. Apakah itu baik untuk Anda sekarang?
Tim

Ya terima kasih. Itu komentar bodoh dari saya. Saya hanya perlu google pesan kesalahan. Bagaimanapun, dapatkan upvote untuk usaha Anda.
Andrew Bainbridge
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.