
Estaba siguiendo las instrucciones de este tutorial.CÓMO: Purgar y reinstalar Grub 2 desde el Live CD, cuando encontré un error en el paso 1, cuando lancé el comando
sudo chroot /mnt/temp
El error fue el siguiente:
chroot: failed to run command `/bin/bash': Exec format error
De donde viene eso? ¿Cómo paso?
Respuesta1
Verifique que esté utilizando el Live CD correcto. Por ejemplo, verifique que no esté utilizando un CD de 32 bits en lugar de uno de 64 bits. Necesita un kernel de 64 bits para ejecutar código de 64 bits, así que verifique su arquitectura.
Suponiendo que montó su sistema para ser chroot en/media/sda1, para determinar la arquitectura puedes:
ls /media/sda1/*
Si ve lib64 en el resultado, probablemente sea un sistema de 64 bits.
Respuesta2
Tuve el mismo problema al hacer una imagen para el arco armhf. Tuve que instalarlo qemu-user-static
y luego copiarlo a la carpeta chroot bin.
sudo cp /usr/bin/qemu-arm-static /path/to/mount/usr/bin
Puede que tengas que correr
systemctl restart systemd-binfmt.service
entonces deberías poder hacer chroot en el entorno
Respuesta3
El error significa que su jail ( /mnt/temp
) no contiene un shell bash o no contiene las bibliotecas necesarias para ejecutar el shell bash.
Si creaste tu cárcel usando algo como esto:
debootstrap --variant=buildd --arch i386 lucid /mnt/temp \
http://archive.ubuntu.com/ubuntu/
Probablemente quisiste hacer esto en su lugar:
debootstrap --variant=minbase --arch i386 lucid /mnt/temp \
http://archive.ubuntu.com/ubuntu/
Sin embargo, como respuesta técnica a su problema, intente:
cp -r /bin /lib /mnt/temp
Esto debería permitirle realizar chroot exitosamente, momento en el cual podrá hacer otras cosas.
Sin embargo, hay alrededor de un millón de cosas malas al hacer eso y es casi seguro que no quieras hacerlo. Utilice minbase cuando cree su cárcel, o instale ubuntu en un destino en blanco (por ejemplo, una máquina virtual) y cree un archivo tar de todo el sistema que luego descomprimirá en /mnt/temp
.
Respuesta4
De hecho, se trata de una incompatibilidad de 64 bits y 32 bits.
aunque con
cp /bin/bash /mount/temp/tmp
(copia el ejecutivo de 32 bits a la nueva raíz en el tmp
directorio
chroot /mount/temp /tmp/bash
chroot
Está bien, todos los comandos siguen fallando. Tendrías que copiarlos por todos lados.