ααα ααααΈααααΆα
αα αααα»αα’ααααααααααΈααα αααα»αα ααααΎααααααααααααααΎαααΆαα ααα αΆα buildroot αα·αα ααααααααααα·ααααααααααααα»ααααα»αααΆαααααΌαααΆαααααα ααΆααΉαααΆααααα·αααααααΆααααααααααα»αααΆααααααΎα OS ααΌα αα½ααααααΆαα ααα»α αααααΆααααααΆα ααα·α αα·ααα»αααΆααα·α αα½α αααα»αα
ααΆααααΌαα’ααααα·ααα½αα ααα‘αααααααααααΆαααα αα·αααΆαα ααα αΆαααα Buildroot α’αΆα βαααααΎαβααααααααβααΈβαααα»αβααβαααα ααβαααβααααΌαβααΆαβαααααβα±ααβααΆα Buildroot ααααΌαααΆααααααΎαα‘αΎααα ααΎ makefiles α αΎαααΌα ααααααΆααααααααΆαααααΌαααΆααααααααααααααΎαα αααα½ααααα ααααΆαα½αααΉααααααααααααα αααααααααα ααααααΆαααααα½αααααα’ααα ααααΆααααααΌαα αααΆαααααααΆααααΆαααΆαααααααα αα ααααΌαααααααααα―αααΆαααΆααααα αααααΆααααΈααα‘αΎααααα ααααΆααα’αα? buildroot α’αΆα ααααΎα’αααΈαααΆααα’αααααααΆαα
αα αααα»ααααααααα»αααααΈ buildroot ααααΌαααΆαααααΎααα»ααααααΆααααα·ααααααααα»αααΆαααααααΆαααΆααΆααΆαα»ααααΈαα·α αα½α αααααΆααα’αααα αΆααααααΎαααααΌαα
ααααα ααααΆαααΆαααΊαααααΌααααα»αα§αααααα ααα αΆαααΆαα½αααΉαααΆαααΆαααααααΆαα α ααα»α αααααΆαα icewm αα·ααααααα·ααΈαα»αααα αααα·ααΆααααα ααΊαααα’αααα·αααα·αα
α ααα»α’αααΈααΆαααΆαααααΎαααΆαα ααα αΆαααααΆαααααα½αααααα’ααα? ααΆααΉαααΆαααα»αααΆαααΆααααααααΊααααΌαααΆαααΆα αΆαααΆα αααΆαα½αααΉαααααΆαααΆααααααα ααΌααααΈααααΆααΉαααΆαααα αααα»αααααααααααααα·ααααα’αααααααΌααααααΎααααααα·ααΈααααααα ααΆαααααααα½αααΆαα ααα αΆααααααΆααααααααααΌαα αααααΆααααα’αΆααααα ααααααα·αα αΆαααΆα α α αΎαααααααααΆαα ααΆαααααα·ααΈααααααααΊααααΎααααΆαααααααΆααααααααα αααΎαααΆαααΆααααΆαααΆαα ααα αΆαααααΈα ααΆαααααΎααααΆαα Gentoo ααααΆαααααααααααααααΆαααααα
αααααααα Buildroot ααΆαααΆαααααααΆαα ααα»ααααααΆααΉααα·αααααΎα’αααΈαααααΆααα’αααααα ααΆα’αΆα ααΎαααααΎαααΆα αα·αααααααααααααα·ααααααααΎαααΆαααα‘αΎαα
ααααααααααααΆαααΆαααα½α (yocto ααααααααααΆααααααΎαα αα αα·ααααααααα) αα·αααααΌαααΆααα·α αΆαααΆ α¬ααααααααααα
αααααααααααααΌαααααΆαα·αααααα αΆααααααΎα
ααα ααααααααααα -
Buildroot ααααΎαααΆα defconfigs αααααΆαααααα»αααααΉααααΆαα·ααΆαααααα
ααααΆαααΆααααα Defconfig ααΊααΆα―αααΆαααααααα
ααΆααααααααααααααααΆαα»ααααααααΎαααααα·αααΆααααααααααΆαααΎαα ααΆααΊααΆααΆααααααααααααΌαα’αααΈαααααΉαααααΌααααααΌααα·αααααα αααα»αααααΈααα α’αααα’αΆα
ααααααα
ααΆαααααααα configs ααΆα
ααααα‘αααααα busybox, linux-kernel, uglibc, u-boot αα·α barebox bootloaders ααα»αααααα½αααΆααΆααα’ααααΉαααααΌαααΆαα
αααααΆαααα
ααΉααααααααααα
α
αααααΆααααΈαααααΆαααααααΆααααααΆαααΆααα α¬ααααΌαααΈ git ααΎαααα½αααΆα buildroot αα½α
ααΆαααααααΆααααααΎααααΆααα α’αααα’αΆα
α’αΆαααααααα’αααΈαα
ααΆαααααααααααα
αααα»αααααα
αα αααα»αααΉαααααΆααα’αααα’αααΈα’αααΈαααααααΆαααααα»αα
αααα»αααααΉααααΆαα·ααΆα - αααααααΆαα―αααΆαααΆααααΆααα
ααααααααΆαααΈαα½ααα ααΆαααααα’αΆα
ααΆααααααΈααααααΆαααααααΎαααΌαααΆααααααααα (iso, sdcart, cpio αα·ααααααααα) αααααα½αααΎααααΆ ααΆααααααααΊααα ααα
ααΆαααα»αα - defconfig αα·αααααΆαααααααα»αααααΉααααΆαα·ααΆαα Defconfig ααΊααΆααΆαααααααα
ααΆααααααααααααΆααα·αααααααα ααΆαααααΆαα»ααααααΆαααΆααααααααααα»αααΈααΆααααααααααΆαααΎαααα»αααααα
dl - αααααααΆαααΌαααααα/α―αααΆααααααΆαααΆααααααααΆααααΆααα½αααααα»αααααΆα
αααααα / ααααα
- ααααααααα―αααΆααααααΆααα½αααααα»αααααΆαα OS ααααααα ααααααα ααΌαααΆαααααΌαααΆααααααΎαααΈααΆαααααΆααααΆααα/ααα‘αΎα
αααααα / αααΆαααΈα - α§αααααααααΎααααΆαααααΆαααΈααααααΆααααΆααα½αααααα»αααααΆα
αααααα / αααααΎα - αααα
αααααααΆααααααΌααααα»α
ααΆααα½αααααα»αααααΆααααΌαααΆαααααααα ααΆααααααααααΆαααα KConfig α ααααααααααΌα ααααΆαααααααΌαααΆαααααΎααΎααααΈαααααΎαααΊαααααΈαα»α α αααααΈααΆααααααααΆαααααααΎααΆααΌαα αααα»α (ααααα·ααααα·αααα»ααα buildroot)α
- αααααΎα menuconfig - α α ααΆαααααααα ααΆααααααααααΆααααα α’αααααα’αΆα ααααΎα ααα»α αααααΆααααααΆα ααα·α (αααααΎα nconfig αααααΎα xconfig αααααΎα gconfig)
- αααααΎα linux-menuconfig - α α ααΆαααααααα ααΆααααααααααΊαααα
- αααα’αΆα - αααα’αΆαααααααααΆαααα (α’αααΈααααααααΆαααααααααΆαα»ααααα»ααααααα)
- αααααΎα - αααααΎαααααααααα ααΆβαα·αβααΆαβαααα»αβααααΎαααΆαβαααβααΆαβαααα»αβαα½α α αΎαβα‘αΎαβαα·αβααα
- αααααΎα defconfig_name - ααααΌαααΆαααααααα ααΆ defconfig ααΆααααΆαα
- αααααΎα list-defconfigs - αααα αΆααααααΈ defconfigs
- αααααΎαααααα - ααααΆααααααΆαααα―αααΆαααα‘αΎαααααα·αα αΆαααΆα αααΆααααα
- αααααΎααααα½α - ααΆαααΆααααααααΆαααα’αΆα ααααΎααΆα
αααααα αααΆαααααΆααα αα·ααααααΉαααΆααααααααα
Buildroot αα·αβαααααΎαβαααα ααβαααβααΆαβαααααΎαβα‘αΎαβαα·αβαα! ααΌα αααα ααααΆαααΆαα’αΆα ααΎαα‘αΎα ααααααααΌαα±ααααΆαααΆααααααΌααααα»αα‘αΎααα·αααααααα
α’αααα’αΆα αααααΎααααα ααααΆα ααααα‘ααα‘αΎααα·ααααααααΎααΆααααααααΆ αααααΎαααααααααα αα - αααααΎαα‘αΎααα·αα α§ααΆα ααα α’αααα’αΆα αααααΎαααΊαααααΈαα»α α‘αΎααα·αααΆαα
make linux-rebuild
Buildroot αααααΆαα»αααααΆαααΆααααααα ααααΆαα½αααααααααΎαα―αααΆα .stamp αα αααα»ααααα·ααααα/build/$packagenameα
ααΌα ααααα’αααα’αΆα αααααΎα 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 β host fs, staging fs, target fs build directoriesα
- $BUILD_DIR - ααααΆαα½ααααα αααααααΆααααααΆ αα·ααααααΎα
ααΆαααΎαααΎα
Buildroot ααΆααα»αααΆαααΎαααΎαα α’αααα’αΆα αααααΎαααααΆααααΆαα’αΆααααα ααααΆα αααααααααΆααΆαααα αα·αααααΆα ααααααα ααααα αααα αααα»αααααααααα α»ααααααα ααααααααΊαα αααα»αααααααααα―αααΆα pdf (α’αααα’αΆα ααααΎαααΎαααΈ svn, png) αα αααα»ααααααααα/ααααΆα ααα
α§ααΆα αααααααΆααααααααΆαααααΎαααΎαα
make graph-depends
αααααΎαααΎαααΎα’αΆαααααmake <pkg>-graph-depends
αααααΎααααααΆαα’αΆααααααααααΆαααααα ααααΆααααΆαααα½ααBR2_GRAPH_OUT=png make graph-build
ααααααααΎααααααααΆαα½αααΉααααααα PNGmake graph-size
ααα ααααα ααααααα
ααααααΈααααααΆααααααααα
ααΆααααααα αααα»ααα buildroot α§αααααααααΎααααΆαα ααΆαα½αααΉαααααααΈααααααΆαααααααααα α§ααΆα ααα ααΆαααααααΈαααααα·αα·αααααΆαααααΉαααααΌαααααΆααα·αααααΆαααα ααα ααΆα’αΆα ααΆααααααααααα ααααααααααααα ααααααΆαααααα½αααααα’ααα (αααα»αααΉαααααΎααΆαα αααααααα)α α―αααΆα utils/readme.txt ααΆαααΆααα·αααααΆα’αααΈααααααΈαααΆαααααα
ααααααααΎαααΆαα ααα αΆαααΆαα αα»α
ααΆααΆααΆαααααΆαααααα»αααΆαα
αα
αΆαααΆααααα·ααααα·ααΆαααΆααα’ααααααΌαααΆαα’αα»αααααααα»αααΆαα’αααααααΎααααΆααααααααΆαα·αααα root ααα
ααΆααααααααΆααΆααα’ααααααΌαααΆαααααα·ααααα·αααα»α 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
ααααααααΎα board directory ααααΆαα ααΎααααΈαααααΆαα»α scripts, 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 ααΉαααΎαα ααΆα’αΆα ααααΎαα ααΆαααΎααααΈααααααα ααΆααααααααααΆαα½αα ααα»α αααααΆααααααΆα ααα·α (ααααΎ nconfig αααααΎα xconfig αααααΎα gconfig)α
ααΎααααα αΌααααααααΈαα½α αααααΎαααααα α αα ααΈαααα’αααα’αΆα ααααΎαααΎαααααΆααααααααααααα αααααΆαααααΆαααΆααΉαααααΌαααΆαα’αα»ααααα
αααααΎαααΆαααα - ααΆαααΆαααααααα ααΆαααααααααααααααα ααΈαααα α’αααβα’αΆα βαααααΆααβααβαααβααααΎβααΌαβααααα α ααα½αβααβααΆαβαααααΎαβαααααααα‘αΆα αααα ααβαααααΆααβααΆαααβααΌαααααα αα·αβααΆααααααβααααααααα ααααα»αααΆααααααααΆαααααΆαααΎαα
Toolchain - α§ααααααααααΎαααααααα½αα―αααααΌαααΆαααααααα ααΆαααααααααα ααΈαααα ααΌαα’αΆαααααααα’αααΈααΆααα
αααααααααααααααΆααα§ααααα - αααααααααααααααΆααα§αααααααααΎααααΆααα αααα’αΆα ααΆ toolchain αααααααΌαααΆααααααΎαα‘αΎααα αααα»α buildroot α¬ααΆααααα (α’αααα’αΆα αααααΆαααααααααΆαααααΆαα α¬ url αααααΆααααΆααα)α ααΆααααααΎααααααααααααΆααααααΆααααααααααααααααααΆα α§ααΆα ααα αααααΆαααα α’αααα’αΆα ααααΎαααΎααααα Linaro αααααααααααΆααα§αααααααΆααααα α
αααααΆααα C - ααΆαααααΎαααΎααααααΆααα C α ααααα·ααααα·ααΆαααααααααααααΆααααΌαα’αΆαααααααΎαααα ααΆααααααΆ glibc ααααΌαααΆαααααΎ αααααΆαααααα»αααΆααααα’αΆα ααααΎααΆαααΆααα’ααα ααα»ααααααΆα’αΆα ααΆαααα αααααααααααΆαααααααααααααααα ααΌα αααα uglibc α¬ musl ααααΌαααΆαααααΎαααΎαααΆααΉαααΆααα ααΎαααΉαααααΎαααΎα glibc (ααΆααΉαααΆαααΆααα ααααααααααΎααααΈααααΎ systemd)α
ααααααΆααΊααα αα·ααααααΈααααααΆααΊαααααααΆαααααα½α - ααααΌαααααααΌααααααααααααΊααααααααΉααα αααα»ααααααααααααααΆααα½αααααα»αααααΆα αααααΆααααααααΆααΊααα α’αααααα’αΆα αααααΆααααααΌααα ααΆαα tarball α¬ git repository αααααα
GCC Compiler VERSIONS β ααααΎαααΎαααααα
ααααααααααααΌαααααΎαααααΆααααΆαααα
ααΎαβααΆαβααΆαααα C++ β ααααΎαβααΎααααΈβαααααΎαβαααβααΆαβααΆαβααΆααααβαααααΆααβαααααΆααα C++ αααα»αβααααααααα ααΆααΉαααΆααααααααααααααΆααααΎαααΆαααα’ααΆααα
αααααΎα gcc αααααα - α’αααα’αΆα ααααααααααΎαα αααααααααααα ααΎααα·αααααΌαααΆαααΆαααααΆααααααααααα
ααΆαααααααα ααΆααααααααααααααααα’αα»ααααΆαα±ααα’αααααααααααΆαααΆααααααααΆαααα’ααΆαααααααααααααααααΆααααααΎαα
α
ααα»α
ααΆαα
αααΎαααΊα
αααΆααααΈα
αααααΎαα α
αΌαααΎαααα
α·ααααα»αααΆααααΎα
ααα»α
ααΆααααααα
ααααΌααα
ααΆααααΆααΆαα’αααααααΎααααΆαα - ααΆααΆαααΆαα½αα’αααααααΎααααΆαααααααααΌααααααΎα (
α―αααΆαα§ααΆα αααα α’αααβααααΎβααΉαβααααΌαβααΆαβαααααΎαβαααβα’αααβαααααααααβααΆαααβαααααΆαα, gid/uid αααααβαααααααα·, /bin/sh shell, α’αααβααααΎβααααΆαααΎαβαααα»α, root αααΆαα·αβαααα»α, comment 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 - αααααα½αααΎααααΆαα ααΎααααΌαααααααα αααααΆααα½αααααα»αααααΆ -fs α ααααααα―αααΆαααααΈ αα·ααααα½αα―αααΆααααααΆαααααΆααα
ααααααΈαααααΆαααααα½ααααααααΌαααααΎαααΆααα»αααααααααΎαααΌαααΆαααααααααα―αααΆα - ααααααΈαααααΌαααΆαααααα·ααααα·ααααΆαααα»αααααααααααααααα―αααΆααα ααΆααΌαααΆαα ααΌαβαα»αβααααααΈαβα²ααβαα βαααβαααααΆααβαααβαααα
ααααα αααααααΊαααα
ααΆααααααααΊαααααααΌαααΆαααααααα
ααΈαααα ααΊααααααα½αααΆααααΌαααΆαααααααα
ααΆααααααααααΆαααα make linux-menuconfig α
α’αααα’αΆα
αααααααααααΊαααααΆααα·ααΈααααααααααΆα ααααΎαααΎαααΈα’αααΈααααααααααΌα αααα
αΌαααααααααα αααααΆααααααΆαα α¬ tarball αααααααααα½α
ααΆααααα
α
ααΆαααααααα
ααΆααααααααααΊααα β ααααΌααα
ααΆααααΆααααααααΊαααα α’αααα’αΆα
ααααΎαααΎαααΆααααααααααΆαααΎααααααΆααααααΆαααααααααααααΆαααααΎαααΎα α¬ defocnfig ααΈααΈαα»α
α αααααααΈαα»α
ααΆααααα»ααα defconfigs αααααΆααααααααααααααα
ααααααααααΆα α’αααα’αΆα
ααααααααα½ααααα’αααααααΌαααΆα
ααααααααα
ααααααα
α’αα»ααααΆαα±ααα’αααααααΎαααΎααααα
ααααΆαα½αααΉαααααΌαααΆαααα‘αΎααα
ααΎααααααααααααααα»αααααΌαααΆαααΆααααα ααΌαβαα»αβααΆβα±ααβαα
βααααβαααααΆααβαααβαααα ααΎαααΉααααααααααα
ααααααααΎααα
αααα»ααααααΈααααα
ααααααααα
ααΌαααΆαααααααααα―αααΆα - αααααΈααΌαααΆαααααααααα―αααΆααααααΉαααααΌαααΆααααααΌαα ααααααααΌαααΆα iso
αααααα·ααΈα αΆααααααΎααααααααα - ααΆαααααΎαααΎααααααα·ααΈα αΆααααααΎαααααααααααΎααααΈαααααΌαα αααααααΎαααΎα isolinix
ααΆαααααααα ααΆαααααααα Systemd
Systemd αααα»αααααΆαααΆααααααααααα½αααααΈαα»α αα½αααΆαα½αααΉαααΊααα αα·α glibc α ααΌα αααα αααα»αααΆαααααΆααααααΌαααΆααααααααααααΆαα ααΆαα»ααΆα ααααα‘αααα½αα
ααααααα ααΆααααααααααΆαααα make menuconfig αααααΆαααα Target packages β System tools β systemdα αα ααΈαααα’αααα’αΆα αααααΆααααααΆααααααααααΆαα½αααΉαααααΌαααΆαααα‘αΎα αα·αα αΆααααααΎααα ααααααααααααααα αΆααααααΎαα
αααααΆαα»αααΆαααααααα ααΆαααααααα
ααΎααααααΆαα»αααΆαααααααααααΆαααα KConfig α
αααααΆαααααααααΆαα»α defconfig ααααααΎαα
make savedefconfig
ααΆαααααααα ααΆααααααααααΊαααααΈαα»α
ααΆαααααααα ααΆααααααααααΊαααααΈαα»α ααααΌαααΆαα α αααααΆααααααααΆααΆααααααα
make linux-menuconfig
ααΌαααααααααΆαααΆαααααααααΆααααΆαααΈααα’αΌ Virtualbox
αααααααααααΆαααΆααααααΆααα½ααααα αΌα Virtualbox Guest
αααααΆαα»ααα·αα ααα ααααΆααα ααΆαααααααα ααΆααααααααααΉαααααΌαααΆααααααΆαα»ααααα»ααααααα/build/linux-$version/config ααα»αααααα·αααΆααα αααα»α board/my_x86_board/linux.config
ααΌα αααα α’αααααααΌαα ααααααΆαααααααα ααΆααααααααααααααα ααΈααΆαααααα»αα
cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config
αααααΆααααΈαααααΎαααΉαααααΎααΆαααα‘αΎαα‘αΎααα·αααααααααααααααααααΆααααΌαα buildroot αα·ααααααΎαα‘αΎααα·αααΌαα’αααΈαααααΆαααΆαααααα½α α αΎααα α’αααααααΌααααααααΆαααααα αααααααΆααααΆααααΆαα‘αΎααα·ααααααα ααΎααααΈαα»αα±ααααααααααΆααααααααΆ αα·ααααααααααΆα ααΆααΆααααααΆααααα½ααααα»αααΆααααΆαααααααααααΌα αα½αα‘αΎααα·αααΆαααααα»αα
make clean;make
αα ααααααα ααααΆαααααΆαααΆ ααΌαααΎαααααΎαααΆα VirtualBox (ααΆαααααααΎαααα 5.2 αα·α 6.0) αααα αΆααααααΎαααΈαααΈααΈα αααΆαααΆααααααααααααααα
ααααΎαααΆαααΈ iso αααααΌααααα»αα
αααααΈαααααΆαααααααΆαααααΎ
- ααααα αα Buildroot
ααααα: www.habr.com