ááá˘áŤ
á áá á°á¨áłáłá ááŁáĽáá˝ ááľáĽ á¨Buildroot áľáááľ áááŁáł áľáááľá áá¨áľ áĽá áĽáąá á áá ááľ á¨ááľ áŤááá á°ááᎠááŤáá áĽáááááᢠá ááŤáá á áááá˝ áĽá á ááľá°á á°ááŁá áŤáá á ááľá°á áľááá° ááá áááá á á°ááŁáŤá á°ááᎠáááŤáá˘
á ááááŞáŤ á°á¨á á¨áááŁáł áľáááąá áĽá áľáááąá á፠áááŁáľ á¨ááĽááľá. Buildroot ááĽáą á¨ááááĄáľ á¨áĽá áá˝ áľáĽáľáĽ áľáááľ ááááŁáľ áá˝ááᢠBuildroot á makefiles áá á¨á°ááᣠáá áľááá á á áŁá áľáá á¨áá ááľ á˝ááłáá˝ á ááľá˘ ááŹáá á áá áľáŞáľ áá°áŠ, á¨áĽáŤáľáá áĽá á áá¨ááŠ, ááŹá áááááŁáľ á°ááŚášá ááááŠ, áááá ááŹáá˝ á¨áŤá á áá á¨ááá áľáááąá áŤáĽá? buildroot áá á áá ááľá¨á áá˝áá.
á áŠá˛áŤ ááľáĽ buildroot áĽá á áá áááá, á áĽá á áľá°áŤá¨áľ áá ááááŞáá˝ áľáá˝ á¨áŠáľáŤ ááá áá¨á á¨áá.
á¨áĽáŤá áἠá¨áá¨áá፠áŞáľ á¨ááĽáł á áááľáŁ icewm á áááá˝ áĽá á áłá˝ áá áá°áĽá°áĽ ááᢠá¨áłááá ááľá¨á á¨áášáá áŚááľ ááá˘
ááá á¨áŤáľáá áľáááľ ááááĄ? áĽá áá á¨á°áá°á á°ááŁá á¨á°áá°á ááĽáśá˝ áá áŤáľááááᢠáĽá ááá á˘áá á áŤáľ-á°á firmware ááá á áŤáľáááááłáᢠá ááľááá ááŹáá˝á á áá˝áłáľ áĽá áá° ááááá á ááá¨á á á ááá ááá áľáááľá ááľá°áŤá¨á á á˛áľ áľáááľ á¨ááááŁáľ á¨á áá ááá áľ á¨áá áá ááᢠGentoo áá ááá ááąáááśá˝ á ááľá˘
á¨Buildroot áľáááľ á áŁá áááá ááᣠááá áá ááĽááľá ááá á áŤá°áááᢠá¨áá°áĽá°á˘áŤáá áá°áľ ááááľ áĽá á ááśáá˛á ááľá¨á áĽáť áá.
á ááŤá á¨áááŁáł áľáááśá˝ (áŽááś, áááľ á¨áááŁáł áľáááľ áĽá ááá˝) áááľ ááľáĽ á áááĄá ááá á áááááŠá.
á¨áľ áĽáá°ááá áĽá áĽáá´áľ áĽáá°áááá
á¨ááŽáááľ áľá áŁá˘áŤ -
Buildroot ááááŁáłá ááá áŚááľ á˛á áá
áŽá˝á áá°áŤáᢠDefconfig ááŁáŞ áĽá´áśá˝ á¨ááá¸áá á ááŤáŽá˝ áĽáť á¨ááŤá¨áá˝ á¨áá
á ááá ááᢠáá áĽáá°áá°á á°áĽ áĽá áĽáá´áľ áĽáá°áá°á á°áĽ á¨áááľáá áĽáą áá. á áá
á ááŁá ᨠbusyboxᣠlinux-kernelᣠuglibcᣠu-boot áĽá barebox bootloadersá áá¨áĽáť áááá áľá˝ááá
áŁááá áá ááá á¨áááá á°ááł áá á¨á°áłá°áŠ ááááá˘
á¨áá¨á°áá áá
á°á ááá ááááá á¨git á¨á¨ááľá á áá áá áááááľ ááá á¨áá buildroot áĽáááááᢠá áááŞáŤá ááľáĽ áľá áááŤá ááá
á á¨á áá ááá ἠáá˝áá ᣠá áŁá á áľááá áľááááľ áĽáááŤá˝ááá-
á°ááł - ááĽáŤááłááą á°ááł á¨á°áá°á áááá˝ áŤáá áááŤá˘ áĽááá
á¨áľáááľ ááľáá˝á ááááľá¨áľ áľááŞááśá˝ ááá áá˝áá (á˘áś ᣠsdcart ᣠcpio áĽá ááá˝) ᣠá°á°áŤá˘ áá፠ᣠá¨á¨ááá áá
á¨áľ ᣠááá°.
áá
áŽá˝ - á¨áŚááą áľááááá defconfig. Defconfig áŤáá°áá á¨áŚááľ áá
á ááᢠá¨ááŁáŞá á
ááĽáŽá˝ á¨áááŤáŠ áááŞáŤáá˝á áĽáť áŤá¨ááťá
dl - áá፠á¨áá¨áą ááá áŽáśá˝/áááá˝ áá ááá°áĽá°áĽ
áá
ááľ / ááá - á¨á°ááá á¨áľááá° áááá á¨á°á°á á°á á á¨ááá áľáááľá˘ á ááá á, ááľáá˝á áááá¨áľ / áááŤá á¨áĽáą á¨á°áá አáá¸á
áá
ááľ / á áľá°ááá
- ááľáĽá°áŁ á áľá°ááá
áááááŤáá˝
áá
ááľ / ááááŁáľ - á¨á°ááŁá á áĽá
áá˝
áľáĽá°áŁá á KConfig á áŠá áá á¨á°ááá¨áᢠá¨ááááľ á¨ááá áááááŁáľ á°ááłáłá áľáááľ áĽá á áá áááá. á áĽááľ áĽá á áá á¨áááľ áľáááá˝ áááá (á Buildroot áá፠ááľáĽ ááá¸á)
- menuconfig áŤáľáá - á¨áááŁáł áá á¨áľá áá°ááᢠáĽáá˛áá á¨ááŤáá á áááá˝á áá áá áá˝áá (nconfig áŤáľáá ᣠxconfig áŤáľáá ᣠgconfig áŤáľáá)
- linux-menuconfig áŤáľáá - á¨á¨ááá áá á¨áľá áá°ááá˘
- ááá áŤáľáá - á¨áááŁáł áá¤áśá˝á áŤá áą (á áá ááľ ááľáĽ á¨á°á¨áḠááá ááá)
- ááľá¨á - áľáááľ ááááŁáľ. áá ááľááá á¨á°ááŁá á áá°áśá˝á á áá°á áľáĽáá˘
- defconfig_name áŤáľáá - á ááááŠá áá° á ááľ á¨á°áá°á defconfig ááááŠ
- áááá-defconfigs áŤáľáá - á¨á´á áá áŽá˝á áááá áŤáłáŠ
- ááá áŤáľáá - á¨ááŤá áááá˝á áĽáť áŤááṠᣠáłááááĄá˘
- áĽáá áŤáľáá - ááá á¨áá˝á áľáááá˝á áááááŠ
á áá ááľáłááťáá˝ áĽá á áá áááŽá˝
Buildroot áá°á á˛á á¨á°ááᥠáĽá áá˝á áĽáá°áá á ááááŁá! áľááá , áá á áá áĽáá°áá áá°áĽá°áĽ á¨ááŤáľáááá áľ áááł ááá á áá˝áá.
á áľáĽáá á¨á°áᨠáĽá á áĽáá°áá ááááŁáľ áá˝ááᢠá¨áĽá á áľá áá á-áĽáá°áá áááŁá˘ áááłáᣠá¨ááááľ áŽáááá áĽáá°áá ááááŁáľ áľá˝ááá áĄ-
make linux-rebuild
Buildroot á¨áá¤áľ/á¨áááŁáł/$áĽá á áľá áá፠ááľáĽ á¨áľáłáá áááá˝á á ááá á á¨ááááá áĽá á áááł áŤá¨ááťááĄ
áľááá ᣠááŹáá˝á áĽáá°áá áłáááᥠ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 - á¨áá¤áľ áááŤ
- $HOST_DIRᣠ$STAGING_DIRᣠ$TARGET_DIR â á áľá°ááá fsᣠstaging fsᣠtarget fs áááŁáł áááŤáá˝á˘
- $BUILD_DIR - áŤááłá¸á áĽá á¨á°ááᥠáĽá áá˝ áŤáá áááŤ
ááľáá
buildroot á¨ááłáŤ áŁá ᪠á áá á áá¨á¨áťá áľáá áľ á¨áĽááááľ á˛áŤááŤáᣠá¨áááŁáł áá ááŤá áĽá á¨áĽá á áá áá˝ ááŤá ááááŁáľ áá˝ááᢠáá¤áśáš á áá˛á¤á áááá˝ ááá (ᨠsvn, png ááá¨áĽ áá˝áá) á áá¤áľ / ááŤá áá፠ááľáĽ.
á¨áĽááł áľáááá˝ ááłááá˝áĄ-
make graph-depends
á¨áĽááááľ áá ááááŁáľmake <pkg>-graph-depends
áá°áá°á áĽá á á¨áĽáá áá ááááĄBR2_GRAPH_OUT=png make graph-build
á¨á´áŤ áááŁáł áá ᨠPNG áá ááľ áámake graph-size
á´áŤ ááŹáľ áá á
á áá áľááŞááśá˝
á Buildroot áá፠ááľáĽ áááľ áá፠á áᢠáááááŤáá˝ á áá á áá áľááŞááśá˝. áááłáᣠá¨áĽá á ááááŤáá˝á áľááááááľ á¨áááľá˝ áľááŞááľ á áᢠáá á¨áŤáľáá ááŹáá˝ á˛áŤáá á áá ááá áá˝áá (áá á á áá á á°áááá)ᢠááá utils/readme.txt á¨áĽááá áľááŞááśá˝ ááá፠áááá˘
á¨á áá˛áŽá áľáááľ áĽááááŁ
ááá ááááá˝ á¨áá¨ááááľ á áá°á á á°á áá áľá áłááá áĽá áááá ááľáłááľ á áľááá áá.
ááá áľáááá˝ á 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_efi_defconfig áĽááŤááᢠá¨áá á¨áą á áááá ἠá¨áŤáłá˝áá á°ááł áĽáááĽáŤáááĄ-
cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig
á¨áĽáá áľááŞááśá˝áŁ rootfs-overlay áĽá ááá˝ á áľááá áááá˝á ááá¨áá¸áľ á¨áŚááľ áááŤá áá˛áŤáá áĽááá ááĄ-
mkdir board/my_x86_board
áá°áá á˛áááá ááááĄ-
make my_x86_board_defconfig
áľááá , á áá á¨áááŁáł áá á¨áľ (á áááŁáł áŠáľ áá፠ááľáĽ á .config ááľáĽ á°á¨áá˝áˇá) ᨠx86-64 á ááľ (áŁáŽáľ) ááľááť ááá áá˝á áá ááááłá.
á¨ááááľ-á¨ááá áá á¨áľá áĽáááłá (á áá á áá áá)
cp board/pc/linux.config board/my_x86_board/
á KConfig á áŠá á¨áááŁáł áááŞáŤáá˝á áááá á
ááááŠá áĽáááááĄ-
make menuconfig
á¨KConfig ááľáŽáľ áá¨ááłáᢠá ááŤáá á áááá˝ áááá ááťáá (nconfig áŤáľááᣠxconfig áŤáľááᣠgconfig áŤáľáá):
á¨ááá á ááŤáŽá˝á á¨ááááŞáŤáá ááá áĽááľááŁáá. áĽáá áááŁáłá á¨ááŤááľá áľá ááá á ááá´áá¸á ááá¨áĽ áá˝ááá˘
á ááŤáŽá˝á áááᥠ- áĽáá á¨á°ááŤáŠ á¨áááŁáł á ááĽáŽá˝ á áᢠáááŤáá˝á á¨ááá áŽáśá˝ ᣠá¨áááŁáł ááŽá˝ áĽáᾠᣠá¨ááá áŽáśá˝á áĽá ááá˝ á ááĽáŽá˝á áááá¨áľ ááľá°ááśá˝ áááá˝ áá˝áá ᢠá ááĽáŽášá á ááŁáŞááľ áĽáá°áá¸áá˘
á¨ááłáŞáŤ á°áá°ááľ - á¨áááŁáł ááłáŞáŤáá˝ áĽáŤáłá¸á áĽáá á¨á°ááአáá¸á. áľá áĽáą á¨á áá áŤááĽáĄá˘
á¨ááłáŞáŤ á°áá°ááľ á áááľ - áĽá á áá á¨ááá á¨ááłáŞáŤ á°áá°ááľ ááááľ. áá á Buildroot ááľáĽ á¨á°á°áŤ ááá ááŤá á¨áá á¨ááłáŞáŤ á°áá°ááľ ááá áá˝áá (áááŤáá á áľááľá á¨á°á°áŤá ááá áááá¨áľ áŠá áá¤á áááá˝ áá˝ááá˘) áá°ááŤáŠ á ááá´ááśá˝ á°á¨á᪠á ááŤáŽá˝ á á. áááłáᣠááááľ á ááá á¨áááŽáá á¨ááŞáá ááłáŞáŤ á°áá°ááľ ááá¨áĽ áá˝ááá˘
C á¤á°-áá˝áááľ - ᨠC á¤á°-áá˝áááľ áá፠á¨á á ááá áľáááą á á áŤá á áá áá á¨á°áá°á¨á° áá. á á°áááś glibc áĽá á áá ááááᣠáá á áááá ááá á¨áá˝á á°ááŁáŤáľá áá°áááᢠááá áá áá°á¨á°á° áľáááľ á áŁá áľáá ááá áá˝áá, áľááá uglibc ááá musl áĽááá áá ááá¨áŁá. glibcá áĽááááŁáá (áá á áá á˛áľá°ááľ ááá áá áŤáľáááá)á˘
á¨á¨ááá áŤáľááá˝ áĽá áĽá á¨á¨ááá áŤáľááá˝ á°á¨áłáłá - á á°á°á á°á á áľáááľ ááľáĽ áŤáá á¨á¨ááá áľáŞáľ áá ááááľ á ááŁá¸áᢠáá¨ááá áŤáľááá˝áŁ áá° áłááŚá ááá ááľ áá¨ááť á¨áááľá°áá ááááľ áááá˝á áá˝ááá˘
á¨áá˛á˛ áŽáááá áľáŞáśá˝ - ááááŁáł áľáŤ áá á¨ááááá á¨áá áá¨áŞáŤáá áľáŞáľ ááá¨áĄ
á¨C++ áľááá á áá - á áľáááą ááľáĽ áá á¨C++ á¤á°-ááťáááľ áľáá áááááŁáľ ááá¨áĄá˘ áá
ááá°ááą áá á
ááá.
á°á¨á᪠á¨áá˛á˛ á ááŤáŽá˝ - á°á¨á᪠á¨áá áá¨áŞáŤ á ááŤáŽá˝á áááááľ áá˝áá. áá áá á áááááá˘
á¨áľáááľ áá á á¨á°áá á¨áá áľáááľ á¨áá°ááľ áááŞáŤáá˝ áĽáá˛áŤááá ááá áľáááłá-
áŁáĽá ááĽáĽáłáľ á¨áŁ ááĽáą áášá áĽáŠá˘ ááá¨á°ááľ ááĽáŚá˝ áľáŠá¨áľ áĽááľáĽá˘
áá° á°á áááá˝ á á¨á´ááá˝ á¨áááľáľá áľ ááááľ - á¨á°á áááá˝ áá á¨ááá á á°áá á¨áĽ (
ááłá ááá. á°á ááá á ááá áá á áľá°áłáłáŞáŁ á áŤáľ-á°á gid/uidáŁ/bin/sh shelláŁááŁáŞ á¨áĄáľá á°á ááᣠá¨áĄáľá á áŁá áľáᣠá áľá°áŤá¨áľ Foo á°á áá ááá áŤáá˘
[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt
user -1 user -1 =admin /home/user /bin/sh root Foo user
á¨áľá ááá áľáááľ á°á°áŤá˘ áááŤáá˝ - áá፠á á°á°á á°á á á˘áá-fs áá á°á°áŤá˘á˘ á á˛áľ áááá˝á áŤááá áĽá áŤááľá áá°áŤáá˘
á¨ááá áľáááľ ááľáá˝á á¨ááá አá ááľ á¨áááą áĽá áľááŞááśá˝ - á¨ááá áľáááąá áá° ááľáá˝ á¨ááłá áá á ááľ áá˛áŤáá á¨áá¨ááá áľááŞááśá˝á˘ áááá áľááŞááąá áŁáś áĽáá°ááá˘
áá° á¨ááá ááá áĽáááľ
á¨á¨ááá á
áá
áśá˝ áĽáá
á°áááĽá¨ááᢠá¨ááá áŤáą á¨á°ááá¨á á linux-menuconfig á áŠá ááá˘
á¨á¨ááá áĽáŞáľá á á°ááŤáŠ ááááśá˝ áááááľ áá˝áá-á¨áá¨áĄáľ ááľáĽ ááá¨áĄ ᣠáĽáŞáąá áĽáŤáľá áŤáľáᥠᣠáá¨ááť ááá ááá á¨áá áłááŚá ááĽááąá˘
á¨á¨ááá áá
á - áá° á¨á¨ááá áá
á á¨áááľá°á ááááľá˘ áá°áá¨á á á ááá´áá¸á ááŁáŞáá áá
á ááá¨áĽ ááá á¨ááááľ á˛ááááá ááá¨áĽ áľá˝ááá
ᢠá¨ááááľ ááá áá°ááŤáŠ á¨ááá áľáááśá˝ á¨á˛á áá
áŽá˝á áľáĽáľáĽ áááᢠá¨áááááľá ááááľ áá˝áá
á¨ááá ááŹáá˝ ááá áĽá¨á°ááᣠáŁáá áľáááľ áá á¨áľááš áĽá
áá˝ áĽáá°ááŤá áĽáá˛ááᥠáŤáľá˝áááłá. áá áá áłáááἠáĽáá°ááᢠá áá áá á¨áĽáá ááŹáá˝ áá°áá
áááá áĽáá¨ááŤáá.
á¨ááá áľáááľ ááľáá˝ - á¨áá°á á°áĄ á¨ááá áľáááľ ááľáá˝ áááá. ᨠiso ááľá áŤáá
áĄáľ áŤááá˝ - ááá°áĽá°áĽ á¨áĄáľ áŤááá˝ áááŤ. á˘áśááááľá áĽááááĽ
áľáááľá á áááá áá
á˛áľá°ááľ á¨á¨ááá áĽá ááá˘á áá á¨ááááľ áá°áśáá˝ á ááą áĽá¨áá ááᢠáľááá á ááĽáŠá áá° áá ááĽá ááá á áááŹáááá˘
á áá áá á¨áľáŁ á¨ááŤá ááá ááŹáá˝á â á¨áľáááľ ááłáŞáŤáá˝ â á˛áľá°áłáľ á ááľá¨á á¨á°ááá¨á˘ áĽáá á˛áľá°á á˛ááá á¨áľááš á¨áľáááľ á áááááśá˝ áĽáá°ááŤá áĽá áĽáá°áááá áááá˝ áá˝ááá˘
á¨áľáááľ áá á á ááľááἠáá
áá áá áá á¨áľ á KConfig á áŠá áĽááľááá áááá˘
á¨á፠á¨áĽáá defconfig áŤáľáááĄ:
make savedefconfig
á¨ááááľ á¨ááá áá á
á¨ááááľ á¨ááá áá á á áá¨á°áá áľááá á°á ááˇááĄ
make linux-menuconfig
áá¨áášáááŚááľ áŞá˛áŽ áŤááľ áľáá áĽáá¨áá
á¨á¨áášáá áŚááľ áĽáááł áá á°áľ áľááá áĽáá¨áá
á áľááἠáĽá ááŁá˘ á áľááá: áá á¨áľ á áá¤áľ/áááŁáľ/ááááľ-$ áĽáŞáľ/ áá á¨áľ ááľáĽ ááááŁáᣠááá áá á áŚááľ/my_x86_board/linux.config ááľáĽ á ááááĽáá˘
áľááá ᣠá ááááŠá áĽáŤáľá áá° áá¨ááť áŚáł áá áłáľ áŤáľáááááłááĄ-
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
á¨á፠á áá á¨á á ááá áľáááąá áá á áá áĽáá°áá áĽáá°áŤáá. buildroot ááľááá á¨á°áááŁáá áĽáá°áá á ááááŁá, áĽáá°áá áááááŁáľ áĽá áá˝á áĽáŤáľá áááá˝ á ááĽááľ. ááá áĽá áááŽá˝á ááááŁá¨á áľáá˝ áľáááľá áá á áá ááááŁáľ ááá áá-
make clean;make
áááŁáłá á˛á ááá á¨áášáááŚááľá áŤáľááአ(á áĽáŞáľ 5.2 áĽá 6.0 á¨á°áá°á) á¨á˛á˛á áááłáľ á¨áľáááľ áááŞáŤáá˝áĄ-
á¨á°á°á á°á iso áĽá¨áŽá áĄ-
áĽá á áá á¨áá ááłááśá˝ áááá
- Buildroot áááŞáŤ
ááá: hab.com