kernel.img dosyası
Linux çekirdeği kullanılırken, kernel.imgdosya sadece yeniden adlandırılır linux/arch/arm/boot/Image. Bu dosyanın sıkıştırılmış sürümünü kullanmak da mümkün olmalıdır (veya en azından son kontrol ettiğimde) zImage. Entegre initramfs(ramdisk) içerebilir , ancak gerekli değildir. Örneğin, stok kernel.imgdosyası içermiyor initramfsiken içerir kernel_emergency.img.
Not: eLinux wiki'deki resmi çekirdek derleme kılavuzu, dosya imagetool-uncompressed.pyhazırlamak için aracı kullanmanız gerektiğini önermektedir kernel.img. RaspberyPi'nin ilk günlerinde gerekliydi, ancak günümüzde bootloader düzenli Imageve zImagedosyaları işleyebilir .
Çekirdek kaynakları sorunu
Çok önemli olan, RaspberryPi için çekirdek oluştururken, bunun herhangi bir sürümünü kullanamazsınız. Sadece RaspberryPi'ye taşınan özel sürüm çalışacaktır. Ne yazık ki, mevcut akış yukarı sürümü ( kernel.orgsitede bulunur) RaspberryPi ile uyumlu değildir. Ayrıca, versatil_configRaspberryPi için iyi değildir, bcmrpi_defconfigbunun yerine (RaspberryPi uyumlu çekirdek kaynaklarında bulunur) veya bcmrpi_emergency_defconfigbuildin kullanma planınız varsa kullanmalısınız initramfs.
Çekirdek oluşturma talimatları
RaspberryPi için çekirdek kaynaklarını almak için en iyi yer temel github üzerindedir . Ayrıca, nasıl elde edileceği ve resmi RasbperryPi wiki'de nasıl derleneceği hakkında bazı yararlı açıklamalar bulabilirsiniz . İşte benim adımların basitleştirilmiş küçük versiyonu (NOT: Çekirdeği çapraz derlemek istediğinizi varsayalım. Çok daha hızlı ve aynı sonuçları oluşturmalı, ancak RaspberryPi üzerinde yerel olarak çekirdek oluşturmak da mümkündür):
Kendiniz oluşturmak için resmi araç zincirini indirin. Daha yüksek bir şekilde, yüklü olduğunu varsayıyorum /usr/bin/arm-linux-gnueabi-*. Başka bir yerde varsa CROSS_COMPILE, tüm makekomutlarınızda seçeneği değiştirmeniz gerekir .
Resmi RapsberryPi çekirdek kaynaklarını bulabileceğiniz https://github.com/raspberrypi/linux sitesine gidin . Kodu iki şekilde indirebilirsiniz:
- Sıkıştırılmış bir dosya olarak (bu seçeneği kullanmak için
gityardımcı programı yüklemeniz gerekmez ve bunu RapsberryPi'nin kendisinde bile yapabilirsiniz): Sitenin üstündeki sekmenin ZIPbiraz altındaki simgeye tıklayın Code. Bu, lates kaynak dosyalarını dosya olarak indirmenize izin vermelidir zip. Bunun yerine git'i kullanabilirsiniz, ancak (wiki'de açıklandığı gibi) çok daha fazla alana ve zamana ihtiyaç duyacaktır. Sonra kaynak ağacı almak için dosyayı açın.
gitYardımcı programı kullanma (bu muhtemelen RaspberryPi'de benim için işe yaramadı, çünkü muhtemelen RAM miktarı az olabilir, ancak masaüstü sistemlerinde Tamam çalışmalıdır ( --depth 1git'in tüm geliştirme geçmişini indirmesini önleyen argüman notu (çok büyük):
git clone --depth 1 git://github.com/raspberrypi/linux.git
Temel tarafından sağlanan varsayılan yapılandırmayı kullanın:
cp arch/arm/configs/bcmrpi_defconfig .config
make oldconfigBazı soruları çalıştırın ve cevaplayın (varsayılan cevap bırakarak her soruda enter tuşuna basmanız iyi olacaktır):
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi- oldconfig
Çekirdeği derleyin:
make ARCH=arm CROSS_COMPILE=/usr/bin/arm-linux-gnueabi-
Çekirdek modüllerini şuraya kopyala /tmp/modules:
make ARCH=arm modules_install INSTALL_MOD_PATH=/tmp/modules
ImageDosyayı şu şekilde kullan:kernel.img
/tmp/modules/lib/modules/Bilgisayarınızdaki tüm modülleri /lib/modules/RaspberryPi kök dosyalarınızdaki dizine yükleyin .
Initramfs ekleme
Ancak bu, nasıl oluşturulacağına ilişkin talimatlar sağlamaz initramfs. Bu çok geniş bir konu olduğundan (temel olarak, çalışan Linux kullanıcı alanı ortamı oluşturmak zorundasınız ve ne kadar karmaşık olabileceğine dair gerçekten bir sınır yok), şimdi bunu burada ele almayacağım. Sadece initramfsiki farklı formda kullanılabileceğini not edeceğim - bağımsız bir dosya, burada ayrı dosya ve çekirdek görüntü dosyası ile entegre olduğu yerde (olduğu gibi kernel_emergency.img). İkinci seçenek RaspberryPi önyükleyici tarafından desteklenmelidir, ancak mevcut bellenim sürümünde kırıldığına dair bazı söylentiler vardır , bu nedenle muhtemelen buildin sürümünü kullanmalısınız.
Başlamanın en iyi yolu, başka bir temel github deposundan indirerek ve yalnızca bu iniramfsgörüntüyü kullanarak çekirdeği önyükledikten sonra kendiniz oluşturmayı deneyin. Bunun için gereken tek şey, indirilen dizin CONFIG_INITRAMFS_SOURCEyapılandırma çekirdek yapılandırması seçeneğini işaret etmektir .
Son notlar
Yani bunu 3 adımda yapmalısınız:
- Çekirdeksiz
initramfsdosya oluşturmayı ve önyüklemeyi deneyin .
initramfsÇekirdeğinize hazır içerik eklemeyi deneyin .
- Bu
initramfsiçeriği ihtiyaçlarınıza göre değiştirin.