오래된 커널과 uClibc를 사용하는 장치용 코드를 컴파일하기 위해 buildroot를 사용하여 구축된 파일 시스템이 있습니다.
이제 fs를 입력하고 싶습니다 chroot
. 문제는, 난 /bin/bash
, 그냥 /bin/busybox
. 대신
chroot를 사용하는 것에 대해 어떻게 말해야 합니까 busybox ash
?
chroot에 대한 링크를 만들려고 시도했지만 busybox ash
chroot가 여전히 표시됩니다 failed to run command /bin/bash. no such file or directory
.
답변1
chroot /path/to/fs /bin/ash
자세한 내용은 매뉴얼 페이지를 참조하십시오 chroot
.
답변2
Busybox에는 ldd 스크립트가 포함되어 있지 않습니다. 대신 이렇게 실행할 수 있습니다.
LD_TRACE_LOADED_OBJECTS=1 /bin/busybox
libresolv.so.2 => /lib/libresolv.so.2 (0xb6ece000)
libc.so.6 => /lib/libc.so.6 (0xb6d8c000)
/lib/ld-linux-armhf.so.3 (0xb6ef2000)
보시다시피 이 경우 busybox는 여러 라이브러리에 의존합니다. 그래서 아래와 같이 디렉토리 구조를 생성하고 ls 명령어를 실행할 수 있게 되었습니다.
# pwd
/home/<jail>
# ls -R
.:
bin lib sbin
./bin:
busybox login ls sh
./lib:
ld-linux-armhf.so.3 libc.so.6 libresolv.so.2
...
# chroot /home/<jail>/ ls
bin lib sbin
답변3
"ldd busybox"를 실행하고 연결된 공유 라이브러리를 chroot에 복사해야 합니다. 일반적으로 링크를 시뮬레이션하므로 라이브러리에서 "cp -L src dst"를 사용하십시오.