Yocto Dunfell环境下ARM7设备升级Java 17遇Segmentation Fault问题
问题:Yocto适配Java 17至ARM7只读rootfs时的Segmentation Fault问题
当前环境
- 原Yocto层适配Java 8,目标升级至Java 17
- 目标设备:ARM7(基于Poky的ARM架构),rootfs为只读模式
- 当前使用meta-java版本:commit e122acf3e9570ceb055e55feb41e5558463253e4
尝试的适配仓库
1. meta-adoptium
- 可正常完成构建与部署,但在设备上运行
java或java -jar命令时出现Segmentation Fault错误 - 直接在设备上解压官方Java tar包运行无异常
- 已修改
layer.conf添加Java ARM配置,自定义do_install流程设置文件权限,问题依旧
2. meta-openjdk-temurin
- 构建阶段报错,推测该仓库不支持Dunfell版本
后续测试与推断
- 修改
do_unpack流程为:
将镜像中的Java文件复制到本地再传到设备可正常运行,但刷入.wic镜像后仍报错gunzip -c ${THISDIR}/files/OpenJDK17U-jre_arm_linux_hotspot_17.0.12_7.tar.gz | tar xopf - - 修改
do_install流程,同时将Java文件复制到/usr/lib/jvm/openjdk-17-jre和/home/java路径:- 运行
/usr/lib/jvm/openjdk-17-jre/bin/java报错 - 运行
/home/java/bin/java可正常输出
- 运行
- 推断结论:问题并非Java文件本身存在异常,而是Yocto针对
/usr/lib/jvm路径的后处理流程导致运行错误
内容的提问来源于stack exchange,提问作者Svalinn
相关产品推荐
相关产品推荐

