amd64 で mips パッケージをビルド: Exec 形式エラー chroot: 'mount' コマンドを実行できません。

amd64 で mips パッケージをビルド: Exec 形式エラー chroot: 'mount' コマンドを実行できません。

実行中のamd64システムでmipsアーチ用のDebian / Ubuntuパッケージをクロスビルドしようとしています。私はPubilderからsbuildに至るまでいくつかのアプローチを試しましたが、常に失敗しました。後者については、Debian 9を新しくインストールするときは次のようにします。

apt-get -y install sbuild
sbuild-createchroot --arch=mips --make-sbuild-tarball=/srv/chroots/wheezy-sbuild.tgz wheezy /srv/chroots/wheezy http://archive.debian.org/debian/

しかし、結局私は次のようになります。

W: Failure trying to run: chroot /srv/chroots/wheezy dpkg-deb -f /var/cache/apt/archives/dpkg_1.16.18_mips.deb Version
W: See /srv/chroots/wheezy/debootstrap/debootstrap.log for details
W: Failure trying to run: chroot /srv/chroots/wheezy mount -t proc proc /proc
W: See /srv/chroots/wheezy/debootstrap/debootstrap.log for details
E: Error running debootstrap at /usr/sbin/sbuild-createchroot line 268.

ログには以下が含まれます。

chroot: failed to run command 'dpkg-deb': Exec format error
chroot: failed to run command 'mount': Exec format error

私が試したすべてがこれで終わりました。実行形式エラーまた、別のコマンドを試してみてください。

ベストアンサー1

Debian 9 のみを対象にすると、クロス構築が容易で簡単になります。 Debian 8でも動作しますが、Debian 7では少し複雑です。 (EmDebianはDebian 7より前に削除されました。)

しかし、QEMUを実行できるすべてのシステムでWheezyパッケージをビルドする簡単な設定がありmipsel、そこからパッケージをビルドすることはまだルーターでビルドするよりもはるかに高速です。

  • mipsel次のコマンドを使用して設定を開始します。chrootdebootstrap

    sudo debootstrap --arch=mipsel --foreign --variant=buildd \
                     --include=fakeroot,build-essential \
                     wheezy ./wheezy-mipsel-chroot \
                     http://archive.debian.org/debian
    
  • QEMUをインストールし、binfmt_misc以下をサポートします。

    sudo apt install qemu-user-static binfmt-support
    
  • QEMUバイナリを次の場所にコピーしますchroot

    sudo cp /usr/bin/qemu-mipsel-static wheezy-mipsel-chroot/usr/bin
    

    (静的に接続されているのでうまく動作します)

  • chrootと入力して完了しますdebootstrap

    sudo chroot wheezy-mipsel-chroot /debootstrap/debootstrap --second-stage
    

これでchrootを使用してパッケージを構築できます。パッケージを手動でchrootにコピーして入力し、ビルド依存dpkg-buildpackage関係をインストールしてビルドします。

としてビルドするには、sbuild少なくともschrootchrootを登録する必要があります。次の名前のファイルを追加します/etc/schroot/chroot.d/wheezy-mipsel-sbuild

[wheezy-mipsel-sbuild]
description=Debian wheezy/mipsel autobuilder
groups=root,sbuild
root-groups=root,sbuild
profile=sbuild
type=directory
directory=/usr/var/backups/steve/wheezy-mipsel-chroot
union-type=overlay

chrootが正しく機能するには、特にchroot内にグループを設定し、sbuild所有権を変更する追加の手順が必要になる場合があります。sbuild

おすすめ記事