Buildroot - bahin 2. Paghimo sa imong board configuration; gamit ang external tree, rootfs-overlay, post-build nga mga script

Niini nga seksyon akong gitan-aw ang pipila sa mga kapilian sa pag-customize nga akong gikinahanglan. Dili kini kompleto nga lista kung unsa ang gitanyag sa buildroot, apan kini magamit kaayo ug wala magkinahanglan interbensyon sa mga file sa buildroot mismo.

Gamit ang EXTERNAL nga mekanismo para sa pag-customize

Sa miaging artikulo Among gitan-aw ang usa ka yano nga pananglitan sa pagdugang sa imong kaugalingong configuration pinaagi sa pagdugang sa defconfig sa board ug sa gikinahanglang mga file direkta ngadto sa Buildroot directory.

Apan kini nga pamaagi dili kaayo kombenyente, labi na kung gi-update ang buildroot. Adunay usa ka mekanismo sa pagsulbad niini nga problema gawas nga kahoy. Ang esensya niini mao nga mahimo nimong tipigan ang board, configs, packages ug uban pang mga direktoryo sa usa ka bulag nga direktoryo (pananglitan, gigamit nako ang direktoryo sa mga patch aron magamit ang mga patch sa mga pakete, dugang nga mga detalye sa usa ka lahi nga seksyon) ug ang buildroot mismo ang magdugang niini sa mga naa sa. direktoryo niini.

Hinumdomi: mahimo nimong ma-overlay ang daghang mga eksternal nga kahoy sa usa ka higayon, adunay usa ka pananglitan sa manwal sa buildroot

Magbuhat ta ug direktoryo nga my_tree, nga nahimutang tapad sa direktoryo sa buildroot ug ibalhin ang among configuration didto. Ang output kinahanglan nga ang mosunod nga istruktura sa file:

[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

Sama sa imong nakita, sa kinatibuk-an ang istruktura gisubli ang istruktura sa buildroot.

Directory board adunay mga file nga piho sa matag board sa among kaso:

  • Ang bef_cr_fs_img.sh usa ka script nga ipatuman human matukod ang target nga sistema sa file, apan sa dili pa kini ibutang sa mga imahe. Atong gamiton kini sa umaabot
  • linux.config - configuration sa kernel
  • rootfs_overlay - direktoryo nga ipatong sa ibabaw sa target nga sistema sa file
  • users.txt - usa ka file nga naghulagway sa mga tiggamit nga pagabuhaton

Directory mga kombinasyon naglangkob sa defconfig sa among mga tabla. Usa ra kami.

package - katalogo sa among mga pakete. Sa sinugdan, ang buildroot naglangkob sa mga paghulagway ug mga lagda alang sa pagtukod og limitado nga gidaghanon sa mga pakete. Sa ulahi atong idugang ang icewm window manager ug ang Slim graphical login manager dinhi.
Mga Patch - Gitugotan ka nga dali nga itago ang imong mga patch alang sa lainlaing mga pakete. Dugang nga mga detalye sa usa ka bulag nga seksyon sa ubos.
Karon kinahanglan namong idugang ang mga file sa paghulagway alang sa among external-tree. Adunay 3 ka file nga responsable niini: external.desc, Config.in, external.mk.

gawas.desc naglangkob sa aktuwal nga paghulagway:

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

Ang una nga linya mao ang titulo. Sa umaabot nga buildroot paghimo usa ka variable $(BR2_EXTERNAL_MY_TREE_PATH), nga kinahanglan gamiton sa pag-configure sa asembliya. Pananglitan, ang dalan sa user file mahimong itakda sama sa mosunod:

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

Ang ikaduhang linya maoy mubo, mabasa sa tawo nga deskripsyon.

Config.in, external.mk - mga file aron ihulagway ang gidugang nga mga pakete. Kung dili nimo idugang ang imong kaugalingon nga mga pakete, nan kini nga mga file mahimong biyaan nga walay sulod. Sa pagkakaron, mao kana ang atong buhaton.
Karon andam na ang among external-tree, nga adunay sulod nga defconfig sa among board ug ang mga file nga gikinahanglan niini. Adto kita sa direktoryo sa buildroot ug ipiho nga gamiton ang external-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

Sa unang sugo atong gigamit ang argumento BR2_EXTERNAL=../my_tree/, nga nagpaila sa paggamit sa usa ka eksternal nga kahoy. Mahimo nimong ipiho ang daghang mga eksternal nga kahoy nga magamit sa parehas nga oras. Sa kini nga kaso, kinahanglan nimo nga buhaton kini kausa, pagkahuman usa ka file output/.br-external.mk gihimo kana nagtipig impormasyon bahin sa gawas nga kahoy nga gigamit:

[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

Importante! Ang mga agianan niini nga file mahimong hingpit!

Usa ka External nga mga opsyon nga butang ang nagpakita sa menu:

Buildroot - bahin 2. Paghimo sa imong board configuration; gamit ang external tree, rootfs-overlay, post-build nga mga script

Kini nga submenu maglangkob sa among mga pakete gikan sa among external-tree. Kini nga seksyon karon walay sulod.

Karon mas importante alang kanato nga isulat pag-usab ang gikinahanglan nga mga agianan aron magamit ang external-tree.

Palihug timan-i nga sa Build options → Location to save buildroot config section, adunay hingpit nga dalan paingon sa na-save nga defconfig. Naporma kini sa takna sa pagtino sa paggamit sa extgernal_tree.

Gitul-id usab namo ang mga agianan sa seksyon sa Pag-configure sa System. Alang sa usa ka lamesa nga adunay gibuhat nga mga tiggamit:

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

Sa seksyon sa Kernel, usba ang dalan sa configuration sa kernel:

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

Karon ang among mga file gikan sa among external-tree magamit sa panahon sa asembliya. Kung mobalhin sa lain nga direktoryo o mag-update sa buildroot, adunay gamay nga problema.

Pagdugang sa gamut fs overlay:

Kini nga mekanismo nagtugot kanimo sa dali nga pagdugang / pag-ilis sa mga file sa target file system.
Kung ang file naa sa root fs overlay, apan wala sa target, nan kini idugang
Kung ang file naa sa root fs overlay ug sa target, unya kini pulihan.
Una, atong ibutang ang dalan sa root fs overlay dir. Gihimo kini sa System configuration → Root filesystem overlay directories section:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Karon maghimo kita og duha ka mga file.

[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

Ang unang file (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) maoy mopuli sa /etc/hosts file sa nahuman nga sistema. Ang ikaduhang file (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) idugang.

Among gikolekta ug gisusi:

Buildroot - bahin 2. Paghimo sa imong board configuration; gamit ang external tree, rootfs-overlay, post-build nga mga script

Pagpatuman sa mga script sa pag-customize sa lain-laing mga yugto sa sistema sa asembliya

Kasagaran kinahanglan nimo nga buhaton ang pipila ka trabaho sa sulod sa target nga sistema sa file sa dili pa kini maputos sa mga imahe.

Mahimo kini sa seksyon sa Pag-configure sa System:

Buildroot - bahin 2. Paghimo sa imong board configuration; gamit ang external tree, rootfs-overlay, post-build nga mga script

Ang unang duha ka mga script gipatuman human matukod ang target file system, apan sa wala pa kini maputos sa mga hulagway. Ang kalainan mao nga ang fakeroot nga script gipatuman sa konteksto sa fakeroot, nga nagsundog sa trabaho isip gamut nga tiggamit.

Ang katapusan nga script gipatuman pagkahuman sa paghimo sa mga imahe sa sistema. Mahimo nimong buhaton ang dugang nga mga aksyon niini, pananglitan, kopyaha ang kinahanglan nga mga file sa usa ka NFS server o paghimo usa ka imahe sa firmware sa imong aparato.

Isip usa ka pananglitan, maghimo ko og script nga mosulat sa bersyon ug magtukod og petsa sa /etc/.
Una akong ipakita ang dalan sa kini nga file sa akong eksternal nga kahoy:

Buildroot - bahin 2. Paghimo sa imong board configuration; gamit ang external tree, rootfs-overlay, post-build nga mga script

Ug karon ang script mismo:

[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

Human sa asembliya, imong makita kini nga file sa sistema.

Sa praktis, ang script mahimong dako. Busa, sa tinuod nga proyekto mikuha ako og mas abante nga ruta:

  1. Naghimo ako usa ka direktoryo (my_tree/board_my_x86_board/inside_fakeroot_scripts) diin adunay mga script nga ipatuman, nga adunay mga serial number. Pananglitan, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Nagsulat ko og script (my_tree/board_my_x86_board/run_inside_fakeroot.sh) nga moagi niini nga direktoryo ug sunodsunod nga ipatuman ang mga script nga anaa niini
  3. Gipiho kini nga script sa mga setting sa board sa System configuration -> Custom scripts nga modagan sulod sa fakeroot environment ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) nga seksyon

Source: www.habr.com

Idugang sa usa ka comment