เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ - เชญเชพเช— 2. เชคเชฎเชพเชฐเซเช‚ เชฌเซ‹เชฐเซเชก เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจ เชฌเชจเชพเชตเชตเซเช‚; เชฌเชพเชนเซเชฏ เชตเซƒเช•เซเชท, เชฐเซ‚เชŸเชเชซเชเชธ-เช“เชตเชฐเชฒเซ‡, เชชเซ‹เชธเซเชŸ-เชฌเชฟเชฒเซเชก เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡

เช† เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชนเซเช‚ เช•เซ‡เชŸเชฒเชพเช• เช•เชธเซเชŸเชฎเชพเช‡เชเซ‡เชถเชจ เชตเชฟเช•เชฒเซเชชเซ‹ เชœเซ‹เช‰เช‚ เช›เซเช‚ เชœเซ‡เชจเซ€ เชฎเชจเซ‡ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เชถเซเช‚ เช“เชซเชฐ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเซ€ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซ‚เชšเชฟ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชคเซ‡ เชเช•เชฆเชฎ เช•เชพเชฐเซเชฏเชพเชคเซเชฎเช• เช›เซ‡ เช…เชจเซ‡ เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸเชจเซ€ เชซเชพเช‡เชฒเซ‹เชฎเชพเช‚ เชœ เชนเชธเซเชคเช•เซเชทเซ‡เชชเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€.

เช•เชธเซเชŸเชฎเชพเช‡เชเซ‡เชถเชจ เชฎเชพเชŸเซ‡ EXTERNAL เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹

เชชเชพเช›เชฒเชพ เชฒเซ‡เช–เชฎเชพเช‚ เช…เชฎเซ‡ เชฌเซ‹เชฐเซเชกเชจเซ€ defconfig เช…เชจเซ‡ เชœเชฐเซ‚เชฐเซ€ เชซเชพเชˆเชฒเซ‹เชจเซ‡ เชธเซ€เชงเชพ เชœ Buildroot เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเซ€เชจเซ‡ เชคเชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เช‰เชฎเซ‡เชฐเชตเชพเชจเซเช‚ เชเช• เชธเชฐเชณ เช‰เชฆเชพเชนเชฐเชฃ เชœเซ‹เชฏเซเช‚.

เชชเชฐเช‚เชคเซ เช† เชชเชฆเซเชงเชคเชฟ เช–เซ‚เชฌ เช…เชจเซเช•เซ‚เชณ เชจเชฅเซ€, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชœเซเชฏเชพเชฐเซ‡ เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เช…เชชเชกเซ‡เชŸ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡. เช† เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เชฒเชพเชตเชตเชพเชจเซเช‚ เชคเช‚เชคเซเชฐ เช›เซ‡ เชฌเชพเชนเซเชฏ เชตเซƒเช•เซเชท. เชคเซ‡เชจเซ‹ เชธเชพเชฐ เช เช›เซ‡ เช•เซ‡ เชคเชฎเซ‡ เชฌเซ‹เชฐเซเชก, เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“, เชชเซ‡เช•เซ‡เชœเซ‹ เช…เชจเซ‡ เช…เชจเซเชฏ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เชเช• เช…เชฒเช— เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชธเซเชŸเซ‹เชฐ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ (เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชนเซเช‚ เชชเซ‡เช•เซ‡เชœเซ‹ เชชเชฐ เชชเซ‡เชšเซ‹ เชฒเชพเช—เซ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชชเซ‡เชš เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚, เชเช• เช…เชฒเช— เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชตเชงเซ เชตเชฟเช—เชคเซ‹) เช…เชจเซ‡ เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เชชเซ‹เชคเซ‡ เชœ เชคเซ‡เชฎเชจเซ‡ เชคเซ‡เชฎเชพเช‚ เช‰เชฎเซ‡เชฐเชถเซ‡. เชคเซ‡เชจเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€.

เชจเซ‹เช‚เชง: เชคเชฎเซ‡ เชเช• เชธเชพเชฅเซ‡ เช…เชจเซ‡เช• เชฌเชพเชนเซเชฏ เชตเซƒเช•เซเชทเซ‹เชจเซ‡ เช“เชตเชฐเชฒเซ‡ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เชฎเซ‡เชจเซเชฏเซเช…เชฒเชฎเชพเช‚ เชเช• เช‰เชฆเชพเชนเชฐเชฃ เช›เซ‡

เชšเชพเชฒเซ‹ เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชจเซ€ เชฌเชพเชœเซเชฎเชพเช‚ เชธเซเชฅเชฟเชค my_tree เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฌเชจเชพเชตเซ€เช เช…เชจเซ‡ เชคเซเชฏเชพเช‚ เช…เชฎเชพเชฐเชพ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ‡ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ€เช. เช†เช‰เชŸเชชเซเชŸ เชจเซ€เชšเซ‡เชจเซ€ เชซเชพเช‡เชฒ เชฎเชพเชณเช–เซเช‚ เชนเซ‹เชตเซเช‚ เชœเซ‹เชˆเช:

[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

เชœเซ‡เชฎ เชคเชฎเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชฐเชšเชจเชพ เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸเชจเซ€ เชฐเชšเชจเชพเชจเซ‡ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เชฐเซ‡ เช›เซ‡.

เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชชเชพเชŸเซ€เชฏเซเช‚ เช…เชฎเชพเชฐเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚ เชฆเชฐเซ‡เช• เชฌเซ‹เชฐเซเชก เชฎเชพเชŸเซ‡ เชตเชฟเชถเชฟเชทเซเชŸ เชซเชพเช‡เชฒเซ‹ เชธเชฎเชพเชตเซ‡ เช›เซ‡:

  • bef_cr_fs_img.sh เช เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เช›เซ‡ เชœเซ‡ เชฒเช•เซเชทเซเชฏ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชฌเชจเชพเชตเซเชฏเชพ เชชเช›เซ€ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชจเซ‡ เชˆเชฎเซ‡เชœเซ‹เชฎเชพเช‚ เชชเซ‡เช• เช•เชฐเชคเชพ เชชเชนเซ‡เชฒเชพ. เช…เชฎเซ‡ เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชคเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชถเซเช‚
  • linux.config - เช•เชฐเซเชจเชฒ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ
  • rootfs_overlay - เชฒเช•เซเชทเซเชฏ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เชŸเซ‹เชš เชชเชฐ เช“เชตเชฐเชฒเซ‡ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡เชจเซ€ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€
  • user.txt - เชœเซ‡ เชฏเซเชเชฐเซเชธเชจเซ‡ เชฌเชจเชพเชตเชตเชพเชจเชพ เช›เซ‡ เชคเซ‡เชจเซเช‚ เชตเชฐเซเชฃเชจ เช•เชฐเชคเซ€ เชซเชพเช‡เชฒ

เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช“ เช…เชฎเชพเชฐเชพ เชฌเซ‹เชฐเซเชกเชจเซ€ defconfig เชธเชฎเชพเชตเซ‡ เช›เซ‡. เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฎเชพเชคเซเชฐ เชเช• เชœ เช›เซ‡.

เชชเซ‡เช•เซ‡เชœ - เช…เชฎเชพเชฐเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เชธเชพเชฅเซ‡ เชธเซ‚เชšเชฟ. เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เชฎเชฐเซเชฏเชพเชฆเชฟเชค เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชชเซ‡เช•เซ‡เชœเซ‹ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชตเชฐเซเชฃเชจเซ‹ เช…เชจเซ‡ เชจเชฟเชฏเชฎเซ‹ เชงเชฐเชพเชตเซ‡ เช›เซ‡. เชฌเชพเชฆเชฎเชพเช‚ เช†เชชเชฃเซ‡ เช…เชนเซ€เช‚ icewm เชตเชฟเชจเซเชกเซ‹ เชฎเซ‡เชจเซ‡เชœเชฐ เช…เชจเซ‡ เชธเซเชฒเชฟเชฎ เช—เซเชฐเชพเชซเชฟเช•เชฒ เชฒเซ‹เช—เซ€เชจ เชฎเซ‡เชจเซ‡เชœเชฐ เช‰เชฎเซ‡เชฐเซ€เชถเซเช‚.
เชชเซ‡เชšเซ‹ โ€” เชคเชฎเชจเซ‡ เชตเชฟเชตเชฟเชง เชชเซ‡เช•เซ‡เชœเซ‹ เชฎเชพเชŸเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‡เชšเซ‹เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เชธเช‚เช—เซเชฐเชนเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡. เชจเซ€เชšเซ‡ เชเช• เช…เชฒเช— เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชตเชงเซ เชตเชฟเช—เชคเซ‹.
เชนเชตเซ‡ เช†เชชเชฃเซ‡ เช†เชชเชฃเชพ เชเช•เซเชธเชŸเชฐเซเชจเชฒ-เชŸเซเชฐเซ€ เชฎเชพเชŸเซ‡ เชตเชฐเซเชฃเชจ เชซเชพเชˆเชฒเซ‹ เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช† เชฎเชพเชŸเซ‡ 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

เชชเซเชฐเชฅเชฎ เชชเช‚เช•เซเชคเชฟ เชถเซ€เชฐเซเชทเช• เช›เซ‡. เชญเชตเชฟเชทเซเชฏเชฎเชพเช‚ เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เชเช• เชšเชฒ เชฌเชจเชพเชตเซ‹ $(BR2_EXTERNAL_MY_TREE_PATH), เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเซ‡ เช—เซ‹เช เชตเชคเซ€ เชตเช–เชคเซ‡ เชฅเชตเซ‹ เชœเซ‹เชˆเช. เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชซเชพเช‡เชฒเชจเซ‹ เชชเชพเชฅ เชจเซ€เชšเซ‡ เชชเซเชฐเชฎเชพเชฃเซ‡ เชธเซ‡เชŸ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

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

เชฌเซ€เชœเซ€ เชชเช‚เช•เซเชคเชฟ เชŸเซ‚เช‚เช•เซเช‚, เชฎเชพเชจเชต-เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเซเช‚ เชตเชฐเซเชฃเชจ เช›เซ‡.

Config.in, external.mk โ€” เช‰เชฎเซ‡เชฐเชพเชฏเซ‡เชฒ เชชเซ‡เช•เซ‡เชœเซ‹ เชตเชฐเซเชฃเชตเชตเชพ เชฎเชพเชŸเซ‡ เชซเชพเชˆเชฒเซ‹. เชœเซ‹ เชคเชฎเซ‡ เชคเชฎเชพเชฐเชพ เชชเซ‹เชคเชพเชจเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เช‰เชฎเซ‡เชฐเชคเชพ เชจเชฅเซ€, เชคเซ‹ เชชเช›เซ€ เช† เชซเชพเช‡เชฒเซ‹ เช–เชพเชฒเซ€ เช›เซ‹เชกเซ€ เชถเช•เชพเชฏ เช›เซ‡. เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡, เช…เชฎเซ‡ เชคเซ‡ เชœ เช•เชฐเซ€เชถเซเช‚.
เชนเชตเซ‡ เช†เชชเชฃเซ€ เชชเชพเชธเซ‡ เช†เชชเชฃเซเช‚ เชเช•เซเชธเชŸเชฐเซเชจเชฒ-เชŸเซเชฐเซ€ เชคเซˆเชฏเชพเชฐ เช›เซ‡, เชœเซ‡เชฎเชพเช‚ เช†เชชเชฃเชพ เชฌเซ‹เชฐเซเชกเชจเซ€ เชกเชฟเชซเช•เซ‹เชจเซเชซเชฟเช— เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชœเซ‹เชˆเชคเซ€ เชซเชพเชˆเชฒเซ‹ เช›เซ‡. เชšเชพเชฒเซ‹ เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชชเชฐ เชœเชˆเช เช…เชจเซ‡ เชฌเชพเชนเซเชฏ-เชŸเซเชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซเชชเชทเซเชŸ เช•เชฐเซ€เช:

[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

เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ! เช† เชซเชพเช‡เชฒเชฎเชพเช‚ เชชเชพเชฅ เชธเช‚เชชเซ‚เชฐเซเชฃ เชนเชถเซ‡!

เชฎเซ‡เชจเซ‚เชฎเชพเช‚ เชฌเชพเชนเซเชฏ เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ€ เช†เช‡เชŸเชฎ เชฆเซ‡เช–เชพเชˆ เช›เซ‡:

เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ - เชญเชพเช— 2. เชคเชฎเชพเชฐเซเช‚ เชฌเซ‹เชฐเซเชก เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจ เชฌเชจเชพเชตเชตเซเช‚; เชฌเชพเชนเซเชฏ เชตเซƒเช•เซเชท, เชฐเซ‚เชŸเชเชซเชเชธ-เช“เชตเชฐเชฒเซ‡, เชชเซ‹เชธเซเชŸ-เชฌเชฟเชฒเซเชก เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡

เช† เชธเชฌเชฎเซ‡เชจเซเชฎเชพเช‚ เช…เชฎเชพเชฐเชพ เชเช•เซเชธเชŸเชฐเซเชจเชฒ-เชŸเซเชฐเซ€เชฎเชพเช‚เชฅเซ€ เช…เชฎเชพเชฐเชพ เชชเซ‡เช•เซ‡เชœเซ‹ เชนเชถเซ‡. เช† เชตเชฟเชญเชพเช— เชนเชพเชฒเชฎเชพเช‚ เช–เชพเชฒเซ€ เช›เซ‡.

เชนเชตเซ‡ เช†เชชเชฃเชพ เชฎเชพเชŸเซ‡ เชฌเชพเชนเซเชฏ-เชตเซƒเช•เซเชทเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชœเชฐเซ‚เชฐเซ€ เชชเชพเชฅเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเชพเชจเซเช‚ เชตเชงเซ เชฎเชนเชคเซเชตเชจเซเช‚ เช›เซ‡.

เชฎเชนเซ‡เชฐเชฌเชพเชจเซ€ เช•เชฐเซ€เชจเซ‡ เชจเซ‹เช‚เชง เช•เชฐเซ‹ เช•เซ‡ เชฌเชฟเชฒเซเชก เช“เชชเซเชถเชจเซเชธ โ†’ เชฒเซ‹เช•เซ‡เชถเชจ เชŸเซ เชธเซ‡เชต เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เชฐเซ‚เชชเชฐเซ‡เช–เชพ เชตเชฟเชญเชพเช—เชฎเชพเช‚, เชธเซ‡เชต เช•เชฐเซ‡เชฒเชพ เชกเชฟเชซเช•เซ‹เชจเซเชซเชฟเช— เชฎเชพเชŸเซ‡ เชเช• เชธเช‚เชชเซ‚เชฐเซเชฃ เชชเชพเชฅ เชนเชถเซ‡. เชคเซ‡ extgernal_tree เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชธเซเชชเชทเซเชŸ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฃเซ‡ เชฐเชšเชพเชฏ เช›เซ‡.

เช…เชฎเซ‡ เชธเชฟเชธเซเชŸเชฎ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชชเชพเชฅเชจเซ‡ เชชเชฃ เชธเซเชงเชพเชฐเซ€เชถเซเช‚. เชฌเชจเชพเชตเซ‡เชฒเชพ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพเช“ เชธเชพเชฅเซ‡เชจเชพ เชŸเซ‡เชฌเชฒ เชฎเชพเชŸเซ‡:

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

เช•เชฐเซเชจเชฒ เชตเชฟเชญเชพเช—เชฎเชพเช‚, เช•เชฐเซเชจเชฒ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชจเซ‹ เชชเชพเชฅ เชฌเชฆเชฒเซ‹:

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

เชนเชตเซ‡ เช…เชฎเชพเชฐเชพ เชเช•เซเชธเชŸเชฐเซเชจเชฒ-เชŸเซเชฐเซ€เชฎเชพเช‚เชฅเซ€ เช…เชฎเชพเชฐเซ€ เชซเชพเช‡เชฒเซ‹ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชถเซ‡. เชœเซเชฏเชพเชฐเซ‡ เชฌเซ€เชœเซ€ เชกเชพเชฏเชฐเซ‡เช•เซเชŸเชฐเซ€ เชชเชฐ เชœเชˆเช เช…เชฅเชตเชพ เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ เช…เชชเชกเซ‡เชŸ เช•เชฐเซ€เช, เชคเซเชฏเชพเชฐเซ‡ เช…เชฎเชจเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ เชธเชฎเชธเซเชฏเชพเช“ เชนเชถเซ‡.

เชฐเซ‚เชŸ เชเชซเชเชธ เช“เชตเชฐเชฒเซ‡ เช‰เชฎเซ‡เชฐเชตเซเช‚:

เช† เชฎเชฟเช•เซ‡เชจเชฟเชเชฎ เชคเชฎเชจเซ‡ เชฒเช•เซเชทเซเชฏ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชฎเชพเช‚ เชซเชพเช‡เชฒเซ‹เชจเซ‡ เชธเชฐเชณเชคเชพเชฅเซ€ เช‰เชฎเซ‡เชฐเชตเชพ/เชฌเชฆเชฒเซ€ เช•เชฐเชตเชพเชจเซ€ เชชเชฐเชตเชพเชจเช—เซ€ เช†เชชเซ‡ เช›เซ‡.
เชœเซ‹ เชซเชพเช‡เชฒ เชฐเซ‚เชŸ fs เช“เชตเชฐเชฒเซ‡เชฎเชพเช‚ เชนเซ‹เชฏ, เชชเชฐเช‚เชคเซ เชฒเช•เซเชทเซเชฏเชฎเชพเช‚ เชจ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡
เชœเซ‹ เชซเชพเชˆเชฒ เชฐเซ‚เชŸ fs เช“เชตเชฐเชฒเซ‡ เช…เชจเซ‡ เชฒเช•เซเชทเซเชฏเชฎเชพเช‚ เชนเซ‹เชฏ, เชคเซ‹ เชคเซ‡เชจเซ‡ เชฌเชฆเชฒเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.
เชชเซเชฐเชฅเชฎ, เชšเชพเชฒเซ‹ เชฐเซ‚เชŸ fs เช“เชตเชฐเชฒเซ‡ dir เชฎเชพเชŸเซ‡ เชชเชพเชฅ เชธเซ‡เชŸ เช•เชฐเซ€เช. เช† เชธเชฟเชธเซเชŸเชฎ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ โ†’ เชฐเซ‚เชŸ เชซเชพเช‡เชฒเชธเชฟเชธเซเชŸเชฎ เช“เชตเชฐเชฒเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เช“ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡:

$(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) เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡.

เช…เชฎเซ‡ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซ€เช เช›เซ€เช เช…เชจเซ‡ เชคเชชเชพเชธเซ€เช เช›เซ€เช:

เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ - เชญเชพเช— 2. เชคเชฎเชพเชฐเซเช‚ เชฌเซ‹เชฐเซเชก เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจ เชฌเชจเชพเชตเชตเซเช‚; เชฌเชพเชนเซเชฏ เชตเซƒเช•เซเชท, เชฐเซ‚เชŸเชเชซเชเชธ-เช“เชตเชฐเชฒเซ‡, เชชเซ‹เชธเซเชŸ-เชฌเชฟเชฒเซเชก เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡

เชธเชฟเชธเซเชŸเชฎ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเชพ เชตเชฟเชตเชฟเชง เชคเชฌเช•เซเช•เชพเชฎเชพเช‚ เช•เชธเซเชŸเชฎเชพเช‡เชเซ‡เชถเชจ เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช…เชฎเชฒ

เช˜เชฃเซ€ เชตเช–เชค เชคเชฎเชพเชฐเซ‡ เชฒเช•เซเชทเซเชฏ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎเชจเซ€ เช…เช‚เชฆเชฐ เช•เซ‡เชŸเชฒเชพเช• เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเซ‡ เช›เซ‡ เชคเซ‡ เชชเชนเซ‡เชฒเชพเช‚ เชคเซ‡เชจเซ‡ เชˆเชฎเซ‡เชœเซ‹เชฎเชพเช‚ เชชเซ‡เช• เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡.

เช† เชธเชฟเชธเซเชŸเชฎ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจ เชตเชฟเชญเชพเช—เชฎเชพเช‚ เช•เชฐเซ€ เชถเช•เชพเชฏ เช›เซ‡:

เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ - เชญเชพเช— 2. เชคเชฎเชพเชฐเซเช‚ เชฌเซ‹เชฐเซเชก เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจ เชฌเชจเชพเชตเชตเซเช‚; เชฌเชพเชนเซเชฏ เชตเซƒเช•เซเชท, เชฐเซ‚เชŸเชเชซเชเชธ-เช“เชตเชฐเชฒเซ‡, เชชเซ‹เชธเซเชŸ-เชฌเชฟเชฒเซเชก เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡

เชชเซเชฐเชฅเชฎ เชฌเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซ‹ เชŸเชพเชฐเซเช—เซ‡เชŸ เชซเชพเช‡เชฒ เชธเชฟเชธเซเชŸเชฎ เชฌเชพเช‚เชงเซเชฏเชพ เชชเช›เซ€ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชˆเชฎเซ‡เชœเซ€เชธเชฎเชพเช‚ เชชเซ‡เช• เชฅเชพเชฏ เชคเซ‡ เชชเชนเซ‡เชฒเชพ. เชคเชซเชพเชตเชค เช เช›เซ‡ เช•เซ‡ เชซเซ‡เช•เชฐเซ‚เชŸ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชซเซ‡เช•เชฐเซ‚เชŸเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชœเซ‡ เชฐเซเชŸ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชคเชฐเซ€เช•เซ‡ เช•เชพเชฎเชจเซเช‚ เช…เชจเซเช•เชฐเชฃ เช•เชฐเซ‡ เช›เซ‡.

เช›เซ‡เชฒเซเชฒเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเชฟเชธเซเชŸเชฎ เช‡เชฎเซ‡เชœ เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซ‡ เชชเช›เซ€ เชšเชฒเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เชคเชฎเซ‡ เชคเซ‡เชฎเชพเช‚ เชตเชงเชพเชฐเชพเชจเซ€ เช•เซเชฐเชฟเชฏเชพเช“ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชœเชฐเซ‚เชฐเซ€ เชซเชพเช‡เชฒเซ‹เชจเซ‡ NFS เชธเชฐเซเชตเชฐ เชชเชฐ เช•เซ‰เชชเชฟ เช•เชฐเซ‹ เช…เชฅเชตเชพ เชคเชฎเชพเชฐเชพ เช‰เชชเช•เชฐเชฃ เชซเชฐเซเชฎเชตเซ‡เชฐเชจเซ€ เช›เชฌเซ€ เชฌเชจเชพเชตเซ‹.

เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชนเซเช‚ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฌเชจเชพเชตเซ€เชถ เชœเซ‡ เชตเชฐเซเชเชจ เชฒเช–เชถเซ‡ เช…เชจเซ‡ เชคเชพเชฐเซ€เช– /etc/ เชชเชฐ เชฒเช–เชถเซ‡.
เชชเชนเซ‡เชฒเชพ เชนเซเช‚ เชฎเชพเชฐเชพ เชเช•เซเชธเชŸเชฐเซเชจเชฒ-เชŸเซเชฐเซ€เชฎเชพเช‚ เช† เชซเชพเชˆเชฒเชจเซ‹ เชชเชพเชฅ เชธเซ‚เชšเชตเซ€เชถ:

เชฌเชฟเชฒเซเชกเชฐเซ‚เชŸ - เชญเชพเช— 2. เชคเชฎเชพเชฐเซเช‚ เชฌเซ‹เชฐเซเชก เช•เชจเซเชซเชฟเช—เชฐเซ‡เชถเชจ เชฌเชจเชพเชตเชตเซเช‚; เชฌเชพเชนเซเชฏ เชตเซƒเช•เซเชท, เชฐเซ‚เชŸเชเชซเชเชธ-เช“เชตเชฐเชฒเซ‡, เชชเซ‹เชธเซเชŸ-เชฌเชฟเชฒเซเชก เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡

เช…เชจเซ‡ เชนเชตเซ‡ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเซ‹เชคเซ‡:

[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

เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชชเช›เซ€, เชคเชฎเซ‡ เชธเชฟเชธเซเชŸเชฎ เชชเชฐ เช† เชซเชพเช‡เชฒ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹.

เชตเซเชฏเชตเชนเชพเชฐเชฎเชพเช‚, เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฎเซ‹เชŸเซ€ เชฌเชจเซ€ เชถเช•เซ‡ เช›เซ‡. เชคเซ‡เชฅเซ€, เชตเชพเชธเซเชคเชตเชฟเช• เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชฎเชพเช‚ เชฎเซ‡เช‚ เชตเชงเซ เช…เชฆเซเชฏเชคเชจ เชฎเชพเชฐเซเช— เชฒเซ€เชงเซ‹:

  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. เชธเชฟเชธเซเชŸเชฎ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชจเชฎเชพเช‚ เชฌเซ‹เชฐเซเชก เชธเซ‡เชŸเชฟเช‚เช—เซเชธเชฎเชพเช‚ เช† เชธเซเช•เซเชฐเชฟเชชเซเชŸเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ‹ -> เชซเซ‡เช•เชฐเซ‚เชŸ เชชเชฐเซเชฏเชพเชตเชฐเชฃ ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) เชตเชฟเชญเชพเช—เชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เช•เชธเซเชŸเชฎ เชธเซเช•เซเชฐเชฟเชชเซเชŸเซเชธ

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹