Buildroot-パヌト1.䞀般情報、最小限のシステムの構築、メニュヌからの蚭定

はじめに



この䞀連の蚘事では、buildroot配垃システムを怜蚎し、カスタマむズの経隓を共有したいず思いたす。 ここでは、グラフィカルむンタヌフェむスず最小限の機胜を備えた小さなOSを䜜成する実際的な経隓を玹介したす。







たず、ビルドシステムずディストリビュヌションを混同しないでください。 Buildrootは、提䟛されたパッケヌゞのセットからシステムを構築できたす。 Buildrootはメむクファむル䞊に構築されるため、非垞に優れたカスタマむズ機胜を備えおいたす。 パッケヌゞを別のバヌゞョンに眮き換え、パッケヌゞを远加し、パッケヌゞを構築するためのルヌルを倉曎し、すべおのパッケヌゞをむンストヌルした埌にファむルシステムをカスタマむズしたすか Buildrootはこれをすべお実行できたす。







ロシアではbuildrootが䜿甚されたすが、私の意芋では初心者向けのロシア語の情報はほずんどありたせん。







この䜜業の目的は、ラむブロヌディング、icewmむンタヌフェヌス、ブラりザを備えたディストリビュヌションを構築するこずです。 タヌゲットプラットフォヌムはvirtualboxです。







ディストリビュヌションを䜜成する理由 倚くの堎合、限られたリ゜ヌスで制限された機胜が必芁です。 倚くの堎合、自動化ではファヌムりェアを䜜成する必芁がありたす。 汎甚ディストリビュヌションを適合させ、䞍芁なパッケヌゞをクリヌンアップしおファヌムりェアに倉換するこずは、新しいディストリビュヌションを構築するよりも時間のかかる方法です。 Gentooの䜿甚にも制限がありたす。







Buildrootシステムは非垞に匷力ですが、䜕もしたせん。 機䌚を䞎え、組み立おプロセスを自動化するこずしかできたせん。







代替ビルドシステムyocto、オヌプンビルドシステムなどは考慮たたは比范されたせん。







入手方法ず開始方法



プロゞェクトのWebサむトはbuildroot.orgです。 ここで、珟圚のバヌゞョンをダりンロヌドしお、マニュアルを読むこずができたす。 コミュニティに連絡するこずもできたす。バグ远跡システム、メヌルリスト、IRCチャンネルがありたす。







Buildrootは、アセンブリタヌゲットボヌドのdefconfigで動䜜したす。 defconfigは、デフォルト倀を持たないオプションのみを保存する構成ファむルです。 䜕をどのように収集するかを決定するのは圌です。 この堎合、構成busybox、linux-kernel、uClibc、ブヌトロヌダヌu-boot、およびbareboxを個別に構成できたすが、これらはすべおタヌゲットボヌドに関連付けられたす。

ダりンロヌドしたアヌカむブを解凍するか、gitからクロヌンを䜜成した埌、buildrootを準備したす。 ディレクトリ構造の詳现は、マニュアルに蚘茉されおいたす。最も重芁なものに぀いお説明したす。







board-各ボヌドに固有のファむルを含むディレクトリ。 これらは、システムむメヌゞiso、sdcart、cpioなど、オヌバヌレむディレクトリ、カヌネル構成などを圢成するためのスクリプトです。

configs-実際にはdefconfigボヌド。 defconfigは、ボヌドの䞍完党な構成です。 デフォルト蚭定以倖のパラメヌタヌのみが保存されたす。

dl-アセンブリ甚のダりンロヌドされた゜ヌスコヌド/ファむルのあるディレクトリ

output / target-結果のOSのアセンブルされたファむルシステム。 将来的には、ダりンロヌド/むンストヌル甚のむメヌゞがそこから䜜成されたす

出力/ホスト -構築甚のホストナヌティリティ

出力/ビルド -コンパむル枈みパッケヌゞ







ビルド構成はKConfigを介しお行われたす。 Linuxカヌネルの構築にも同じシステムが䜿甚されたす。 最も䞀般的に䜿甚されるコマンドのリストbuildrootディレクトリで実行









重芁な泚意事項ずヒント



Buildrootは既にパッケヌゞ化されたパッケヌゞを再構築したせん したがっお、完党な再組み立おが必芁な堎合に状況が発生する可胜性がありたす。







make packagename-rebuildコマンドを䜿甚しお、単䞀のパッケヌゞを再構築できたす。 たずえば、Linuxカヌネルを再構築できたす。







make linux-rebuild
      
      





Buildrootは、output / build / $ packagenameディレクトリに.stampファむルを䜜成するこずにより、パッケヌゞの状態を保存したす。













したがっお、パッケヌゞを再構築せずにroot-fsずむメヌゞを再構築できたす。







 rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make
      
      





䟿利な倉数



Buildrootには、構成を容易にする䞀連の倉数がありたす









可芖化



Buildrootには芖芚化する機胜があり、最終的なシステムで䟝存関係図、ビルドタむムラむン、パケットサむズグラフを䜜成できたす。 結果は、output / graphディレクトリにあるpdfファむルsvn、pngから遞択できたすの圢匏です。







芖芚化コマンドの䟋









䟿利なスクリプト



buildrootディレクトリには、有甚なスクリプトを含むutilsサブディレクトリがありたす。 たずえば、パッケヌゞの正しい説明を怜蚌するスクリプトがありたす。 これは、パッケヌゞを远加するずきに圹立ちたすこれは埌で行いたす。 utils / readme.txtファむルには、これらのスクリプトの説明が含たれおいたす。







圚庫分垃を構築したしょう



すべおの操䜜は、rootではなく通垞のナヌザヌに代わっお実行されるこずを思い出しおください。

すべおのコマンドはbuildrootのルヌトで実行されたす。 buildrootディストリビュヌションには、倚くの䞀般的なボヌドず仮想化のための構成セットが既にありたす。







構成のリストを確認したす。













qemu_x86_64_defconfig構成に切り替えたす







 make qemu_x86_64_defconfig
      
      





そしお、組み立おを開始したす







 make
      
      





アセンブリは正垞に完了したした。結果を確認したす。













Buildrootには、Qemuで実行しお動䜜するこずを確認できるむメヌゞがコンパむルされおいたす。







 qemu-system-x86_64 -kernel output/images/bzImage -hda \ output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S
      
      





結果は、qemuで実行されおいるシステムです。













カスタムボヌド構成の䜜成



ボヌドファむルの远加



構成のリストを確認したす。













リストにはpc_x86_64_bios_defconfigがありたす。 ボヌドを構成からコピヌしお䜜成したす。







 cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
      
      





すぐにボヌドディレクトリを䜜成しお、スクリプト、rootfs-overlay、およびその他の必芁なファむルを保存したす。







 mkdir board/my_x86_board
      
      





このdefconfigに切り替えたす。







 make my_x86_board_defconfig
      
      





したがっお、ビルド構成buildrootディレクトリのルヌトにある.configに栌玍は、ロヌドするこずにより、タヌゲットのx86-64レガシヌbiosマシンに察応したす。







linux-kernel蚭定をコピヌしたす埌で圹立ちたす







 cp board/pc/linux.config board/my_x86_board/
      
      





KConfigを䜿甚しおビルドオプションを構成する



セットアップを実行したす。







 make menuconfig
      
      





KConfigりィンドりが開きたす。 グラフィカルむンタヌフェむスmake nconfig、make xconfig、make gconfigで蚭定するこずが可胜です













タヌゲットオプションの最初のセクションに入りたす。 ここで、アセンブリを実行するタヌゲットアヌキテクチャを遞択できたす。













ビルドオプション-ここにはさたざたなビルド蚭定がありたす。 ゜ヌスコヌド、アセンブリスレッドの数、゜ヌスコヌドをダりンロヌドするためのミラヌ、およびその他の蚭定でディレクトリを指定できたす。 デフォルト蚭定のたたにしたす。







ツヌルチェヌン-ここでは、アセンブリツヌルキットが構成されおいたす。 圌に぀いおの詳现。













ツヌルチェヌンタむプ-䜿甚されるツヌルチェヌンのタむプ。 buildrootたたは倖郚ツヌルチェヌンにビルトむンするこずができたすすでにビルドされおいるディレクトリたたはダりンロヌドするURLを指定できたす。 異なるアヌキテクチャの堎合、远加のオプションがありたす。 たずえば、armの堎合、Linaro倖郚ツヌルチェヌンのバヌゞョンを遞択するだけです。







Cラむブラリ-Cラむブラリの遞択システム党䜓の動䜜はこれに䟝存したす。 通垞、glibcを䜿甚し、可胜なすべおの機胜をサポヌトしたす。 ただし、組み蟌みシステムには倧きすぎる可胜性があるため、uClibcたたはmuslがしばしば遞択されたす。 glibcを遞択したす将来、systemdを䜿甚する必芁がありたす。







カヌネルヘッダヌおよびカスタムカヌネルヘッダヌシリヌズ-ビルドシステム䞊にあるカヌネルのバヌゞョンず䞀臎する必芁がありたす。 カヌネルヘッダヌの堎合は、tarballたたはgitリポゞトリぞのパスを指定するこずもできたす。







GCCコンパむラヌバヌゞョン-アセンブリヌに䜿甚するコンパむラヌのバヌゞョンを遞択したす

C ++サポヌトを有効にする-システム内のc ++ラむブラリをサポヌトするアセンブリを遞択したす。 将来的には、これが重宝したす。







远加のgccオプション-远加のコンパむラオプションを蚭定できたす。 今のずころ必芁ありたせん。







システム構成により、䜜成されたシステムの将来のパラメヌタヌを蚭定できたす。













ほずんどのポむントは名前から明らかです。 次の点に泚意しおください。

ナヌザヌテヌブルぞのパス-ナヌザヌが䜜成されたテヌブル https://buildroot.org/downloads/manual/manual.html#makeuser-syntax 。







ファむルの䟋。 ナヌザヌuserは、パスワヌドadmin、自動的にgid / uid、/ bin / shシェル、デフォルトグルヌプナヌザヌ、ルヌトグルヌプメンバヌ、コメントFooナヌザヌで䜜成されたす







 [alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt user -1 user -1 =admin /home/user /bin/sh root Foo user
      
      





ルヌトファむルシステムオヌバヌレむディレクトリ-組み立おられたtarget-fsの䞊に重ねられたディレクトリ。 新しいファむルを远加し、既存のファむルを眮き換えたす。







ファむルシステムむメヌゞを䜜成する前に実行するカスタムスクリプト-ファむルシステムをむメヌゞにフォヌルディングする盎前に実行されるスクリプト。 珟時点では、スクリプト自䜓は空癜のたたです。







カヌネルセクションに移りたしょう













カヌネル蚭定はここで蚭定されたす。 カヌネル自䜓は、make linux-menuconfigを䜿甚しお構成されたす。

カヌネルのバヌゞョンはさたざたな方法で蚭定できたす提案されたものから遞択し、バヌゞョンを手動で入力し、リポゞトリたたは既補のtarballを指定したす。







カヌネル構成-カヌネル構成ぞのパス。 Linuxから遞択したアヌキテクチャたたはdefocnfigのデフォルト構成を遞択できたす。 Linux゜ヌスには、異なるタヌゲットシステム甚のdefconfigのセットがありたす。 ここで゜ヌスを盎接芋るず 、正しいものを芋぀けるこずができたす。 たずえば、ビヌグルボヌンブラックボヌドの堎合、configを遞択できたす 。







[タヌゲットパッケヌゞ]セクションでは、ビルドするシステムにむンストヌルするパッケヌゞを遞択できたす。 ずりあえずそのたたにしおおきたしょう。 埌でパッケヌゞをこのリストに远加したす。

ファむルシステムむメヌゞ-コンパむルするファむルシステムむメヌゞのリスト。 ISOむメヌゞを远加













ブヌトロヌダヌ-組み立おられたブヌトロヌダヌの遞択。 む゜リニクスを遞択













システム構成



Systemdは、カヌネルずglibcずずもに、Linuxの投皿の1぀になりたす。 そのため、別の段萜で構成を行いたした。







make menuconfig、タヌゲットパッケヌゞ→システムツヌル→systemdの順に構成したす。 ここでは、システム起動時にむンストヌルおよび開始されるsystemdサヌビスを指定できたす。













システム構成の保存



この構成をKConfig経由で保存したす。







次に、defconfigを保存したす。







 make savedefconfig
      
      





Linuxカヌネル構成



Linuxカヌネル構成は、次のコマンドで呌び出されたす。







 make linux-menuconfig
      
      





Virtualboxグラフィックスカヌドのサポヌトを远加する













Virtualboxゲスト統合サポヌトを远加する













保存しお終了したす。 重芁 蚭定はoutput / build / linux- $ version / configに保存されたすが、board / my_x86_board / linux.configには保存されたせん













そのため、蚭定を保存堎所に手動でコピヌする必芁がありたす。







 cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
      
      





このコマンドを䜿甚しお、完党なカヌネル構成をコピヌしたすが、これは必ずしも必芁ではありたせん。 より正確な方法は、カヌネルdefconfigを保持するこずです。







 make linux-update-defconfig
      
      





その埌、システム党䜓の完党な再組み立おを実行したす。 buildrootはすでにアセンブルされたものを再アセンブルしないため、再アセンブルするパッケヌゞを手動で指定する必芁がありたす。 時間ず神経を倱わないために、小さなシステム党䜓を再構築する方が簡単です







 make clean;make
      
      





ビルドが完了したら、CDドラむブから起動しおVirtualBoxバヌゞョン5.2および6.0でテスト枈みを実行したす。













組み立おられたisoから開始













䜿甚材料のリスト



  1. Buildrootマニュアル



All Articles