ビジボックス環境にルートを切り替えるには?

ビジボックス環境にルートを切り替えるには?

古いカーネルと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」を使用します。

関連情報