外部chrootから/ procにアクセスする

外部chrootから/ procにアクセスする

デフォルトでは、以下に説明するようにQEMUを使用して外部chroot環境を設定しようとしています。https://www.hellion.org.uk/blog/posts/foreign-chroots-with-schroot-and-qemu/

ホストシステムはUbuntu x86_64(Github Actions)で、arm用のDebianを実行する外部chrootがあります。

これで、aptインストールでOCamlを設定しようopamとした後、.OCamlが見つからずopam init失敗します。/proc/sys/kernel/overflowuid

もっと深く掘り下げてみると、/procそのルート刑務所の内部は完全に空でした。sudo mount -B /proc $CROSS_ROOT/proc実行直後にスクリプトに追加しようとしましたが、debootstrapまだ役に立ちません/proc。まだ空です。と同じですsudo mount -t proc /proc $CROSS_ROOT/proc

また、チョールート監獄から飛び出した時見たがmount | grep proc見た/procことがなかったCROSS_ROOT/proc

私が気づいたもう1つの奇妙なことは、インストールmountリストを表示するためにchroot刑務所の内部を実行するとmtab見つからないというエラーメッセージが表示されることです。これは正常ですか、それともここに別の問題があることを示していますか?

私は小さなバグを排除するために$CROSS_ROOTCIスクリプトでこれを何度も使用していましたが、debootstrap変数が空の場合、他のエラーもたくさん発生すると思います。

/procなぜchroot刑務所の内部を見ることができないのですか?

答え1

debootstrap2つのステップで実行されます。

sudo debootstrap --variant=buildd --include=fakeroot,build-essential,sudo --arch=armhf --foreign buster $CROSS_ROOT $CROSS_MIRROR
sudo chroot $CROSS_ROOT ./debootstrap/debootstrap --second-stage

インストールは、/proc2つのステップの間ではなく2番目のステップの後に完了する必要があります。 2番目のステップが/proc再び削除されます。 (質問で言及されたソースは、qemu-arm-static実際には2つのステップの間に発生する必要があるchroot内にいくつかの追加の魔法を提供します。として撤回することができます。)

mountコマンドを2番目のステップに移動すると、debootstrapchroot Jailが表示されます/proc

関連情報