別のアーキテクチャでChrootを使用しますか?

別のアーキテクチャでChrootを使用しますか?

ARMプロセッサで使用するファイルシステムイメージがありますが、まずデスクトップなどのアイテムをインストールしたいと思います。だから私のLinuxシステムにファイルシステムをマウントし、そこからchrootしてそのシステムのエントリをインストールしたいと思います。これは可能ですか、それともi386とARMソフトウェアの違いによって中断されますか?

可能であればどうすればよいですか? [pathtorootfs]をchrootしようとすると、bashが見つからないというエラーが発生します。

答え1

さまざまなアーキテクチャを使用してソフトウェアを実行できますQEMUそしてbinfmt_misc。透明なサポートを提供するディストリビューション(例えばDebian 派生物の使用binfmt-support)これは非常に簡単です。

  1. binfmt-supportメインシステムにインストールされます。
  2. qemu-user-staticメインシステム(Debian派生製品)にQEMUの静的ユーザーモードバイナリをインストールします。
  3. 適切なエミュレータをchrootにコピーします.../usr/bin(あなたの場合はおそらくqemu-arm-static)。
  4. chrootあなたのシステムに。

これが望ましいかどうかは議論の余地があります。確かに、コンパクトなARMシステム用のSDカードを設定するためによく使用されます。何をしても、chroot上記のQEMUバイナリに加えて、ARMバイナリのみをシステムにコピーする必要があります。そうしないと、ARMデバイスを起動した後にシステムが機能しなくなります。

文書化されているように、debootstrapこれは他のビルドツールでよくサポートされています。schroot例えば渡すイアン・キャンベル

答え2

可能ですが、まずいくつかの措置を講じる必要があります。

明らかに、あなたのハードウェアは基本的にARM命令セットをサポートしません。これは、システムがARM命令を解釈し、それをi386に対応する命令に変換できるようにするいくつかのソフトウェアをインストールする必要があることを意味します。qemu-userこれは可能です。

次に、ARMバイナリを起動するときに正しいqemu-userバイナリが起動するようにシステムを設定する必要があります。これはbinfmt-miscサブシステムで可能です。

Debian システムでこれを行う方法の詳細な手順については、次をご覧ください。Debian Wiki

しかし、明らかにこれはエミュレーションのために非常にゆっくりと実行されるので、それは価値がないでしょう。

答え3

いいえ、動作しません。使用するソフトウェアをクロスコンパイルする必要があります。最初からクロスLinuxまたは、ターゲットアーキテクチャ/マシンで実行されているシステムにパッケージをインストールし、コマンドラインを使用します。

関連情報