Buildroot β€” Ρ‡Π°ΡΡ‚ΡŒ 1. ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния, сборка минимальной систСмы, настройка Ρ‡Π΅Ρ€Π΅Π· мСню

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ Π΄Π°Π½Π½ΠΎΠΉ сСрии статСй я Ρ…ΠΎΡ‡Ρƒ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ систСму сборки дистрибутива buildroot ΠΈ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Π΅Ρ‘ кастомизации. Π—Π΄Π΅ΡΡŒ Π±ΡƒΠ΄Π΅Ρ‚ практичСский ΠΎΠΏΡ‹Ρ‚ создания нСбольшой ОБ с графичСским интСрфСйсом ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΠΎΠΌ.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, Π½Π΅ слСдуСт ΠΏΡƒΡ‚Π°Ρ‚ΡŒ систСму сборки ΠΈ дистрибутив. Buildroot ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ систСму ΠΈΠ· Π½Π°Π±ΠΎΡ€Π° ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ»ΠΈ. Buildroot построСн Π½Π° make-Ρ„Π°ΠΉΠ»Π°Ρ… ΠΈ поэтому ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹Π΅ возмоТности ΠΏΠΎ кастомизации. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠ°ΠΊΠ΅Ρ‚ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ, Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свой ΠΏΠ°ΠΊΠ΅Ρ‚, ΠΏΠΎΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»Π° сборки ΠΏΠ°ΠΊΠ΅Ρ‚Π°, ΠΊΠ°ΡΡ‚ΠΎΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»ΠΎΠ²ΡƒΡŽ систСму послС установки всСх ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²? Всё это ΡƒΠΌΠ΅Π΅Ρ‚ buildroot.

Π’ России buildroot ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Π½ΠΎ Π½Π° ΠΌΠΎΠΉ взгляд ΠΌΠ°Π»ΠΎ русскоязычной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ².

ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ β€” ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ дистрибутив с live-Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ, интСрфСйсом icewm ΠΈ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ΠΎΠΌ. ЦСлСвая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° β€” virtualbox.

Π—Π°Ρ‡Π΅ΠΌ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒ свой дистрибутив? Π—Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½ΡƒΠΆΠ΅Π½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΡ€ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π½Ρ‹Ρ… рСсурсах. Π•Ρ‰Ρ‘ Ρ‡Π°Ρ‰Π΅ Π² Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΠΈ. ΠŸΡ€ΠΈΡΠΏΠΎΡΠ°Π±Π»ΠΈΠ²Π°Ρ‚ΡŒ дистрибутив ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния, вычищая лишниС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ ΠΈ ΠΏΡ€Π΅Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² ΠΏΡ€ΠΎΡˆΠΈΠ²ΠΊΡƒ ΠΏΡƒΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΈΠΉ, Ρ‡Π΅ΠΌ ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ дистриб. ИспользованиС Gentoo Ρ‚ΠΎΠΆΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ свои ограничСния.

Buildroot систСма ΠΎΡ‡Π΅Π½ΡŒ мощная, Π½ΠΎ ΠΎΠ½Π° Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ сдСлаСт Π·Π° вас. Она ΠΌΠΎΠΆΠ΅Ρ‚ лишь Π΄Π°Ρ‚ΡŒ возмоТности ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс сборки.

ΠΠ»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ систСмы сборки (yocto, open build system ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅) Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΈ Π½Π΅ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ.

Π“Π΄Π΅ Π²Π·ΡΡ‚ΡŒ ΠΈ ΠΊΠ°ΠΊ Π½Π°Ρ‡Π°Ρ‚ΡŒ

Π‘Π°ΠΉΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° β€” buildroot.org. Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ руководство. Π’Π°ΠΌ ΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ сообщСству, Π΅ΡΡ‚ΡŒ Π±Π°Π³Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€, mail-lists ΠΈ irc-ΠΊΠ°Π½Π°Π».

Buildroot ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ defconfig’aΠΌΠΈ для Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΏΠ»Π°Ρ‚Ρ‹ сборки. Defconfig β€” это ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ», хранящий Π² сСбС Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠΏΡ†ΠΈΠΈ, Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΠΈ значСния ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ. ИмСнно ΠΎΠ½ опрСдСляСт, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ собрано. ΠŸΡ€ΠΈ этом ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΠΈ busybox, linux-kernel, uglibc, Π·Π°Π³Ρ€ΡƒΠ·Ρ‡ΠΈΠΊΠΎΠ² 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 β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ сборки host fs, staging fs, target fs.
  • $BUILD_DIR β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ c распакованными ΠΈ собранными ΠΏΠ°ΠΊΠ΅Ρ‚Π°ΠΌΠΈ

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

Π’ 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 c ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌΠΈ скриптами. НапримСр, Ρ‚Π°ΠΌ Π΅ΡΡ‚ΡŒ скрипт, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡŽΡ‰ΠΈΠΉ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ описания ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ². Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ своих ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² (я это сдСлаю ΠΏΠΎΠ·ΠΆΠ΅). Π’ Ρ„Π°ΠΉΠ»Π΅ utils/readme.txt Π΅ΡΡ‚ΡŒ описаниС этих скриптов.

Π‘ΠΎΠ±Π΅Ρ€Π΅ΠΌ cΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ дистрибутив

Π’Π°ΠΆΠ½ΠΎ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вСдутся ΠΎΡ‚ Π»ΠΈΡ†Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π½Π΅ 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. ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния, сборка минимальной систСмы, настройка Ρ‡Π΅Ρ€Π΅Π· мСню

Build options β€” здСсь Π΅ΡΡ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ настройки сборки. МоТно ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ с исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ, количСство ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² сборки, Π·Π΅Ρ€ΠΊΠ°Π»Π° для скачивания исходных ΠΊΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ настройки. ΠžΡΡ‚Π°Π²ΠΈΠΌ настройки ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.

Toolchain – здСсь настраиваСтся сам инструмСнтарий сборки. О Π½Π΅ΠΌ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.

Buildroot — Ρ‡Π°ΡΡ‚ΡŒ 1. ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния, сборка минимальной систСмы, настройка Ρ‡Π΅Ρ€Π΅Π· мСню

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

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

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

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

Additional gcc options – ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Π΄Π°Ρ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΎΠΏΡ†ΠΈΠΈ компилятора. Нам Π±Π΅Π· надобности ΠΏΠΎΠΊΠ° Ρ‡Ρ‚ΠΎ.

System configuration позволяСт Π·Π°Π΄Π°Ρ‚ΡŒ Π±ΡƒΠ΄ΡƒΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ созданной систСмы:

Buildroot — Ρ‡Π°ΡΡ‚ΡŒ 1. ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния, сборка минимальной систСмы, настройка Ρ‡Π΅Ρ€Π΅Π· мСню

Π‘ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ ΠΏΡƒΠ½ΠΊΡ‚ΠΎΠ² понятны ΠΈΠ· названия. ΠžΠ±Ρ€Π°Ρ‚ΠΈΠΌ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡƒΠ½ΠΊΡ‚Ρ‹:
Path to the users tables β€” Ρ‚Π°Π±Π»ΠΈΡ†Π° с создаваСмыми ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ (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

Root filesystem overlay directories β€” ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΠΎΠ²Π΅Ρ€Ρ… собранной target-fs. ДобавляСт Π½ΠΎΠ²Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈ замСняСт ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ.

Custom scripts to run before creating filesystem images β€” Π‘ΠΊΡ€ΠΈΠΏΡ‚Ρ‹, выполняСмыС нСпосрСдствСнно ΠΏΠ΅Ρ€Π΅Π΄ сворачиваниСм Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠΉ систСмы Π² ΠΎΠ±Ρ€Π°Π·Ρ‹. Π‘Π°ΠΌ скрипт ΠΏΠΎΠΊΠ° оставим пустым

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄Ρ‘ΠΌ Π² Ρ€Π°Π·Π΄Π΅Π» Kernel

Buildroot — Ρ‡Π°ΡΡ‚ΡŒ 1. ΠžΠ±Ρ‰ΠΈΠ΅ свСдСния, сборка минимальной систСмы, настройка Ρ‡Π΅Ρ€Π΅Π· мСню

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

Kernel configuration β€” ΠΏΡƒΡ‚ΡŒ ΠΊ ΠΊΠΎΠ½Ρ„ΠΈΠ³Ρƒ ядра. МоТно Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ ΠΈΠ»ΠΈ defocnfig ΠΈΠ· 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 support

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