首页 > 解决方案 > bitbake 不生成 zImage 文件

问题描述

几天来,我一直在 bitbake 中运行 Yocto 构建,但我注意到它有时会停止生成内核的 zImage 文件。我所做的大部分更改都是针对内核配置和 machine.conf 文件。发生这种情况时,我仍然会在每次构建时获得更新的 tar.gz 文件,但 zImage 会停止更新。运行 do_clean、do_cleanall 和 do_cleansstate 任务没有帮助,从 build/tmp/deploy 中删除旧的 zImage 文件也没有帮助。唯一有用的是删除整个 pocky/build/tmp 目录并从头开始重建整个项目。这是我当前的 machine.conf 文件:

#@TYPE: Machine 
#@Name: EMAC, Inc. SoM-9G45M Module 
#@DESCRIPTION: Machine.inc configuration for the SoM-9G45M board with a at91sam9g45 processor 

TARGET_ARCH = "arm" 

PREFERRED_PROVIDER_virtual/kernel = "linux-2.6.30-at91-emac" 
PREFERRED_PROVIDER_xserver = "xserver-kdrive" 
KERNEL_IMAGETYPE = "zImage" 
KERNEL_EXTRA_ARGS = "LOADADDR=0x74000000"

#don't try to access tty1 
USE_VT = "0" 
MACHINE_FEATURES = "kernel26 apm alsa ext2 usbhost usbgadget" 
KERNEL_DEVICETREE = "at91som9g45.dtb"

# used by sysvinit_2 
#SERIAL_CONSOLE = "115200 ttyS1" 
SERIAL_CONSOLE = "115200 ttyS0" 
#SERIAL_CONSOLES = "115200;ttyS0 115200;ttyS1"
#SYSLINUX_DEFAULT_CONSOLE = "console=ttyS0"
#SYSLINUX_SERIAL = "0 115200"
#SYSLINUX_SERIAL_TTY = "console=ttyS0,115200"
#EXTRA_IMAGECMD_jffs2 = "--pad=0xA00000 --little-endian --eraseblock=0x20000" 

# NAND
MKUBIFS_ARGS = " -e 129024 -c 2047 -m 2048  -x lzo"
UBINIZE_ARGS = " -m 2048 -p 128KiB -s 512"

UBI_VOLNAME = "rootfs"

UBOOT_MACHINE = "${MACHINE}_nandflash_config"
UBOOT_ENTRYPOINT = "0x74000000"
UBOOT_LOADADDRESS = "0x74000000"

require include/at91sam9.inc

什么会导致 bitbake 构建停止生成指定的内核映像,我该如何解决?

标签: embedded-linuxyoctobitbake

解决方案


答案最终分为两部分。

首先运行bitbake -c do_cleansstate linux-at91然后bitbake core-image-sato成功重新生成zImage文件。

其次,linux-2.6.30-at91-emac不正确,因为我的 kerenl 刚刚被调用linux-at91。因此,我的内核构建可能仅在我为其他机器运行构建时才运行。

所以我的完整映像构建并没有重建内核,因为我引用了不同的内核。一旦我解决了这个问题,内核构建将再次开始运行。我不确定我是如何获得 zImage 的,或者为什么 bitbake 在被告知构建一个不存在的内核后从未抛出错误。


推荐阅读