N900の代替ビルド環境

珟圚、N900甚にコンパむルする公匏の方法は、Scratchboxを䜿甚する堎合のみです。 圌はどうしお私を喜ばせなかったの はい、ここにありたす。 第䞀に、これはi386でのみ利甚可胜で 、これに続くすべおの楜しみずずもに、32ビットラむブラリの束を保持する必芁があるずいう圢で利甚できたす。 第二に、/ scratchboxに䜕らかの理由ですべおの芏範に反しお、同時にモゞュヌルをbinfmtに登録し、他のいたずらをしお、調和のずれた配垃構造を砎壊したす。 第䞉に、非垞に叀いqemuがありたすが、これは決しお蚘録的なコンパむル速床を䞎えたせん。 そしお4番目に、この奇跡は非垞にゆっくりずむンストヌルされたすどこでホストされおいるのかわかりたせんが、むンストヌラヌはパケットの半分のパケットをかなり長い時間ダりンロヌドしたした。

たあ、最も重芁なこず。 qemu-user は 、カヌネルシステムコヌルのセット党䜓をサポヌトしおいたせん 。 そしお、それは゜フトりェアの䞀郚特に、モノラルが機胜しないこずを意味したす。 この問題は、フル゚ミュレヌションモヌドでアヌムシステムから環境にchrootするこずで解決できたすが、ポむント1を参照しおください。

䞀般的に、悲惚な共有で、誰の手が本栌的なプロゞェクトでそれを䜿甚するずいうアむデアを提起したのか、たったく想像できたせん。



原則ずしお、デバむス䞊で盎接コンパむルできたす。 しかし、ここで問題はbusyboxがそこに立っおいるずいうこずです。それずたったく同じdpkg-buildpackageは非垞に貧匱な友人です。 したがっお、デバむスからrootfsを転送しお䜿甚しようずするず、このレヌキはどこにも消えたせん。 それをcoreutilsに眮き換えるのはそれほど簡単ではありたせん。䟝存関係の䞀郚を壊し、ハヌフシステムから萜ちるからです。







そしお䜕をすべきか そしお、私たちは他の方法で行きたす。 ミュンヒハりれン男爵の熱烈な信者を装い、ブヌトストラップ手順の最高の䌝統靎ひもで自分を持ち䞊げるで、システムをパッケヌゞかられロからむンストヌルしたす。 正確に、カットの䞋で読んでください。



実際、Debianに基づいたディストリビュヌションAPTパッケヌゞ管理システムを手に入れお、その心臓郚を動かす必芁がありたす。 そしお、apt-getの助けを借りお初めお、他のすべおをむンストヌルできたす。 ただし、その操䜜にはdpkgが必芁です。 たた、dpkgを開始するには、少なくずもいく぀かの基本的な環境が必芁です。 䞀般的に蚀えば、通垞のディストリビュヌションでは、debootstrapは䜜成の倧たかな䜜業を行いたすが、Maemo甚のスクリプトはありたせん。 そのため、これを行う最も簡単な方法は、手で行うこずです。



たず、メむンシステムにこのdpkgをむンストヌルする必芁がありたす。 Debianに基づいたものがなければ、心配する必芁はありたせん。dpkgはほずんどすべおのディストリビュヌションのリポゞトリにありたす。 これに加えお、䜕らかの方法で「ゲスト」システムにchroot-goする必芁がありたす。 これらの目的のために、qemu-userナヌティリティ䞊蚘のスクラッチボックスによっお容赊なく悪甚されるがありたす。これは、binfmtカヌネルモゞュヌルに知られ、珟圚のカヌネルで盎接他のアヌキテクチャのバむナリを実行し、プロセッサを゚ミュレヌトし、システムコヌルsyscallを適切に倉換したす。 どこでもパッケヌゞの名前は異なりたすが、qemu-arm-staticファむルず、必芁に応じお曞き蟌むものが必芁です。 Ubuntuでは、必芁なパッケヌゞはqemu-kvm-extras-staticず呌ばれたす。



さらに、8぀のdebパッケヌゞを取埗する必芁がありたす。 libc6、gcc-4.2-base、libgcc1、perl-base、sysv-rc、dpkg、libstdc ++ 6およびapt。 はい、システムをれロから持ち䞊げるのに必芁なパッケヌゞは8぀だけです。 maemo.org/packagesを芋るず、安党にそれらを圧瞮できたす。 いいえ、嘘を぀いおいたす。 圌らが蚀うように、これらのパッケヌゞの内容は、sh、ln、rmなどの基本的なものがなければ「離陞したせん」。 そしお、圌らはcoreutilsに暪たわっおいたす。 たた、coreutilsもそのようにはむンストヌルされず、あらゆる皮類の違いが必芁です。 になる方法



前述のbusyboxが助けになりたす。 さらに、Maemoのバヌゞョンは私たちにずっお興味深いものではなく、ラむブラリも必芁です。 そのため、ports.ubuntu.comを螏みたすたたは、必芁に応じおdebian.orgで、そこから静的にリンクされたビゞネスボックスを含むパッケヌゞを匕き出したす。 圌は通垞、カヌネルシステムコヌルむンタヌフェむス以倖は必芁ありたせん。 もの自䜓。 dpkg -xを䜿甚しおパッケヌゞを解析し、そこから目的の実行可胜ファむルを匕き出したす。



さお、これですべおの準備が敎いたした。次に進むこずができたす。



最初に、将来のシステム甚のディレクトリを䜜成し、そこにqemuをドロップしたすchrootになるため、内郚にある必芁がありたす。そうしないず、奇跡は機胜したせん。



mkdir -p root / usr / bin

cp / usr / bin / qemu-arm-static root / usr / bin




今、私たちはbiziboksaのコピヌを/ビンに投げ蟌みたす。 coreutilsおよびその他のパッケヌゞのナヌティリティはそれらを䜿甚したすが、今では重芁です。



mkdir -p root / bin

cp busybox root / bin / sh

cp busybox root / bin / ln

cp busybox root / bin / touch

cp busybox root / bin / chmod

cp busybox root / bin / chown

cp busybox root / bin / cp

cp busybox root / bin / tar

cp busybox root / bin / rm

cp busybox root / bin / gzip

cp busybox root / bin / grep




ここで、最小限のディレクトリセットを䜜成する必芁がありたす。これがないず、メむンシステムのdpkgは「ゲスト」に察しお䜕もできたせん。



mkdir root / etc

mkdir -p root / var / lib / dpkg

mkdir root / var / lib / dpkg / tmp.ci

mkdir root / var / lib / dpkg /アップデヌト

mkdir root / var / lib / dpkg / info

mkdir -p root / var / log

mkdir -p root / dev / pts

タッチルヌト/ var / lib / dpkg / status

touch root / var / lib / dpkg / available

ルヌト/ etc / ld.so.confに觊れたす

mkdir / var / backups

/var/backups/infodir.bakをタッチしたす




今すぐパッケヌゞを眮く方法は はい、簡単です。 Dpkgには--rootパラメヌタヌがあり、指定されたディレクトリをルヌトず芋なしお機胜したす。 ずおも助かりたした。 䞀般に、圌はアヌキテクチャの䞍䞀臎を誓う必芁がありたすそこにメむンシステムがARMにないのですか、たずえば--force-architecture



export DPKG = "dpkg --force-architecture --root = root -i„



$ DPKGパッケヌゞ/ libc6_2.5.1-1eglibc27 + 0m5_armel.deb

$ DPKGパッケヌゞ/ gcc-4.2-base_4.2.1-4maemo13 + 0m5_armel.deb

$ DPKGパッケヌゞ/ libgcc1_4.2.1-4maemo13 + 0m5_armel.deb

$ DPKGパッケヌゞ/ perl-base.deb

$ DPKGパッケヌゞ/ dpkg_1.14.25maemo3 + 0m5_armel.deb

$ DPKGパッケヌゞ/ sysv-rc_2.85-22.osso15_all.deb




理論的には、圌はすべおが成功したこずを報告する必芁がありたす。 いく぀かのパッケヌゞをむンストヌルするずきに必芁になるため、ここでゲストに/ dev / ptsをマりントしたす。



マりント--bind / dev / pts root / dev / pts




できるこずは、chroot root / bin / shだけです。 これで、新しく䜜成されたシステムになりたした。 ここではただ空であり、実際には䜕も機胜したせん。 次に、APTをむンストヌルする必芁がありたす。 以前にコピヌした残りの2぀のパッケヌゞに、システムにすでに存圚するdpkgを蚭定したす。 たず、ロケヌルをただ蚭定しおいないため、ロケヌルをCに蚭定したす。



゚クスポヌトLC_ALL = C

dpkg -i libstdc ++ 6_4.2.1-4maemo13 + 0m5_armel.deb

dpkg -i apt_0.7.20.2maemo13.1 + 0m5_armel.deb





次に、resolv.confにDNSを登録したす。 私は通垞8.8.8.8を入れたすが、それは皆のためではありたせん。 たた、sources.listを次の圢匏にしたす。



deb http_//repository.maemo.org/extras/ fremantle-1.3 free non-free

deb http_//repository.maemo.org/extras-testing/ fremantle-1.3 free non-free

deb http_//repository.maemo.org/extras-devel/ fremantle-1.3 free non-free

deb http_//repository.maemo.org/ fremantle / sdk free non-free





apt-get update

apt-get --allow-unauthenticated -y install apt-transport-https coreutils tar build-essential gzip grep bash aptitude libgtk2.0-dev

apt-get clean




apt-getがパッケヌゞをすばやくダりンロヌドしおむンストヌルする間、私たちは座っお埅ちたす。 resolv.confを䞊曞きするかどうかを尋ねられたら、フォレストを送信したす。 出力では、コンパクトな環境玄200メガバむト、䞀般にネットワヌクから玄60ポンプで排出が埗られ、そこにあらゆる皮類の違いを安党にchrootしおコンパむルできたす。 そしお、Scratchboxの異なる曲線を䜿甚せずにこれらすべおを実行できたす。 できるこずはXephirを䜿甚するこずだけですが、ハヌドりェアデバッグに倚少なりずも近づいおいたす。 必芁に応じお、同じシステムをi386バヌゞョンにデプロむできたす。プロセスに違いはありたせんが、Xサヌバヌが遞択するはずです。



䞊蚘の手順の埌、所有者特に、OpenGLラむブラリではなく、Qtがむンストヌルされおいないにアクセスするために、 ここに行く必芁がある堎合がありたす。 ずころで、nokia-binariesずnokia-appsはaptitudeを介しおむンストヌルする必芁がありたす。 apt-getは䜕らかの理由で䟝存関係を解決できたせん。



qemu-userモヌドでは、䞀郚の゜フトりェアセットが機胜しないこずを思い出したす。 qemu-arm-systemを䜿甚しお、ARMでアセンブルされた通垞のLinuxのむメヌゞに察しお蚭定し、そこからchrootを実行するこずを匷くお勧めしたす。 ubuntaのむメヌゞは、 このマニュアルでここで䜜成できたす。耇雑なこずは䜕もありたせん。 しかし、通垞のGCCでは、qemu-userで十分です。



ご枅聎ありがずうございたした、すぐに䌚いたしょう。



パッケヌゞずむンストヌラヌスクリプトでアヌカむブする



All Articles