áááá«ááºáž
á€áá±á¬ááºážáá«ážá¡ááœá²ááá¯ááºááœááºá buildroot ááŒáá·áºááŒá°ážáá±ážáááºáá±á¬ááºááŸá¯á áá áºá¡á¬áž ááŒáá·áºááŸá¯ááŒá®áž áááºážááᯠá áááºááŒáá¯ááºááŒá¯áá¯ááºáá¬ááœáẠáá»áœááºá¯ááºáá¡ááœá±á·á¡ááŒá¯á¶ááᯠáá»áŸáá±ááá¯áá«áááºá á€ááœáẠáááºááẠááááºáá Ạá¡ááºáá¬áá±á·á áºááŸáá·áº á¡áááºážáááºáá»áŸáᬠáá¯ááºáá±á¬ááºááá¯ááºá áœááºážááŸááá±á¬ OS áááºáá áºáá¯ááᯠáááºáá®ážáá¬ááœáẠáááºááœá±á·áá»áá±á¬ á¡ááœá±á·á¡ááŒá¯á¶ááᯠáááŸááááºááŒá áºáááºá
ááááŠážá áœá¬á áááºáá±á¬ááºááŸá¯á áá áºááŸáá·áº ááŒáá·áºááŒá°ážááŸá¯ááᯠááá±á¬ááœá±ážááá·áºáá«á Buildroot ááẠáááºážááá¯áááºážááŸááºážáá¬ážáá±á¬ packages á¡á á¯á¶á០system áá áºáá¯ááá¯áááºáá±á¬ááºááá¯ááºáááºá Buildroot ááẠmakefiles áá»á¬ážáá±á«áºááœááºáááºáá±á¬ááºáá¬ážáá±á¬ááŒá±á¬áá·áº ááŒá®ážáá¬ážáá±á¬á áááºááŒáá¯ááºááŒááºáááºááá¯ááºá áœááºážááŸááááºá áááºáá±á·áá»áºáá áºáá¯ááᯠá¡ááŒá¬ážáá¬ážááŸááºážááŒáá·áº á¡á á¬ážááá¯ážáá«á ááá·áºááá¯ááºááá¯áẠáááºáá±á·áá»áºááᯠááá·áºáá«á áááºáá±á·áá»áºáá áºáá¯áááºáá±á¬ááºááŒááºážá¡ááœáẠá ááºážáá»ááºážáá»á¬ážááᯠááŒá±á¬ááºážáá²áá«á áááºáá±á·áá»áºá¡á¬ážáá¯á¶ážááᯠááá·áºááœááºážááŒá®ážáá±á¬áẠááá¯ááºá áá áºá¡á¬áž á áááºááŒáá¯ááºááŒááºáááºáá«á buildroot á áá«á¡áá¯ááºáá¯ááºááá¯ááºáá«áááºá
áá¯ááŸá¬ážááœáẠbuildroot ááá¯á¡áá¯á¶ážááŒá¯áááºá ááá¯á·áá±á¬áºáá»áœááºá¯ááºáá¡ááŒááºááœááºá á áááºáá°áá»á¬ážá¡ááœáẠáá¯ááŸá¬ážáá¬áá¬á áá¬ážá¡áá»ááºá¡ááẠá¡áááºážáááºáá¬ááŸááááºá
á¡áá¯ááºááááºááœááºáá»ááºááŸá¬ ááá¯ááºááá¯ááºáá±á«ááºážáá¯ááºáá¯ááºááŒááºážá icewm interface ááŸáá·áº browser ááá¯á·áá«ááŸááá±á¬ ááŒáá·áºáá»á®áá±ážáááááá¬áá áºáá¯ááᯠá á¯á ááºážáááºááŒá áºáááºá áá áºááŸááºááááºáá±á¬ááºážááẠvirtualbox ááŒá áºáááºá
áá¬ááŒá±á¬áá·áº ááá·áºááá¯ááºááá¯áẠááŒáá·áºááŒá°ážááŸá¯ááᯠáááºáá±á¬ááºáá¬áá²á á¡ááá·áºá¡áááºááŸááá±á¬ á¡áááºážá¡ááŒá áºáá»á¬ážááŒáá·áº áá¯ááºáá±á¬ááºááá¯ááºá áœááºážááᯠáááŒá¬áá ááá¯á¡ááºáááºá á¡ááá¯á¡áá»á±á¬ááºá áá áºááœáẠááá¯ááááºáááŒá¬ááááẠfirmware áááºáá®ážáááºááá¯á¡ááºáááºá áááá¯á¡ááºáá±á¬áááºáá±á·áá»áºáá»á¬ážááá¯ááŸááºážáá¯ááºááŒá®áž firmware á¡ááŒá áºááŒá±á¬ááºážáá²ááŒááºážááŒáá·áº á¡ááœá±ááœá±áááºááœááºáá»ááºááŒáá·áº ááŒáá·áºááŒá°ážááŸá¯ááᯠááá¯ááºáá»á±á¬áá®ááœá±ááŒá áºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºážááẠááŒáá·áºááŒá°ážááŸá¯á¡áá áºááá¯áááºáá±á¬ááºááŒááºážááẠá¡áá¯ááºááá¬ážááá¯ááá¯áá»á¬ážááŒá¬ážáááºá Gentoo ááá¯á¡áá¯á¶ážááŒá¯áá¬ááœááºáááºáž ááá·áºáááºáá»ááºáá»á¬ážááŸááááºá
Buildroot á áá áºááẠá¡ááœááºá¡á áœááºážáááºáá±á¬áºáááºáž ááá·áºá¡ááœáẠáááºááá·áºá¡áá¬á០áá¯ááºáá±á¬ááºáááºááá¯ááºáá«á áááºážááẠáááºáááºááŒááºážáá¯ááºáááºážá ááºááá¯áᬠááœáá·áºááá¯ááºááŒá®áž á¡ááá¯á¡áá»á±á¬ááºáá¯ááºáá±á¬ááºááá¯ááºáááºá
á¡á á¬ážááá¯ážáááºáá±á¬ááºááŸá¯á áá áºáá»á¬áž (yoctoá open build system ááŸáá·áº á¡ááŒá¬áž) ááᯠááá·áºááœááºážá ááºážá á¬ážááŒááºáž ááá¯á·ááá¯áẠááŸáá¯ááºážááŸááºááŒááºážáááŒá¯áá«á
áááºááŸá¬áááá¯ááºááá²á áááºááá¯á áááá²
á
á®áá¶ááááºážáááºááá¯áẠ-
Buildroot ááẠáááºáá±á¬ááºááŸá¯ááá
áºááŸááºáá¯ááºá¡ááœá²á·á¡ááœáẠdefconfigs ááá¯áá¯ááºáá±á¬ááºáááºá Defconfig ááẠáá¯á¶áá±áááºááá¯ážáá»á¬ážááá«áá±á¬ ááœá±ážá
áá¬áá»á¬ážááá¯áᬠááááºážáááºážááá·áº ááœá²á·á
ááºážááŸá¯ááá¯ááºáá
áºáá¯ááŒá
áºáááºá áááºáá²á·ááá¯á· á
á¯áá±á¬ááºážáááºááᯠá¡áá¯á¶ážá¡ááŒááºáá±ážááá·áºáá°ááŒá
áºáááºá á€ááá
á¹á
ááœááºá áááºááẠbusyboxá linux-kernelá uglibcá u-boot ááŸáá·áº barebox bootloaders áá»á¬ážá configuration ááᯠáá®ážááŒá¬ážá
á®á
á®á
ááºááá¯ááºáá±á¬áºáááºáž áááºážááá¯á·á¡á¬ážáá¯á¶ážááᯠáá
áºááŸááºáá¯ááºááœáẠáá»áááºáá¬ážáááºááŒá
áºáááºá
áá±á«ááºážáá¯ááºáá¯ááºáá¬ážáá±á¬ archive ááá¯á·ááá¯áẠgit á០áá¯á¶áá°ááœá¬ážááŒááºážááᯠáá¯ááºááá¯ážááŒá®ážáá±á¬ááºá áá»áœááºá¯ááºááá¯á·ááẠá¡ááá·áºáá¯á¶ážááá¯ááºáá±á¬ buildroot áá
áºáá¯ááᯠáááŸááá«áááºá áááºá
áœá²á
á¬á¡á¯ááºááŸá áááºážááœáŸááºááœá²á·á
ááºážáá¯á¶á¡ááŒá±á¬ááºáž ááá¯ááá¯áááºááŸá¯ááá¯ááºáááºá á¡áá±ážá¡ááŒá®ážáá¯á¶ážá¡áá¬áá»á¬ážá¡ááŒá±á¬ááºáž áá»áœááºá¯ááºááŒá±á¬ááŒáá«áááº-
áá»ááºááŒá¬áž - áá¯ááºáá
áºáá¯á
á®á¡ááœáẠáá®ážááŒá¬ážááá¯ááºáá»á¬ážáá«ááá·áº áááºážááœáŸááºáá
áºáá¯á áááºážááá¯á·ááẠá
áá
áºáá¯á¶áá»á¬áž (isoá sdcartá cpio ááŸáá·áº á¡ááŒá¬ážá¡áá¬áá»á¬áž)á overlay directoryá kernel config á
áááºááá¯á·á¡ááœáẠscript áá»á¬áž ááŒá
áºááá¯ááºáááºá
configs áá»á¬áž - áá¯ááºá¡ááœá²á·áá¡ááŸááºáááẠdefconfig á Defconfig ááẠáááŒáá·áºá
á¯á¶áá±á¬áá¯ááºááœá²á·á
ááºážáá¯á¶áá
áºáá¯ááŒá
áºáááºá áááºážááẠáá°áááºážáááºáááºáá»á¬ážá០ááœá²ááŒá¬ážáá±á¬ ááá·áºáááºáá»ááºáá»á¬ážááá¯áᬠááááºážáááºážáá¬ážáááºá
dl - á
á¯áá±ážááŸá¯á¡ááœááºáá±á«ááºážáá¯ááºáá¯ááºáá¬ážáá±á¬á¡áááºážá¡ááŒá
áºáá¯ááºáá»á¬áž / ááá¯ááºáá»á¬ážáá«ááŸááá±á¬áááºážááœáŸááº
á¡ááœááº/áá
áºááŸáẠ- áááẠOS á á
á¯á
ááºážáá¬ážáá±á¬ ááá¯ááºá
áá
áºá áá±á¬ááºááá¯ááºážááœááºá áá±á«ááºážáá¯ááºááœá²ááŒááºáž/ááá·áºááœááºážááŒááºážá¡ááœáẠáááºážááŸáá¯á¶áá»á¬ážááᯠáááºáá®ážáá¬ážáááºá
á¡ááœááº/á¡áááºááŸáẠ- á
á¯áá±ážááŸá¯á¡ááœááºá¡áááºááŸááºá¡áá¯á¶ážá¡áá±á¬ááºáá»á¬áž
á¡ááœááº/áááºáá±á¬ááºááŸá¯ - á¡á
á¯á¡áá±ážáá»á¬áž
á ááºážáá±ážááœá²ááᯠKConfig ááŸáá áºááá·áº á á®á ááºáááºááŸááºáá¬ážáááºá Linux kernel ááá¯áááºáá±á¬ááºáááºá¡ááœááºáá°áá®áá±á¬á áá áºááá¯á¡áá¯á¶ážááŒá¯áááºá á¡áá¯á¶ážá¡áá»á¬ážáá¯á¶áž command áá»á¬ážá á¬áááºáž ( buildroot directory ááœáẠexecute ) á
- menuconfig áá¯ááºáá« - build configuration ááá¯áá±á«áºáá«á ááááºáá áºá¡ááºáá¬áá±á·á áºááá¯áááºáž áááºá¡áá¯á¶ážááŒá¯ááá¯ááºááẠ( nconfig ááŒá¯áá¯ááºá xconfig ááŒá¯áá¯ááºá gconfig ááŒá¯áá¯ááº)
- linux-menuconfig ááŒá¯áá¯ááºáá« - kernel configuration ááá¯áá±á«áºááá¯áá«á
- make clean - áááºáá±á¬ááºááŸá¯ááááºáá»á¬ážááᯠááá·áºááŸááºážáá« (á¡ááœááºááœáẠááááºážáááºážáá¬ážááá»áŸ)
- make - á áá áºáá áºáá¯áááºáá±á¬ááºá áááºážááẠá á¯á ááºážááŒá®ážáá±á¬ áá¯ááºáááºážá ááºáá»á¬ážááᯠááŒááºáááºá á¯á ááºážáááºááá¯ááºáá«á
- defconfig_name ááŒá¯áá¯ááºáá« - ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠáá®ážááŒá¬áž defconfig áá áºáá¯ááá¯á· ááŒá±á¬ááºážáá«á
- list-defconfigs áá¯ááºáá« - defconfigs á á¬áááºážááá¯ááŒááá«á
- á¡áááºážá¡ááŒá áºáááºáá®ážáá« - áááºáá±á¬ááºááŒááºážáááŒá¯áá² install áá¯ááºáá¬ážáá±á¬ááá¯ááºáá»á¬ážááá¯áá±á«ááºážáá¯ááºáá¯ááºáá«á
- help - ááŒá áºááá¯ááºáá±á¬ command áá»á¬ážááᯠá á¬áááºážááŒá¯á á¯áá«á
á¡áá±ážááŒá®ážáá±á¬ááŸááºá á¯áá»á¬ážááŸáá·áº á¡áá±á¬ááºá¡áá°ááŒá áºá á±áá±á¬ á¡ááŒá¶ááŒá¯áá»ááºáá»á¬áž
Buildroot ááẠáááºáá±á¬ááºááŒá®ážáá±á¬ áááºáá±á·áá»áºáá»á¬ážááᯠááŒááºáááºáááºáá±á¬ááºáááºááá¯ááºáá«á ááá¯á·ááŒá±á¬áá·áº ááŒá®ážááŒáá·áºá á¯á¶áá±á¬ ááŒááºáááºá á¯á ááºážááŸá¯ ááá¯á¡ááºááá·áº á¡ááŒá±á¡áá±áá»áá¯áž ááŒá áºáá±á«áºáá¬ááá¯ááºáááºá
command ááŒáá·áº áá®ážááŒá¬áž package áá áºáá¯ááᯠááŒááºáááºáááºáá±á¬ááºááá¯ááºáá«áááºá packagename-rebuild áá¯ááºáá«á á¥ááá¬á¡á¬ážááŒáá·áºá áááºááẠLinux kernel ááᯠááŒááºáááºáááºáá±á¬ááºááá¯ááºáááº-
make linux-rebuild
Buildroot ááẠoutput/build/$packagename directory ááœáẠ.stamp ááá¯ááºáá»á¬ážááᯠáááºáá®ážááŒááºážááŒáá·áº áááºááá·áº package áá¡ááŒá±á¡áá±ááᯠááááºážáááºážáááº-
ááá¯á·ááŒá±á¬áá·áºá áááºááẠáááºáá±á·áá»áºáá»á¬ážááᯠááŒááºáááºáááºáá±á¬ááºááŒááºážáááŸááá² 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 ááœáẠá¡ááœááºááá° configuration ááŒá¯áá¯ááºáááºá¡ááœáẠvariable á¡á á¯á¶ááŸááááºá
- $TOPDIR - buildroot áááºážááœáŸááº
- $BASEDIR - OUTPUT áááºážááœáŸááº
- $HOST_DIRá $STAGING_DIRá $TARGET_DIR â host fsá staging fsá áá áºááŸáẠfs áááºáá±á¬ááºááŸá¯áááºážááœáŸááºáá»á¬ážá
- $BUILD_DIR - áá¯ááºááá¯ážááŒá®áž áááºáá±á¬ááºáá¬ážáá±á¬ á¡áá¯ááºáá»á¬ážáá«ááá·áº áááºážááœáŸááº
ááŒááºááœááºáž
buildroot ááœáẠááŒááºáá±á¬ááºáá¯á¶áá±á¬áºááá¯ááºáá±á¬ á¡ááºá¹áá«áááºáá áºáá¯ááŸááááºá áááºááẠááŸá®ááá¯ááŸá¯áá¯á¶á á¶áá áºáá¯á áááºáá±á¬ááºáá»áááºááááºáá áºáá¯ááŸáá·áº áá±á¬ááºáá¯á¶ážá áá áºááœáẠáááºáá±á·áá»áºá¡ááœááºá¡á á¬ážááááºáá áºááᯠáááºáááºáá±á¬ááºááá¯ááºáááºá ááááºáá»á¬ážááẠpdf ááá¯ááºáá»á¬áž áá¯á¶á á¶ááŒáá·áº (ááẠsvná png á០ááœá±ážáá»ááºááá¯ááºáááº) ááẠoutput/graph directory ááœááºááŒá áºáááºá
ááŒááºáá¬ááŒááºáá¬áá±á¬ ááœáŸááºááŒá¬ážáá»ááºáá»á¬áž á¥ááá¬áá»á¬áž-
make graph-depends
ááŸá®ááá¯áá áºáááºáááºáá±á¬ááºáá«ámake <pkg>-graph-depends
áá®ážááŒá¬ážáááºáá±á·ááºá»áá áºáá¯á¡ááœáẠááŸá®ááá¯ááŸá¯áá áºáááºááᯠáááºáá±á¬ááºáá«áBR2_GRAPH_OUT=png make graph-build
PNG á¡ááœááºááŒáá·áº áááºáá±á¬ááºáá»áááºmake graph-size
plot packet á¡ááœááºá¡á á¬áž
á¡áá¯á¶ážáááºáá±á¬ script áá»á¬áž
buildroot directory ááœáẠsubdirectory áá áºáá¯ááŸááááºá á¡áá¯á¶ážá¡áá±á¬ááºáá»á¬áž á¡áá¯á¶ážáááºáá±á¬ script áá»á¬ážááŸáá·áºá¡áá° á¥ááá¬á¡á¬ážááŒáá·áºá áááºáá±á·áá»áºáá±á¬áºááŒáá»ááºáá»á¬ážá ááŸááºáááºááŸá¯ááᯠá á áºáá±ážááá·áº script áá áºáᯠááŸááá«áááºá ááá·áºááá¯ááºááá¯áẠáááºáá±á·áá»áºáá»á¬ážááᯠááá·áºááá·áºá¡áá« áááºážááẠá¡áá¯á¶ážáááºááá¯ááºááẠ(áá±á¬ááºá០áá¯ááºáá«á·áááº)á utils/readme.txt ááá¯ááºááœáẠဠscript áá»á¬ážá áá±á¬áºááŒáá»ááºáá«ááŸááááºá
á áá±á¬á·ááŒáá·áºáá»á®áá±ážáá áºáá¯áááºáá±á¬ááºááŒáá«á áá¯á·
áá¯ááºáá±á¬ááºáá»ááºá¡á¬ážáá¯á¶ážááᯠroot ááá¯ááºáá² áá¯á¶ááŸááºá¡áá¯á¶ážááŒá¯áá°ááá¯ááºá
á¬áž áá¯ááºáá±á¬ááºááŒá±á¬ááºáž ááŸááºáá¬ážáá¬ážááẠá¡áá±ážááŒá®ážáá«áááºá
command á¡á¬ážáá¯á¶ážááᯠbuildroot ááœáẠáá¯ááºáá±á¬ááºáá«áááºá buildroot áááºáá±á·áá»áºááœáẠá¡áá»á¬ážáá¯á¶áž boards á¡áá»á¬ážá¡ááŒá¬ážááŸáá·áº virtualization á¡ááœáẠconfigurations á¡á
á¯á¶áá«áááºááŒá®ážááŒá
áºáááºá
ááœá²á·á ááºážááŸá¯áá¯á¶á á¶áá»á¬ážá á¬áááºážááᯠááŒáá·áºááŒáá«á áá¯á·á
qemu_x86_64_defconfig config ááá¯á·ááŒá±á¬ááºážáá«á
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
áá»áœááºá¯ááºááá¯á·á scriptsá rootfs-overlay ááŸáá·áº á¡ááŒá¬ážááá¯á¡ááºáá±á¬ááá¯ááºáá»á¬ážááᯠááááºážáááºážáááºá¡ááœáẠboard directory áá áºáá¯ááᯠáá»ááºáá»ááºážáááºáá®ážááŒáá«á áá¯á·á
mkdir board/my_x86_board
ဠdefconfig ááá¯á·ááŒá±á¬ááºážáá«-
make my_x86_board_defconfig
ááá¯á·ááŒá±á¬áá·áº ááᯠbuild config ( buildroot directory á root ááœáẠ.config ááœáẠááááºážáááºážáá¬ážáááº) ááẠx86-64 legacy(bios) boot target machine ááŸáá·áº áááºááá¯ááºáá«áááºá
linux-kernel configuration ááᯠáá°ážáá°ááŒáá«á áá¯á· (áá±á¬ááºááŸá¡áá¯á¶ážáááºáááº)á
cp board/pc/linux.config board/my_x86_board/
KConfig ááŸáá áºááá·áº áááºáá±á¬ááºááŸá¯áá±á¬ááºáá»á¬ážááᯠáááºááŸááºááŒááºážá
á áá áºááá·áºááœááºážááŸá¯ááᯠá ááá¯ááºáá¡á±á¬ááºá
make menuconfig
KConfig áááºážááá¯áž ááœáá·áºáá¬áá«áááºá graphical interface ááŒáá·áº configure áá¯ááºááẠááŒá áºááá¯ááºááẠ( nconfig ááŒá¯áá¯áẠá xconfig ááŒá¯áá¯áẠá gconfig ááŒá¯áá¯ááºááẠ) á
áá»áœááºá¯ááºááá¯á·ááẠáááá¡ááá¯ááºážááœáẠTarget Options ááᯠááá·áºááœááºážáá«á á€áá±áá¬ááœáẠáááºáá±á¬ááºááŸá¯áá¯ááºáá±á¬ááºááá·áº áá áºááŸááºáááá¯áá¬ááᯠáááºááœá±ážáá»ááºááá¯ááºáááºá
áááºáá±á¬ááºááŸá¯ááœá±ážáá»ááºá áá¬áá»á¬áž - á€áá±áá¬ááœáẠáááºáá±á¬ááºááŸá¯áááºáááºáá»á¬áž á¡áá»áá¯ážáá»áá¯ážááŸááááºá áááºážááŒá áºáá¯ááºáá»á¬ážá áááºáá±á¬ááºááŸá¯ááœá²áá»á¬áž á¡áá±á¡ááœááºá á¡áááºážá¡ááŒá áºáá¯ááºáá»á¬ážááᯠáá±á«ááºážáá¯ááºáá¯ááºáááºá¡ááœáẠmirrors ááŸáá·áº á¡ááŒá¬ážáááºáááºáá»á¬ážááŒáá·áº áááºážááœáŸááºáá»á¬ážááᯠáááºáááºááŸááºááá¯ááºáá«áááºá áááºáááºáá»á¬ážááᯠáá°áááºážá¡ááá¯ááºážáá¬ážáá²á·ááŒáá«á áá¯á·á
Toolchain - áááºáá±á¬ááºáááááá¬áá»á¬ážááá¯ááºááá¯áẠá€áá±áá¬ááœáẠconfigure áá¯ááºáá¬ážáá«áááºá áá°á·á¡ááŒá±á¬ááºáž áá»á¬ážáá»á¬ážáááºáá«á
Toolchain á¡áá»áá¯ážá¡á á¬áž â á¡áá¯á¶ážááŒá¯áá±á¬ toolchain á¡áá»áá¯ážá¡á á¬ážá áááºážááẠbuildroot ááœááºáááºáá±á¬ááºáá¬ážáá±á¬ toolchain ááá¯á·ááá¯áẠááŒááºááá áºáá¯ááŒá áºááá¯ááºááẠ(áááºáááºáá±á¬ááºááŒá®ážáá±á¬áá áºáᯠááá¯á·ááá¯áẠáá±á«ááºážáá¯ááºáá¯ááºáááºá¡ááœáẠurl ááŒáá·áºáááºážááœáŸááºááá¯áááºáááºááŸááºááá¯ááºáááº)á ááá°áá®áá±á¬ áááá¯áá¬áááºáá¬áá»á¬ážá¡ááœáẠáá±á¬ááºáááºááœá±ážáá»ááºá áá¬áá»á¬áž ááŸááá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áááºáá±á¬ááºážá¡ááœáẠáááºááẠááŒááºááááááá¬ááœááºážáááºá Linaro áá¬ážááŸááºážááᯠááá¯ážááŸááºážá áœá¬ááœá±ážáá»ááºááá¯ááºáááºá
C á á¬ááŒáá·áºááá¯áẠ- C á á¬ááŒáá·áºááá¯ááºá ááœá±ážáá»ááºááŸá¯á á áá áºáá áºáá¯áá¯á¶ážá áá¯ááºáá±á¬ááºááŸá¯ááẠá€á¡áá±á«áºáá°áááºáá«áááºá áá¯á¶ááŸááºá¡á¬ážááŒáá·áºá ááŒá áºááá¯ááºáá»á±ááŸááá±á¬ áá¯ááºáá±á¬ááºááá¯ááºá áœááºážá¡á¬ážáá¯á¶ážááᯠáá¶á·ááá¯ážáá±ážááá·áº glibc ááᯠá¡áá¯á¶ážááŒá¯áááºá ááá¯á·áá±á¬áº áááºážááẠááŒáŸá¯ááºááœááºážáá¬ážáá±á¬á áá áºá¡ááœáẠááŒá®ážááœááºážáá±á¬ááŒá±á¬áá·áº uglibc ááá¯á·ááá¯áẠmusl ááᯠáááŒá¬áá ááœá±ážáá»ááºáá±á·ááŸááááºá áá»áœááºá¯ááºááá¯á·ááẠglibc ááá¯ááœá±ážáá»ááºáá«ááẠ(áááºážááẠsystemd ááá¯á¡áá¯á¶ážááŒá¯ááẠáá±á¬ááºááá¯ááºážááœáẠááá¯á¡ááºáááá·áºáááº)á
Kernel Headers ááŸáá·áº Custom Kernel Headers á á®ážáá®ážáá»á¬áž - á á¯á ááºážáá¬ážáá±á¬á áá áºááœááºááŸáááá·áº kernel áá¬ážááŸááºážááŸáá·áº ááá¯ááºáá®ááá«áááºá kernel áá±á«ááºážá á®ážáá»á¬ážá¡ááœááºá áááºááẠtarball ááá¯á·ááá¯áẠgit repository ááá¯á·áááºážááŒá±á¬ááºážááᯠáááºááŸááºááá¯ááºáááºá
GCC á
á¯á
ááºážááŸá¯áá¬ážááŸááºáž â áááºáá±á¬ááºáááºá¡ááœáẠá¡áá¯á¶ážááŒá¯ááá·áº ááœááºááá®áá¬áá¬ážááŸááºážááᯠááœá±ážáá»ááºáá«á
C++ áá¶á·ááá¯ážááŸá¯ááᯠááœáá·áºáá« â á
áá
áºá¡ááœááºážááŸá C++ á
á¬ááŒáá·áºááá¯ááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááŒáá·áº áááºáá±á¬ááºááẠááœá±ážáá»ááºáá«á áááºážááẠá¡áá¬áááºááœáẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠá¡áá¯á¶ážáááºáá«áááá·áºáááºá
á¡ááá¯áá±á¬ááºáž gcc ááœá±ážáá»ááºá áá¬áá»á¬áž - áááºááẠáá±á¬ááºááẠcompiler ááœá±ážá áá¬áá»á¬ážááᯠáááºááŸááºááá¯ááºáááºá áá±á¬áá±á¬ááẠáá»áœááºáá±á¬áºááá¯á· áááá¯á¡ááºáá«áá°ážá
á áá áºááœá²á·á ááºážáá¯á¶ááẠááá·áºá¡á¬áž áááºáá®ážáá¬ážáá±á¬ á áá áºá á¡áá¬ááẠáá±á¬ááºáá»á¬ážááᯠáááºááŸááºááẠááœáá·áºááŒá¯áááº-
á¡áá»ááºá¡áá»á¬ážá
á¯ááẠáá±á«ááºážá
ááºá០ááŸááºážáá«áááºá á¡á±á¬ááºáá«á¡áá»ááºááœá±ááᯠá¡á¬áá¯á¶á
áá¯ááºááŒáá·áºáá¡á±á¬ááºá
á¡áá¯á¶ážááŒá¯áá°áá»á¬áž ááá¬ážáá»á¬ážáá®ááá¯á· áááºážááŒá±á¬ááºáž - áááºáá®ážááá·áº á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááŸáá·áº ááá¬áž (
ááá°áá¬ááá¯ááºá á¡áá¯á¶ážááŒá¯áá°á¡áá¯á¶ážááŒá¯áá°ááᯠá áá¬ážááŸááºá á®áá¶ááá·áºááœá²áá°á á¡ááá¯á¡áá»á±á¬áẠ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
Root filesystem overlay directories - á á¯á ááºážáá¬ážáá±á¬ target-fs áááááºááœáẠáááºáá¬ážáá±á¬ áááºážááŒá±á¬ááºážá ááá¯ááºá¡áá áºáá»á¬ážááá·áºáᬠááŸáááŒá®ážáá¬ážááá¯ááºáá»á¬ážááᯠá¡á á¬ážááá¯ážáá«á
ááá¯ááºá áá áºáá¯á¶áá»á¬ážááᯠááááºáá®ážáá® áá¯ááºáá±á¬ááºááẠá áááºááŒáá¯áẠscript áá»á¬áž - ááá¯ááºá áá áºá¡á¬áž áá¯á¶áá»á¬ážá¡ááŒá áºááá¯á· ááá±á«ááºáá® áá»ááºáá»ááºážáá¯ááºáá±á¬ááºááá·áº Scripts áá»á¬ážá áá¬ááºááœáŸááºážááᯠá¡áá¯áá² áá»ááºáá¬ážááá¯ááºáá¡á±á¬ááºá
Kernel á¡ááá¯ááºážááᯠááœá¬ážááŒáá¡á±á¬ááº
Kernel áááºáááºáá»á¬ážááᯠá€áá±áá¬ááœáẠáááºááŸááºáá¬ážáá«áááºá kernel ááá¯ááºááá¯ááºá make linux-menuconfig ááŸáááá·áº configure áá¯ááºáá¬ážáááºá
kernel áá¬ážááŸááºážááᯠááœá²ááŒá¬ážááŒá¬ážáá¬ážáá±á¬áááºážáááºážáá»á¬ážááŒáá·áº áááºáááºááŸááºááá¯ááºáááº- áááºážááŸááºážáá¬ážááá·áºá¡áá¬áá»á¬ážá០ááœá±ážáá»ááºáá«á áá¬ážááŸááºážááᯠááá¯ááºááá¯ááºááá¯ááºááá·áºáá«á ááá¯ááŸá±á¬ááºáááºážáá
áºáᯠááá¯á·ááá¯áẠá¡áááºááá·áºáá¯ááºáá¬ážáá±á¬ tarball ááá¯áááºááŸááºáá«á
Kernel configuration â kernel config ááá¯á· áááºážááŒá±á¬ááºážá áááºááœá±ážáá»ááºáá¬ážáá±á¬ áááá¯áá¬ááá¬á¡ááœáẠáá°áááºážááœá²á·á
ááºážáá¯á¶ ááá¯á·ááá¯áẠLinux á០defocnfig ááᯠááœá±ážáá»ááºááá¯ááºáááºá Linux á¡áááºážá¡ááŒá
áºááœáẠááá°áá®áá±á¬ áá
áºááŸááºá
áá
áºáá»á¬ážá¡ááœáẠdefconfigs á¡á
á¯á¶áá«ááŸááááºá áááºááá¯á¡ááºáá¬ááᯠááŸá¬ááá¯ááºáá«áááºá
áá
áºááŸáẠáááºáá±á·áá»áºáá»á¬áž ááá¹áááẠááá·áºá¡á¬áž áááºáá±á¬ááºáá±ááá·áº á
áá
áºááœáẠáááºááá·áº áááºáá±á·ááºá»áá»á¬ážááᯠááá·áºááœááºážáááºááᯠááœá±ážáá»ááºááá¯ááºá
á±áá«áááºá áááŒá±á¬ááºážáá²áá² áá¬ážááá¯ááºáá¡á±á¬ááºá áá»áœááºá¯ááºááá¯á·á áááºáá±á·áá»áºáá»á¬ážááᯠá€á
á¬áááºážááœáẠáá±á¬ááºá០ááá·áºáá«áááºá
ááá¯ááºá
áá
áºáá¯á¶áá»á¬áž - á
á¯áá±á¬ááºážááá·áº ááá¯ááºá
áá
áºáá¯á¶áá»á¬ážá
á¬áááºážá iso áá¯á¶ááá·áºáá«á
Bootloaders - á á¯áá±á¬ááºážááẠbootloaders ááœá±ážáá»ááºááŸá¯á isolinix ááᯠááœá±ážááá¯ááºáá¡á±á¬ááº
Systemd ááᯠááŒááºáááºááŒááºáž
Systemd ááẠkernel ááŸáá·áº glibc ááá¯á·ááŸáá·áºá¡áá° Linux áááá¹ááá¯ááºáá áºáá¯ááŒá áºáá¬áááºá ááá¯á·ááŒá±á¬áá·áºá áá»áœááºá¯ááºááẠáááºážááááºáááºááᯠáá®ážááŒá¬ážá¡áá¬áá áºáá¯ááá¯á· ááœáŸá±á·ááá¯ááºáááºá
Menuconfig ááá¯áá¯ááºáá«á ááá¯á·áá±á¬áẠTarget packages â System tools â systemd ááŸáááá·áº configure áá¯ááºáá«á á€áá±áá¬ááœáẠáááºááẠáááºááá·áº systemd áááºáá±á¬ááºááŸá¯áá»á¬ážááᯠááá·áºááœááºážááŒá®áž á áá áºá áááºáá±á¬á¡áá«ááœáẠá áááºáááºááᯠáááºáááºááŸááºááá¯ááºáá«áááºá
á áá áºááœá²á·á ááºážáá¯á¶ááᯠááááºážáááºážááŒááºážá
KConfig ááŸáá áºááá·áº ဠconfig ááᯠááááºážáááºážáá«áááºá
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·á defconfig ááᯠááááºážáááºážáá«á
make savedefconfig
Linux Kernel ááœá²á·á ááºážááŸá¯
Linux kernel configuration ááᯠá¡á±á¬ááºáá« command ááŒáá·áº áá±á«áºááá¯áááº-
make linux-menuconfig
Virtualbox áá®áá®ááá¯áááºá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááá·áºááŒáá«á áá¯á·
Virtualbox Guest áá±á«ááºážá ááºážááŸá¯áá¶á·ááá¯ážááŸá¯ááá·áºááŒáá«á áá¯á·
ááááºážááŒá®áž ááœááºááá¯ááºáá«á á¡áá±ážááŒá®áž- ááœá²á·á ááºážááŸá¯áá¯á¶á á¶ááᯠá¡ááœááº/build/linux-$version/config ááœáẠááááºážáááºážáááºááŒá áºáá±á¬áºáááºáž board/my_x86_board/linux.config ááœáẠááááºážáááºážáááºááá¯ááºáá«á
ááá¯á·ááŒá±á¬áá·áºá áááºááẠconfig ááᯠááá¯ááŸá±á¬ááºááŸá¯áááºáá±áá¬ááá¯á· ááá¯ááºááá¯ááºáá°ážáá°ááẠááá¯á¡ááºáááº-
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
ááá¯á·áá±á¬áẠáá»áœááºá¯ááºááá¯á·ááẠá áá áºáá áºáá¯áá¯á¶ážá ááŒá®ážááŒáá·áºá á¯á¶áá±á¬ ááŒááºáááºá á¯á ááºážááŸá¯ááᯠáá¯ááºáá±á¬ááºáá«áááºá buildroot ááẠáááºáá±á¬ááºááŒá®ážáá¬ážá¡áá¬ááᯠááŒááºáááºáááºáá±á¬ááºááŒááºážáááŒá¯áá«á ááŒááºáááºáááºáá±á¬ááºáááºá¡ááœáẠáááºáá±á·áá»áºáá»á¬ážááᯠááá¯ááºááá¯ááºáááºááŸááºááá«áááºá á¡áá»áááºááŸáá·áºá¡á¬áá¯á¶ááŒá±á¬áá»á¬ážááá¯áááŒá¯ááºážáá®ážá á±áááºá¡ááœááºá áá±ážáááºáá±á¬á áá áºáá áºáá¯áá¯á¶ážááá¯ááŒááºáááºáááºáá±á¬ááºáááºááá¯ááá¯ááœááºáá°áááº) á
make clean;make
áááºáá±á¬ááºááŸá¯ááŒá®ážáá«áá CD ááŸá áááºááœáá·áºááŒááºáž VirtualBox (áá¬ážááŸááºáž 5.2 ááŸáá·áº 6.0 ááœááºá ááºážáááºáá¬ážáááº) ááá¯ááœáá·áºáá«á á áá áºáá±á¬ááºáá»á¬áž-
á á¯á ááºážáá¬ážáá±á¬ iso á០áá¯ááºáá±á¬ááºáá±áááº
á¡áá¯á¶ážááŒá¯áá±á¬áá á¹á ááºážáá»á¬ážá á¬áááºáž
- Buildroot áááºá áœá²
source: www.habr.com