Yocto

2015-06-24 30 views
5

'daki çekirdek yapılandırmasını değiştirme Çekirdek yapılandırmasını şanssız olarak değiştirmek için uzun bir süredir denedim. :-(Yocto

tarifleri-çekirdek/linux/linux_git.bb ile meta-xxx-yyy/Bir BSP yoktur. Ben sahip çekirdek adlı benim katmanda yapılandırma meta-xxx-mylayer geçersiz kılmak için deneyin tarifler-çekirdek/linux/linux_git.bbappend ve tarifleri-çekirdek/linux/files/frag.cfg

frag.cfg:

# CONFIG_NETFILTER is not set 
CONFIG_AUTOFS4_FS=y 

linux_git.bbappend:

COMPATIBLE_MACHINE_my_mach = "my_mach" 
FILESEXTRAPATHS_prepend := "${THISDIR}/files:" 
SRC_URI += "file://frag.cfg" 

linux_git.bb: (dosyanın bir kısmı)

KERNEL_RELEASE = "3.10" 
PV = "3.10" 
PR = "r10" 
S = "${WORKDIR}/git" 
COMPATIBLE_MACHINE = "(my_mach)" 

meta xxx.yyy/conf/makine/my_mach.conf: (meta-xxx-mylayer/conf/makine/my_mach orada

bitbake linux -c cleansstate -f 
bitbake linux -c configure -f 
bitbake linux -c compile -f 
bitbake linux -c deploy -f 

Her şey oluşturur, ama /proc/config.gz incelemek zaman CONFIG_AUTOFS4_FS etkin olmadığını görebilirsiniz: .conf)

PREFERRED_PROVIDER_virtual/kernel = "linux" 
UBOOT_MACHINE = "socfpga_cyclone5_config" 
KERNEL_MACHINE = "socfpga" 

Yapı emreder.

Meta-xxx-mylayer katmanında rootfs oluşturup kurarken yeni bir tarif daha var, böylece katmanın etkin olduğunu biliyorum.

Dosyaların geri kalanı ./tmp/work/my_mach dosyasındayken, frag.cfg dosyası ./tmp/work/my_mach-poky-linux-gnueabi/linux/3.10-r10/ adresinde kopyalanır. -poky-linux-gnueabi/linux/3.10-R10/git /. Bu bir problem mi?

Neyi yanlış yapıyorum ???

+0

Hiç anladın mı? Aynı problemim var. Yama dosyası uygulanır, cfg dosyası yoksayılır. – izak

cevap

4

Gerçek çekirdek reçetesini görmeden cevap vermek zordur, ancak muhtemelen gerçekleşen şey, sadece iç ortam kerneli ve linux-yocto için değil, sadece kernel için çekirdek tarifi olmasıdır. Bu durumda, yapılandırmayı parçaları kullanarak değiştiremezsiniz, tam bir defconfig vermeniz gerekir.

0

Çekirdek yapılandırma bayrağınızın düzgün bir şekilde çözülmesi için bağımlılıklar nelerdir? Bu

çekirdeği geliştirme

değişiklik yapmak için kendi yol var ...

2

belki geç bu durumda sorun olurdu ama sanırım. Dün buraya bir yazı yazdım ama yanlış olduğumu anladım, hemen sildim. Tam adımları atmayacağım. Sadece kısa bir açıklama. Bunları yocto dev kılavuzunda bulmalısınız, çünkü özel bir şey değil.

Çekirdek değişiklikleri doğrudan kaynaklarda yapılmalıdır (genellikle/workdir/tmp/içinde). Ve sonra yamaları yapmak için git'i kullanın. Eğer yapılandırmada, bitbake -c menuconfig virtual/kernel kullanarak veya başka bir yolla değişiklik yaparsanız, kernel .bbappend dosyasını olduğu gibi doğrudan koyun. Bu kesinlikle işe yarıyor. Devtool ile hemen hemen aynı denedim ve yamalar birleştirilmemişti.

1

Alexandre Belloni ile katılıyorum, ancak küçük bir düzeltme ile. Çekirdek tarifi (linux_git.bb) yalnızca çekirdekten miras alır ve kernel -yocto değil, daha sonra yapılandırma parçalarını kullanamazsınız.

Ne yazık ki, docs bu herhangi bir açıklama görmek mümkün değildi, ama

çekirdek yocto.bbclass bakarak:

# returns all the elements from the src uri that are .scc files 
def find_sccs(d): 
    sources=src_patches(d, True) 
    sources_list=[] 
    for s in sources: 
     base, ext = os.path.splitext(os.path.basename(s)) 
     if ext and ext in [".scc", ".cfg"]: 
      sources_list.append(s) 
     elif base and base in 'defconfig': 
      sources_list.append(s) 

    return sources_list 



    sccs="$sccs ${@" ".join(find_sccs(d))}" 
    patches="${@" ".join(find_patches(d))}" 
    feat_dirs="${@" ".join(find_kernel_feature_dirs(d))}" 



    # updates or generates the target description 
    updateme ${updateme_flags} -DKDESC=${KMACHINE}:${LINUX_KERNEL_TYPE} \ 
         ${includes} ${addon_features} ${ARCH} ${KMACHINE} ${sccs} ${patches} 

Gördüğünüz bununla herhangi bir dosya uzantısı .cfg, updateme kernel aracında kullanılan sccs değişkenine eklenir.