マルチストラップを使用したLinuxビルドソフトウェアの作成

マルチストラップを使用したLinuxビルドソフトウェアの作成

私はマルチストラップを使用して構築されたARM CPUとDebian Jessieを使用して組み込みデバイスを開発しています。このシステムに少しパッチを適用したModemManagerのバージョンをインストールする必要があるようです。私が要求するのは、これを行う方法のガイドラインです。

これまで試したことは、マルチストラップによって生成されたrootfsでchrootし、apt-getを使用してModemManagerのソースコードをダウンロードしてchrootでビルドすることです。これまで満足できなかった依存関係のため、構成スクリプトに合格できませんでした。

モデムのシリアルポートをスキャンしてハードウェアを混乱させる可能性があるModemManagerの既知の問題を解決するには、パッチが必要です。 udevルールを使用してデバイスをブラックリストに追加することでこの問題を解決できますが、この場合、シリアルポートはttyサブシステムの一部であるため、ブラックリストに追加することはサポートされていません。 ModemManagerのソースコードでこれを確認しました。

私もこの問題を解決するためのより簡単な方法を見つけるのに非常にオープンですが、これまではそれを見つけませんでした。

答え1

この特定の質問は古いですが、マルチストラップを使用してマルチストラップで生成されたdebian rootfsに特定のソフトウェアの修正版を追加するときによく見られる問題です。

私はマルチストラップによって生成されたchrootfsでソフトウェアをコンパイルするのが難しいので、クロスコンパイルとマルチストラップを混在させません。

代わりに、修正されたソフトウェアを簡単にコンパイルします。ターゲットARMアーキテクチャ用のクロスコンパイル環境がすでに存在する可能性がありますが、そうでない場合は、現在(および2016年)IMOで最も簡単な方法は、目的のターゲットを持つRaspberry PiなどのシングルボードLinux / ARMコンピュータを使用することです。 OS、そこに必要なビルドツールをインストールし、そこから修正されたソフトウェアをコンパイルします。ネイティブコンパイルを使用するため、クロスコンパイルを設定する必要はありません。コンパイル後に生成されたバイナリをPCのマルチストラップ環境にコピーします。

マルチストラップを正常に実行し、chrootですべてのパッケージを設定したら、変更されたバイナリをrootfsにコピーしてから、ターゲットハードウェアでrootfsを使用します。

ここで、「バイナリ」とはコンパイルされた実行可能ファイルを意味するかもしれませんが、カスタムの.debパッケージ(コピーではなくchrootからdpkgを使用して最終的にインストールされます)を意味するかもしれません。後者は修正に対するより多くの保護を提供します。apt update; apt upgradeこれは、組み込みシステムが実行時にソフトウェア更新プログラムを検索できる場合は、修正を元に戻すことができないように.debバージョン番号を変更する可能性があるためです。

関連情報