问题描述:
通过容器 binfmt 模拟arm环境,麒麟V11 arm64 版本,tar 版本 tar-1.35-3.ky11 ,解压几个文件都是报错,压缩文件本身并没有问题。
报错一般有这个:Cannot mkdir: Invalid argumen
说明: 根因是 qemu 的bug,再加上tar的安全修复之后出的问题。
问题分析:
经过对比排查,基本确认为 qemu 本身的问题,相关链接如下:
https://github.com/tonistiigi/binfmt/issues/285
https://bugzilla.yoctoproject.org/show_bug.cgi?id=16126
https://bugzilla.yoctoproject.org/show_bug.cgi?id=16117
问题解决:
降低tar的版本,或者升级 tonistiigi/binfmt 的版本 tonistiigi/binfmt:qemu-v10.2.1-65 或更高版本 。
降低tar版本的操作步骤:
dnf list --showduplicates tar
Last metadata expiration check: 4:57:03 ago on Fri 22 May 2026 11:07:29 AM CST.
Installed Packages
tar.aarch64 2:1.35-2.ky11 @v11-adv-os
Available Packages
tar.aarch64 2:1.35-2.ky11 v11-adv-os
tar.aarch64 2:1.35-3.ky11 v11-adv-updates
dnf repoquery --available tar
Last metadata expiration check: 4:58:26 ago on Fri 22 May 2026 11:07:29 AM CST.
tar-2:1.35-2.ky11.aarch64
tar-2:1.35-3.ky11.aarch64
rpm -qa |grep tar
tar-1.35-3.ky11.aarch64
dnf downgrade tar-1.35-2.ky11
Last metadata expiration check: 4:49:26 ago on Fri 22 May 2026 11:07:29 AM CST.
Dependencies resolved.
=================================================================================================
Package Architecture Version Repository Size
=================================================================================================
Downgrading:
tar aarch64 2:1.35-2.ky11 v11-adv-os 746 k
Transaction Summary
=================================================================================================
Downgrade 1 Package
Total download size: 746 k
Is this ok [y/N]: y
Downloading Packages:
tar-1.35-2.ky11.aarch64.rpm 611 kB/s | 746 kB 00:01
-----------------------------------------------------------------------------------------------------------------------------------------------------------
Total 587 kB/s | 746 kB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Running scriptlet: tar-2:1.35-2.ky11.aarch64 1/2
Downgrading : tar-2:1.35-2.ky11.aarch64 1/2
Running scriptlet: tar-2:1.35-2.ky11.aarch64 1/2
Running scriptlet: tar-2:1.35-3.ky11.aarch64 2/2
Cleanup : tar-2:1.35-3.ky11.aarch64 2/2
Running scriptlet: tar-2:1.35-3.ky11.aarch64 2/2
Verifying : tar-2:1.35-2.ky11.aarch64 1/2
Verifying : tar-2:1.35-3.ky11.aarch64 2/2
Downgraded:
tar-2:1.35-2.ky11.aarch64
Complete!
升级 qemu 的步骤
docker load < tonistiigi-binfmt-qemu-v10.2.1-65.tar.gz
docker run --rm --privileged tonistiigi/binfmt:qemu-v10.2.1-65 --install all