Çekirdek kaynak kodunu nasıl alabilirim?


25

Bazı aygıt sürücüleri yazmayı planlıyorum ve Linux çekirdek kaynağını almam gerekiyor. Benim Linux çekirdek sürümü 3.2.0-23-jenerik-pae ve ben görüntüyü indirilen bu . Okuduğum makalelerin çoğunda, yeni modüller eklemeye başlamak için tüm çekirdek ağacına sahip olmam gerektiğini söylüyor.

Bu resmi indirip usr/src/klasöre yapıştırmam yeter mi yoksa başka bir şey yapmam gerekir mi?


1
Makinelerimden biri için özel olarak derlerken genellikle 'linux-source' paketini synaptic'ten yüklüyorum, ancak geliştirme yaptığınız için en son sürüme ihtiyacınız olabilir. Bu bağlantı sizin için yararlı olabilir: help.ubuntu.com/community/Kernel/Compile
Mark Paskal

Yanıtlar:


27

Bu, hisse senedi çekirdeğinin kaynağını alır:

apt-get source linux-source

Çekirdeğin hangi sürümünün bu şekilde çalıştığını kontrol edebilirsiniz:

uname -r

Hangi gibi bir şey yazdıracak:

3.13.0-46-generic

Sisteminizde bulunan mevcut kaynak paket sürümlerinin bir listesini aşağıdaki yollarla bulabilirsiniz:

apt-cache search linux-source

Çekirdeğin akış yukarı sürümünü almak için:

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

Yukarıdaki linkte 'trusty', Ubuntu versiyonunun kod adıdır. Üzerinden yüklediğiniz Ubuntu sürümünün kod adını öğrenebilirsiniz:

cat /etc/lsb-release

Eğer klonlamak için git kullanırsam nasıl bir sürüm belirleyeceğim. Ayrıca, eğer klonu kopyalarsam usr / src klasörüne kopyaladığımda yeteri kadar yeter
Sab

Bu git deposu özellikle 3.2.0'da tutulur; Ubuntu Precise'da (12.04) olanları izler. Farklı bir sürüm istiyorsanız, ubuntu-precise.git dosyasını ubuntu-quantal.git olarak değiştirin. Sadece usr / src içine kopyalamak iyi olmalı.
Bryce,

Tamam.Teşekkürler- Ama git bağlantısını nasıl buldunuz?
Sab,


Ve kurulum sırasında kaynak ağacını nerede bulabilirim ... Kahretsin, daha iyi okumalıyım. Cevap apt-get sourcehayır diyor apt-get install. Kaynak ağaç geçerli yolunuzda sona erecek .
Pro Yedekleme

8
apt-get source linux

en kolay yoldur. Kaynağı depodan indirir - ve çalıştırdığınız sürümün aynısı olacaktır (daha önce özelleştirmemişsinizdir).

Ancak kaynağın nerede tutulduğunu bulmak istiyorsanız, koşabilirsiniz:

apt-cache showsrc linux

'Vcs-' niteliğini arayın (Sürüm kontrol sistemi). Genellikle bir git (Vcs-Git) veya mercurial deposu olur.

Not - bu komutlar herhangi bir paket ile çalışır. İlgilendiğiniz paketin yerine 'linux' yazmanız yeterlidir. Ayrıca 'apt-get source' öğesinin sudo erişimi gerektirmediğini ve kaynağı geçerli dizininize atacağını unutmayın.


Bu, indirdiğiniz makinenin hedef makineyle eşleşmesini gerektirir. Gerçekten sadece bir ağınız varsa çalışır. Bu sayfaya inen okuyucuların çoğu bir ağa sahip olmayacaklar (bu nedenle aniden kaynağa ihtiyaçları var). Başparmak sürücüde bir tarball olarak ihtiyacım var ve çalışma ortamım yok.
mckenzm

Bu yalnızca içine linux-başlıkları indirilen /usr/src- değil Ubuntu 16.04 üzerinde - tam çekirdek kaynağı
Pierz

4

Doğrudan Launchpad'den kaynak indirin

Garip apt-get source bir şekilde, belirli bir çekirdek sürümü arıyorsanız, çoğu zaman işe yaramayan herkes tavsiye eder:

Diyelim ki 3.19.0-58 için çekirdek kaynağına ihtiyacınız var: serideki
apt-get source linux-image-3.19.0-58-genericen son çekirdek için kaynak alacaksınız: 3.19.0-80 bu durumda, bu sizin istediğiniz şey değildi.

Yani iki seçeneğiniz var:

1) Pes et, çekirdek 3.19.0-80'i kur ve kullan apt-get source

2) Doğrudan launchpad'den kaynak alın:

bağlantılar

  • Onları yeni bir dizine koy, paketle dpkg-source -x *.dsc

Notlar:

  • Daha iyi bir yol olmalı.
  • Git'ten istediğin sürümü alabilirsin, ama sen büyük bir indirme için var. Ubuntu Wiki Çekirdek Kaynak Kodu'ndaki "Git kullanarak bir Ubuntu sürümü için çekirdek kaynaklarının elde edilmesi" bölümüne bakın .

Bunu net bir şekilde açıkladığınız için teşekkür ederiz. Ancak, linux-image-4.15.0-39-generic kaynağını hala bulamıyorum. Bu süreç gereksiz yere karmaşıktır. Bunun için googling denedim ama sadece birkaç kilobayt olan paketleri bulmaya devam ediyorum. Herhangi bir ipucu?
Unutmayın ki

3

Sadece bir tanesini seç:

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

Size bazı 'kaynaklar' URL’leri girmeniz istenirse sources.list, /etc/apt/sources.listdosyanızı düzenleyin ve istediğiniz deb-srcsatırın altını çizin, örneğin (Xenial kullanıyorsanız):

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

#Bu son satırın kaldırılması, çekirdek kaynakları dahil olmak üzere kaynak depolarının indirilebilmesini sağlar.

Uyarılar:

  • Modern araçlar kullanın; önlemek apt-get.
  • Bu komutlar mevcut çekirdeğinizin kaynak kodunu indirir ( 4.4.0-75-genericörneğin benim durumumda ).
  • Sistem dizinine indirildiğinde, dosyalar /usr/src/linux-source-4.4.0/(örneğin) içine kaydedilir .

Benim için çalışmıyor (fakat apt-get sürümü de yok). Ubuntu 16.04.4, çekirdek 4.4.0-98-generic'i çalıştırıyorum. "Kaynaklarınız için bazı 'kaynak' URI'leri koymalısınız" diyor. Bunun nasıl yapılacağı hakkında hiçbir fikrim yok.
Andrew Bainbridge

@AndrewBainbridge Bu konuda bilgi ekledim. Şimdi senin için uygun mu?
Tim

Evet teşekkürler. Bu benden aptalca bir yorumdu. Sadece hata mesajını google'a girmem gerekiyordu. Her neyse, çabanız için bir nezaketiniz olsun.
Andrew Bainbridge
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.