I was following the instructions of this tutorial HOWTO: Purge and Reinstall Grub 2 from the Live CD, when I encountered an error at step 1, as I launched the command
sudo chroot /mnt/temp
The error was the following:
chroot: failed to run command `/bin/bash': Exec format error
Where does that come from? How do I get through?
Verify that you are using the right Live CD. For example, verify you are not using a 32bit CD instead of a 64bit CD. You need a 64bit kernel to run 64bit code, so check your architecture.
Assuming you mounted your system to be chrooted in /media/sda1, to determine the architecture you can:
ls /media/sda1/*
if you see lib64 in the output, it's probably a 64bit system
I had the same problem when making an image for armhf arch. I had to install
qemu-user-static
and then copy it to chroot bin folder.You may have to run
then you should be able to chroot into the environment
The error means that your jail (
/mnt/temp
) does not contain a bash shell, or does not contain the libraries required to run the bash shell.If you created your jail using something like this:
You probably meant to do this instead:
However, as a technical answer to your problem, try:
This should allow you to chroot successfully, at which point you can do other things.
There are about a million things wrong with doing that though, and almost certainly you do not want to do that. Use minbase when you create your jail, or install ubuntu on a blank target (eg. a virtual machine) and create a tar archive of the entire system which you then decompress into
/mnt/temp
.Indeed this is a 64-bit 32-bit incompatibility.
Although with
(copies 32-bit exec to the new root in the
tmp
directorychroot
is fine, all commands still fail. You would have to copy them all over.In my case, I was trying to chroot into a 64-bit version of Linux but my current Linux was 32-bit.
I had mounted a disk image (master image, for replication on multiple machines).
I think in is a BUG.
`/bin/bash'
but not
'bin/bash'