在chroot尝试期间,我收到此错误:“chroot:无法运行命令’/ bin / bash’:执行格式错误”
我按照本教程的说明HOWTO:当我在步骤1遇到错误时, 从Live CD中清除并重新安装Grub 2 ,因为我启动了命令
sudo chroot /mnt/temp
错误如下:
chroot: failed to run command `/bin/bash': Exec format error
它来自哪里? 我如何度过难关?
确认您使用的是正确的Live CD。 例如,validation您没有使用32位CD而不是64位CD。 您需要64位内核才能运行64位代码,因此请检查您的体系结构。
假设您已将系统挂载到/ media / sda1中 ,以确定您可以的架构:
ls /media/sda1/*
如果你在输出中看到lib64,它可能是一个64位系统
该错误意味着您的jail( /mnt/temp
)不包含bash shell,或者不包含运行bash shell所需的库。
如果您使用以下内容创建了jail:
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,此时您可以做其他事情。
这样做有大约一百万个错误,而且几乎可以肯定你不想这样做。 在创建jail时使用minbase,或者在空白目标(例如虚拟机)上安装ubuntu并创建整个系统的tar存档,然后将其解压缩到/mnt/temp
。
我为armhf arch制作图像时遇到了同样的问题。 我必须安装qemu-user-static
,然后将其复制到chroot bin文件夹。
sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin
实际上,这是一个64位32位不兼容性。
虽然有
cp /bin/bash /mount/temp/tmp
(将32位exec复制到tmp
目录中的新根目录
chroot /mount/temp /tmp/bash
chroot
很好,所有命令仍然失败。 你必须将它们全部复制。
在我的情况下,我试图chroot到64位版本的Linux,但我目前的Linux是32位。
我安装了一个磁盘映像(主映像,用于在多台计算机上进行复制)。
我认为是一个BUG。
`/斌/庆典”
但不是
“斌/庆典”