
나는 이 튜토리얼의 지침을 따르고 있었습니다방법: Live CD에서 Grub 2 제거 및 재설치, 명령을 실행하면서 1단계에서 오류가 발생했을 때
sudo chroot /mnt/temp
오류는 다음과 같습니다.
chroot: failed to run command `/bin/bash': Exec format error
그건 어디서 나온 걸까요? 어떻게 통과하나요?
답변1
올바른 Live CD를 사용하고 있는지 확인하십시오. 예를 들어, 64비트 CD 대신 32비트 CD를 사용하고 있지 않은지 확인하십시오. 64비트 코드를 실행하려면 64비트 커널이 필요하므로 아키텍처를 확인하세요.
chroot할 시스템을 마운트했다고 가정합니다./미디어/sda1, 아키텍처를 결정하기 위해 다음을 수행할 수 있습니다.
ls /media/sda1/*
출력에 lib64가 표시되면 아마도 64비트 시스템일 것입니다.
답변2
armhf 아치에 대한 이미지를 만들 때도 동일한 문제가 발생했습니다. 설치 qemu-user-static
한 다음 chroot bin 폴더에 복사 해야 했습니다 .
sudo cp /usr/bin/qemu-arm-static /path/to/mount/usr/bin
당신은 실행해야 할 수도 있습니다
systemctl restart systemd-binfmt.service
그런 다음 환경으로 chroot할 수 있어야 합니다.
답변3
오류는 귀하의 감옥( /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
.
답변4
실제로 이는 64비트 32비트 비호환성입니다.
비록
cp /bin/bash /mount/temp/tmp
(32비트 exec를 tmp
디렉터리 의 새 루트에 복사합니다.
chroot /mount/temp /tmp/bash
chroot
괜찮습니다. 모든 명령이 여전히 실패합니다. 당신은 그것들을 모두 복사해야 할 것입니다.