AMD64环境交叉编译Ruby Debian包时pbuilder arm64构建报exec format error
问题解答
为什么文件系统创建阶段会运行/bin/true?
debootstrap在完成目标架构基础文件系统的初步部署后,会自动执行/bin/true作为环境可用性验证步骤:
- 它用来确认chroot内的目标架构二进制文件能被当前宿主环境正确解释执行
- 这是debootstrap内置的健康检查,确保后续的包安装、配置步骤能正常开展
错误原因及解决方法
你遇到的Exec format error,核心是binfmt_misc未正确配置,导致AMD64宿主无法识别并转译arm64架构的/bin/true二进制。具体解决步骤:
- 手动注册qemu-arm64的binfmt规则:
update-binfmts --enable qemu-aarch64 - 确保Kubernetes特权Pod的配置满足:
- 开启
securityContext.privileged: true - 挂载
/proc/sys/fs/binfmt_misc为可写路径(避免容器内无法修改binfmt规则)
- 开启
- 补充debootstrap参数,提前在chroot内安装目标架构的qemu静态二进制:
pbuilder create --distribution focal --architecture arm64 --mirror http://ports.ubuntu.com/ubuntu-ports/ --debootstrapopts --include=qemu-user-static
内容的提问来源于stack exchange,提问作者xrl
相关产品推荐
相关产品推荐

