Bir Linux çekirdeğini kendim derleyerek ne yararı olabilirim? Donanımınıza göre özelleştirerek üretebileceğiniz bir verimlilik var mı?
Bir Linux çekirdeğini kendim derleyerek ne yararı olabilirim? Donanımınıza göre özelleştirerek üretebileceğiniz bir verimlilik var mı?
Yanıtlar:
Aklımda, kendi linux çekirdeğinizi derlemekten elde edeceğiniz tek yarar şudur:
Kendi linux çekirdeğinizi nasıl derleyeceğinizi öğrenirsiniz.
Daha fazla hız / bellek / xxx için yapman gereken bir şey değil . Gelişiminizde olduğunuzu düşündüğünüz aşama bu ise yapılması gereken değerli bir şeydir. Bütün bu "açık kaynak" olayının ne hakkında olduğu, çekirdeğin farklı kısımlarının ne olduğu ve ne olduğu hakkında daha derin bir anlayışa sahip olmak istiyorsanız, bir adım atmalısınız. Önyükleme sürenizi 3 saniye kadar hızlandırmak istiyorsanız, o zaman ... anlamı ne ... git bir SSD al. Merak ediyorsanız, öğrenmek istiyorsanız, kendi çekirdeğinizi derlemek harika bir fikir ve muhtemelen bundan çok şey kurtulacaksınız.
Bununla birlikte, kendi çekirdeğinizi derlemenin uygun olacağının bazı nedenleri vardır (birkaç kişi diğer cevaplarda belirtildiği gibi). Genellikle bunlar, belirli bir sonuç için sahip olduğunuz özel bir ihtiyaçtan kaynaklanır, örneğin:
Mesele, her şey olması gerektiği gibi çalıştığı zaman kendi çekirdeğinizi derlemenin kendine özgü bir yararı olduğunu düşünmemize dayanıyor ve bunun olduğunu sanmıyorum. Gereksinim duymadığınız şeyleri etkisiz hale getirmek ve tweakable şeyleri ince ayarlamak için sayısız saat harcayabilseniz de, gerçek şu ki linux çekirdeği çoğu kullanıcı durumu için (dağıtımınız tarafından) zaten oldukça iyi ayarlanmış durumda.
Çoğu kullanıcının kendi çekirdeğini derlemesi gerekmez, dağıtımları bu işi kendileri için yapar. Genellikle dağıtımlar, dağıtımın çalışma şeklinin belirli bölümleriyle, aygıt sürücülerinin desteklerini ve çekirdeğin daha yeni, ancak yayımlanmamış sürümlerinin düzeltmelerini veya kullanıcılarına öncülük ettikleri özellikleri içeren bir dizi ek içerir.
Kendi çekirdeğinizi derlerken, birkaç seçeneğiniz vardır, resmi bir Linus Torvalds çekirdeğini derleyebilirsiniz, bu, dağıtımınız tarafından eklenen (iyi veya kötü olabilir) herhangi bir düzeltme ekini veya özelleştirmeyi içermez. Kendi çekirdek oluşturmak için dağıtım yeniden aracınızı kullanın.
Çekirdeğinizi yeniden oluşturmak isteyebileceğiniz nedenler arasında şunlar vardır:
Birçok geliştirici, özel aygıt sürücülerine ihtiyaç duydukları gömülü sistemler ya da set üstü kutuları için özel çekirdeği sürümleri oluşturmak için de kullanır ya da ihtiyaç duymadıkları işlevleri kaldırmak isterler.
bisect
bir hatanın nerede ortaya
Çekirdeği kendiniz derlemeniz, yalnızca bilgisayarınızla ilgili kısımları eklemenizi sağlar; bu, özellikle önyükleme sırasında daha küçük ve potansiyel olarak daha hızlı olmasını sağlar. Genel çekirdeklerin mümkün olduğunca fazla donanım için destek içermesi gerekir; önyükleme sırasında, bilgisayarınıza hangi donanımın takılı olduğunu algılar ve uygun modülleri yükler, ancak bunların hepsini yapmak zaman alır ve kodun doğrudan çekirdeğe doldurulması yerine dinamik modüller yüklemeleri gerekir. Bilgisayarınızda yalnızca bir tane olduğunda çekirdeğinizin 400 farklı CPU'yu desteklemesi veya bir tane yoksa bluetooth fareleri desteklemesi için hiçbir neden yok, hepsi boşa harcayabileceğiniz
Burada kabul edilen cevabın "Bu daha fazla hız / bellek / xxx için yapmanız gereken bir şey değil" diyerek başladığına inanamıyorum.
Bu tamamen yanlıştır. Gereksiz kodu kaldırmak için Çekirdeklerimi özel olarak oluşturuyorum ve çoğunlukla donanıma ilişkin performans artırıcı kodları da dahil ediyorum. Örneğin, bazı eski donanımları çalıştırıyorum ve HPT36x yonga seti desteği gibi nadiren etkinleştirilmiş Çekirdek sürücüleri gibi bazı yerleşik MoBos'larda bu yerleşik olan bazı MoBos'larda etkin kılmayı sağlayabilirim.
Başka bir örnek, Slackware altındaki BIG SMP varsayılandır ve bir Dell 2800'de, örneğin, GFSD (çekirdek modülü olarak değil) gibi şeyleri çalıştırmak için oldukça fazla bir ayak izi tüketir; gerek yok. Aynı şekilde, NFSD ve diğer her şey için, sadece bir kutuya Linux alıp çalıştırmaya çalışıyorsanız, ancak "hız / bellek / xxx ne olursa olsun" ile ilgileniyorsanız, o zaman önemli olan şey .
Tüm üretim kutuları özel çekirdekler. Dell serisi (2800, 2850, 2900, vb.) Donanımları gibi ortak bir donanım kullanıyorsam, çekirdeğin .config dosyasını her kutuya kopyalayıp çekirdeği derlemek ve yüklemek meselesidir.
İşte kendi çekirdeğinizi derlemenin size fayda sağlayacağı bazı durumlar:
Modül yüklemesi devre dışı bırakılmış bir çekirdek daha güvenlidir. Bu, ihtiyacınız olan modülleri seçmenizi ve bunları modüller olarak derlemenin aksine, çekirdeğin bir parçası olarak eklemenizi gerektirir.
/ Dev / kmem desteğinin devre dışı bırakılması veya uygun derleyici seçeneğiyle kapatılması güvenlik için iyi bir şeydir. Sanırım çoğu dağıtım bunu varsayılan olarak yapıyor.
Mümkün olduğunda initrd's kullanmamayı tercih ederim. Çekirdeğinizi önyüklediği donanıma göre özelleştirmek, initrd'yi ortadan kaldırır.
Bazen daha sonraki bir çekirdek sürümü ihtiyacınız olan özelliklere sahip olabilir, ancak bu bugün çok nadir görülür. Debian'ı ilk kullanmaya başladığımda 2.4 çekirdek kullandığımı hatırlıyorum, ancak udev desteği için 2.6 çekirdeğe ihtiyacım vardı.
İhtiyacınız olmayan ağ protokollerini / seçeneklerini devre dışı bırakmak TCP / IP performansınızı hızlandırabilir.
İhtiyacınız olmayan seçenekleri devre dışı bırakmak, düşük RAM ortamlarında önemli olan çekirdeğin bellek alanını düşürür. Yönlendirici olarak 256 MB RAM sistem kullanıyorsanız, bu yardımcı olur.
Genel olarak sadece seri veya ssh ile giriş yaptığım sistemlerde rahatsız edici tüm "tty" aygıtlarını bulurum.
Kendi çekirdeğinizi derlemek, daha yeni bir aygıtın çalışmasını sağlayabilecek varolan bir sürücüye PCI / USB aygıt kimlikleri sağlama, çekirdeğin derinliklerine dahil olma gibi, mevcut bir sürücüye PCI / USB aygıt kimlikleri sağlama gibi basit bir şey olup olmadığı gibi çekirdek geliştirme sürecine katılmanıza olanak tanır. çekirdek gelişimi.
Ayrıca donanımınızdaki geliştirme çekirdeklerini test etmenize ve herhangi bir gerileme fark ederseniz geri bildirimde bulunmanıza olanak sağlar. Çok nadir bir donanım parçanız varsa, bu size ve diğerlerine özellikle yardımcı olabilir. Bir dağıtım çekirdeğini beklerseniz, sorun raporlarınızdaki düzeltmelerin yeni bir dağıtım çekirdeği sürümüne filtrelenmesi biraz zaman alabilir.
Şahsen, yalnızca sahip olduğum donanıma destek vermek için kendi çekirdeğimi derlemeyi de seviyorum. Distro çekirdekleri çalıştırdığınızda ve çıktılarına baktığınızda, lsmod(8)
sahip olmadığınız donanım için yüklü olan birçok modül göreceksiniz. Bu, modül listesi, / proc, / sys ve loglarınızı kirletebilir, öyle ki bir şeyi ararken gürültünün arasında gizlenebilir; Ayrıca, bu modüllerin teşhis etmeye çalıştığınız bir soruna katkıda bulunmadığından% 100 emin olamazsınız.
Ben ikinci cevap veriyorum (yorumum çok uzun, bu yüzden cevap olarak gönderiyorum).
Çok özel bir amacınız olmadığı sürece (örneğin gömülü makineler, sıkı güvenlik profili), kendi çekirdeğinizi derlemenin nasıl yapıldığını görmek dışında pratik bir fayda görmüyorum. Seçenekleri düzenli olarak gözden geçirerek, sistemi oluşturmak için birbirleriyle nasıl etkileşime girdiklerini görmek, sisteminizin nasıl çalıştığını anlamak için harika bir yoldur. Gerçekleştirmeye çalıştığınız görevler için herhangi bir amacı bulunmayan bileşenleri kaldırmaya çalıştığınızda bulduğunuz şey şaşırtıcı.
Ancak, tavşan deliğinden atlamak neden şüphesiz canlandırıcıdır ki, düşündüğünüzden daha fazla gece ve hafta sonları geri çekilir!
İş yerindeyken, vserver ve unionfs gibi ağaç dışı yamalar uygulamak için elle yuvarlanmış çekirdekler kullanıyoruz.
Evde, hangi uygulamanın karşılaştığım bir hatayı getirdiğini bulmak için elle yuvarlanmış çekirdekleri derliyorum. Bunu bitirdikten sonra, muhtemelen dağıtımımda (Debian) hata giderilinceye kadar elle haddelenmiş bir çekirdeğe sadık kalacağım, bu noktada yine çekirdeklerine geri döneceğim.
Bu konu eski ve henüz soru sorulduğunda olduğu gibi bugün hala geçerli!
Cevap: İhtiyacınız ve gereksinimlerinize göre seçtiğiniz linux çekirdeğini derlersiniz.
Birçok senaryo geçerlidir:
Siz bir mühendissiniz ve tesisinizin sisteminiz için performans ve güvenlik gereksinimlerini / taleplerini karşılamasını gerektirir, belirtilen kriterleri karşılamayı ve / veya aşmayı yeniden derlersiniz.
Siz normal bir kullanıcısınız ve mümkün olduğu kadar uzun süre devam etmek istediğiniz eski bir sisteminiz varsa, eski sisteminizi optimize etmek için bileşen ekleyip / kaldırmayı yeniden derlersiniz.
En hızlı donanıma sahip normal bir kullanıcısınız ve yeterli bellek / RAM'e sahip. Yeniden derlemeye gerek yok, ancak sisteminiz hakkında biraz daha fazla bilgi edinmek istiyorsanız, hala yapabilirsiniz.
Her gün bir Microsoft ve / veya Mac gibi olmak istersiniz, yeniden derlemeyin ve yalnızca dağıtımınızdaki güncellemelere devam edin.
Senaryoların devam etmesini sağla :-)
Mac / Windows kullanıcılarının aksine, Linux'un sağladığı seçimdir. Kolaylaştırma veya sistemi gereksinimlerinize göre optimize etme seçeneği.
Çoğu kullanım için jenerik çekirdekler hemen hemen her donanım için iyidir. Ek olarak, genellikle dağıtıma özgü yamaları içerirler, böylece kendi çekirdeğinizi derlemek sorunlara neden olabilir.
Kendi çekirdeğinizi derlemeniz gereken cevap:
Kaynak tabanlı dağıtım kullanmasaydım çekirdeği hiç derlemeyecektim.
Özel bir çekirdeği derlemek için hiç kimsenin bu nedenden bahsetmemesine şaşırdım:
çünkü farklı bir C / c ++ derleyicisi kullanmak istiyorsunuz. GCC, linux çekirdeğini derlemek için oldukça iyidir. Ama orada çok üstün derleyiciler var! GCC'nin optimizasyonları Intel'in C / C ++ derleyicisinin biraz gerisindedir. Intel, performans ilkel kitaplıklarını ve her ikisi de yüksek performanslı bir linux çekirdeği üretmek için vazgeçilmez olan vtune aracını sunmaktadır. GCC ve G ++ ile sadece şimdiye kadar elde edebilirsiniz. Pratik olarak ne yaparsanız yapın sonuç derleyici tarafından sınırlandırılacaktır. Bu yüzden, Intel derleyicisini ve performans kitaplıklarını kullanıyorum. Bu biraz büyük - 1.5GB indir, ancak bu, iyi bir derleyicide bulunanların ne olduğu hakkında biraz fikir veriyor.
Intel'in C / C ++ derleyicisi ticari olmayan kullanım için ücretsizdir. Ancak, Intel web sitesinde arama yapmak için ticari olmayan lisans Intel c ++ derleyici indirme sayfasını google ile değiştirmek daha kolaydır. Genellikle bir şey için GCC / G ++ kullanmıyorum. Ve programcı olmanıza gerek yok. Siz sadece ortamınızı ayarlayın ve make dosyasındaki iki satırı Intel'in derleyicisine işaret edecek şekilde değiştirin.
O zaman ciddi bir hız kazanabilirsiniz!
What are the pros and cons of compiling your own kernel?
Eksileri sormak daha iyi olurdu = kolay değil, birçok durumda katma değer yok. Artıları = güvenlik, performans, ne yaptığınızı biliyorsanız, örneğin NAS cihazları, bazı donanımların çalışmasını sağlamak ve ağ oluşturma ve grafik yeteneğine sahip olmak için linux kullanma.