Çekirdek Hacking Environment


22

UCOS, ThreadX gibi gömülü işletim sistemlerinde çalışıyorum. Linux'ta uygulamaları kodlarken, şimdi Linux Çekirdeği öğrenmeye başlamayı planlıyorum. Çevre ile ilgili birkaç sorum var.

  1. Hangisi en iyi dağıtım, hangileri çekirdek gelişimi için kullanımı kolay araçlar? (şimdiye kadar RHEL ve Fedora kullanmıştım. Bunlarla rahat olmama rağmen, Ubuntu'nun da benzer çekirdek derlemesi make_kpkgvb. için yerleşik komut dosyaları varmış gibi görünüyor.

  2. Çekirdek hata ayıklaması için en iyi kurulumu açıklayabilir misiniz? Diğer gömülü işletim sistemlerinde hata ayıklama yaparken, ilerlemeyi, JTAG'ı vb. Atmak için seri bağlantı noktasını kullandım. Linux çekirdeği aygıtları ne tür bir kurulum kullanıyor? (Testbed PC'mi seri bağlantı noktası olan bilgisayar ihtiyaçlarım için yeterli olacak mı?

  3. Çekirdek kodunu hata ayıklamak ve izlemek için en iyi araç nedir? Daha önce de belirtildiği gibi, seri konsol tek yolu mu? Veya PC için herhangi bir IDE / JTAG arayüzü var mı?


3
# 1 için Linus'un kendisi Fedora kullanıyor, bu yüzden muhtemelen bir şeyler söylüyor. Bu konuda gerçekten bir cevap verecek kadar bilgim yok, ancak diğer insanların söyledikleriyle de ilgilenirim.
jonescb

1
); make_kpkg Ubuntu dayalı ve benim fav dağıtıma olan Debian, geliyor
Silinmiş Hesap

Yanıtlar:


14

Linux Çekirdeği gelişimindeki kişisel lezzetim Debian. Şimdi puanlarınız için:

  1. Muhtemelen tahmin ettiğiniz gibi Ubuntu, Debian'da zaten mevcut olanların dışında, afaik'in gelişimini kolaylaştırmak için çekirdeğe yeni bir şey getirmiyor. Mesela make_kpkg bir Debian özelliğidir ve Ubuntu değildir. Debian'daki ortak Linux Çekirdek geliştirme görevlerine başlamanıza yardımcı olacak bazı bağlantılar:

  2. Çekirdek hata ayıklaması yapmanın en kolay yolu QEMU ve GDB kullanmaktır. Başlamak için bazı bağlantılar:

    Bununla birlikte, bu yöntemin, fiziksel seri hata ayıklama ve gerçek donanım kullanmaktan daha iyi olacağınız belirli donanım sorunları ve hata ayıklama gibi bazı senaryolar için uygun olmadığını unutmayın. Bunun için KGDB'yi kullanabilirsiniz (Ethernet kullanarak da çalışır). KDB de iyi bir seçimdir. Oh, ve bu arada, hem KGDB hem de KDB Linux Çekirdeği ile birleştirildi . Bu ikisinde daha fazlası var . Donanımla ilgili olmayan sorunlar için olağanüstü çalışan başka bir harika yöntem, Kullanıcı modu Linux Çekirdeğini kullanmaktır . Çekirdeği kullanıcı modunda başka bir işlem olarak çalıştırmak, diğer tüm programlar gibi hata ayıklamanıza izin verir ( örnekler ). Kullanıcı modu Linux hakkında daha fazlası burada. UML, 2.6.0'dan beri Linux Çekirdeğinin bir parçasıdır, bu nedenle UML moduna herhangi bir resmi çekirdek sürümü oluşturabilirsiniz. bu adımları izleyerek .

  3. Madde 2'ye bakınız. Ne yazık ki burada en iyi yöntem yoktur, çünkü her bir araç / yöntem profesyonelin ve aleyhtarının kendisine aittir.


Teşekkürler! detaylı cevap için. BTW Çekirdekteki fs ve bio alt sistemlerine giriyorum. ne tür bir kurulum benim için en iyi olurdu?
rajaganesh87 17:11

UML ve QEMU muhtemelen gitmenin yolu, çünkü dosya sistemlerini ücretsiz olarak kolayca oynayabilirsiniz.
Shinnok

Çok iyi bağlantılar, sadece bir şey. Benim favorim de debian, ama Çekirdek Gelişimi herhangi bir dağıtımla yapılabilir. Belki vanilya çekirdeği kullandığı için saf olursanız, belki de en iyisidir, ancak yapılanmalar kötü değildir, elinizden gelenin en iyisini bulacaksınız.
D4RIO


6

İ386 donanımına dayalı olmayan gömülü bir platform için geliştiriyorsanız, çapraz derleme yapmanız gerekir. Emdebian proje PC'lerde birçok mimarileri (ARM, m68k, MIPS ve daha fazla) (i386 veya amd64'tür) için geliştirmeye toolchain sağlar. Bu, Debian altında, depoları ekleyebilir ve seçtiğiniz hedef (ler) için araç zincirini apt-get install yapabilirsiniz.


3

JTAG probları mevcuttur, ancak bunlar oldukça pahalıdır (ve onları yapan şirketlerin özel sözleşmeleri vardır). Çekirdek kodunu hata ayıklamanın en iyi yolu, öykünmeyi içinde gdbserver ile kvm veya qemu'da başlatmaktır.


Daha da iyisi, User Mode Linux kullanın. Düzenli bir kullanıcı süreci olarak Linux.
vonbrand

0

Temel olarak, herhangi bir ana hat dağıtımı bunun için iyi çalışmalıdır (kesmek için kendi dağıtımlarını kullanırlar). Daha rahat hissettiren her şeyi kullanın.

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.