chroot 시도 중에 다음 오류가 발생했습니다.“chroot : '/ bin / bash'명령을 실행하지 못했습니다 : Exec 형식 오류”


답변:


22

올바른 라이브 CD를 사용하고 있는지 확인하십시오. 예를 들어 64 비트 CD 대신 32 비트 CD를 사용하고 있지 않은지 확인하십시오. 64 비트 코드를 실행하려면 64 비트 커널이 필요하므로 아키텍처를 확인하십시오.

시스템이 / media / sda1에 chroot되어 있다고 가정하면 다음 과 같은 아키텍처를 결정할 수 있습니다.

ls /media/sda1/*

출력에 lib64가 보이면 아마도 64 비트 시스템 일 것입니다


그것은 여전히 ​​chroot 할 수 없습니다
Starx

2

armhf arch의 이미지를 만들 때도 같은 문제가있었습니다. 설치 qemu-user-static한 다음 chroot bin 폴더에 복사해야합니다.

sudo cp /usr/bin/qemu-arm-static /mnt/chroot/usr/bin

1

오류는 jail ( /mnt/temp)에 bash 쉘이 없거나 bash 쉘을 실행하는 데 필요한 라이브러리가 포함되어 있지 않음을 의미합니다.

다음과 같은 것을 사용하여 감옥을 만든 경우 :

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를 사용하거나 빈 대상 (예 : 가상 머신)에 우분투를 설치하고 전체 시스템의 tar 아카이브를 생성 한 다음 압축을 풉니 다 /mnt/temp.


0

실제로 이것은 64 비트 32 비트 비 호환성입니다.

비록

cp /bin/bash /mount/temp/tmp

(32 비트 exec를 tmp디렉토리 의 새 루트에 복사합니다.

chroot /mount/temp /tmp/bash

chroot모든 명령은 여전히 ​​실패합니다. 당신은 그들을 온통 복사해야 할 것입니다.


-1

필자의 경우 64 비트 버전의 Linux로 chroot하려고했지만 현재 Linux는 32 비트였습니다.

디스크 이미지 (여러 컴퓨터에서 복제하기위한 마스터 이미지)를 마운트했습니다.


위의 @GrandOxymore와 같은 답변입니다.
Karl Richter

@KarlRichter 비슷하지만 동일하지는 않습니다. 64 비트 OS에서 32 비트 프로그램을 실행하는 것은 64 비트 가상 환경 (또는 OS)에서 32 비트 프로그램을 실행하는 것과 다릅니다. 32 비트 게스트 운영 체제를 실행할 수 있으며 정상적으로 실행되었을 것입니다.
azuer88

-2

나는 버그라고 생각합니다.

`/ bin / bash '

하지만

'bin / bash'

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.