Buildroot - ampahany 2. Mamorona ny firafitry ny biraonao; mampiasa hazo ivelany, rootfs-overlay, script post-build

Amin'ity fizarana ity dia mijery ny sasany amin'ireo safidy fanamboarana izay nilaiko aho. Tsy lisitra feno amin'izay atolotry ny buildroot ity, fa tena miasa izy ireo ary tsy mila fitsabahana amin'ny rakitra buildroot mihitsy.

Mampiasa ny mekanika EXTERNAL ho an'ny fanamboarana

Ao amin'ny lahatsoratra teo aloha Nijery ohatra tsotsotra izahay tamin'ny fampidirana ny config anao manokana amin'ny fampidirana ny defconfig an'ny birao sy ny rakitra ilaina mivantana amin'ny lahatahiry Buildroot.

Saingy tsy dia mety loatra io fomba io, indrindra rehefa manavao ny buildroot. Misy mekanika hamahana ity olana ity hazo ivelany. Ny votoatiny dia ny ahafahanao mitahiry board, configs, packages ary lahatahiry hafa ao anaty lahatahiry misaraka (ohatra, mampiasa ny lahatahiry patch aho mba hampiharana patch amin'ny fonosana, antsipiriany bebe kokoa ao amin'ny fizarana misaraka) ary ny buildroot mihitsy no hampiditra azy ireo amin'ireo ao anatiny. ny lahatahiry.

Fanamarihana: azonao atao ny manarona hazo ivelany maromaro indray mandeha, misy ohatra ao amin'ny torolàlana buildroot

Andao hamorona lahatahiry my_tree, eo akaikin'ny lahatahiry buildroot ary hamindra any ny konfigurasi. Ny vokatra dia tokony ho toy izao manaraka izao ny firafitry ny rakitra:

[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

Araka ny hitanao, amin'ny ankapobeny ny rafitra dia mamerina ny firafitry ny buildroot.

lahatahiry board misy rakitra manokana ho an'ny birao tsirairay amin'ny tranga misy antsika:

  • bef_cr_fs_img.sh dia script izay hotanterahina aorian'ny fananganana ny rafitra rakitra kendrena, fa alohan'ny hametahana azy ho sary. Hampiasainay izany amin'ny ho avy
  • linux.config - fandrindrana kernel
  • rootfs_overlay - lahatahiry hametahana eo an-tampon'ny rafitra rakitra kendrena
  • users.txt - rakitra milazalaza ireo mpampiasa hoforonina

lahatahiry configs misy defconfig ny boards. Iray ihany isika.

Package - katalaogy miaraka amin'ny fonosanay. Amin'ny voalohany, ny buildroot dia misy famaritana sy fitsipika momba ny fananganana fonosana voafetra. Aorian'izay dia ampianay ny mpitantana ny fikandrana icewm sy ny mpitantana fidirana sary Slim eto.
Patches - ahafahanao mitahiry ny paty ho an'ny fonosana samihafa. Ny antsipiriany bebe kokoa amin'ny fizarana misaraka etsy ambany.
Ankehitriny dia mila manampy ny rakitra famaritana ho an'ny hazo ivelany. Misy rakitra 3 tompon'andraikitra amin'izany: external.desc, Config.in, external.mk.

external.desc misy ny tena famaritana:

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

Ny andalana voalohany dia ny lohateny. Amin'ny ho avy buildroot mamorona fari-piainana $(BR2_EXTERNAL_MY_TREE_PATH), izay tokony ampiasaina rehefa manamboatra ny fivoriambe. Ohatra, ny lalana mankany amin'ny rakitra mpampiasa dia azo apetraka toy izao manaraka izao:

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

Ny andalana faharoa dia famaritana fohy, azo vakin'ny olombelona.

Config.in, ivelany.mk - rakitra hamaritana fonosana fanampiny. Raha tsy manampy ny fonosanao manokana ianao dia azo avela ho foana ireo rakitra ireo. Amin'izao fotoana izao dia izay no hataontsika.
Ankehitriny dia efa vonona ny hazo ivelany, misy ny defconfig ny birao sy ny rakitra ilainy. Andao ho any amin'ny lahatahiry buildroot ary ambarao ny fampiasana hazo ivelany:

[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

Ao amin'ny baiko voalohany dia mampiasa ny argument BR2_EXTERNAL=../my_tree/, manondro ny fampiasana hazo ivelany. Azonao atao ny mamaritra hazo ivelany maromaro ampiasaina amin'ny fotoana iray. Amin'ity tranga ity, dia mila manao izany indray mandeha ianao, ary avy eo dia mamorona rakitra output/.br-external.mk izany mitahiry fampahalalana momba ny hazo ivelany ampiasaina:

[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

Zava-dehibe! Ny lalana amin'ity rakitra ity dia ho tanteraka!

Nisy singa safidy ivelany niseho tao amin'ny sakafo:

Buildroot - ampahany 2. Mamorona ny firafitry ny biraonao; mampiasa hazo ivelany, rootfs-overlay, script post-build

Ity submenu ity dia ahitana ny fonosanay avy amin'ny hazo ivelany. Foana ity fizarana ity amin'izao fotoana izao.

Ankehitriny dia zava-dehibe kokoa ho antsika ny mamerina manoratra ireo lalana ilaina hampiasana hazo ivelany.

Mariho fa ao amin'ny safidy Build → Toerana hamonjena ny fizarana config buildroot dia hisy lalana tanteraka mankany amin'ny defconfig voatahiry. Izy io dia miforona amin'ny fotoana hamaritana ny fampiasana ny extgernal_tree.

Hanitsy ihany koa ny lalana ao amin'ny fizarana System configuration. Ho an'ny latabatra misy mpampiasa noforonina:

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

Ao amin'ny fizarana Kernel, ovay ny lalana mankany amin'ny fanamafisana kernel:

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

Amin'izao fotoana izao ny rakitra avy amin'ny hazo ivelany dia hampiasaina mandritra ny fivoriambe. Rehefa mifindra any amin'ny lahatahiry hafa na manavao ny buildroot dia hanana olana kely indrindra isika.

Manampy ny root fs overlay:

Ity rafitra ity dia ahafahanao manampy / manolo mora foana ny rakitra ao amin'ny rafi-drakitra kendrena.
Raha ao anaty root fs overlay ny rakitra, fa tsy amin'ny tanjona, dia ampiana izany
Raha ao anaty root fs overlay ny rakitra ary amin'ny tanjona dia hosoloina.
Andeha aloha apetraka ny lalana mankany amin'ny root fs overlay dir. Izany dia atao ao amin'ny System configuration → Root filesystem overlay directories section:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Andeha isika hamorona rakitra roa.

[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

Ny rakitra voalohany (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) dia hanolo ny rakitra /etc/hosts amin'ny rafitra efa vita. Hampiana ny rakitra faharoa (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt).

Manangona sy manamarina izahay:

Buildroot - ampahany 2. Mamorona ny firafitry ny biraonao; mampiasa hazo ivelany, rootfs-overlay, script post-build

Fampiharana ny script fanamboarana amin'ny dingana samihafa amin'ny fivorian'ny rafitra

Matetika ianao dia mila manao asa sasany ao anatin'ny rafitra fichier kendrena alohan'ny hampidirana azy ho sary.

Izany dia azo atao ao amin'ny fizarana System configuration:

Buildroot - ampahany 2. Mamorona ny firafitry ny biraonao; mampiasa hazo ivelany, rootfs-overlay, script post-build

Ny script roa voalohany dia tanterahina aorian'ny fananganana ny rafitra rakitra kendrena, fa alohan'ny hampidirana azy ho sary. Ny mahasamihafa azy dia ny script fakeroot dia tanterahana ao anatin'ny tontolon'ny fakeroot, izay mampitovy ny asa amin'ny maha mpampiasa root.

Ny script farany dia tanterahina aorian'ny famoronana ny sary rafitra. Azonao atao ny manao hetsika fanampiny ao, ohatra, mandika ny rakitra ilaina amin'ny mpizara NFS na mamorona sarin'ny firmware fitaovanao.

Ohatra, hamorona script aho izay hanoratra ny dikan-teny sy daty hananganana /etc/.
Voalohany dia hanondro ny lalana mankany amin'ity rakitra ity amin'ny hazo ivelany aho:

Buildroot - ampahany 2. Mamorona ny firafitry ny biraonao; mampiasa hazo ivelany, rootfs-overlay, script post-build

Ary izao ny script mihitsy:

[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

Aorian'ny fivoriambe dia azonao jerena ity rakitra ity amin'ny rafitra.

Amin'ny fampiharana, ny script dia mety ho lehibe. Noho izany, tao amin'ny tena tetikasa dia nanao lalana mandroso kokoa aho:

  1. Namorona lahatahiry iray aho (my_tree/board_my_x86_board/inside_fakeroot_scripts) izay misy sora-baventy hovonoina, miaraka amin'ny laharan-tariby. Ohatra, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Nanoratra script aho (my_tree/board_my_x86_board/run_inside_fakeroot.sh) izay mandeha amin'ity lahatahiry ity ary manatanteraka ny script voarakitra ao anatiny.
  3. Nofaritana io script io ao amin'ny firafitry ny solaitrabe ao amin'ny rafitry ny System -> script manokana mba hihazakazaka ao anatin'ny tontolo fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) fizarana

Source: www.habr.com

Add a comment