You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在x86架构主机上修改arm64架构的Ubuntu预装系统镜像

跨x86架构修改ARM64 Ubuntu镜像的简便实现方案

你当前使用的手动复制qemu二进制到镜像内chroot的方案已经过时,新版qemu用户态模拟器配合binfmt_misc配置后,可自动识别跨架构二进制,不需要修改镜像内文件即可完成操作。以下是三种可直接落地的实现方案:

方案1:使用Docker(最简便,优先推荐)

无需手动处理虚拟文件系统挂载、模拟器适配等问题,操作步骤最少:

  • 首先在x86主机安装依赖包:
    sudo apt install qemu-user-static binfmt-support docker.io
  • 验证ARM64二进制自动识别配置生效:
    update-binfmts --display | grep qemu-aarch64
    正常输出会显示qemu-aarch64 (enabled):相关内容
  • 挂载ARM64 Ubuntu镜像到本地目录,假设镜像文件为ubuntu-22.04-server-arm64.img,挂载点为/mnt/arm64-root:
    # 先查看镜像根分区偏移量
    fdisk -l ubuntu-22.04-server-arm64.img
    # 假设根分区起始扇区为2048,扇区大小512字节,偏移量计算为2048*512=1048576
    sudo mount -o loop,offset=1048576 ubuntu-22.04-server-arm64.img /mnt/arm64-root
    
  • 运行ARM64容器挂载镜像根目录,直接进入chroot环境操作:
    docker run --rm -it --platform linux/arm64 -v /mnt/arm64-root:/target arm64v8/ubuntu:22.04 chroot /target
    进入环境后可直接执行apt安装、配置修改等操作,操作完成后执行exit退出容器,卸载镜像即可。

方案2:使用systemd-nspawn(轻量无Docker依赖)

如果主机不想安装Docker,可使用系统自带的systemd-nspawn工具,比手动chroot流程更简单:

  • 完成前述的qemu安装、binfmt配置、镜像挂载步骤
  • 直接执行以下命令进入镜像根目录环境:
    sudo systemd-nspawn -D /mnt/arm64-root
    工具会自动挂载dev、proc、sys等虚拟文件系统,自动适配跨架构模拟器,无需额外配置即可正常运行apt、bash等工具。

方案3:使用qemu-system-aarch64(全硬件模拟,适合复杂场景)

如果需要模拟完整的ARM64硬件环境(比如测试内核启动、驱动适配等场景),可使用全系统模拟器:

  • 提前下载ARM64 UEFI固件文件QEMU_EFI.fd
  • 执行命令启动模拟器:
    qemu-system-aarch64 -M virt -cpu cortex-a72 -smp 4 -m 4G -drive file=ubuntu-22.04-server-arm64.img,if=virtio -drive file=QEMU_EFI.fd,if=pflash,format=raw -nographic
    启动后可进入完整的Ubuntu系统操作,优点是和真实ARM64硬件环境完全一致,缺点是运行速度比用户态模拟慢。

注意事项:

  1. 操作前请先备份原镜像文件,避免修改出错导致镜像损坏
  2. 如果chroot环境内apt无法正常联网,可在进入环境前将主机的/etc/resolv.conf复制到镜像的/etc/resolv.conf位置

内容的提问来源于stack exchange,提问作者ataraxis

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 10:57:03