나는 실행하면 chroot
명령을 오류가 주어진다 :
failed to run command ‘/bin/bash’: No such file or directory
나는 실행하면 chroot
명령을 오류가 주어진다 :
failed to run command ‘/bin/bash’: No such file or directory
답변:
이 오류는 chroot 안에/bin/bash
디렉토리 가 없음을 의미합니다 . 디렉토리 에서 (또는 다른 쉘의) 실행 파일이있는 위치를 가리켜 야합니다 .bash
chroot
당신이 경우 /mnt/somedir/usr/bin/bash
다음 실행chroot /mnt/somedir /usr/bin/bash
/root/.bashrc
또는 /root/.bash_profile
에 일부 명령 / 라인이 실패하여 발생할 수 있습니다 chroot
. 이 파일들의 이름을 일시적으로 바꿀 수 있습니까? 또한 bash
실행 가능한지 확인할 수 chmod +x /chroot/bin/bash
있습니까 ( )?
나는 /bin/bash
chroot 된 디렉토리 안에 있었지만 그 안에 / lib와 / lib64가 없었습니다. chroot의 메시지는 더 설명적일 수 있습니다. "그러한 파일이나 디렉토리가 없다"는 것은 "이것을 실행할 수 없습니다 ..."를 의미합니다.
/bin/bash
libc, ld-linux, libdl 등에 의존 ldd /bin/bash
하므로 필요한 라이브러리를 볼 수 있습니다 .
1) mount -o bind
다음과 같이 chroot에서이 디렉토리를 사용할 수 있습니다. 2) chroot 된 env를 신뢰하지 않으면 다음과 같이 라이브러리를 chroot에 복사 할 수 있습니다.
cp -a /usr rootfs/
cp -a /lib rootfs/
cp -a /lib64 rootfs/
chroot
$SHELL
기본적으로 환경 변수에 설정된 셸을 시작하려고 하지만 새 루트 디렉토리 에서 셸을 찾습니다.이 포함되어 /bin/bash
있지 않으므로 시작할 수 없습니다.
chroot에 새 루트 내에서 다른 프로그램을 매개 변수로 추가하여 다른 프로그램을 시작하도록 지시 할 수 있습니다.
chroot /your/new/root /bin/foo --options...
명령의 경로는 새 루트 내에서 해석 되므로이 예제에서 호출 된 프로그램은 실제로/your/new/root/bin/foo
원격 서버에서 chroot 된 계정으로 ssh하려고 할 때 동일한 오류가 발생했습니다. 필자의 경우 원격 lib64 디렉토리에 다음 파일이 없습니다. 서버는 Centos6.9입니다
ld-linux-x86-64.so.2
다음을 실행하여 수정되었습니다.
cp /lib64/ld-linux-x86-64.so.2 /secure/jail/lib64/
cp -r /lib /lib64 /secure/jail
그것을 고 치면서 lib와 lib64 모두에서 무언가가 필요했고 정확히 무엇을 알아내는 데 신경 쓰지 않았습니다. (내가 multiarch을 사용했다 아마도 때문에)
크로스 컴파일을 수행하는 경우 qemu-arm-static (armhf에 대해이 작업을 수행하고 있음)을 / mnt / somedir / usr에 복사하면 / mnt / somedir / bin / bash를 실행할 수있는 qemu 시뮬레이터를 사용해야합니다. / bin chroot를 수행 할 수 있습니다.
자세한 내용은 https://blog.lazy-evaluation.net/posts/linux/debian-armhf-bootstrap.html에서 확인하십시오.