Birden çok makinenin donanımını destekleyen localmodconfig ile özel bir çekirdek nasıl oluşturulur?


9

Bir sunucuyu, bir cihaz gibi tek bir görevi çalıştıracak şekilde yapılandırırken, özel bir çekirdek oluşturma ihtiyacı artabilir. Örneğin disk alanından tasarruf etmek için.

Ubuntu Core 13.10 amd64 kök dosya sistemi, gerekli bağımlılıkları içeren "linux-image-generic" meta paketinin 79 MB arşiv indireceği ve bir çekirdek-image-xyz-generic paketinin boyutunun hala 14 MB olduğu 38 MB indirmedir. .

Donanımınızın kullanmayacağı modüllerden çıkarılan bir çekirdek oluşturmak için make localmodconfigkomut iş için doğru araçtır. Ancak derleme ve test ortamınızı çalıştıran sanal makineniz, hedef dağıtım donanımınızdan farklı modüller yükler. Ve / veya bir süre sonra dağıtım donanımınız eol olabilir ve farklı donanımlar kullanılır. Çekirdek güncellemelerinin yayınlandığı sıklıkta, her farklı donanım yapılandırması için özel bir çekirdek oluşturmak çok zor olabilir.

Birkaç farklı donanım kutusunda çalışan özel bir Linux çekirdeği nasıl hızlı bir şekilde oluşturulur?

Yanıtlar:


11

make localmodconfigKomut hala iş için doğru araçtır. Aslında make localmodconfigçalışırscripts/kconfig/streamline_config.pl .

Dosya girişi

streamline_config.pl(Perl) kaynak kodunu okurken my $lsmod_file = $ENV{'LSMOD'};, lsmodkomuttan çıktı yerine yüklenen modül algılaması için dosya girişine izin veren belgesiz bir özellik vardır .

Canlı CD

Çünkü localmodconfig çıktıyı lsmodyüklü modülleri tespit etmek için kullanır . Farklı donanım kurulumlarının her birinde bir Ubuntu Live CD çalıştırıyoruz, bir terminal ( Ctrl+ Alt+ T) açıyoruz lsmod, çıktısını çalıştırıyor ve kaydediyoruz.

Çıktıyı birleştir

lsmodArdışık üstbilgi satırlarını sıyırırken çıktı dosyalarını birleştirerek, gerekli tüm çekirdek modüllerini kapsayan bir girdi dosyası oluşturabilirsiniz. Modül listesini elle incelemek ve daha manuel bir tarif kullanmak istiyoruz:

  1. $ cd linux-3.11.0/
    veya make komutunuzu çalıştıracağınız dizine gidin

  2. $ lsmod > lsmod.txt
    yüklü modüllerinizle bir metin dosyası oluşturur

  3. $ nano lsmod.txt
    nano metin editörünü açacak, tabii ki favori editör uygulamanızı kullanabilirsiniz

  4. Henüz orada olmayan istediğiniz modülleri bu dosyanın altına ekleyin (örnek için bu anwer'ın altına bakın) ve hazır olduğunuzda kaydedin.
    Not: sütun sekme konumlarıyla eşleştirmek için sekme değil boşluk kullanın.

  5. $ make LSMOD="lsmod.txt" localmodconfig
    bu, localmodconfig dosyasına lsmod.txt dosyanızı yüklü modül algılaması için girdi olarak kullanmasını söyler

5. adımda daha kısa bir gösterim önerdiği için steamline_config.pl'in yazarı olan Steven Rostedt ile ilgili olarak.


Lsmod.txt dosyasına eklenecek ve eklenmeyecek örnek (adım 4):

Intel D33217CK ana kartında okumak istediğimiz Intel termal sensörleri olduğundan, şu satırları ekliyoruz:

x86_pkg_temp_thermal   13810  0
intel_powerclamp       14239  0

Ancak bu donanımda sanal makineler çalıştırmak istemiyoruz, bu yüzden bu satırları atlıyoruz:

kvm_intel             128218  0
kvm                   364766  1 kvm_intel

Thunderbolt bağlantı noktasına bağlı bir Apple (Broadcom) Gibabit ethernet adaptörü var, bu yüzden ekliyoruz:

tg3                   152066  0
ptp                    18156  1 tg3
pps_core               18546  1 ptp

Hacim aynalamaya ihtiyacımız olmadığını düşünüyoruz ve bunun için eklemiyoruz:

dm_mirror              21715  0
dm_region_hash         15984  1 dm_mirror
dm_log                 18072  2 dm_region_hash,dm_mirror

Ayrıca grafik çıktısına da ihtiyacımız yok (metin başsız bir sunucuda yapılacak), bu yüzden şunları içermiyoruz:

i915                  589697  3
i2c_algo_bit           13197  1 i915
drm_kms_helper         46867  1 i915
drm                   242354  4 i915,drm_kms_helper

Başka bir makine için bu Realtek ethernet sürücüsüne ek olarak ihtiyacımız var:

r8169                  61434  0
mii                    13654  1 r8169
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.