Yocto/Bitbake构建崩溃后的恢复方法求助
Yocto/Bitbake资源耗尽崩溃后Recipe死锁的解决办法
一、清理残留锁文件与进程标记
资源耗尽硬崩溃后,Bitbake常会残留锁文件或PID标记,导致后续构建误判目标进程仍在运行,陷入死锁:
- 查找并删除所有.lock文件:
find tmp/ -name "*.lock" -type f -delete - 删除work目录下的进程PID标记文件:
find tmp/work/ -name "*.pid" -type f -delete
二、精准清理目标Recipe的构建状态
无需删除整个tmp目录,针对出问题的Recipe清理关键缓存即可:
- 删除对应Recipe的stamp状态文件(Bitbake依赖这些文件判断构建阶段):
替换rm -rf tmp/stamps/<目标架构>/<recipe-name>/<目标架构>(如aarch64-poky-linux)和<recipe-name>为实际值。 - 删除Recipe的工作目录:
rm -rf tmp/work/<目标架构>/<recipe-name>/ - 清理deploy目录下的相关输出:
rm -rf tmp/deploy/*<recipe-name>*
三、强制解锁并重新构建
完成上述清理后,先解除Bitbake全局锁,再重新构建目标Recipe:
bitbake --remove-lock bitbake <recipe-name>
四、预防资源耗尽的优化措施
从根源减少资源压力,避免下次硬崩溃:
- 限制并行构建任务数:在
build/conf/local.conf中添加:BB_NUMBER_THREADS = "4" # 建议设为物理CPU核心数 PARALLEL_MAKE = "-j4" - 临时增加swap空间缓解内存不足:
构建完成后可清理:# 创建4G swap文件(可根据需求调整count值) dd if=/dev/zero of=/tmp/swapfile bs=1G count=4 mkswap /tmp/swapfile swapon /tmp/swapfileswapoff /tmp/swapfile && rm /tmp/swapfile - 实时监控资源:用
htop或top观察CPU、内存占用,发现资源即将耗尽时手动终止构建(Ctrl+C),避免硬崩溃。
内容的提问来源于stack exchange,提问作者cataclysmic
相关产品推荐
相关产品推荐

