Buildroot - เบชเปˆเบงเบ™เบ—เบต 2. เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฐเบ”เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™; เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบ, rootfs-overlay, scripts post-build

เปƒเบ™เบžเบฒเบเบ™เบตเป‰เบ‚เป‰เบญเบเป€เบšเบดเปˆเบ‡เบšเบฒเบ‡เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบ—เบตเปˆเบ‚เป‰เบญเบเบ•เป‰เบญเบ‡เบเบฒเบ™. เบ™เบตเป‰เบšเปเปˆเปเบกเปˆเบ™เบšเบฑเบ™เบŠเบตเบฅเบฒเบเบŠเบทเปˆเบ„เบปเบšเบ–เป‰เบงเบ™เบ‚เบญเบ‡เบชเบดเปˆเบ‡เบ—เบตเปˆ buildroot เบชเบฐเป€เบซเบ™เบต, เปเบ•เปˆเบžเบงเบเบกเบฑเบ™เบกเบตเบ›เบฐเป‚เบซเบเบ”เบซเบผเบฒเบเปเบฅเบฐเบšเปเปˆเบฎเบฝเบเบฎเป‰เบญเบ‡เปƒเบซเป‰เบกเบตเบเบฒเบ™เปเบŠเบเปเบŠเบ‡เปƒเบ™เป„เบŸเบฅเปŒเบ‚เบญเบ‡ buildroot เบ•เบปเบงเบกเบฑเบ™เป€เบญเบ‡.

เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบเบปเบ™เป„เบเบžเบฒเบเบ™เบญเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡

เปƒเบ™เบšเบปเบ”เบ‚เบฝเบ™เบเปˆเบญเบ™ เปœเป‰เบฒ เบ™เบตเป‰ เบžเบงเบเป€เบฎเบปเบฒเป„เบ”เป‰เป€เบšเบดเปˆเบ‡เบ•เบปเบงเบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเป†เบ‚เบญเบ‡เบเบฒเบ™เป€เบžเบตเปˆเบกเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡เป‚เบ”เบเบเบฒเบ™เป€เบžเบตเปˆเบก defconfig เบ‚เบญเบ‡เบเบฐเบ”เบฒเบ™เปเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป‚เบ”เบเบเบปเบ‡เปƒเบชเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต Buildroot.

เปเบ•เปˆเบงเบดเบ—เบตเบเบฒเบ™เบ™เบตเป‰เปเบกเปˆเบ™เบšเปเปˆเบชเบฐเบ”เบงเบเบซเบผเบฒเบ, เป‚เบ”เบเบชเบฐเป€เบžเบฒเบฐเปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆเบเบฒเบ™เบ›เบฑเบšเบ›เบธเบ‡ buildroot. เบกเบตเบเบปเบ™เป„เบเป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰ เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบ. เป‚เบ”เบเป€เบ™เบทเป‰เบญเปเบ—เป‰เปเบฅเป‰เบงเบ‚เบญเบ‡เบกเบฑเบ™เปเบกเปˆเบ™เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบเบฑเบšเบฎเบฑเบเบชเบฒ board, configs, packages เปเบฅเบฐเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบญเบทเปˆเบ™เป†เปƒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ (เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ‚เป‰เบญเบเปƒเบŠเป‰เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต patches เป€เบžเบทเปˆเบญเบชเบฐเบซเบกเบฑเบเปเบžเบฑเบเป€เบเบฑเบ”, เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเปƒเบ™เบžเบฒเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบ) เปเบฅเบฐ buildroot เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡เบˆเบฐเป€เบžเบตเปˆเบกเบžเบงเบเบกเบฑเบ™เปƒเบซเป‰เบเบฑเบšเบœเบนเป‰เบ—เบตเปˆเบขเบนเปˆเปƒเบ™. เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ‚เบญเบ‡เบกเบฑเบ™.

เบซเบกเบฒเบโ€‹เป€เบซเบ”โ€‹: เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ” overlay เบ•เบปเป‰เบ™โ€‹เป„เบกเป‰โ€‹เบžเบฒเบโ€‹เบ™เบญเบโ€‹เบˆเปเบฒโ€‹เบ™เบงเบ™โ€‹เบซเบ™เบถเปˆเบ‡โ€‹เปƒเบ™โ€‹เป€เบงโ€‹เบฅเบฒโ€‹เบ”เบฝเบงโ€‹เบเบฑเบ™โ€‹, เบกเบตโ€‹เบ•เบปเบงโ€‹เบขเปˆเบฒเบ‡โ€‹เปƒเบ™โ€‹เบ„เบนเปˆโ€‹เบกเบท buildrootโ€‹

เปƒเบซเป‰เบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต my_tree, เบ•เบฑเป‰เบ‡เบขเบนเปˆเบ‚เป‰เบฒเบ‡เบซเบ™เป‰เบฒ buildroot directory เปเบฅเบฐเป‚เบญเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบขเบนเปˆเบ—เบตเปˆเบ™เบฑเป‰เบ™. เบœเบปเบ™เป„เบ”เป‰เบฎเบฑเบšเบ„เบงเบ™เบˆเบฐเป€เบ›เบฑเบ™เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เป„เบŸเบฅเปŒเบ•เปเปˆเป„เบ›เบ™เบตเป‰:

[alexey@alexey-pc my_tree]$ tree
.
โ”œโ”€โ”€ board
โ”‚   โ””โ”€โ”€ my_x86_board
โ”‚       โ”œโ”€โ”€ bef_cr_fs_img.sh
โ”‚       โ”œโ”€โ”€ linux.config
โ”‚       โ”œโ”€โ”€ rootfs_overlay
โ”‚       โ””โ”€โ”€ users.txt
โ”œโ”€โ”€ Config.in
โ”œโ”€โ”€ configs
โ”‚   โ””โ”€โ”€ my_x86_board_defconfig
โ”œโ”€โ”€ external.desc
โ”œโ”€โ”€ external.mk
โ”œโ”€โ”€ package
โ””โ”€โ”€ patches

6 directories, 7 files

เบ”เบฑเปˆเบ‡เบ—เบตเปˆเบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบซเบฑเบ™เป„เบ”เป‰, เป‚เบ”เบเบ—เบปเปˆเบงเป„เบ›เป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบˆเบฐเป€เบฎเบฑเบ”เบŠเป‰เปเบฒเป‚เบ„เบ‡เบชเป‰เบฒเบ‡เบ‚เบญเบ‡ buildroot.

เบฅเบฐโ€‹เบšเบปเบš เบ„เบฐเบ™เบฐเบเปเบฒเบกเบฐ เบกเบตเป„เบŸเบฅเปŒเบชเบฐเป€เบžเบฒเบฐเปเบ•เปˆเบฅเบฐเบเบฐเบ”เบฒเบ™เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ:

  • bef_cr_fs_img.sh เป€เบ›เบฑเบ™ script เบ—เบตเปˆเบˆเบฐเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบˆเบฐเบซเบธเป‰เบกเบซเปเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเบžเบฒเบš. เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเปƒเบŠเป‰เบกเบฑเบ™เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ”
  • linux.config - เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเปเบเปˆเบ™
  • rootfs_overlay - เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ—เบตเปˆเบˆเบฐ overlay เบขเบนเปˆเป€เบ—เบดเบ‡เบชเบธเบ”เบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ
  • users.txt - เป„เบŸเบฅเปŒเบ—เบตเปˆเบญเบฐเบ—เบดเบšเบฒเบเบœเบนเป‰เปƒเบŠเป‰เบ—เบตเปˆเบˆเบฐเบชเป‰เบฒเบ‡

เบฅเบฐโ€‹เบšเบปเบš เบชเบฑเบšเบชเบปเบ™ เบกเบต defconfig เบ‚เบญเบ‡เบเบฐเบ”เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบžเบฝเบ‡เปเบ•เปˆเบซเบ™เบถเปˆเบ‡.

Package - เบฅเบฒเบเบเบฒเบ™เบ—เบตเปˆเบกเบตเบŠเบธเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เปƒเบ™เป€เบšเบทเป‰เบญเบ‡เบ•เบปเป‰เบ™, buildroot เบกเบตเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเปเบฅเบฐเบเบปเบ”เบฅเบฐเบšเบฝเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบเปเปˆเบชเป‰เบฒเบ‡เบˆเปเบฒเบ™เบงเบ™เบˆเปเบฒเบเบฑเบ”เบ‚เบญเบ‡เบŠเบธเบ”. เบ•เปเปˆเบกเบฒเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบžเบตเปˆเบกเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบ›เปˆเบญเบ‡เบขเป‰เบฝเบก icewm เปเบฅเบฐเบ•เบปเบงเบˆเบฑเบ”เบเบฒเบ™เบเบฒเบ™เป€เบ‚เบปเป‰เบฒเบชเบนเปˆเบฅเบฐเบšเบปเบšเปเบšเบšเบเบฒเบŸเบดเบเปเบšเบš Slim เบขเบนเปˆเบ—เบตเปˆเบ™เบตเป‰.
Patches โ€” เบญเบฐโ€‹เบ™เบธโ€‹เบเบฒเบ”โ€‹เปƒเบซเป‰โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเบฐโ€‹เบ”เบงเบโ€‹เบชเบฐโ€‹เบšเบฒเบโ€‹เป€เบเบฑเบšโ€‹เบฎเบฑเบโ€‹เบชเบฒ patches เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบซเบธเป‰เบกโ€‹เบซเปเปˆโ€‹เบ—เบตเปˆโ€‹เปเบ•เบโ€‹เบ•เปˆเบฒเบ‡โ€‹เบเบฑเบ™โ€‹. เบฅเบฒเบเบฅเบฐเบญเบฝเบ”เป€เบžเบตเปˆเบกเป€เบ•เบตเบกเบขเบนเปˆเปƒเบ™เบžเบฒเบเปเบเบเบ•เปˆเบฒเบ‡เบซเบฒเบเบ‚เป‰เบฒเบ‡เบฅเบธเปˆเบกเบ™เบตเป‰.
เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบžเบงเบเป€เบฎเบปเบฒเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เป„เบ”เป‰เป€เบžเบตเปˆเบกเป„เบŸเบฅเปŒเบ„เปเบฒเบญเบฐเบ—เบดเบšเบฒเบเบชเปเบฒเบฅเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบกเบต 3 เป„เบŸเบฅเปŒเบ—เบตเปˆเบฎเบฑเบšเบœเบดเบ”เบŠเบญเบšเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เบตเป‰: external.desc, Config.in, external.mk.

external.desc เบกเบตโ€‹เบ„เปเบฒโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เบ—เบตเปˆโ€‹เปเบ—เป‰โ€‹เบˆเบดเบ‡โ€‹:

[alexey@alexey-pc my_tree]$ cat external.desc 
name: my_tree
desc: My simple external-tree for article

เปเบ–เบงเบ—เปเบฒเบญเบดเบ”เปเบกเปˆเบ™เบซเบปเบงเบ‚เปเป‰. เปƒเบ™เบญเบฐเบ™เบฒเบ„เบปเบ” buildroot เบชเป‰เบฒเบ‡เบ•เบปเบงเปเบ› $(BR2_EXTERNAL_MY_TREE_PATH), เบ—เบตเปˆเบ„เบงเบ™เบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ—เบตเปˆ configure เบเบฒเบ™เบ›เบฐเบเบญเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡, เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบœเบนเป‰เปƒเบŠเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบเปเบฒเบ™เบปเบ”เบ”เบฑเปˆเบ‡เบ•เปเปˆเป„เบ›เบ™เบตเป‰:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt

เปเบ–เบงเบ—เบตเบชเบญเบ‡เปเบกเปˆเบ™เบ„เบณเบญเบฐเบ—เบดเบšเบฒเบเบชเบฑเป‰เบ™เป†เบ—เบตเปˆเบกเบฐเบ™เบธเบ”เบชเบฒเบกเบฒเบ”เบญเปˆเบฒเบ™เป„เบ”เป‰.

Config.in, external.mk โ€” เป„เบŸเบฅเปŒเป€เบžเบทเปˆเบญเบญเบฐเบ—เบดเบšเบฒเบเบŠเบธเบ”เบ—เบตเปˆเป€เบžเบตเปˆเบกเป€เบ‚เบปเป‰เบฒ. เบ–เป‰เบฒเบ—เปˆเบฒเบ™เบšเปเปˆเป€เบžเบตเปˆเบกเปเบžเบฑเบเป€เบเบฑเบ”เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เป€เบญเบ‡, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป„เบŸเบฅเปŒเป€เบซเบผเบปเปˆเบฒเบ™เบตเป‰เบชเบฒเบกเบฒเบ”เบ–เบทเบเบ›เบฐเป„เบงเป‰เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ. เบชเปเบฒเบฅเบฑเบšเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™, เบ™เบฑเป‰เบ™เปเบกเปˆเบ™เบชเบดเปˆเบ‡เบ—เบตเปˆเบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเป€เบฎเบฑเบ”.
เบ•เบญเบ™เบ™เบตเป‰เบžเบงเบเป€เบฎเบปเบฒเบกเบตเบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบžเป‰เบญเบกเปเบฅเป‰เบง, เป€เบŠเบดเปˆเบ‡เบ›เบฐเบเบญเบšเบ”เป‰เบงเบ defconfig เบ‚เบญเบ‡เบเบฐเบ”เบฒเบ™เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเปเบฅเบฐเป„เบŸเบฅเปŒเบ—เบตเปˆเบกเบฑเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™. เปƒเบซเป‰เป„เบ›เบ—เบตเปˆเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต buildroot เปเบฅเบฐเบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบžเบฒเบเบ™เบญเบ-tree:

[alexey@alexey-pc buildroot]$ make BR2_EXTERNAL=../my_tree/ my_x86_board_defconfig
#
# configuration written to /home/alexey/dev/article/ramdisk/buildroot/.config
#
[alexey@alexey-pc buildroot]$ make menuconfig

เปƒเบ™เบ„เปเบฒเบชเบฑเปˆเบ‡เบ—เปเบฒเบญเบดเบ”เบžเบงเบเป€เบฎเบปเบฒเปƒเบŠเป‰เบเบฒเบ™เป‚เบ•เป‰เบ–เบฝเบ‡ BR2_EXTERNAL=../my_tree/, เบŠเบตเป‰เบšเบญเบเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบ, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบเปเบฒเบ™เบปเบ”เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เป€เบงเบฅเบฒเบ”เบฝเบงเบเบฑเบ™. เปƒเบ™เบเปเบฅเบฐเบ™เบตเบ™เบตเป‰, เบ—เปˆเบฒเบ™เบžเบฝเบ‡เปเบ•เปˆเบ•เป‰เบญเบ‡เบเบฒเบ™เป€เบฎเบฑเบ”เบญเบฑเบ™เบ™เบตเป‰เบ„เบฑเป‰เบ‡เบ”เบฝเบง, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เป„เบŸเบฅเปŒ output /.br-external.mk เบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™. เป€เบเบฑเบšเบฎเบฑเบเบชเบฒเบ‚เปเป‰เบกเบนเบ™เบเปˆเบฝเบงเบเบฑเบšเบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบเบ—เบตเปˆเปƒเบŠเป‰:

[alexey@alexey-pc buildroot]$ cat output/.br-external.mk 
#
# Automatically generated file; DO NOT EDIT.
#

BR2_EXTERNAL ?= /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
BR2_EXTERNAL_NAMES = 
BR2_EXTERNAL_DIRS = 
BR2_EXTERNAL_MKS = 

BR2_EXTERNAL_NAMES += my_tree
BR2_EXTERNAL_DIRS += /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
BR2_EXTERNAL_MKS += /home/alexey/dev/article/ramdisk/my_small_linux/my_tree/external.mk
export BR2_EXTERNAL_my_tree_PATH = /home/alexey/dev/article/ramdisk/my_small_linux/my_tree
export BR2_EXTERNAL_my_tree_DESC = My simple external-tree for article

เบชเบณเบ„เบฑเบ™! เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปƒเบ™เป„เบŸเบฅเปŒเบ™เบตเป‰เบˆเบฐเป€เบ›เบฑเบ™เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡!

เบฅเบฒเบเบเบฒเบ™เบ—เบฒเบ‡เป€เบฅเบทเบญเบเบžเบฒเบเบ™เบญเบเป„เบ”เป‰เบ›เบฒเบเบปเบ”เบขเบนเปˆเปƒเบ™เป€เบกเบ™เบน:

Buildroot - เบชเปˆเบงเบ™เบ—เบต 2. เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฐเบ”เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™; เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบ, rootfs-overlay, scripts post-build

เป€เบกเบ™เบนเบเปˆเบญเบเบ™เบตเป‰เบˆเบฐเบกเบตเปเบžเบฑเบเป€เบเบ”เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฒเบเบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒ. เบ•เบญเบ™เบ™เบตเป‰เบžเบฒเบเบชเปˆเบงเบ™เบ™เบตเป‰เบซเบงเปˆเบฒเบ‡เป€เบ›เบปเปˆเบฒ.

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบกเบฑเบ™เป€เบ›เบฑเบ™เบชเบดเปˆเบ‡เบชเปเบฒเบ„เบฑเบ™เบเบงเปˆเบฒเบชเปเบฒเบฅเบฑเบšเบžเบงเบเป€เบฎเบปเบฒเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบ„เบทเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เป€เบžเบทเปˆเบญเบ™เปเบฒเปƒเบŠเป‰เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบ.

เบเบฐเบฅเบธเบ™เบฒเบฎเบฑเบšเบŠเบฒเบšเบงเปˆเบฒเปƒเบ™ Build options โ†’ Location to save buildroot config section, will be a absolute path to the saved defconfig. เบกเบฑเบ™เป„เบ”เป‰เบ–เบทเบเบชเป‰เบฒเบ‡เบ•เบฑเป‰เบ‡เบ‚เบถเป‰เบ™เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ‚เบญเบ‡เบเบฒเบ™เบเปเบฒเบ™เบปเบ”เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ‚เบญเบ‡ extgernal_tree เป„เบ”เป‰.

เบžเบงเบเป€เบฎเบปเบฒเบเบฑเบ‡เบˆเบฐเปเบเป‰เป„เบ‚เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เปƒเบ™เบžเบฒเบเบชเปˆเบงเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบฐเบšเบปเบš. เบชเปเบฒเบฅเบฑเบšเบ•เบฒเบ•เบฐเบฅเบฒเบ‡เบ—เบตเปˆเบกเบตเบœเบนเป‰เปƒเบŠเป‰เบชเป‰เบฒเบ‡:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt

เปƒเบ™เบชเปˆเบงเบ™ Kernel, เบ›เปˆเบฝเบ™เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒ kernel:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เป„เบŸเบฅเปŒเบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฒเบเบžเบฒเบเบ™เบญเบ - เบ•เบปเป‰เบ™เป„เบกเป‰เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบ–เบทเบเบ™เปเบฒเปƒเบŠเป‰เปƒเบ™เบฅเบฐเบซเบงเปˆเบฒเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบš. เป€เบกเบทเปˆเบญเบเป‰เบฒเบเป„เบ›เบซเบฒเป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบญเบทเปˆเบ™เบซเบผเบทเบ›เบฑเบšเบ›เบธเบ‡ buildroot, เบžเบงเบเป€เบฎเบปเบฒเบˆเบฐเบกเบตเบšเบฑเบ™เบซเบฒเบขเปˆเบฒเบ‡เบซเบ™เป‰เบญเบ.

เบเบฒเบ™เป€เบžเบตเปˆเบก root fs overlay:

เบเบปเบ™เป„เบเบ™เบตเป‰เบŠเปˆเบงเบเปƒเบซเป‰เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบžเบตเปˆเบก / เบ—เบปเบ”เปเบ—เบ™เป„เบŸเบฅเปŒเปƒเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเป„เบ”เป‰เบขเปˆเบฒเบ‡เบ‡เปˆเบฒเบเบ”เบฒเบ.
เบ–เป‰เบฒเป„เบŸเบฅเปŒเบขเบนเปˆเปƒเบ™ root fs overlay, เปเบ•เปˆเบšเปเปˆเบขเบนเปˆเปƒเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบก
เบ–เป‰เบฒเป„เบŸเบฅเปŒเบขเบนเปˆเปƒเบ™เบฎเบฒเบ fs overlay เปเบฅเบฐเบขเบนเปˆเปƒเบ™เป€เบ›เบปเป‰เบฒเบซเบกเบฒเบ, เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™เบกเบฑเบ™เบˆเบฐเบ–เบทเบเบ›เปˆเบฝเบ™เปเบ—เบ™.
เบ—เปเบฒเบญเบดเบ”, เปƒเบซเป‰เบเปเบฒเบ™เบปเบ”เป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบˆเบฐ root fs overlay dir. เบ™เบตเป‰เปเบกเปˆเบ™เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบฐเบšเบปเบš โ†’ Root filesystem overlay directory section:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เปƒเบซเป‰เบžเบงเบเป€เบฎเบปเบฒเบชเป‰เบฒเบ‡เบชเบญเบ‡เป„เบŸเบฅเปŒ.

[alexey@alexey-pc my_small_linux]$ cat my_tree/board/my_x86_board/rootfs_overlay/etc/hosts 
127.0.0.1   localhost
127.0.1.1   my_small_linux
8.8.8.8     google-public-dns-a.google.com.
[alexey@alexey-pc my_small_linux]$ cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt 
This is new file from overlay

เป„เบŸเบฅเปŒเบ—เปเบฒเบญเบดเบ” (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) เบˆเบฐเบ›เปˆเบฝเบ™เปเบ—เบ™เป„เบŸเบฅเปŒ /etc/hosts เปƒเบ™เบฅเบฐเบšเบปเบšเบชเปเบฒเป€เบฅเบฑเบ”เบฎเบนเบš. เป„เบŸเบฅเปŒเบ—เบตเบชเบญเบ‡ (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) เบˆเบฐเบ–เบทเบเป€เบžเบตเปˆเบก.

เบžเบงเบเป€เบฎเบปเบฒเป€เบเบฑเบšเบเปเบฒเปเบฅเบฐเบเบงเบ”เบชเบญเบš:

Buildroot - เบชเปˆเบงเบ™เบ—เบต 2. เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฐเบ”เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™; เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบ, rootfs-overlay, scripts post-build

เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”เบเบฒเบ™เบ›เบฑเบšเปเบ•เปˆเบ‡เบชเบฐเบ„เบดเบšเปƒเบ™เบ‚เบฑเป‰เบ™เบ•เบญเบ™เบ•เปˆเบฒเบ‡เป†เบ‚เบญเบ‡เบเบฒเบ™เบ›เบฐเบเบญเบšเบฅเบฐเบšเบปเบš

เป€เบฅเบทเป‰เบญเบเป†เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบ›เบฐเบ•เบดเบšเบฑเบ”เบšเบฒเบ‡เบงเบฝเบเบ‡เบฒเบ™เบžเบฒเบเปƒเบ™เบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบซเบธเป‰เบกเบซเปเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเบžเบฒเบš.

เบ™เบตเป‰เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เบžเบฒเบเบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบฐเบšเบปเบš:

Buildroot - เบชเปˆเบงเบ™เบ—เบต 2. เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฐเบ”เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™; เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบ, rootfs-overlay, scripts post-build

เบชเบญเบ‡เบชเบฐเบ„เบดเบšเบ—เปเบฒเบญเบดเบ”เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบฅเบฐเบšเบปเบšเป„เบŸเบฅเปŒเป€เบ›เบปเป‰เบฒเบซเบกเบฒเบเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบถเป‰เบ™, เปเบ•เปˆเบเปˆเบญเบ™เบ—เบตเปˆเบกเบฑเบ™เบˆเบฐเบ–เบทเบเบซเบธเป‰เบกเบซเปเปˆเป€เบ‚เบปเป‰เบฒเป„เบ›เปƒเบ™เบฎเบนเบšเบžเบฒเบš. เบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เปเบกเปˆเบ™เบงเปˆเบฒ script fakeroot เบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เปƒเบ™เบชเบฐเบžเบฒเบšเบเบฒเบ™เบ‚เบญเบ‡ fakeroot, เป€เบŠเบดเปˆเบ‡ simulates เป€เบฎเบฑเบ”เบงเบฝเบเป€เบ›เบฑเบ™เบœเบนเป‰เปƒเบŠเป‰เบฎเบฒเบ.

script เบชเบธเบ”เบ—เป‰เบฒเบเบ–เบทเบเบ›เบฐเบ•เบดเบšเบฑเบ”เบซเบผเบฑเบ‡เบˆเบฒเบเบฎเบนเบšเบžเบฒเบšเบ‚เบญเบ‡เบฅเบฐเบšเบปเบšเบ–เบทเบเบชเป‰เบฒเบ‡เบ‚เบทเป‰เบ™. เบ—เปˆเบฒเบ™โ€‹เบชเบฒโ€‹เบกเบฒเบ”โ€‹เบ›เบฐโ€‹เบ•เบดโ€‹เบšเบฑเบ”โ€‹เบเบฒเบ™โ€‹เป€เบžเบตเปˆเบกโ€‹เป€เบ•เบตเบกโ€‹เปƒเบ™โ€‹เบกเบฑเบ™โ€‹, เบชเปเบฒโ€‹เบฅเบฑเบšโ€‹เบเบฒเบ™โ€‹เบชเปเบฒโ€‹เป€เบ™เบปเบฒโ€‹เป„เบŸเบฅโ€‹เปŒโ€‹เบ—เบตเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบเบฑเบšโ€‹เป€เบ„เบทเปˆเบญเบ‡โ€‹เปเบกเปˆโ€‹เบ‚เปˆเบฒเบ NFS เบซเบผเบทโ€‹เบชเป‰เบฒเบ‡โ€‹เบฎเบนเบšโ€‹เบžเบฒเบšโ€‹เบ‚เบญเบ‡ firmware เบญเบธโ€‹เบ›เบฐโ€‹เบเบญเบ™โ€‹เบ‚เบญเบ‡โ€‹เบ—เปˆเบฒเบ™โ€‹.

เป€เบ›เบฑเบ™เบ•เบปเบงเบขเปˆเบฒเบ‡, เบ‚เป‰เบญเบเบˆเบฐเบชเป‰เบฒเบ‡เบชเบฐเบ„เบดเบšเบ—เบตเปˆเบˆเบฐเบ‚เบฝเบ™เบชเบฐเบšเบฑเบšเปเบฅเบฐเบงเบฑเบ™เบ—เบตเบชเป‰เบฒเบ‡เป€เบ›เบฑเบ™ /etc/.
เบ—เปเบฒเบญเบดเบ”เบ‚เป‰เบญเบเบˆเบฐเบŠเบตเป‰เบšเบญเบเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เป„เบ›เบซเบฒเป„เบŸเบฅเปŒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบเบ‚เบญเบ‡เบ‚เป‰เบญเบ:

Buildroot - เบชเปˆเบงเบ™เบ—เบต 2. เบเบฒเบ™เบชเป‰เบฒเบ‡เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฐเบ”เบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™; เบเบฒเบ™เบ™เปเบฒเปƒเบŠเป‰เบ•เบปเป‰เบ™เป„เบกเป‰เบžเบฒเบเบ™เบญเบ, rootfs-overlay, scripts post-build

เปเบฅเบฐเปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™ script เบ•เบปเบงเบ‚เบญเบ‡เบกเบฑเบ™เป€เบญเบ‡:

[alexey@alexey-pc buildroot]$ cat ../my_tree/board/my_x86_board/bef_cr_fs_img.sh 
#!/bin/sh
echo "my small linux 1.0 pre alpha" > output/target/etc/mysmalllinux-release
date >> output/target/etc/mysmalllinux-release

เบซเบผเบฑเบ‡เบˆเบฒเบเบเบฒเบ™เบ›เบฐเบเบญเบš, เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เป€เบšเบดเปˆเบ‡เป„เบŸเบฅเปŒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบฅเบฐเบšเบปเบš.

เปƒเบ™เบเบฒเบ™เบ›เบฐเบ•เบดเบšเบฑเบ”, script เบชเบฒเบกเบฒเบ”เบเบฒเบเป€เบ›เบฑเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆ. เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™, เปƒเบ™เป‚เบ„เบ‡เบเบฒเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เป€เบญเบปเบฒเป€เบชเบฑเป‰เบ™เบ—เบฒเบ‡เบ—เบตเปˆเบเป‰เบฒเบงเบซเบ™เป‰เบฒเบเบงเปˆเบฒ:

  1. เบ‚เป‰เบญเบเบชเป‰เบฒเบ‡เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบต (my_tree/board_my_x86_board/inside_fakeroot_scripts) เป€เบŠเบดเปˆเบ‡เบกเบตเบชเบฐเบ„เบฃเบดเบšเบ—เบตเปˆเบˆเบฐเบ›เบฐเบ•เบดเบšเบฑเบ”, เบกเบตเป€เบฅเบเบฅเปเบฒเบ”เบฑเบš. เบ•เบปเบงเบขเปˆเบฒเบ‡, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. เบ‚เป‰เบญเบเบ‚เบฝเบ™เบชเบฐเบ„เบฃเบดเบš (my_tree/board_my_x86_board/run_inside_fakeroot.sh) เบ—เบตเปˆเบœเปˆเบฒเบ™เป„เบ”เป€เบฅเบเบฐเบ—เปเบฅเบตเบ™เบตเป‰ เปเบฅเบฐเบ”เปเบฒเป€เบ™เบตเบ™เบเบฒเบ™เบ•เบฒเบกเบฅเปเบฒเบ”เบฑเบšเบ‚เบญเบ‡เบชเบฐเบ„เบฃเบดเบšเบ—เบตเปˆเบกเบตเบขเบนเปˆเปƒเบ™เบ™เบฑเป‰เบ™.
  3. เบฅเบฐเบšเบธเบชเบฐเบ„เบฃเบดเบšเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบเบฐเบ”เบฒเบ™เปƒเบ™เบเบฒเบ™เบ•เบฑเป‰เบ‡เบ„เปˆเบฒเบฅเบฐเบšเบปเบš -> เบชเบฐเบ„เบฃเบดเบšเปเบšเบšเบเบณเบ™เบปเบ”เป€เบญเบ‡เป€เบžเบทเปˆเบญเปเบฅเปˆเบ™เบžเบฒเบเปƒเบ™เบชเบฐเบžเบฒเบšเปเบงเบ”เบฅเป‰เบญเบกเบ‚เบญเบ‡ fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) เบžเบฒเบ

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™