Linux'ta lekeli bir çekirdek nedir?


99

Belirli koşullar altında, Linux çekirdeği lekelenebilir . Örneğin, özel bir video sürücüsünün çekirdeğe yüklenmesi, çekirdeğe zarar verir. Bu durum sistem günlüklerinde, çekirdek hata iletilerinde (hatalar ve panikler) ve lsmodsistem yeniden başlatılıncaya kadar ve gibi araçlarla görülebilir .

Ne anlama geliyor? Sistemi kullanma yeteneğimi etkiliyor mu ve destek seçeneklerimi nasıl etkileyebilir?



@Gilles, bence bağlantı kurduğun sorunun, bununla birleştirilmesi gerekiyor. Ayrıca, bir sorunun diğerinin kopyası olduğu açık değildir.
bwDraco

1
Bunu sorunun kanonik versiyonu yapmayı umuyorum; Sorunun en son düzenlemesini görün.
bwDraco

9
@MichaelMrozek: 1) Mevcut soruyu görmedim, çünkü kullanıcının "ne demek" ne anlama geldiğini "sorduğu açık değildi, ve 2) ifadesiyle ifade edilen sorunun tek bir komuta özgü olduğu kesin lsmod. Bu soruyu yazdım ve daha genel bir hale getirmek için cevap verdim;
bwDraco

1
"Lekeli" den biraz daha nötr bir kelime kullanabilirlerdi.
Roger Dahl

Yanıtlar:


125

Çekirdek lekeli olduğunda, bunun toplum tarafından desteklenmeyen bir durumda olduğu anlamına gelir . Çoğu çekirdek geliştiricisi, renklendirilmiş çekirdekleri içeren hata raporlarını görmezden gelecektir ve topluluk üyeleri, çekirdekle ilgili sorunları teşhis etmeye devam etmeden önce, renklendirme koşulunu düzeltmenizi isteyebilir. Ayrıca, bazı hata ayıklama işlevleri ve API çağrıları, çekirdek işaretlendiğinde devre dışı bırakılabilir.

Özel sürücüleri içeren çoğu durumda, renk koşulunu güvenle yok sayabilirsiniz , ancak çekirdeğin lekelenmesine neden olan bazı senaryolar ciddi sistem sorunlarının göstergesi olabilir.

Bu özellik, bir çekirdek problemini doğru şekilde gidermeyi zorlaştıracak koşulları tanımlamayı amaçlamaktadır. Örneğin, özel bir modülün yüklenmesi, çekirdek hata ayıklama çıktısının güvenilmez olmasını sağlayabilir çünkü çekirdek geliştiricileri modülün kaynak koduna erişemez ve bu nedenle modülün çekirdeğe ne yapabileceğini belirleyemez. Aynı şekilde, eğer çekirdek daha önce bir hata durumu yaşamışsa veya ciddi bir donanım hatası meydana gelmişse, çekirdek tarafından üretilen hata ayıklama bilgisi güvenilir olmayabilir.

Çekirdek , aşağıdakiler dahil (ancak bunlarla sınırlı olmamak üzere) çeşitli nedenlerden herhangi biri ile lekelenebilir :

  • Tescilli (veya GPL uyumlu olmayan) bir çekirdek modülünün kullanımı - bu, renklendirilmiş çekirdeklerin en yaygın nedenidir ve genellikle özel NVIDIA veya AMD video sürücülerinin yüklenmesinden kaynaklanır.
  • Çekirdek kaynak kodunun bir parçası olan ancak tam olarak test edilmeyen hazırlama sürücülerinin kullanımı
  • Linux çekirdek kaynak koduna dahil olmayan ağaç dışı modüllerin kullanımı
  • Bir çekirdek modülünün zorla yüklenmesi veya boşaltılması (örneğin, çekirdeğin mevcut sürümü için oluşturulmamış bir modülün zorla yerleştirilmesi gibi)
  • Öncelikle eski AMD Athlon işlemcileri olmak üzere, bazı desteklenmeyen işlemcili CPU'larda bir SMP (çok işlemcili) çekirdeğinin kullanılması
  • Güç yönetimi hatalarını düzeltmek için bazen gerekli olan ACPI DSDT'yi geçersiz kılma ( ayrıntılar için buraya bakın)
  • Makine kontrol istisnaları ve çekirdek oopses gibi bazı kritik hata koşulları
  • Çekirdeğin çalışması gereken sistem donanım yazılımındaki (BIOS, UEFI) bazı ciddi hatalar

Bu koşulların her biri çekirdekte belirli bir bayrakla temsil edilir. SUSE gibi bazı Linux satıcıları, satıcı tarafından desteklenmeyen bir modül yüklemek gibi koşulları belirtmek için ek bayrak bayrakları ekler .

Daha fazla bilgiyi çekirdek belgelerinde bulabilirsiniz . Orada listelenen renk kodu bayrakları (_ 'boş' için bir stand-in ile)

  • G | P : G, yüklenen tüm modüllerin GPL veya uyumlu bir lisansa sahip olması durumunda, aksi takdirde özel bir modül yüklenmiştir. MODULE_LICENSE olmadan veya GPL uyumlu olarak insmod tarafından tanınmayan bir MODULE_LICENSE olan modüller özel olarak kabul edilir.
  • F | _ : herhangi bir modül "insmod -f" tarafından zorlanmışsa, aksi halde tüm modüller normal şekilde yüklendiyse.
  • S | _ : Oops, çok işlemciliğin çalışması için güvenli olarak onaylanmamış donanıma sahip bir SMP çekirdeğinde meydana gelmişse. Şu anda bu, yalnızca SMP özellikli olmayan çeşitli Sporcularda gerçekleşmektedir.
  • R | _ : bir modül tarafından zorla boşaltılmışsa rmmod -f, aksi halde tüm modüller normal şekilde boşaltılmışsa.
  • M | _ : herhangi bir işlemci bir Makine Kontrolü İstisnası bildirmişse , aksi halde Makine Kontrolü İstisnası oluşmamıştır.
  • B | _ : sayfa serbest bırakma işlevi hatalı bir sayfa referansı veya bazı beklenmeyen sayfa bayraklarını bulmuşsa.
  • U | _ : Bir kullanıcı veya kullanıcı uygulaması, özellikle Tagged bayrağının ayarlanmasını talep ettiğinde.
  • D | _ : çekirdek yakın zamanda ölmüşse , yani bir OOPS veya HATA vardı.
  • A | _ : ACPI tablosu geçersiz kılındıysa.
  • W | _ : daha önce çekirdek tarafından bir uyarı verilmişse (Bazı uyarılar daha belirgin renk tonu bayraklarını belirlese de)
  • C | _ : bir hazırlama sürücüsü yüklenmişse.
  • I | _ : Çekirdek, platform üretici yazılımındaki (BIOS veya benzeri) ciddi bir hata etrafında çalışıyorsa.
  • O | _ : harici olarak inşa edilmiş ("ağaç dışı") bir modül yüklenmişse.
  • E | _ : Çekirdeği destekleyen modül imzasına çekirdek olmayan bir modül yüklenmişse.
  • L | _ : sistemde daha önce bir yumuşak kilitlenme meydana gelmişse.
  • K | _ : Çekirdek canlı olarak eklenmişse.

Bu cevabın yerini bu sorudan aldığım pek çok bilgi eksik.

2
"İmzasız modül" senaryosunun en az bir önemli olasılığını ekleyeceğim - çekirdeğe bir çekirdek kök seti yüklendi veya çekirdek kullanımı bir kez daha gerçekleştirildi.
kravietz
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.