Yocto构建Qt6树莓派3镜像时遇RM SIGABRT错误及Ubuntu崩溃求助
问题:Yocto构建libarchive时出错并导致Ubuntu系统崩溃
构建配置
Build Configuration: BB_VERSION = "2.2.0" BUILD_SYS = "x86_64-linux" NATIVELSBSTRING = "universal" TARGET_SYS = "arm-poky-linux-gnueabi" MACHINE = "raspberrypi3" DISTRO = "poky" DISTRO_VERSION = "4.1.4" TUNE_FEATURES = "arm vfp cortexa7 neon vfpv4 thumb callconvention-hard" TARGET_FPU = "hard" meta meta-poky meta-yocto-bsp = "langdale:3e95f268ce04b49ba6731fd4bbc53b1693c21963" meta-raspberrypi = "langdale:8e3cbfa598de106a78d9a9e27aa25ded51416896" meta-oe meta-multimedia meta-networking meta-python = "langdale:cbbaa82238cd60f08c9b9cb58dde59d5f9318c7b" meta-qt6 = "6.5:a65fb409f4469c087ae3e23ee80fbb2531f1856e"
构建错误日志
ERROR: libarchive-3.6.2-r0 do_package: Error executing a python function in exec_func_python() autogenerated: The stack trace of python calls that resulted in this exception/failure was: File: 'exec_func_python() autogenerated', lineno: 2, function: <module> 0001: *** 0002:sstate_task_postfunc(d) 0003: File: '/home/m/Downloads/yocto/build/../sources/poky/meta/classes-global/sstate.bbclass', lineno: 824, function: sstate_task_postfunc 0820: 0821: omask = os.umask(0o002) 0822: if omask != 0o002: 0823: bb.note("Using umask 0o002 (not %0o) for sstate packaging" % omask) *** 0824: sstate_package(shared_state, d) 0825: os.umask(omask) 0826: 0827: sstateinst = d.getVar("SSTATE_INSTDIR") 0828: d.setVar('SSTATE_FIXMEDIR', shared_state['fixmedir']) File: '/home/m/Downloads/yocto/build/../sources/poky/meta/classes-global/sstate.bbclass', lineno: 679, function: sstate_package 0675: 0676: sstatebuild = d.expand("${WORKDIR}/sstate-build-%s/" % ss['task']) 0677: sde = int(d.getVar("SOURCE_DATE_EPOCH") or time.time()) 0678: d.setVar("SSTATE_CURRTASK", ss['task']) *** 0679: bb.utils.remove(sstatebuild, recurse=True) 0680: bb.utils.mkdirhier(sstatebuild) 0681: for state in ss['dirs']: 0682: if not os.path.exists(state[1]): 0683: continue File: '/home/m/Downloads/yocto/sources/poky/bitbake/lib/bb/utils.py', lineno: 728, function: remove 0724: # shutil.rmtree(name) would be ideal but its too slow 0725: cmd = [] 0726: if ionice: 0727: cmd = ['ionice', '-c', '3'] *** 0728: subprocess.check_call(cmd + ['rm', '-rf'] + glob.glob(path)) 0729: return 0730: for name in glob.glob(path): 0731: try: 0732: os.unlink(name) File: '/usr/lib/python3.10/subprocess.py', lineno: 369, function: check_call 0365: if retcode: 0366: cmd = kwargs.get("args") 0367: if cmd is None: 0368: cmd = popenargs[0] *** 0369: raise CalledProcessError(retcode, cmd) 0370: return 0 0371: 0372: 0373:def check_output(*popenargs, timeout=None, **kwargs): Exception: subprocess.CalledProcessError: Command '['rm', '-rf', '/home/m/Downloads/yocto/build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/libarchive/3.6.2-r0/sstate-build-package/']' died with <Signals.SIGABRT: 6>. ERROR: Logfile of failure stored in: /home/m/Downloads/yocto/build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/libarchive/3.6.2-r0/temp/log.do_package.121192 ERROR: Task (/home/m/Downloads/yocto/build/../sources/poky/meta/recipes-extended/libarchive/libarchive_3.6.2.bb:do_package) failed with exit code '1' Pseudo log: path mismatch [5 links]: ino 19665829 db '/home/m/Downloads/yocto/build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/libarchive/3.6.2-r0/package/usr/src/debug/libarchive/3.6.2-r0/tar/subst.c' req '/home/m/Downloads/yocto/build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/libarchive/3.6.2-r0/sstate-build-package/packages-split/libarchive-src/usr/src/debug/libarchive/3.6.2-r0/tar/subst.c'. Setup complete, sending SIGUSR1 to pid 121193.
系统崩溃截图

解决办法
清理libarchive构建状态
针对伪文件系统路径不匹配问题,执行以下命令清理相关缓存和工作目录:bitbake -c cleansstate libarchive rm -rf build/tmp/work/cortexa7t2hf-neon-vfpv4-poky-linux-gnueabi/libarchive/之后重新启动构建。
临时禁用SSTATE加速
错误发生在SSTATE打包阶段,可临时关闭该功能绕过问题,在local.conf中添加:SSTATE_ENABLED = "0"构建完成后可改回
"1"恢复加速。检查存储与内存健康
系统崩溃+文件路径异常可能由磁盘错误或内存故障导致:- 检测磁盘:
sudo fsck /dev/sdX # 替换为构建所在的分区设备名 - 检测内存:
sudo memtester 1024 5 # 测试1024MB内存,循环5次
- 检测磁盘:
更新Yocto层代码
当前Langdale版本与Qt6 6.5可能存在兼容性细节问题,拉取各层最新代码:cd sources/meta-raspberrypi && git pull cd ../meta-oe && git pull cd ../meta-qt6 && git pull限制构建并行任务数
Yocto构建内存消耗大,避免内存耗尽导致系统崩溃,在local.conf中调整:BB_NUMBER_THREADS = "4" PARALLEL_MAKE = "-j4"根据自身CPU核心数和内存大小调整数值,8GB内存建议设置为4。
内容的提问来源于stack exchange,提问作者Martin Dusek
相关产品推荐
相关产品推荐

