qemu/system-nspawn の PLATFORM 変数

qemu/system-nspawn の PLATFORM 変数

私はカスタムRaspbianインストールを使用していますqemu。つまり:

systemd-nspawn -q --bind /usr/bin/qemu-arm-static -D $MOUNTPATH /bin/bash << EOF
DEBIAN_FRONTEND=noninteractive
export DEBIAN_FRONTEND
apt-get install -y samba
EOF

私のホストはRaspbian BusterをターゲットにDebian 9.9を実行しています。このようなコマンドを実行すると、次のようなエラーがたくさん発生します。

エラー:ld.so:/etc/ld.so.preloadで '/usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so'オブジェクトをプリロードできません(共有オブジェクトファイルを開くことができますなし):無視されます。

${PLATFORM}変数を拡張できないようです。このエラーがホストで発生するのか、エミュレートされたターゲットで発生するのかはわかりません。とにかく、私は努力する:

export PLATFORM=v7l

ホスト端末とnspawnスクリプトにはありますが、何も変更されません。出力も読みましたsystem-nspawn --helpが、プラットフォームに関する内容は見つかりませんでした。

私は何をすべきですか?

ベストアンサー1

擬似変数は、${PLATFORM}実際には他のライブラリを参照するためのバイナリとライブラリに組み込まれたリンカフラグで、複数の可能性があるときにプラットフォームに適したライブラリを見つけることができます。

バラよりmanld.so詳細については、「Rpathトークンの拡張」セクションを参照してください。

の特定のケースでは、${PLATFORM}auxvベクトルから取得されます。コマンド(デフォルトではすべてのコマンド)を実行してLD_SHOW_AUXV=1環境変数をエクスポートして、ld.soにこのベクトルをダンプするように指示できます。/proc/$pid/auxvファイルを確認して、実行中のプロセスのauxvを見つけることもできます。

これは出力と一致するかもしれませんが、出力の他のフィールドの1つにすることもuname -mできます。uname -puname

実際にはLinuxネームスペースだけを適用するため、nspawnでは制御できないようです。プラットフォームの外観を変更するには、実際の仮想化が必要な場合があります。 nspawnの代わりにQEMU(Raspbianアーキテクチャ用)で実行できる場合は、その効果があると確信しています。 QEMUがLinuxカーネルを起動するので正しいプラットフォームでこれらすべてが機能するには、正しい設定を取得する必要があります。

おすすめ記事