問題タブ [openembedded]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
openembedded - 1 つの bitbake レシピ スクリプトから 2 つのパッケージ イメージを作成する (local.conf ファイルで 2 つの MACHINE 変数を定義する方法)
単一の bitbake レシピ スクリプトから 2 つのパッケージ イメージを作成する方法。これらのパッケージは同じソースから作成されており、一部のパッチのみが異なるはずです。
> または
2 台のマシンで openembedded を同時にビルドする方法、local.conf ファイルで複数の MACHINE 変数を定義する任意の方法で、ビルド中に 2 台の異なるマシンのイメージをビルドして作成する方法。
linux - Open Embedded の起動の問題
そのため、私は現在、i.MX53 プラットフォーム用にビルドするためにOpen Embeddedを手に入れようとしていますが、OE コンセプトの主な概要と、フォルダー構造がどうあるべきかを理解するのに苦労しています。見る。
ですから、カーネルルートで make コマンドを使用しない理由を誰かが簡潔にまとめてくれることを期待していました。
さらに重要なことに(私にとって)、 i:MX53QSB用に構築されたOe-coreとmeta-fsl-armレイヤーを持つフォルダー構造がどうあるべきかを知りたいです。
Which file am I supposed to run with bitbake to get a custom image for my device?
embedded-linux - 組み込み Linux では --hash-style が 1 つだけです。なんで?
OpenEmbedded ベースの Aragoを使用して、ソフトウェア パッケージをビルドして rootfs にデプロイしようとしています。残念ながら、ソフトウェア パッケージにはビルド済みの共有ライブラリが含まれています。私が理解している限りでは、Arago は Linux ディストリビューション全体を で構築し--hash-style=gnu
ていますが、これらの共有ライブラリは で構築されているのではない--hash-style=sysv
かと思います。少なくともビルドは「ELF バイナリに GNU_HASH がありません」という QA 問題で停止します。
ハッシュの目的を理解しています。しかし、システムが稼働しているときにそれらがどのように使用されているかはわかりません。
システム内のすべての ELF に対して 1 つのハッシュ スタイルが必要なのはなぜですか? 動的リンカがその場でハッシュ スタイルを決定し、それをそのまま使用できないのはなぜですか?
arm - Freescale i.MX28 で基本的な OpenEmbedded-Core を起動できない
OpenEmbedded-Core のFreescale ARM レイヤーを使用して、Freescale の ARM i.MX28 の評価キットでOpenEmbedded- Coreをビルドして起動しようとしています。残念ながら、基本的な「Getting Started」ガイドは見つかりません ( Yocto の Getting- Started Guide はありますが)。残念ながら、ボードのデバッグ シリアル ポートで基本的なコマンド プロンプトを正常に起動するところまで「開始」できませんでした。
これが私がつなぎ合わせることができたものであり、これまでになんとか達成できた範囲です.
ソースを取得する
環境をセットアップする
これにより、新しいサブディレクトリが作成されbuild
、特定の環境変数が設定されます。
構成の編集
conf/bblayers.conf
およびlocal.conf
ファイルを編集します。
conf/bblayers.conf
には、meta-fls-arm
とのmeta-oe
レイヤが追加されている必要がありBBLAYERS
ます。例えば:
でconf/local.conf
、次のように設定しました。
建てる
このビルドを一晩実行しましたが、正常に完了しました。出力ファイルは~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images
.
以下で説明するように、試してみたい起動オプションが 2 つあります。SD カードからの起動は簡単ですが、SD カードにイメージを書き込むのにかなり長い時間 (~30 分) かかります。TFTP + NFS からの起動は高速ですが、より多くの設定が必要です。
SDカードから起動
イメージを SD カードに書き込みます。
30 分ほどかかりました (3.5 GB ファイル)。次に、ボードの SD カード スロット 0 に挿入し、電源を入れました。カーネルのロードまで到達し、停止しました。
TFTP + NFS から起動
まず、U-Boot を SD カードに書き込もうとしました。
次に、ボードの SD カード スロット 0 に挿入し、電源を入れました。しかし、デバッグシリアルポートで得たのは次のとおりです。
そこで、Freescale の U-Boot for i.MX28 ディストリビューション (LTIB ディストリビューションから) を SD カードに使用することにしました。DHCP からのパラメーターを使用して、NFS ブートに適した U-Boot パラメーターを設定しました。
次の DNSmasq 設定で DD-WRT ルーターに接続しました。
ホスト PC で、TFTP サーバーをセットアップしてuImage
からファイルを提供しました~/oe-core/freescale-arm/oe-core/build/tmp-eglibc/deploy/images/
。
また、ルート ファイル システムを提供するルート NFS サーバーもセットアップしました。を提供するように編集/etc/exports
しました/home/craigm/rootfs
。ルート ファイル システムを抽出しました。
次に、U-Boot SD カードをボードの SD カード スロット 0 に挿入し、電源を入れました。それはこれまでに到達し、その後停止しました:
シリアルコンソールなしで実行されているのか、それとも他の問題があるのか わかりません。で ping を実行できますが192.168.250.142
、Telnet や SSH で接続できません。
質問
- Freescale の i.MX28 で OpenEmbedded-Core を使用するための「入門」ガイドはありますか?
- Freescale ARM 層は、実際に OpenEmbedded-Core や Yocto などで使用することを意図したものですか? これらのプロジェクトがどのように関連しているかはよくわかりません。
- Freescale の i.MX28 で OpenEmbedded-Core の最小イメージを起動することに成功した人はいますか? もしそうなら、あなたの手順は私の手順とどのように異なっていましたか?
- この段階では、問題がシリアル コンソールが機能していないだけなのか、それとも他の種類の問題なのかはわかりません。基本的なシステムの実行を妨げるこれらの問題を診断することは困難です。この時点で診断する方法についての指針はありますか?
- U-Boot が壊れて起動できなくなるのはなぜですか?
linux - 組み込みコアを開く: ビルドへのパッケージの追加
したがって、オープン組み込みコアと Igepv2 メタ レイヤーを使用して、仮想/カーネルの構築を完了しました。これに追加する場合:
これにソフトウェアパッケージを追加するにはどうすればよいですか?
オングストローム ディストリビューションをビルドしたい場合、oe-core レイアウトとは別のセットアップが必要であることがわかりました。
openembedded - ビットベイクでの変数割り当ての追跡
私はbitbake/openembeddedを使用していますが、パス変数の一部が正しく設定されていないため、レシピが失敗すると思います。具体的には、SRC_URIにファイルを追加していますが、エラーは、ファイルのコピーが間違ったパスを使用して行われたことを示しています。したがって
1)file://プロトコルを使用するときに使用される「現在の」パス変数を確認するにはどうすればよいですか?
2)ファイルの検索にどの変数が使用されているかを何らかの方法で確認した場合、依存関係グラフでその変数への割り当てを追跡できますか?つまり、bitbakeは、いくつかのレシピファイルのセットで変数への追加/追加に遭遇する必要があります。これを調べてエラーを見つけたいと思います。
ボーナスの質問:レシピのエラーを検出するための現在の「デバッグ方法」は原始的すぎると思います(たとえば、コマンドラインに-D -D -Dを追加し、その後、出力の山を通り抜けてヒントを探します) )。「プロ」はどのようにビットベイクレシピをデバッグしますか?
更新:レシピをデバッグするためのはるかに優れた方法を見つけました:
特定のレシピの「フェッチ」タスクが正常に完了すると、レシピの作業フォルダーが作成されます。このフォルダー内には、実行されたコード(run.do_fetch。######など)とレシピ内の各タスクの結果(log._do_fetch。######など)を含む「temp」サブフォルダーがあります。 。
「run..###」ファイルを調べると、変数の正確な値と、タスクに対して実行された正確なコマンド/Python関数がわかります。指定された「実行」の出力は、「実行」ファイルと同じID/番号で「log..###」ファイルに保存されます。どういうわけか、この非常に基本的な情報は、マニュアルを読んでいる間は登録されませんでしたが、レシピが失敗したときは常に「temp」フォルダーを調べます。
openembedded - 実行された実際のビットベイクコマンドを調べる方法
bitbakeは(呼び出しのパスに沿って)呼び出されたシェルコマンドを保存しますか?ログファイルでシェルコマンドの出力を見つけることができますが、実際のコマンドラインを表示したいと思います。
gcc - __libc_csu_finiと__libc_csu_initは、build-webosの指示に従っている間は未定義です
私はOpenWebOSをビルドしようとしており、build-webosGitHubREADMEに示されている計画に従っています。新しい32ビットUbuntu12.10インストールを使用しています。物事は少しでこぼこです。
しかし、あちこちで微調整を行うことで、エラーが発生する前に、2500または(またはその他)のうちステップ350に到達することができました。問題はglibcの構築の依存関係であり、それは不平を言っています
Webを検索すると、glibc自体を構築していないときにこれが発生するさまざまなケースが明らかになります。
ldの不満:関数 "_start"で、"__libc_csu_fini"および"__libc_csu_init"への未定義の参照
Cプログラムをldに直接リンクすると、`__libc_csu_fini`への未定義の参照で失敗します
ただし、これはカスタムEmbedded LIBCのビルド中です:eglibc。ですから、それは少し異なり、私が見つけることができる最も近いケースは、OpenEmbeddedリストのこの2009年のスレッドです。紛らわしいほど奇妙なWebOSビルド構造の紛らわしい「bakefile」を含むユニバースでパッチを実行する方法がわかりません。
失敗しているコマンドラインのモンスター私は少し以下に「単純化」します:
gcc -m32 -march = i586 --sysroot = / home / webos / build-webos / BUILD-qemux86 / sysroots / qemux86-tcbootstrap -nostdlib -nostartfiles -o iconv / iconvconfig -Wl、-dynamic-linker = / lib / ld -linux.so.2 -Wl、-z、combreloc -Wl、-z、relro -Wl、--hash-style = both csu / crt1.o csu / crti.o `gcc -m32 -march = i586- sysroot = / home / hostilefork / Projects / webos / build-webos / BUILD-qemux86 / sysroots / qemux86-tcbootstrap --print-file-name = crtbegin.o` iconv / iconvconfig.o iconv / strtab.o iconv/xmalloc。 o iconv / hash-string.o -Wl、-rpath-link = / home / webos / build-webos / BUILD-qemux86 / work / i586-webos-linux / eglibc-2.16-r15 + svnr20393 / build-i586-webos -linux:math:elf:dlfcn:nss:nis:rt:resolv:crypt:nptl libc.so.6 libc_nonshared.a -Wl、--必要に応じてelf / ld.so -Wl、--no-as-needed -lgcc `gcc -m32 -march = i586 --sysroot = / home / webos / build-webos / BUILD-qemux86 / sysroots / qemux86-tcbootstrap --print-file-name = crtend.o `csu / crtn.o
ディレクトリにlibc.aファイルとlibc_nonshared.aファイルがあります。非共有バージョンについての言及はありません__libc_csu_init
が__libc_csu_fini
、通常のlibc.aにあります。これは、人々が真実であるかのように振る舞うように見えることから逆に思えます/usr/lib/i386-linux-gnu
が、Ubuntuに付属しているものを調べると、共有バージョンと非共有バージョンの両方がそれについて言及しています。うーん。
誰かがこれを読んで「ねえ、何が起こっているのか知っているに違いない!」それは気の利いたでしょう。:-)
makefile - ビットベイクレシピからメイクファイルに変数を渡すにはどうすればよいですか?
bitbake(.bb)レシピから呼び出しているMakefileに変数を渡そうとしています。
私のレシピには次のようなものがあります。
メソッドを実行するdo_compile()
と、生成したMakefileを呼び出すようになります。Makefileで、変数が正しく設定されていることをテストしました。
レシピを焼くと、ログに「動作しませんでした」と表示されます。FOO="bar"
Makefileに入れて実行しただけmake
では、テストファイルに「バー」が印刷されているので、これは非常に奇妙だと思いました。では、なぜ正しく「合格」しなかったのでしょうか。
確認するためにもう1つのテストを実行しました。私のメイクファイルには、次の行だけを入れました。
そして、レシピをベイクした後bar
、「always_print.txt」ファイルに印刷されているのに、test.txtに「動作しませんでした」と表示されています...
誰かが私がここで間違っていることの手がかりを持っていますか?
buildroot - Buildroot に OpenEmbedded パッチを適用する
OpenEmbedded 用に作成されたパッチを BuildRoot に変更するにはどうすればよいですか? それらの違いは何ですか?