비지박스 환경으로 루트를 전환하는 방법은 무엇입니까?

비지박스 환경으로 루트를 전환하는 방법은 무엇입니까?

오래된 커널과 uClibc를 사용하는 장치용 코드를 컴파일하기 위해 buildroot를 사용하여 구축된 파일 시스템이 있습니다.

이제 fs를 입력하고 싶습니다 chroot. 문제는, 난 /bin/bash, 그냥 /bin/busybox. 대신
chroot를 사용하는 것에 대해 어떻게 말해야 합니까 busybox ash?

chroot에 대한 링크를 만들려고 시도했지만 busybox ashchroot가 여전히 표시됩니다 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"를 사용하십시오.

관련 정보