kernel.img dosyası
Linux çekirdeği kullanılırken, kernel.img
dosya 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.img
dosyası içermiyor initramfs
iken içerir kernel_emergency.img
.
Not: eLinux wiki'deki resmi çekirdek derleme kılavuzu, dosya imagetool-uncompressed.py
hazı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 Image
ve zImage
dosyaları 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.org
sitede bulunur) RaspberryPi ile uyumlu değildir. Ayrıca, versatil_config
RaspberryPi için iyi değildir, bcmrpi_defconfig
bunun yerine (RaspberryPi uyumlu çekirdek kaynaklarında bulunur) veya bcmrpi_emergency_defconfig
buildin 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 make
komutları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
git
yardımcı programı yüklemeniz gerekmez ve bunu RapsberryPi'nin kendisinde bile yapabilirsiniz): Sitenin üstündeki sekmenin ZIP
biraz 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.
git
Yardı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 1
git'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 oldconfig
Bazı 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
Image
Dosyayı ş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 initramfs
iki 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 iniramfs
görüntüyü kullanarak çekirdeği önyükledikten sonra kendiniz oluşturmayı deneyin. Bunun için gereken tek şey, indirilen dizin CONFIG_INITRAMFS_SOURCE
yapılandırma çekirdek yapılandırması seçeneğini işaret etmektir .
Son notlar
Yani bunu 3 adımda yapmalısınız:
- Çekirdeksiz
initramfs
dosya oluşturmayı ve önyüklemeyi deneyin .
initramfs
Çekirdeğinize hazır içerik eklemeyi deneyin .
- Bu
initramfs
içeriği ihtiyaçlarınıza göre değiştirin.