Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π’ΡŠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Ρ‚Π°Π·ΠΈ ΠΏΠΎΡ€Π΅Π΄ΠΈΡ†Π° статии искам Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌ систСмата Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° дистрибуция buildroot ΠΈ Π΄Π° сподСля ΠΎΠΏΠΈΡ‚ Π² Π½Π΅ΠΉΠ½ΠΎΡ‚ΠΎ пСрсонализиранС. Π’ΡƒΠΊ Ρ‰Π΅ бъдС практичСско изТивяванС Π·Π° създаванС Π½Π° ΠΌΠ°Π»ΠΊΠ° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Π° систСма с Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° функционалност.

ΠŸΡ€Π΅Π΄ΠΈ всичко, Π½Π΅ трябва Π΄Π° Π±ΡŠΡ€ΠΊΠ°Ρ‚Π΅ систСмата Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ ΠΈ дистрибуцията. Buildroot ΠΌΠΎΠΆΠ΅ Π΄Π° създадС систСма ΠΎΡ‚ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ са ΠΌΡƒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ. Buildroot Π΅ построСн Π½Π° make-Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π·Π°Ρ‚ΠΎΠ²Π° ΠΏΡ€Π΅Π΄Π»Π°Π³Π° ΠΎΠ³Ρ€ΠΎΠΌΠ½ΠΈ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ Π·Π° пСрсонализация. Π”Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ с Π΄Ρ€ΡƒΠ³Π° вСрсия, Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡ‚Π΅ свой ΠΏΠ°ΠΊΠ΅Ρ‚, Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π°, Π΄Π° пСрсонализиратС Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма слСд инсталиранСто Π½Π° всички ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ? Всичко Ρ‚ΠΎΠ²Π° Π΅ възмоТно с buildroot.

Π’ Русия buildroot сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, Π½ΠΎ спорСд ΠΌΠ΅Π½ ΠΈΠΌΠ° ΠΌΠ°Π»ΠΊΠΎ информация Π½Π° руски Π΅Π·ΠΈΠΊ Π·Π° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‰ΠΈ.

Π¦Π΅Π»Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π΅ Π΄Π° сС създадС дистрибуция с live-стартиранС, интСрфСйс icewm ΠΈ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€. Π¦Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π΅ virtualbox.

Π—Π°Ρ‰ΠΎ Π΄Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚Π΅ свой собствСн дистрибуция? ЧСсто Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ функционалност ΠΏΡ€ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ рСсурси. ΠžΡ‰Π΅ ΠΏΠΎ-чСсто Π² автоматизацията сС Π½Π°Π»Π°Π³Π° Π΄Π° сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€ΠΈ. ΠŸΡ€ΠΈΡΠΏΠΎΡΠΎΠ±ΡΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΠ±Ρ‰Π° дистрибуция, ΠΏΡ€Π΅ΠΌΠ°Ρ…Π²Π°ΠΉΠΊΠΈ ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ ΠΈ ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π°ΠΉΠΊΠΈ я във Ρ„ΡŠΡ€ΠΌΡƒΠ΅Ρ€, Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΏΠΎ-Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΡŠΠΊ процСс, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΄Π° сС създадС Π½ΠΎΠ² дистриб.

Buildroot Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡ‰Π½Π° систСма, Π½ΠΎ няма Π΄Π° ΡΠ²ΡŠΡ€ΡˆΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° вмСсто вас. Вя СдинствСно прСдоставя Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π° процСса Π½Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅.

АлтСрнативнитС систСми Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ (yocto, open build system ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ) Π½Π΅ сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΈ Π½Π΅ сС сравняват.

КъдС Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅

УСбсайт Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” buildroot.org. Π’ΡƒΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Ρ‚Π΅Π³Π»ΠΈΡ‚Π΅ Π°ΠΊΡ‚ΡƒΠ°Π»Π½Π°Ρ‚Π° вСрсия ΠΈ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ. Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° сС ΡΠ²ΡŠΡ€ΠΆΠ΅Ρ‚Π΅ с общността, ΠΈΠΌΠ° Π±Π°Π³Ρ‚Ρ€Π΅ΠΉΠΊΡŠΡ€, пощСнски ΡΠΏΠΈΡΡŠΡ†ΠΈ ΠΈ IRC-ΠΊΠ°Π½Π°Π».

Buildroot Ρ€Π°Π±ΠΎΡ‚ΠΈ с defconfig Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅. Defconfig Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π΅Π½ Ρ„Π°ΠΉΠ», ΠΊΠΎΠΉΡ‚ΠΎ ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° само ΠΎΠΏΡ†ΠΈΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ нямат Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅. Π’ΠΎΠΉ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ€Π° ΠΊΠ°ΠΊΠ²ΠΎ ΠΈ ΠΊΠ°ΠΊ Ρ‰Π΅ бъдС ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° систСмата. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Π΄Π° настроитС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈΡ‚Π΅ Π·Π° busybox, linux-kernel, uglibc, bootloaders u-boot ΠΈ barebox, Π½ΠΎ всичкитС Ρ‚Π΅ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°.
Π‘Π»Π΅Π΄ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° изтСглСния Π°Ρ€Ρ…ΠΈΠ² ΠΈΠ»ΠΈ ΠΊΠ»ΠΎΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ git ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°ΠΌΠ΅ Π³ΠΎΡ‚ΠΎΠ² Π·Π° Ρ€Π°Π±ΠΎΡ‚Π° buildroot. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π·Π° структурата Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΡ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Π² Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎΡ‚ΠΎ, Ρ‰Π΅ спомСна само Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΈΡ‚Π΅:

board β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, спСцифични Π·Π° всяка ΠΏΠ»Π°Ρ‚ΠΊΠ°. Π’ΠΎΠ²Π° ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ скриптовС Π·Π° Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠΌΠΈΠ΄ΠΆΠΈ Π½Π° систСмата (iso, sdcart, cpio ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ), ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ overlay, конфигурация Π½Π° ядра ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ
configs β€” собствСно defconfig Π½Π° ΠΏΠ»Π°Ρ‚ΠΊΠ°Ρ‚Π°. Defconfig β€” Ρ‚ΠΎΠ²Π° Π΅ нСпълна конфигурация Π½Π° ΠΏΠ»Π°Ρ‚ΠΊΠ°Ρ‚Π°. Π’ Π½Π΅Π³ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π°Ρ‚ само ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅, Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΡ‚ Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΈΡ‚Π΅ настройки
dl β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ със свалСни ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅/Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° компилация
output/target β€” ΡΡŠΠ±Ρ€Π°Π½Π°Ρ‚Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма Π½Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π°Ρ‚Π° ОБ. ВпослСдствиС ΠΎΡ‚ нСя сС ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ ΠΈΠΌΠΈΠ΄ΠΆΠΈ Π·Π° Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅/инсталиранС
output/host β€” host-ΡƒΡ‚ΠΈΠ»ΠΈΡ‚ΠΈ Π·Π° компилация
output/build β€” ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° компилацията сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° Ρ‡Ρ€Π΅Π· KConfig. Π’Π°Π·ΠΈ систСма сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΡŠΡ‰ΠΎ Π·Π° компилация Π½Π° ядрото Π½Π° linux. Бписък Π½Π° Π½Π°ΠΉ-чСсто ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ (ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°ΠΉΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° buildroot):

  • make menuconfig β€” Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ настройката Π½Π° компилацията. ΠœΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс (make nconfig, make xconfig, make gconfig)
  • make linux-menuconfig β€” Π΄Π° ΠΈΠ·Π²ΠΈΠΊΠ°Ρ‚Π΅ конфигурацията Π½Π° ядрото.
  • make clean β€” Π΄Π° изчиститС Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΡ‚ компилацията (всичко, ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² output)
  • make β€” Π΄Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚Π΅ систСмата. ΠŸΡ€ΠΈ Ρ‚ΠΎΠ²Π° Π½Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° компилация Π½Π° Π²Π΅Ρ‡Π΅ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ процСси
  • make defconfig_name β€” Π΄Π° ΠΏΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ конфигурацията Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ defconfig
  • make list-defconfigs β€” Π΄Π° ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚Π΅ списъка Π½Π° defconfig-ΠΈΡ‚Π΅
  • make source β€” само Π΄Π° свалитС инсталационни Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, Π±Π΅Π· компилация.
  • make help β€” Π΄Π° ΠΈΠ·Π²Π΅Π΄Π΅Ρ‚Π΅ списък Π½Π° възмоТни ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ

Π’Π°ΠΆΠ½ΠΎ Π΄Π° сС ΠΎΡ‚Π±Π΅Π»Π΅ΠΆΠΈ ΠΈ ΠΏΠΎΠ»Π΅Π·Π½ΠΈ ΡΡŠΠ²Π΅Ρ‚ΠΈ

Buildroot Π½Π΅ ΠΏΡ€Π΅-ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π° Π²Π΅Ρ‡Π΅ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ! Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° възникнС ситуация, Π² която Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° пълна ΠΏΡ€Π΅-компилация.

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅-ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚ с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π° make packagename-rebuild. НапримСр, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅-ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚Π΅ ядрото Π½Π° linux:

make linux-rebuild

Buildroot ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ Π½Π° всСки ΠΏΠ°ΠΊΠ΅Ρ‚, създавайки .stamp-Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° output/build/$packagename:

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»Π½ΠΎ, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€Π΅-ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Ρ‚Π΅ 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 ΠΈΠΌΠ° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π·Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅

  • $TOPDIR β€” ΠΊΠΎΡ€Π΅Π½Π΅Π½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π° buildroot
  • $BASEDIR β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ OUTPUT
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ·ΠΈ Π½Π° хост fs, staging fs, target fs.
  • $BUILD_DIR β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с Ρ€Π°Π·ΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ ΠΈ ΡΡŠΠ±Ρ€Π°Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ

Визуализация

Π’ buildroot ΠΈΠΌΠ° Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° визуализация. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ схСма Π½Π° зависимости, Π³Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° компилация, Π³Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π² крайния ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ Π² PDF Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ (ΠΏΠΎ ΠΈΠ·Π±ΠΎΡ€: svn, png) Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° output/graph.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° визуализация:

  • make graph-depends построитС Π΄ΡŠΡ€Π²ΠΎ Π½Π° зависимоститС
  • make -graph-depends построитС Π΄ΡŠΡ€Π²ΠΎ Π½Π° зависимоститС Π·Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½ ΠΏΠ°ΠΊΠ΅Ρ‚
  • BR2_GRAPH_OUT=png make graph-build построитС Π³Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ Π·Π° компилация с ΠΈΠ·Ρ…ΠΎΠ΄ Π² PNG
  • make graph-size построитС Π³Ρ€Π°Ρ„ΠΈΠΊ Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅

ПолСзни скриптовС

Π’ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° buildroot ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ utils с ΠΏΠΎΠ»Π΅Π·Π½ΠΈ скриптовС. НапримСр, Ρ‚Π°ΠΌ ΠΈΠΌΠ° скрипт, ΠΊΠΎΠΉΡ‚ΠΎ провСрява корСктността Π½Π° описанията Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ добавянСто Π½Π° ваши ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ (Ρ‰Π΅ Π³ΠΎ направя ΠΏΠΎ-късно). Π’ Ρ„Π°ΠΉΠ»Π° utils/readme.txt ΠΈΠΌΠ° описаниС Π½Π° Ρ‚Π΅Π·ΠΈ скриптовС.

НСка ΡΡŠΠ±Π΅Ρ€Π΅ΠΌ стандартния дистрибутив

Π’Π°ΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΠΏΡ€ΠΈΠΏΠΎΠΌΠ½ΠΈ, Ρ‡Π΅ всички ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ ΠΎΡ‚ ΠΈΠΌΠ΅Ρ‚ΠΎ Π½Π° ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π», Π° Π½Π΅ root.
Всички ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ Π² ΠΊΠΎΡ€Π΅Π½Π° Π½Π° buildroot. Π’ доставката Π½Π° buildroot Π²Π΅Ρ‡Π΅ ΠΈΠΌΠ° Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π·Π° ΠΌΠ½ΠΎΠ³ΠΎ разпространСни ΠΏΠ»Π°Ρ‚ΠΊΠΈ ΠΈ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΠΌΠ΅ списък с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

ΠŸΡ€Π΅Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ сС Π½Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ qemu_x86_64_defconfig

make qemu_x86_64_defconfig

И стартирамС компилацията

, Π·Π°Ρ‚ΠΎΠ²Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° Windows трябва Π΄Π° инсталират Cygwin ΠΈΠ»ΠΈ Π΄Π° сС справят сами с Visual Studio ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈΡ‚Π΅.

ΠšΠΎΠΌΠΏΠΈΠ»Π°Ρ†ΠΈΡΡ‚Π° Π·Π°Π²ΡŠΡ€ΡˆΠ²Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π³Π»Π΅Π΄Π°ΠΌΠ΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅:

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Buildroot ΡΡŠΠ±Ρ€Π° ΠΎΠ±Ρ€Π°Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС стартират Π² Qemu, Π·Π° Π΄Π° сС ΡƒΠ²Π΅Ρ€ΠΈΡ‚Π΅, Ρ‡Π΅ работят.

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

Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΡŠΡ‚ β€” систСма, стартирана Π² qemu:

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

БъздаванС Π½Π° конфигурация Π·Π° собствСна ΠΏΠ»Π°Ρ‚ΠΊΠ°

ДобавянС Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ Π·Π° ΠΏΠ»Π°Ρ‚ΠΊΠ°Ρ‚Π°

ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡΠΌΠ΅ списък с ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ:

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π’ списъка Π²ΠΈΠΆΠ΄Π°ΠΌΠ΅ pc_x86_64_efi_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

По Ρ‚ΠΎΠ·ΠΈ Π½Π°Ρ‡ΠΈΠ½ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° компилацията (ΠΊΠΎΠ΅Ρ‚ΠΎ сС ΡΡŠΡ…Ρ€Π°Π½ΡΠ²Π° Π² .config Π² ΠΊΠΎΡ€Π΅Π½Π° Π½Π° дирСкторията buildroot) сСга ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° машина x86-64 legacy(bios) старт.

НСка ΠΊΠΎΠΏΠΈΡ€Π°ΠΌΠ΅ конфигурацията Π½Π° linux-kernel (Ρ‰Π΅ Π΅ ΠΏΠΎΠ»Π΅Π·Π½Π° ΠΏΠΎ-късно):

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

Настройка Π½Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π½Π° компилацията Ρ‡Ρ€Π΅Π· KConfig

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°ΠΌΠ΅ настройката:

make menuconfig 

Π©Π΅ сС ΠΎΡ‚Π²ΠΎΡ€ΠΈ ΠΏΡ€ΠΎΠ·ΠΎΡ€Π΅Ρ†ΡŠΡ‚ KConfig. Има Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ с Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс (make nconfig, make xconfig, make gconfig):

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π’Π»ΠΈΠ·Π°ΠΌΠ΅ Π² ΠΏΡŠΡ€Π²ΠΈΡ Ρ€Π°Π·Π΄Π΅Π» Target Options. Π’ΡƒΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, Π·Π° която Ρ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π° компилацията.

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Build options β€” Ρ‚ΡƒΠΊ ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ настройки Π½Π° компилацията. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° изходния ΠΊΠΎΠ΄, Π±Ρ€ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ Π·Π° компилация, ΠΎΠ³Π»Π΅Π΄Π°Π»Π° Π·Π° изтСглянС Π½Π° изходния ΠΊΠΎΠ΄ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ настройки. НСка оставим настройкитС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Toolchain – Ρ‚ΡƒΠΊ сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° самият инструмСнтарий Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ Π·Π° Π½Π΅Π³ΠΎ ΠΏΠΎ-късно.

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π’ΠΈΠΏ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½ΠΎΠΉ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ – Π²ΠΈΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½Π°. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ встроСнный Π² buildroot ΠΈΠ»ΠΈ внСшний Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½ (ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ с ΡƒΠΆΠ΅ собранным ΠΈΠ»ΠΈ URL для скачивания). Для Ρ€Π°Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Π΅ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ. НапримСр, для arm ΠΌΠΎΠΆΠ½ΠΎ просто Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ внСшнСго Ρ‚ΡƒΠ»Ρ‡Π΅ΠΉΠ½Π° Linaro.

C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° – Π²Ρ‹Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π‘. Π­Ρ‚ΠΎ опрСдСляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ всСй систСмы. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ glibc, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π°Ρ вСсь Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π». Но ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ слишком ΠΊΡ€ΡƒΠΏΠ½ΠΎΠΉ для встроСнной систСмы, поэтому часто Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ uglibc ΠΈΠ»ΠΈ musl. ΠœΡ‹ Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ glibc (Π² дальнСйшСм это потрСбуСтся для использования systemd).

Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ядра ΠΈ Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ ядра – Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ²ΠΏΠ°Π΄Π°Ρ‚ΡŒ с вСрсиСй ядра, которая Π±ΡƒΠ΄Π΅Ρ‚ Π² собираСмой систСмС. Для Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ² ядра ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ‚Π°Ρ€Π±ΠΎΠ»Ρƒ ΠΈΠ»ΠΈ git-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ.

Π’Π•Π Π‘Π˜Π˜ COMPILER GCC – Π²Ρ‹Π±ΠΎΡ€ вСрсии компилятора, которая Π±ΡƒΠ΄Π΅Ρ‚ использована для сборки.
Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ C++ – Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ для сборки с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ c++ Π² систСмС. Π’ дальнСйшСм Π½Π°ΠΌ это пригодится.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ gcc – ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ компилятора. Нам это ΠΏΠΎΠΊΠ° Π½Π΅ Π½ΡƒΠΆΠ½ΠΎ.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ систСмы позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ создаваСмой систСмы:

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² понятны ΠΈΠ· названия. ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹:
ΠŸΡƒΡ‚ΡŒ ΠΊ Ρ‚Π°Π±Π»ΠΈΡ†Π°ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ β€” Ρ‚Π°Π±Π»ΠΈΡ†Π° с создаваСмыми ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ„Π°ΠΉΠ»Π°. Π‘ΡƒΠ΄Π΅Ρ‚ создан ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ user с ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ admin, автоматичСски gid/uid, /bin/sh шСллом, Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ user, Ρ‡Π»Π΅Π½ Π³Ρ€ΡƒΠΏΠΏΡ‹ root, ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅ΠΌ Foo user.

[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. ДобавляСт Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ замСняСт ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ.

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ скрипты для выполнСния ΠΏΠ΅Ρ€Π΅Π΄ созданиСм ΠΎΠ±Ρ€Π°Π·ΠΎΠ² Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы β€” Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹, выполняСмыС нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ сворачиваниСм Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π² ΠΎΠ±Ρ€Π°Π·Ρ‹. Π‘Π°ΠΌ скрипт ΠΏΠΎΠΊΠ° оставим пустым.

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² Ρ€Π°Π·Π΄Π΅Π» Π―Π΄Ρ€ΠΎ.

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π—Π΄Π΅ΡΡŒ Π·Π°Π΄Π°ΡŽΡ‚ΡΡ настройки ядра. Π‘Π°ΠΌΠΎ ядро конфигурируСтся Ρ‡Π΅Ρ€Π΅Π· make linux-menuconfig.
Π—Π°Π΄Π°Ρ‚ΡŒ Π²Π΅Ρ€ΡΠΈΡŽ ядра ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ: Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ…, ввСсти Π²Π΅Ρ€ΡΠΈΡŽ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ, ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ ΠΈΠ»ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ΠΉ tarball.

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ ядра β€” ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³Ρƒ ядра. МоТно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ defconfig ΠΈΠ· Linux. Π’ исходниках Linux Π΅ΡΡ‚ΡŒ Π½Π°Π±ΠΎΡ€ defconfig’ов для Ρ€Π°Π·Π½Ρ‹Ρ… Ρ†Π΅Π»Π΅Π²Ρ‹Ρ… систСм. Найти Π½ΡƒΠΆΠ½Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ, глянув Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π² исходники здСсь. НапримСр, для ΠΏΠ»Π°Ρ‚Ρ‹ beagle bone black ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ конфигурация.

Π Π°Π·Π΄Π΅Π» Target packages позволява Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠΎΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ инсталирани Π² ΡΡŠΠ·Π΄Π°Π²Π°Π½Π°Ρ‚Π° систСма. ЗасСга Ρ‰Π΅ оставим Π±Π΅Π· промяна. По-късно Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ своитС ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π² Ρ‚ΠΎΠ·ΠΈ списък.
Filesystem images β€” списък Π½Π° ΠΎΠ±Ρ€Π°Π·ΠΈ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΈ систСми, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ създадСни. НСка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ iso-ΠΎΠ±Ρ€Π°Π·.

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Bootloaders β€” ΠΈΠ·Π±ΠΎΡ€ Π½Π° ΡΡŠΠ·Π΄Π°Π²Π°Π½ΠΈΡ‚Π΅ Π·Π°Ρ€Π΅ΠΆΠ΄Π°Ρ‰ΠΈ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ. НСка ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ isolinix.

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° Systemd

Systemd става Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΡΡ‚ΡŠΠ»Π±ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° linux, Π½Π°Ρ€Π΅Π΄ с kernel ΠΈ glibc. Π—Π°Ρ‚ΠΎΠ²Π° прСмСстих настройката ΠΌΡƒ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΡƒΠ½ΠΊΡ‚.

Настройва сС Ρ‡Ρ€Π΅Π· make menuconfig, слСд Ρ‚ΠΎΠ²Π° Target packages β†’ System tools β†’ systemd. Π’ΡƒΠΊ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС ΠΊΠΎΠΈ услуги Π½Π° systemd Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ инсталирани ΠΈ стартирани ΠΏΡ€ΠΈ стартиранС Π½Π° систСмата.

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π—Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° конфигурацията Π½Π° систСмата

Π—Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Ρ‚Π°Π·ΠΈ конфигурация Ρ‡Ρ€Π΅Π· KConfig.

Π‘Π»Π΅Π΄ ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ Π·Π°ΠΏΠ°Π·ΠΈΠΌ нашия defconfig:

make savedefconfig

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅ Π½Π° ядро Π½Π° Linux

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ядрото Π½Π° linux сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° с ΠΊΠΎΠΌΠ°Π½Π΄Π°Ρ‚Π°:

make linux-menuconfig

НСка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π°Ρ‚Π° Virtualbox

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

НСка Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Virtualbox Guest integration.

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π—Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ ΠΈ ΠΈΠ·Π»ΠΈΠ·Π°ΠΌΠ΅. Π’ΠΠ–ΠΠž: конфигурацията Ρ‰Π΅ сС Π·Π°ΠΏΠ°Π·Π²Π° Π² output/build/linux-$version/config, Π½ΠΎ Π½Π΅ Π² board/my_x86_board/linux.config

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π—Π°Ρ‚ΠΎΠ²Π° трябва Ρ€ΡŠΡ‡Π½ΠΎ Π΄Π° ΠΊΠΎΠΏΠΈΡ€Π°Ρ‚Π΅ конфигурацията Π² мястото Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅:

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

Π‘Π»Π΅Π΄ ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ ΠΈΠ·Π²ΡŠΡ€ΡˆΠΈΠΌ пълна прСробяванС Π½Π° цялата систСма. Въй ΠΊΠ°Ρ‚ΠΎ buildroot Π½Π΅ прСробява Π²Π΅Ρ‡Π΅ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ‚Π΅, трябва Ρ€ΡŠΡ‡Π½ΠΎ Π΄Π° посочим ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈΡ‚Π΅ Π·Π° прСробяванС. Π—Π° Π΄Π° Π½Π΅ Π³ΡƒΠ±ΠΈΡ‚Π΅ Π²Ρ€Π΅ΠΌΠ΅ ΠΈ Π½Π΅Ρ€Π²ΠΈ, ΠΌΠ°Π»ΠΊΠ° систСма Π΅ ΠΏΠΎ-лСсно Π΄Π° сС ΠΏΡ€Π΅Ρ€ΠΎΠ±ΠΈ напълно):

make clean;make

Π‘Π»Π΅Π΄ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π°Π½Π΅ Π½Π° сборката стартирайтС VirtualBox (Ρ‚Π΅ΡΡ‚Π²Π°Ρˆ Π½Π° вСрсии 5.2 ΠΈ 6.0) с Π·Π°Ρ€Π΅ΠΆΠ΄Π°Π½Π΅ ΠΎΡ‚ cd-диск. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° систСмата:

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Π‘Ρ‚Π°Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ ΡΡŠΠ±Ρ€Π°Π½ΠΈΡ iso:

Buildroot β€” част 1. ΠžΠ±Ρ‰ΠΈ свСдСния, сборка Π½Π° ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° систСма, настройка Ρ‡Ρ€Π΅Π· мСню

Бписък Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡ‚Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΈ

  1. Buildroot manual

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster