在尝试进行 chroot 时,我遇到了这个错误:"chroot:无法运行命令 '/bin/bash':执行格式错误"。

我按照这个教程的指示HOWTO: Purge and Reinstall Grub 2 from the Live CD进行操作时,在第一步遇到了一个错误,当我执行了这个命令。
sudo chroot /mnt/temp

错误如下:
chroot: failed to run command `/bin/bash': Exec format error

那是从哪里来的?我该怎么办才能度过这个难关?
7个回答

验证您是否使用了正确的Live CD。例如,请确认您没有使用32位CD而是64位CD。您需要一个64位内核来运行64位代码,所以请检查您的架构。
假设您将系统挂载到了/media/sda1进行chroot操作,要确定架构,您可以执行以下命令: ls /media/sda1/* 如果输出中看到了lib64,那么很可能是一个64位系统。

但它仍然无法chroot。 - Starx

我在为armhf架构创建镜像时遇到了同样的问题。我不得不安装qemu-user-static,然后将其复制到chroot bin文件夹中。
sudo cp /usr/bin/qemu-arm-static /path/to/mount/usr/bin

你可能需要跑步
systemctl restart systemd-binfmt.service

然后你应该能够进入环境中的 chroot。

对我来说工作正常!注意:在运行debootstrap命令之前,请先创建目录并复制此文件。 - Danial Behzadi

错误意味着您的监狱(/mnt/temp)中没有包含bash shell,或者没有包含运行bash shell所需的库。
如果您是使用类似以下方式创建监狱的:
debootstrap --variant=buildd --arch i386 lucid /mnt/temp \
    http://archive.ubuntu.com/ubuntu/

您可能是想做这个:
debootstrap --variant=minbase --arch i386 lucid /mnt/temp \
    http://archive.ubuntu.com/ubuntu/

然而,作为对你的问题的技术回答,可以尝试以下方法:
cp -r /bin /lib /mnt/temp

这样做应该能够成功地进行chroot,然后你可以做其他事情。
不过,这样做有很多问题,几乎肯定你不想这样做。在创建监狱时使用minbase,或者在空白目标上安装Ubuntu(例如虚拟机),并创建一个完整系统的tar归档文件,然后解压到/mnt/temp目录中。

确实,这是一个64位和32位不兼容的问题。
虽然有些情况下可以通过一些方法解决,但是在某些特定的情况下,这种不兼容性是无法避免的。
cp /bin/bash /mount/temp/tmp

(将32位执行文件复制到tmp目录中的新根目录

chroot /mount/temp /tmp/bash

chroot没问题,但是所有的命令都会失败。你需要把它们全部复制过去。


在我的情况下,我使用了一个新的Linux虚拟机安装作为chroot的主机。这个虚拟机没有安装qemubinfmt软件包。 错误:chroot: failed to run command /bin/bash: Exec format error通过安装以下软件包解决:
  1. sudo apt install qemu-user-static
  2. sudo apt install binfmt-support
只是为了澄清,Linux虚拟机使用的是ubuntu-20.04x86_64,而要进行chroot的系统是armhf,即32位系统。

在我的情况下,我试图将chroot进入一个64位版本的Linux,但我的当前Linux是32位的。
我已经挂载了一个磁盘镜像(主镜像,用于在多台机器上复制)。

和@GrandOxymore上面的回答一样。 - Kalle Richter
@KarlRichter 相似但并不相同。在64位操作系统中运行32位程序与在64位虚拟环境(或操作系统)中运行32位程序并不一样。我可以运行一个32位的客户操作系统,它会正常运行。 - azuer88

我认为这是一个错误。

`/bin/bash'

但不是

'bin/bash'