Buildroot - Част 1 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

въвСдСниС

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

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

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

Π¦Π΅Π»Ρ‚Π° Π½Π° Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π΅ Π΄Π° сС ΠΈΠ·Π³Ρ€Π°Π΄ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ‚ Π·Π° разпространСниС с изтСглянС Π½Π° ΠΆΠΈΠ²ΠΎ, icewm интСрфСйс ΠΈ Π±Ρ€Π°ΡƒΠ·ΡŠΡ€. Π¦Π΅Π»Π΅Π²Π°Ρ‚Π° ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° Π΅ virtualbox.

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

БистСмата Buildroot Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠΎΡ‰Π½Π°, Π½ΠΎ няма Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈ Π½ΠΈΡ‰ΠΎ Π·Π° вас. Π’ΠΎΠΉ ΠΌΠΎΠΆΠ΅ само Π΄Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€Π° ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€Π° процСса Π½Π° сглобяванС.

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

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

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

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

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

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

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

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

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 - основната дирСктория Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅
  • $BASEDIR - Π˜Π—Π₯ΠžΠ”ΠΠ дирСктория
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° хост fs, Π΅Ρ‚Π°ΠΏΠ½ΠΈ fs, Ρ†Π΅Π»Π΅Π²ΠΈ fs.
  • $BUILD_DIR - дирСктория с Ρ€Π°Π·ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ

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

buildroot ΠΈΠΌΠ° способността Π΄Π° Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π°.ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠ° Π½Π° зависимостта, Π²Ρ€Π΅ΠΌΠ΅Π²Π° Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π½Π° ΠΏΠ°ΠΊΠ΅Ρ‚Π° Π² ΠΊΡ€Π°ΠΉΠ½Π°Ρ‚Π° систСма. Π Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΊΠ°Ρ‚ΠΎ pdf Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π±ΠΈΡ€Π°Ρ‚Π΅ ΠΎΡ‚ svn,png) Π² дирСкторията output/graph.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΈ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π·Π° изобразяванС:

  • make graph-depends ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄ΡŠΡ€Π²ΠΎ Π½Π° зависимоститС
  • make <pkg>-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

И Π·Π°ΠΏΠΎΡ‡Π½Π΅Ρ‚Π΅ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ

make

Π˜Π·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅Ρ‚ΠΎ Π·Π°Π²ΡŠΡ€ΡˆΠ²Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π²ΠΈΠΆΡ‚Π΅ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅:

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 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

ΠžΠΏΡ†ΠΈΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ - Ρ‚ΡƒΠΊ ΠΈΠΌΠ° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅, броя Π½Π° Π½ΠΈΡˆΠΊΠΈΡ‚Π΅ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅, ΠΎΠ³Π»Π΅Π΄Π°Π»Π½ΠΈ ΡΡŠΡ€Π²ΡŠΡ€ΠΈ Π·Π° изтСглянС Π½Π° ΠΈΠ·Ρ…ΠΎΠ΄Π½ΠΈ ΠΊΠΎΠ΄ΠΎΠ²Π΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ настройки. НСка оставим настройкитС ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.

Toolchain - самият Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ инструмСнти Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ Ρ‚ΡƒΠΊ. ΠŸΠΎΠ²Π΅Ρ‡Π΅ Π·Π° Π½Π΅Π³ΠΎ.

Buildroot - Част 1 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

Π’ΠΈΠΏ инструмСнтална Π²Π΅Ρ€ΠΈΠ³Π° - Ρ‚ΠΈΠΏΡŠΡ‚ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π°Ρ‚Π° инструмСнтална Π²Π΅Ρ€ΠΈΠ³Π°. Π’ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Π²Π³Ρ€Π°Π΄Π΅Π½ΠΎ Π² buildroot ΠΈΠ»ΠΈ външна Π²Π΅Ρ€ΠΈΠ³Π° ΠΎΡ‚ инструмСнти (ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° посочитС дирСктория с Π²Π΅Ρ‡Π΅ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½Π° Ρ‚Π°ΠΊΠ°Π²Π° ΠΈΠ»ΠΈ url Π·Π° изтСглянС). Има Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ. НапримСр, Π·Π° Ρ€ΡŠΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ‚Π΅ просто Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ вСрсията Π½Π° Π²ΡŠΠ½ΡˆΠ½Π°Ρ‚Π° Π²Π΅Ρ€ΠΈΠ³Π° инструмСнти Linaro.

C Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° - ΠΈΠ·Π±ΠΎΡ€ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° C. Π Π°Π±ΠΎΡ‚Π°Ρ‚Π° Π½Π° цялата систСма зависи ΠΎΡ‚ Ρ‚ΠΎΠ²Π°. ОбикновСно сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° glibc, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° всички възмоТни функционалности. Но ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС Ρ‚Π²ΡŠΡ€Π΄Π΅ голям Π·Π° Π²Π³Ρ€Π°Π΄Π΅Π½Π° систСма, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ чСсто сС ΠΈΠ·Π±ΠΈΡ€Π° uglibc ΠΈΠ»ΠΈ musl. Π©Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅ΠΌ glibc (Ρ‚ΠΎΠ²Π° Ρ‰Π΅ сС изисква ΠΏΠΎ-късно, Π·Π° Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ systemd).

БСрията Kernel Headers ΠΈ Custom Kernel Headers – трябва Π΄Π° ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° вСрсията Π½Π° ядрото, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‰Π΅ бъдС Π² ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π°Ρ‚Π° систСма. Π—Π° Π·Π°Π³Π»Π°Π²ΠΊΠΈΡ‚Π΅ Π½Π° ядрото ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΡŠΡ‰ΠΎ Π΄Π° посочитС ΠΏΡŠΡ‚Ρ Π΄ΠΎ tarball ΠΈΠ»ΠΈ git Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ.

GCC Π’Π•Π Π‘Π˜Π˜ НА ΠšΠžΠœΠŸΠ˜Π›ΠΠ’ΠžΠ  - ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ вСрсията Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°, която Ρ‰Π΅ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅
Π Π°Π·Ρ€Π΅ΡˆΠ°Π²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° C++ - ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ с ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° c++ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π² систСмата. Π’ΠΎΠ²Π° Ρ‰Π΅ Π½ΠΈ трябва ΠΏΠΎ-късно.

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ gcc ΠΎΠΏΡ†ΠΈΠΈ - ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°Ρ‚ΠΎΡ€Π°. ЗасСга Π½Π΅ Π½ΠΈ трябва.

БистСмната конфигурация Π²ΠΈ позволява Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ Π±ΡŠΠ΄Π΅Ρ‰ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ Π½Π° ΡΡŠΠ·Π΄Π°Π΄Π΅Π½Π°Ρ‚Π° систСма:

Buildroot - Част 1 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

ΠŸΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Ρ‚ΠΎΡ‡ΠΊΠΈ са ясни ΠΎΡ‚ Π·Π°Π³Π»Π°Π²ΠΈΠ΅Ρ‚ΠΎ. НСка ΠΎΠ±ΡŠΡ€Π½Π΅ΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° слСднитС Ρ‚ΠΎΡ‡ΠΊΠΈ:
ΠŸΡŠΡ‚ Π΄ΠΎ Ρ‚Π°Π±Π»ΠΈΡ†ΠΈΡ‚Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ - Ρ‚Π°Π±Π»ΠΈΡ†Π° със създадСни ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π΅Π½ Ρ„Π°ΠΉΠ». ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΠΊΠΈΡΡ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Ρ‰Π΅ бъдС създадСн с ΠΏΠ°Ρ€ΠΎΠ»Π° admin, Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ gid/uid, /bin/sh shell, ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅, Ρ‡Π»Π΅Π½ Π½Π° root Π½Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π°, ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€ 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. Добавя Π½ΠΎΠ²ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ замСня ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Ρ‰ΠΈΡ‚Π΅.

ΠŸΠ΅Ρ€ΡΠΎΠ½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ΠΈ скриптовС Π·Π° изпълнСниС ΠΏΡ€Π΅Π΄ΠΈ създаванС Π½Π° изобраТСния Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма ΠžΡΡ‚Π°Π²Π΅Ρ‚Π΅ скрипта ΠΏΡ€Π°Π·Π΅Π½ Π·Π° сСга.

Π”Π° ΠΎΡ‚ΠΈΠ΄Π΅ΠΌ Π² сСкцията Kernel

Buildroot - Част 1 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

Π’ΠΎΠ²Π° Π΅ мястото, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ сС Π·Π°Π΄Π°Π²Π°Ρ‚ настройкитС Π½Π° ядрото. Π‘Π°ΠΌΠΎΡ‚ΠΎ ядро ​​сС ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° Ρ‡Ρ€Π΅Π· make linux-menuconfig.
ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°Π΄Π°Π΄Π΅Ρ‚Π΅ вСрсията Π½Π° ядрото ΠΏΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π½Π°Ρ‡ΠΈΠ½ΠΈ: ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΎΡ‚ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅, Π²ΡŠΠ²Π΅Π΄Π΅Ρ‚Π΅ вСрсията Ρ€ΡŠΡ‡Π½ΠΎ, Π·Π°Π΄Π°ΠΉΡ‚Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ ΠΈΠ»ΠΈ Π³ΠΎΡ‚ΠΎΠ² Π°Ρ€Ρ…ΠΈΠ².

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ Π½Π° ядрото - ΠΏΡŠΡ‚ Π΄ΠΎ конфигурацията Π½Π° ядрото. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ конфигурацията ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ Π·Π° ΠΈΠ·Π±Ρ€Π°Π½Π°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΈΠ»ΠΈ defocnfig ΠΎΡ‚ Linux. Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° Linux ΠΈΠΌΠ°Ρ‚ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ defconfigs Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ†Π΅Π»Π΅Π²ΠΈ систСми. ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π½Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‚ΠΎΠ·ΠΈ, ΠΎΡ‚ ΠΊΠΎΠΉΡ‚ΠΎ сС Π½ΡƒΠΆΠ΄Π°Π΅Ρ‚Π΅ Π³Π»Π΅Π΄Π°ΠΉΠΊΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊΠ° Ρ‚ΡƒΠΊ. НапримСр, Π·Π° Ρ‡Π΅Ρ€Π½Π° дъска ΠΎΡ‚ кост Π½Π° бигъл ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠΎΠ½Ρ„ΠΈΠ³.

Π Π°Π·Π΄Π΅Π»ΡŠΡ‚ Π¦Π΅Π»Π΅Π²ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π²ΠΈ позволява Π΄Π° ΠΈΠ·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΊΠΎΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ инсталирани Π½Π° Ρ†Π΅Π»Π΅Π²Π°Ρ‚Π° систСма. НСка Π³ΠΎ оставим Π½Π΅ΠΏΡ€ΠΎΠΌΠ΅Π½Π΅Π½ засСга. По-късно Ρ‰Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½Π°ΡˆΠΈΡ‚Π΅ ΠΏΠ°ΠΊΠ΅Ρ‚ΠΈ към Ρ‚ΠΎΠ·ΠΈ списък.
Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма - списък с изобраТСния Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ²Π° систСма, ΠΊΠΎΠΈΡ‚ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ·Π³Ρ€Π°Π΄Π΅Π½ΠΈ. Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ iso ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅

Buildroot - Част 1 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

Π‘ΡƒΡƒΡ‚Π»ΠΎΡƒΠ΄ΡŠΡ€ΠΈ - ΠΈΠ·Π±ΠΎΡ€ΡŠΡ‚ Π½Π° ΡΡŠΠ±Ρ€Π°Π½ΠΈ Π±ΡƒΡƒΡ‚Π»ΠΎΡƒΠ΄ΡŠΡ€ΠΈ. Π˜Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ isolinix

Buildroot - Част 1 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

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

Systemd става Π΅Π΄ΠΈΠ½ ΠΎΡ‚ ΡΡ‚ΡŠΠ»Π±ΠΎΠ²Π΅Ρ‚Π΅ Π½Π° linux, Π·Π°Π΅Π΄Π½ΠΎ с kernel ΠΈ glibc. Π—Π°Ρ‚ΠΎΠ²Π° ΠΈΠ·Π²Π°Π΄ΠΈΡ… настройката ΠΌΡƒ Π² ΠΎΡ‚Π΄Π΅Π»Π΅Π½ ΠΏΠ°Ρ€Π°Π³Ρ€Π°Ρ„.

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

Buildroot - Част 1 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

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

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

Π‘Π»Π΅Π΄ Ρ‚ΠΎΠ²Π° Π·Π°ΠΏΠ°Π·Π²Π°ΠΌΠ΅ Π½Π°ΡˆΠ°Ρ‚Π° defconfig:

make savedefconfig

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

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡΡ‚Π° Π½Π° ядрото Π½Π° Linux сС ΠΈΠ·Π²ΠΈΠΊΠ²Π° ΠΎΡ‚ слСдната ΠΊΠΎΠΌΠ°Π½Π΄Π°:

make linux-menuconfig

Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Π° Virtualbox

Buildroot - Част 1 - ΠžΠ±Ρ‰ ΠΏΡ€Π΅Π³Π»Π΅Π΄, Минимално ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° систСмата, Настройка Π½Π° ΠΌΠ΅Π½ΡŽΡ‚ΠΎ

Π”ΠΎΠ±Π°Π²Π΅Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π΅ Π½Π° Virtualbox Guest

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

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

ДобавянС Π½Π° Π½ΠΎΠ² ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€