【问题标题】:qemu-x86_64-static Exec format error after chroot [closed]chroot后的qemu-x86_64-static Exec格式错误[关闭]
【发布时间】:2021-09-21 20:23:13
【问题描述】:

我在具有 root 权限的 termux 上。 我的手机有 aarch64 cpu 架构。 我正在尝试使用 amd64 架构 chroot 一个 ubuntu 文件系统 我见过这个https://unix.stackexchange.com/a/222981 这是我的命令

sudo chroot ubuntu /bin/qemu-x86_64-static /bin/bash --login

我登录成功,但是当我运行命令时 ls 或任何

它给出了一个类似Exec format error的错误 然后我用 qemu-x86_64-static 尝试了那个命令,比如qemu-x86_64-static /bin/ls 它执行成功 有什么想法吗???

我想我可以为所有以 qemu-x86_64-static 开头的命令添加别名,但这不是一个好主意...

【问题讨论】:

    标签: linux ubuntu cpu-architecture qemu chroot


    【解决方案1】:

    你需要告诉内核,当它看到一个 arm64 二进制文件时,它应该通过启动 QEMU 来运行它。这种机制称为“binfmt-misc”,要对其进行配置,您需要以正确的格式将数据写入主机系统/proc/sys/fs/binfmt_misc/ 目录中的特殊文件。大多数 Linux 发行版会在您安装 QEMU 软件包时自动为您执行此操作,但显然 Android 不会为您执行此操作。

    首先检查你的手机内核是否已经编译了 binfmt-misc 支持:应该有一个文件/proc/sys/fs/binfmt_misc/status,如果你是cat,它的内容应该是enabled。如果没有,请尝试modprobe binfmt_misc。如果在那之后status 文件仍然不存在,那么除非您能够以某种方式为您的手机构建一个新内核,否则您将无法使其正常工作。

    如果您的手机内核中存在该支持,您可以尝试使用上游 QEMU 提供的 qemu-binfmt-conf.sh 脚本作为向 binfmt-misc 机制注册 QEMU 的机制: https://github.com/qemu/qemu/blob/master/scripts/qemu-binfmt-conf.sh (这只是一个将正确的数据行写入/proc/sys/fs/binfmt_misc/register的脚本。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-17
      • 1970-01-01
      • 2019-02-12
      • 2022-12-30
      • 2022-11-03
      • 1970-01-01
      • 2018-10-03
      • 2022-07-09
      相关资源
      最近更新 更多