Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืžื‘ื•ื

ื‘ืกื“ืจืช ืžืืžืจื™ื ื–ื•, ืื ื™ ืจื•ืฆื” ืœื”ืกืชื›ืœ ืขืœ ืžืขืจื›ืช ื‘ื ื™ื™ืช ื”ื”ืคืฆื” buildroot ื•ืœืฉืชืฃ ืืช ื”ื ื™ืกื™ื•ืŸ ืฉืœื™ ื‘ื”ืชืืžื” ืื™ืฉื™ืช ืฉืœื”. ื™ื”ื™ื” ื ื™ืกื™ื•ืŸ ืžืขืฉื™ ื‘ื™ืฆื™ืจืช ืžืขืจื›ืช ื”ืคืขืœื” ืงื˜ื ื” ืขื ืžืžืฉืง ื’ืจืคื™ ื•ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืžื™ื ื™ืžืœื™ืช.

ืงื•ื“ื ื›ืœ, ืืกื•ืจ ืœื‘ืœื‘ืœ ื‘ื™ืŸ ืžืขืจื›ืช ื”ื‘ื ื™ื™ื” ืœื‘ื™ืŸ ื”ื”ืคืฆื”. Buildroot ื™ื›ื•ืœื” ืœื‘ื ื•ืช ืžืขืจื›ืช ืžืชื•ืš ืกื˜ ื—ื‘ื™ืœื•ืช ื”ืžื•ืฆืขื•ืช ืœื”. Buildroot ื‘ื ื•ื™ ืขืœ ืงื‘ืฆื™ makefile ื•ืœื›ืŸ ื™ืฉ ืœื• ื™ื›ื•ืœื•ืช ื”ืชืืžื” ืื™ืฉื™ืช ืื“ื™ืจื•ืช. ืœื”ื—ืœื™ืฃ ื—ื‘ื™ืœื” ื‘ื’ืจืกื” ืื—ืจืช, ืœื”ื•ืกื™ืฃ ื—ื‘ื™ืœื” ืžืฉืœืš, ืœืฉื ื•ืช ืืช ื”ื›ืœืœื™ื ืœื‘ื ื™ื™ืช ื—ื‘ื™ืœื”, ืœื”ืชืื™ื ืื™ืฉื™ืช ืืช ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืœืื—ืจ ื”ืชืงื ืช ื›ืœ ื”ื—ื‘ื™ืœื•ืช? buildroot ื™ื›ื•ืœ ืœืขืฉื•ืช ืืช ื›ืœ ื–ื”.

ื‘ืจื•ืกื™ื” ืžืฉืชืžืฉื™ื ื‘-buildroot, ืื‘ืœ ืœื“ืขืชื™ ื™ืฉ ืžืขื˜ ืžื™ื“ืข ื‘ืฉืคื” ื”ืจื•ืกื™ืช ืœืžืชื—ื™ืœื™ื.

ืžื˜ืจืช ื”ืขื‘ื•ื“ื” ื”ื™ื ืœื”ืจื›ื™ื‘ ืขืจื›ืช ื”ืคืฆื” ืขื ื”ื•ืจื“ื” ื—ื™ื”, ืžืžืฉืง icewm ื•ื“ืคื“ืคืŸ. ืคืœื˜ืคื•ืจืžืช ื”ื™ืขื“ ื”ื™ื Virtualbox.

ืœืžื” ืœื‘ื ื•ืช ื”ืคืฆื” ืžืฉืœืš? ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื™ืฉ ืฆื•ืจืš ื‘ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ืžื•ื’ื‘ืœืช ืขื ืžืฉืื‘ื™ื ืžื•ื’ื‘ืœื™ื. ืืคื™ืœื• ืœืขืชื™ื ืงืจื•ื‘ื•ืช ื™ื•ืชืจ ื‘ืื•ื˜ื•ืžืฆื™ื” ืืชื” ืฆืจื™ืš ืœื™ืฆื•ืจ ืงื•ืฉื—ื”. ื”ืชืืžืช ื”ืคืฆื” ืœืžื˜ืจื•ืช ื›ืœืœื™ื•ืช ืขืœ ื™ื“ื™ ื ื™ืงื•ื™ ื—ื‘ื™ืœื•ืช ืžื™ื•ืชืจื•ืช ื•ื”ืคื™ื›ืชื” ืœืงื•ืฉื—ื” ื“ื•ืจืฉืช ื™ื•ืชืจ ืขื‘ื•ื“ื” ืžืืฉืจ ื‘ื ื™ื™ืช ื”ืคืฆื” ื—ื“ืฉื”. ืœืฉื™ืžื•ืฉ ื‘-Gentoo ื™ืฉ ื’ื ืžื’ื‘ืœื•ืช.

ืžืขืจื›ืช Buildroot ื—ื–ืงื” ืžืื•ื“, ืื‘ืœ ื”ื™ื ืœื ืชืขืฉื” ื›ืœื•ื ื‘ืฉื‘ื™ืœืš. ื–ื” ื™ื›ื•ืœ ืจืง ืœืืคืฉืจ ื•ืœื”ืคื•ืš ืืช ืชื”ืœื™ืš ื”ื”ืจื›ื‘ื” ืœืื•ื˜ื•ืžื˜ื™.

ืžืขืจื›ื•ืช ื‘ื ื™ื™ื” ืืœื˜ืจื ื˜ื™ื‘ื™ื•ืช (ื™ื•ืงื˜ื•, ืžืขืจื›ืช ื‘ื ื™ื™ื” ืคืชื•ื—ื” ื•ืื—ืจื•ืช) ืื™ื ืŸ ื ื—ืฉื‘ื•ืช ืื• ืžื•ืฉื•ื•ืช.

ืื™ืคื” ืžืฉื™ื’ื™ื ื•ืื™ืš ืžืชื—ื™ืœื™ื

ืืชืจ ื”ืคืจื•ื™ืงื˜ - buildroot.org. ื›ืืŸ ืชื•ื›ืœื• ืœื”ื•ืจื™ื“ ืืช ื”ื’ืจืกื” ื”ื ื•ื›ื—ื™ืช ื•ืœืงืจื•ื ืืช ื”ืžื“ืจื™ืš. ืฉื ืืชื” ื™ื›ื•ืœ ืœื™ืฆื•ืจ ืงืฉืจ ืขื ื”ืงื”ื™ืœื”, ื™ืฉ ืขื•ืงื‘ ืื—ืจ ื‘ืื’ื™ื, ืจืฉื™ืžื•ืช ื“ื•ืืจ ื•ืขืจื•ืฅ irc.

Buildroot ืžืคืขื™ืœ defconfigs ืขื‘ื•ืจ ืœื•ื— ื”ื™ืขื“ ืฉืœ ื”-build. Defconfig ื”ื•ื ืงื•ื‘ืฅ ืชืฆื•ืจื” ื”ืžืื—ืกืŸ ืจืง ืืคืฉืจื•ื™ื•ืช ืฉืื™ืŸ ืœื”ืŸ ืขืจื›ื™ ื‘ืจื™ืจืช ืžื—ื“ืœ. ื”ื•ื ื–ื” ืฉืงื•ื‘ืข ืžื” ื™ื™ืืกืฃ ื•ื›ื™ืฆื“. ื‘ืžืงืจื” ื–ื”, ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ื‘ื ืคืจื“ ืืช ื”ื”ื’ื“ืจื•ืช ืฉืœ ืžืื’ืจื™ ื”ืืชื—ื•ืœ busybox, linux-kernel, uglibc, u-boot ื•-barebox, ืื‘ืœ ื›ื•ืœื ื™ื”ื™ื• ืงืฉื•ืจื™ื ืœืœื•ื— ื”ื™ืขื“.
ืœืื—ืจ ืคืจื™ืงืช ื”ืืจื›ื™ื•ืŸ ืฉื”ื•ืจื“ืช ืื• ืฉื™ื‘ื•ื˜ ืž-git, ืื ื• ืžืงื‘ืœื™ื ื‘ืกื™ืก build ืžื•ื›ืŸ ืœืฉื™ืžื•ืฉ. ืืชื” ื™ื›ื•ืœ ืœืงืจื•ื ืขื•ื“ ืขืœ ืžื‘ื ื” ื”ืกืคืจื™ื•ืช ื‘ืžื“ืจื™ืš; ืื ื™ ืืกืคืจ ืœืš ืขืœ ื”ื—ืฉื•ื‘ื™ื ืฉื‘ื”ื:

ืœื•ึผื—ึท - ืกืคืจื™ื™ื” ืขื ืงื‘ืฆื™ื ืกืคืฆื™ืคื™ื™ื ืœื›ืœ ืœื•ื—. ืืœื” ื™ื›ื•ืœื™ื ืœื”ื™ื•ืช ืกืงืจื™ืคื˜ื™ื ืœื™ืฆื™ืจืช ืชืžื•ื ื•ืช ืžืขืจื›ืช (iso, sdcart, cpio ื•ืื—ืจื™ื), ืกืคืจื™ื™ืช ืฉื›ื‘ืช-ืขืœ, ืชืฆื•ืจืช ืœื™ื‘ื” ื•ื›ื•'.
configs - ื”-defconfig ื‘ืคื•ืขืœ ืฉืœ ื”ืœื•ื—. Defconfig ื”ื™ื ืชืฆื•ืจืช ืœื•ื— ืœื ืฉืœืžื”. ื”ื•ื ืžืื—ืกืŸ ืจืง ืคืจืžื˜ืจื™ื ื”ืฉื•ื ื™ื ืžื”ื’ื“ืจื•ืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ
dl - ืกืคืจื™ื™ื” ืขื ืงื•ื“ื™ ืžืงื•ืจ/ืงื‘ืฆื™ื ืฉื”ื•ืจื“ื• ืœื”ืจื›ื‘ื”
ืคืœื˜/ื™ืขื“ - ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ื”ืžื•ืจื›ื‘ืช ืฉืœ ืžืขืจื›ืช ื”ื”ืคืขืœื” ืฉื”ืชืงื‘ืœื”. ืœืื—ืจ ืžื›ืŸ, ื ื•ืฆืจื•ืช ืžืžื ื• ืชืžื•ื ื•ืช ืœื”ื•ืจื“ื”/ื”ืชืงื ื”
ืคืœื˜/ืžืืจื— - ื›ืœื™ ืฉื™ืจื•ืช ืžืืจื— ืœื”ืจื›ื‘ื”
ืคืœื˜/ื‘ื ื™ื™ื” - ื—ื‘ื™ืœื•ืช ืžื•ืจื›ื‘ื•ืช

ื”ื”ืจื›ื‘ื” ืžื•ื’ื“ืจืช ื‘ืืžืฆืขื•ืช KConfig. ืื•ืชื” ืžืขืจื›ืช ืžืฉืžืฉืช ืœื‘ื ื™ื™ืช ืœื™ื‘ืช ืœื™ื ื•ืงืก. ืจืฉื™ืžืช ื”ืคืงื•ื“ื•ืช ื”ื ืคื•ืฆื•ืช ื‘ื™ื•ืชืจ (ื”ืคืขืœ ื‘ืกืคืจื™ื™ืช buildroot):

  • make menuconfig - ืงืจื ืœืชืฆื•ืจืช ื”-build. ืืชื” ื™ื›ื•ืœ ื’ื ืœื”ืฉืชืžืฉ ื‘ืžืžืฉืง ื”ื’ืจืคื™ (ืขืฉื” nconfig, make xconfig, make gconfig)
  • ื”ืคื•ืš ืืช linux-menuconfig - ืงืจื ืœืชืฆื•ืจืช ื”ืœื™ื‘ื”.
  • ืœืขืฉื•ืช ื ืงื™ - ื ืงื” ืืช ืชื•ืฆืื•ืช ื”ื‘ื ื™ื™ื” (ื›ืœ ืžื” ืฉืžืื•ื—ืกืŸ ื‘ืคืœื˜)
  • ืœืขืฉื•ืช - ืœื‘ื ื•ืช ืžืขืจื›ืช. ื–ื” ืœื ืžืจื›ื™ื‘ ืžื—ื“ืฉ ืชื”ืœื™ื›ื™ื ืฉื›ื‘ืจ ื”ื•ืจื›ื‘ื•.
  • make defconfig_name - ื”ื—ืœืฃ ืืช ื”ืชืฆื•ืจื” ืœ-defconfig ืกืคืฆื™ืคื™
  • make list-defconfigs - ื”ืฆื’ ืจืฉื™ืžื” ืฉืœ defconfigs
  • ืฆื•ืจ ืžืงื•ืจ - ืคืฉื•ื˜ ื”ื•ืจื“ ืืช ืงื‘ืฆื™ ื”ื”ืชืงื ื”, ื‘ืœื™ ืœื‘ื ื•ืช.
  • ืขืฉื” ืขื–ืจื” - ืจืฉื•ื ืคืงื•ื“ื•ืช ืืคืฉืจื™ื•ืช

ื”ืขืจื•ืช ื—ืฉื•ื‘ื•ืช ื•ื˜ื™ืคื™ื ืžื•ืขื™ืœื™ื

Buildroot ืœื ื‘ื•ื ื” ืžื—ื“ืฉ ื—ื‘ื™ืœื•ืช ืฉื›ื‘ืจ ื ื‘ื ื•! ืœื›ืŸ, ืขืœื•ืœ ืœื”ื™ื•ื•ืฆืจ ืžืฆื‘ ื‘ื• ื ื“ืจืฉืช ื”ืจื›ื‘ื” ืžืœืื”.

ืืชื” ื™ื›ื•ืœ ืœื‘ื ื•ืช ืžื—ื“ืฉ ื—ื‘ื™ืœื” ื ืคืจื“ืช ืขื ื”ืคืงื•ื“ื” ื‘ืฆืข ื‘ื ื™ื™ื” ืžื—ื“ืฉ ืฉืœ ืฉื ื—ื‘ื™ืœื”. ืœื“ื•ื’ืžื”, ืืชื” ื™ื›ื•ืœ ืœื‘ื ื•ืช ืžื—ื“ืฉ ืืช ืœื™ื‘ืช ืœื™ื ื•ืงืก:

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 - ืกืคืจื™ื™ืช ืคืœื˜
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - ืกืคืจื™ื•ืช ืžืืจื— fs, staging fs, target fs build.
  • $BUILD_DIR - ืกืคืจื™ื™ื” ืขื ื—ื‘ื™ืœื•ืช ืœื ืืจื•ื–ื•ืช ื•ื‘ื ื•ื™ื•ืช

ืจืื™ื”

ืœ-Buildroot ื™ืฉ ืชื›ื•ื ืช ื”ื“ืžื™ื”. ื ื™ืชืŸ ืœื‘ื ื•ืช ื“ื™ืื’ืจืžืช ืชืœื•ืช, ื’ืจืฃ ื–ืžืŸ ื‘ื ื™ื™ื” ื•ื’ืจืฃ ืฉืœ ื’ื“ืœื™ ื—ื‘ื™ืœื•ืช ื‘ืžืขืจื›ืช ื”ืกื•ืคื™ืช. ื”ืชื•ืฆืื•ืช ื”ืŸ ื‘ืฆื•ืจื” ืฉืœ ืงื‘ืฆื™ pdf (ื ื™ืชืŸ ืœื‘ื—ื•ืจ ืžืชื•ืš 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 ื›ื‘ืจ ื›ื•ืœืœืช ืงื‘ื•ืฆื” ืฉืœ ืชืฆื•ืจื•ืช ืขื‘ื•ืจ ืœื•ื—ื•ืช ื ืคื•ืฆื™ื ืจื‘ื™ื ื•ื•ื™ืจื˜ื•ืืœื™ื–ืฆื™ื”.

ื‘ื•ืื• ื ืกืชื›ืœ ืขืœ ืจืฉื™ืžืช ื”ืชืฆื•ืจื•ืช:

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 ื•ืฉืืจ ื”ืงื‘ืฆื™ื ื”ื“ืจื•ืฉื™ื ืฉืœื ื•:

mkdir board/my_x86_board

ืขื‘ื•ืจ ืœ-defconfig ื”ื–ื”:

make my_x86_board_defconfig

ืœืคื™ื›ืš, ื›ืขืช ืชืฆื•ืจืช ื”-build (ื”ืžืื•ื—ืกื ืช ื‘-.config ื‘ืฉื•ืจืฉ ืกืคืจื™ื™ืช buildroot) ืชื•ืืžืช ืœืžื—ืฉื‘ ื”ื™ืขื“ ื”ืืชื—ื•ืœ ืฉืœ x86-64 legacy(bios).

ื‘ื•ืื• ื ืขืชื™ืง ืืช ืชืฆื•ืจืช ืœื™ื‘ืช ืœื™ื ื•ืงืก (ืฉื™ืžื•ืฉื™ ืžืื•ื—ืจ ื™ื•ืชืจ):

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

ื”ื’ื“ืจืช ืคืจืžื˜ืจื™ ื‘ื ื™ื™ื” ื‘ืืžืฆืขื•ืช KConfig

ื‘ื•ืื• ื ืชื—ื™ืœ ืืช ื”ื”ื’ื“ืจื”:

make menuconfig 

ื—ืœื•ืŸ KConfig ื™ื™ืคืชื—. ืืคืฉืจ ืœื”ื’ื“ื™ืจ ืขื ืžืžืฉืง ื’ืจืคื™ (ืขืฉื” nconfig, make xconfig, make gconfig):

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืื ื• ื ื›ื ืกื™ื ืœืกืขื™ืฃ ื”ืจืืฉื•ืŸ ืืคืฉืจื•ื™ื•ืช ื™ืขื“. ื›ืืŸ ืชื•ื›ืœ ืœื‘ื—ื•ืจ ืืช ืืจื›ื™ื˜ืงื˜ื•ืจืช ื”ื™ืขื“ ืฉืขื‘ื•ืจื” ื”ื‘ื ื™ื™ื” ืชืชื‘ืฆืข.

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืืคืฉืจื•ื™ื•ืช ื‘ื ื™ื™ื” - ื™ืฉ ื›ืืŸ ื”ื’ื“ืจื•ืช ื‘ื ื™ื™ื” ืฉื•ื ื•ืช. ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืกืคืจื™ื•ืช ืขื ืงื•ื“ื™ ืžืงื•ืจ, ืžืกืคืจ ืฉืจืฉื•ืจื™ ื‘ื ื™ื™ื”, ืžืจืื•ืช ืœื”ื•ืจื“ืช ืงื•ื“ื™ ืžืงื•ืจ ื•ื”ื’ื“ืจื•ืช ืื—ืจื•ืช. ื‘ื•ืื• ื ืฉืื™ืจ ืืช ื”ื”ื’ื“ืจื•ืช ื›ื‘ืจื™ืจืช ืžื—ื“ืœ.

Toolchain - ื›ืœื™ ื”ื‘ื ื™ื™ื” ืขืฆืžื ืžื•ื’ื“ืจื™ื ื›ืืŸ. ืงืจื ืขื•ื“ ืขืœื™ื•.

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืกื•ื’ ืฉืจืฉืจืช ื”ื›ืœื™ื - ืกื•ื’ ืฉืจืฉืจืช ื”ื›ืœื™ื ื‘ืฉื™ืžื•ืฉ. ื–ื” ื™ื›ื•ืœ ืœื”ื™ื•ืช ืฉืจืฉืจืช ื›ืœื™ื ืžื•ื‘ื ื™ืช ื‘-buildroot ืื• ื—ื™ืฆื•ื ื™ืช (ืชื•ื›ืœ ืœืฆื™ื™ืŸ ืืช ื”ืกืคืจื™ื™ื” ืขื ื–ื” ืฉื›ื‘ืจ ื ื‘ื ื” ืื• ืืช ื›ืชื•ื‘ืช ื”ืืชืจ ืœื”ื•ืจื“ื”). ื™ืฉื ืŸ ืืคืฉืจื•ื™ื•ืช ื ื•ืกืคื•ืช ืขื‘ื•ืจ ืืจื›ื™ื˜ืงื˜ื•ืจื•ืช ืฉื•ื ื•ืช. ืœื“ื•ื’ืžื”, ืขื‘ื•ืจ ื–ืจื•ืข ืืชื” ื™ื›ื•ืœ ืคืฉื•ื˜ ืœื‘ื—ื•ืจ ืืช ื’ืจืกืช Linaro ืฉืœ ืฉืจืฉืจืช ื”ื›ืœื™ื ื”ื—ื™ืฆื•ื ื™ืช.

ืกืคืจื™ื™ืช C โ€“ ื‘ื—ื™ืจืช ืกืคืจื™ื™ืช C. ื‘ื›ืš ืชืœื•ื™ื” ืคืขื•ืœืช ื”ืžืขืจื›ืช ื›ื•ืœื”. ื‘ื“ืจืš ื›ืœืœ, ื ืขืฉื” ืฉื™ืžื•ืฉ ื‘-glibc, ื”ืชื•ืžืš ื‘ื›ืœ ื”ืคื•ื ืงืฆื™ื•ื ืœื™ื•ืช ื”ืืคืฉืจื™ืช. ืื‘ืœ ื–ื” ืขืฉื•ื™ ืœื”ื™ื•ืช ื’ื“ื•ืœ ืžื“ื™ ืขื‘ื•ืจ ืžืขืจื›ืช ืžืฉื•ื‘ืฆืช, ืื– uglibc ืื• musl ื ื‘ื—ืจื™ื ืœืขืชื™ื ืงืจื•ื‘ื•ืช. ืื ื• ื ื‘ื—ืจ glibc (ื–ื” ื™ื™ื“ืจืฉ ืžืื•ื—ืจ ื™ื•ืชืจ ื›ื“ื™ ืœื”ืฉืชืžืฉ ื‘-systemd).

ืกื“ืจืช Kernel Headers ื•-Custom Kernel Headers โ€“ ื—ื™ื™ื‘ืช ืœื”ืชืื™ื ืœื’ืจืกืช ื”ืงืจื ืœ ืฉืชื”ื™ื” ื‘ืžืขืจื›ืช ื”ืžื•ืจื›ื‘ืช. ืขื‘ื•ืจ ื›ื•ืชืจื•ืช ืœื™ื‘ื”, ืืชื” ื™ื›ื•ืœ ื’ื ืœืฆื™ื™ืŸ ืืช ื”ื ืชื™ื‘ ืœืžืื’ืจ Tarball ืื• Git.

GCC COMPILER VERSIONS - ื‘ื—ืจ ืืช ื’ืจืกืช ื”ืžื”ื“ืจ ืฉืชืฉืžืฉ ืœื‘ื ื™ื™ื”
ืืคืฉืจ ืชืžื™ื›ื” ื‘-C++ โ€“ ื‘ื—ืจ ืœื‘ื ื•ืช ืขื ืชืžื™ื›ื” ื‘ืกืคืจื™ื•ืช C++ ื‘ืžืขืจื›ืช. ื–ื” ื™ื”ื™ื” ืฉื™ืžื•ืฉื™ ืขื‘ื•ืจื ื• ื‘ืขืชื™ื“.

ืืคืฉืจื•ื™ื•ืช gcc ื ื•ืกืคื•ืช - ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืืคืฉืจื•ื™ื•ืช ืžื”ื“ืจ ื ื•ืกืคื•ืช. ืื ื—ื ื• ืœื ืฆืจื™ื›ื™ื ืืช ื–ื” ื‘ื™ื ืชื™ื™ื.

ืชืฆื•ืจืช ื”ืžืขืจื›ืช ืžืืคืฉืจืช ืœืš ืœื”ื’ื“ื™ืจ ืคืจืžื˜ืจื™ื ืขืชื™ื“ื™ื™ื ืฉืœ ื”ืžืขืจื›ืช ืฉื ื•ืฆืจื”:

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืจื•ื‘ ื”ื ืงื•ื“ื•ืช ื‘ืจื•ืจื•ืช ืžื”ื›ื•ืชืจืช. ื‘ื•ืื• ื ืฉื™ื ืœื‘ ืœื ืงื•ื“ื•ืช ื”ื‘ืื•ืช:
ื ืชื™ื‘ ืœื˜ื‘ืœืื•ืช ื”ืžืฉืชืžืฉื™ื - ื˜ื‘ืœื” ืขื ืžืฉืชืžืฉื™ื ืฉื™ื™ื•ื•ืฆืจื• (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

ืงื•ื‘ืฅ ืœื“ื•ื’ืžื”. ื”ืžืฉืชืžืฉ ื™ื™ื•ื•ืฆืจ ืขื ืžื ื”ืœ ื”ืกื™ืกืžื”, ืื•ื˜ื•ืžื˜ื™ืช 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

ืกืคืจื™ื•ืช ืฉื›ื‘ื•ืช ืฉืœ ืžืขืจื›ืช ืงื‘ืฆื™ื ืฉื•ืจืฉ - ืกืคืจื™ื•ืช ืฉื›ื‘ื•ืช ืขืœ ื’ื‘ื™ ื”-target-fs ืฉื ืืกืคื•. ืžื•ืกื™ืฃ ืงื‘ืฆื™ื ื—ื“ืฉื™ื ื•ืžื—ืœื™ืฃ ืืช ื”ืงื™ื™ืžื™ื.

ืกืงืจื™ืคื˜ื™ื ืžื•ืชืืžื™ื ืื™ืฉื™ืช ืœื”ืคืขืœื” ืœืคื ื™ ื™ืฆื™ืจืช ืชืžื•ื ื•ืช ืฉืœ ืžืขืจื›ืช ืงื‘ืฆื™ื - ืกืงืจื™ืคื˜ื™ื ื”ืžื•ืคืขืœื™ื ืžื™ื“ ืœืคื ื™ ืงื™ืคื•ืœ ืžืขืจื›ืช ื”ืงื‘ืฆื™ื ืœืชืžื•ื ื•ืช. ื ืฉืื™ืจ ืืช ื”ืชืกืจื™ื˜ ืจื™ืง ืœืขืช ืขืชื”.

ื‘ื•ื ื ืขื‘ื•ืจ ืœืงื˜ืข ื”ืœื™ื‘ื”

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ื”ื’ื“ืจื•ืช ื”ืœื™ื‘ื” ืžื•ื’ื“ืจื•ืช ื›ืืŸ. ื”ืœื™ื‘ื” ืขืฆืžื” ืžื•ื’ื“ืจืช ื‘ืืžืฆืขื•ืช make linux-menuconfig.
ืืชื” ื™ื›ื•ืœ ืœื”ื’ื“ื™ืจ ืืช ื’ืจืกืช ื”ืœื™ื‘ื” ื‘ื“ืจื›ื™ื ืฉื•ื ื•ืช: ื‘ื—ืจ ืžื‘ื™ืŸ ืืœื” ื”ืžื•ืฆืขื•ืช, ื”ื–ืŸ ืืช ื”ื’ืจืกื” ื‘ืื•ืคืŸ ื™ื“ื ื™, ืฆื™ื™ืŸ ืžืื’ืจ ืื• Tarball ืžื•ื›ืŸ.

ืชืฆื•ืจืช ืœื™ื‘ื” - ื ืชื™ื‘ ืœืชืฆื•ืจืช ื”ืœื™ื‘ื”. ืืชื” ื™ื›ื•ืœ ืœื‘ื—ื•ืจ ืืช ืชืฆื•ืจืช ื‘ืจื™ืจืช ื”ืžื—ื“ืœ ืขื‘ื•ืจ ื”ืืจื›ื™ื˜ืงื˜ื•ืจื” ืฉื ื‘ื—ืจื” ืื• defocnfig ืž-Linux. ืžืงื•ืจ ื”ืœื™ื ื•ืงืก ืžื›ื™ืœ ืงื‘ื•ืฆื” ืฉืœ ื”ื’ื“ืจื•ืช defconfigs ืขื‘ื•ืจ ืžืขืจื›ื•ืช ื™ืขื“ ืฉื•ื ื•ืช. ืืชื” ื™ื›ื•ืœ ืœืžืฆื•ื ืืช ื”ืื—ื“ ืฉืืชื” ืฆืจื™ืš ืขืœ ื™ื“ื™ ื”ืชื‘ื•ื ื ื•ืช ื™ืฉื™ืจื” ื‘ืžืงื•ืจื•ืช ื›ืืŸ. ืœื“ื•ื’ืžื”, ืขื‘ื•ืจ ืœื•ื— ืฉื—ื•ืจ ืขืฆื ื‘ื™ื’ืœ ืืชื” ื™ื›ื•ืœ ื‘ื—ืจ ืชืฆื•ืจื”.

ืกืขื™ืฃ ื—ื‘ื™ืœื•ืช ื”ื™ืขื“ ืžืืคืฉืจ ืœืš ืœื‘ื—ื•ืจ ืื™ืœื• ื—ื‘ื™ืœื•ืช ื™ื•ืชืงื ื• ื‘ืžืขืจื›ืช ื”ื ื‘ื ื™ืช. ื ืฉืื™ืจ ืืช ื–ื” ืœืœื ืฉื™ื ื•ื™ ืœืขืช ืขืชื”. ื ื•ืกื™ืฃ ืืช ื”ื—ื‘ื™ืœื•ืช ืฉืœื ื• ืœืจืฉื™ืžื” ื–ื• ืžืื•ื—ืจ ื™ื•ืชืจ.
ืชืžื•ื ื•ืช ืžืขืจื›ืช ืงื‘ืฆื™ื - ืจืฉื™ืžื” ืฉืœ ืชืžื•ื ื•ืช ืžืขืจื›ืช ืงื‘ืฆื™ื ืฉื™ื™ืืกืคื•. ื”ื•ืกืฃ ืชืžื•ื ืช ISO

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืžื˜ืขื ื™ ืืชื—ื•ืœ - ืžื‘ื—ืจ ืžื˜ืขื ื™ ืืชื—ื•ืœ ืœืื™ืกื•ืฃ. ื‘ื•ืื• ื ื‘ื—ืจ ื‘ืื™ื–ื•ืœื™ื ื™ืงืก

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ื”ื’ื“ืจืช Systemd

Systemd ื”ื•ืคื›ืช ืœืื—ื“ ืžืขืžื•ื“ื™ ื”ืชื•ื•ืš ืฉืœ ืœื™ื ื•ืงืก, ื™ื—ื“ ืขื ื”ืงืจื ืœ ื•-glibc. ืœื›ืŸ, ื”ืขื‘ืจืชื™ ืืช ื”ื”ื’ื“ืจื” ืฉืœื• ืœืคืจื™ื˜ ื ืคืจื“.

ืžื•ื’ื“ืจ ื‘ืืžืฆืขื•ืช make menuconfig, ื•ืœืื—ืจ ืžื›ืŸ Target packages โ†’ System Tools โ†’ systemd. ื›ืืŸ ืืชื” ื™ื›ื•ืœ ืœืฆื™ื™ืŸ ืื™ืœื• ืฉื™ืจื•ืชื™ systemd ื™ื•ืชืงื ื• ื•ื™ืชื—ื™ืœื• ืขื ื”ืคืขืœืช ื”ืžืขืจื›ืช.

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืฉืžื™ืจืช ืชืฆื•ืจืช ื”ืžืขืจื›ืช

ืื ื• ืฉื•ืžืจื™ื ืืช ื”ืชืฆื•ืจื” ื”ื–ื• ื“ืจืš KConfig.

ืื– ืฉืžื•ืจ ืืช ื”-defconfig ืฉืœื ื•:

make savedefconfig

ืชืฆื•ืจืช ืœื™ื‘ืช ืœื™ื ื•ืงืก

ืชืฆื•ืจืช ืœื™ื‘ืช ืœื™ื ื•ืงืก ืžื•ืคืขืœืช ืขื ื”ืคืงื•ื“ื” ื”ื‘ืื”:

make linux-menuconfig

ื‘ื•ืื• ื ื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ื›ืจื˜ื™ืก ืžืกืš Virtualbox

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ื‘ื•ืื• ื ื•ืกื™ืฃ ืชืžื™ื›ื” ื‘ืื™ื ื˜ื’ืจืฆื™ื” ืฉืœ Virtualbox Guest

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืฉืžื•ืจ ื•ืฆื. ื—ืฉื•ื‘: ื”ืชืฆื•ืจื” ืชื™ืฉืžืจ ื‘-out/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) ื‘ืืชื—ื•ืœ ืžื”ืชืงืœื™ื˜ื•ืจ. ืคืจืžื˜ืจื™ ืžืขืจื›ืช:

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืคื•ืขืœ ืžื”-ISO ื”ืžื•ืจื›ื‘:

Buildroot - ื—ืœืง 1. ืžื™ื“ืข ื›ืœืœื™, ื”ืจื›ื‘ืช ืžืขืจื›ืช ืžื™ื ื™ืžืœื™ืช, ืงื•ื ืคื™ื’ื•ืจืฆื™ื” ื“ืจืš ื”ืชืคืจื™ื˜

ืจืฉื™ืžืช ื”ื—ื•ืžืจื™ื ื‘ื”ื ื ืขืฉื” ืฉื™ืžื•ืฉ

  1. ืžื“ืจื™ืš Buildroot

ืžืงื•ืจ: www.habr.com

ื”ื•ืกืคืช ืชื’ื•ื‘ื”