技术知识库

Ubuntu 26.04 中 qemu-user-static 是虚拟包

Ubuntu 26.04 中 qemu-user-static 是虚拟包

摘要

在 Ubuntu 26.04 中,qemu-user-static 不再是应直接选择的具体软件包,而是由 qemu-user-binfmt 和 HWE 变体提供的虚拟包。安装命令同时写入 qemu-user-static qemu-user-binfmt 会产生提供者选择错误;显式安装 qemu-user-binfmt 即可,它会依赖实际提供模拟器二进制的 qemu-user。

现象

Package qemu-user-static is a virtual package provided by:
  qemu-user-binfmt-hwe ...
  qemu-user-binfmt ...
You should explicitly select one to install.

有问题的命令片段:

sudo apt install qemu-user-static qemu-user-binfmt

根因

本机 APT 元数据显示:

qemu-user-binfmt
  Provides: qemu-user-static
  Depends: qemu-user
  Breaks: qemu-user-static

qemu-user-binfmt 负责向 binfmt_misc 注册各目标架构;真正的 qemu-aarch64、qemu-riscv64 等用户态模拟器由其依赖 qemu-user 提供。虚拟包名和具体提供者不应同时出现在安装列表中。

修复

sudo apt install \
  debootstrap debian-archive-keyring \
  qemu-user-binfmt \
  e2fsprogs

如果希望使用 HWE 变体,应明确选择 qemu-user-binfmt-hwe,但不要同时安装两个相互替代的提供者。本实验使用已经验证的普通 qemu-user-binfmt。

验证

qemu-aarch64 --version
qemu-riscv64 --version
cat /proc/sys/fs/binfmt_misc/qemu-aarch64

完成标准:模拟器命令存在,binfmt 条目显示 enabled,解释器指向 /usr/bin/qemu-aarch64。

关联