Buildroot - vaega 2. Fausiaina o lau fa'atulagaga laupapa; fa'aogaina o la'au i fafo, rootfs-overlay, post-build scripts

I lenei vaega ou te vaʻavaʻai i nisi o filifiliga faʻapitoa na ou manaʻomia. E le o se lisi atoa lea o mea e ofoina mai e buildroot, ae e matua aoga lava ma e le manaʻomia ai se faʻalavelave i faila o buildroot lava ia.

Fa'aaogāina ole fa'ainisinia FAFO mo le fa'avasegaina

I le tala muamua Na matou vaʻavaʻai i se faʻataʻitaʻiga faigofie o le faʻaopoopoina o lau oe lava faʻatulagaga e ala i le faʻapipiʻiina o le defconfig a le laupapa ma faila talafeagai i le Buildroot directory.

Ae o lenei metotia e le faigofie tele, aemaise lava pe a faʻafouina buildroot. O loʻo i ai se masini e foia ai lenei faʻafitauli laau i fafo. O lona uiga e mafai ona e teuina le laupapa, configs, afifi ma isi tusitaiala i se isi lisi (mo se faʻataʻitaʻiga, ou te faʻaogaina le lisi o patch e faʻaoga ai patch i afifi, nisi faʻamatalaga i se vaega ese) ma buildroot lava ia o le a faʻaopoopoina i latou i totonu. lona fa'atonuga.

Manatua: e mafai ona e faʻapipiʻi nisi o laʻau i fafo i le taimi e tasi, o loʻo i ai se faʻataʻitaʻiga i le buildroot manual

Sei o tatou faia se lisi my_tree, o loʻo i tafatafa o le buildroot directory ma faʻafeiloaʻi la tatou faʻatulagaga iina. Ole fa'aulufalega e tatau ona fa'apea le fa'atulagaina o faila:

[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

E pei ona e vaʻaia, i se tulaga lautele, o le fausaga e toe fai le fausaga o buildroot.

aufaʻatonu komiti o loʻo i ai faila faʻapitoa i laupapa taʻitasi i la matou mataupu:

  • bef_cr_fs_img.sh o se tusitusiga o le a faʻatinoina pe a uma ona fausia le faila faila, ae leʻi faʻapipiʻiina i ata. O le a matou faʻaaogaina i le lumanaʻi
  • linux.config - fa'atulagaina o fatu
  • rootfs_overlay - lisi e faʻapipiʻi i luga o le faila faila
  • users.txt - o se faila e fa'amatala ai tagata e fa'aogaina

aufaʻatonu fetuunai o lo'o iai defconfig oa tatou laupapa. E tasi lava a matou.

afī - fa'amaumauga fa'atasi ma a matou afifi. Muamua, buildroot o loʻo i ai faʻamatalaga ma tulafono mo le fausiaina o se numera faʻatapulaʻa o afifi. Mulimuli ane o le a matou faʻaopoopoina le pule faʻamalama icewm ma le Slim graphical login manager iinei.
Patches - faʻatagaina oe e teu lelei au paʻu mo afifi eseese. Fa'amatalaga atili i se isi vaega i lalo.
Ole taimi nei e mana'omia le fa'aopoopoina o faila fa'amatalaga mo la tatou la'au i fafo. E 3 faila e nafa ma lenei: external.desc, Config.in, external.mk.

fafo.desc o loʻo i ai le faʻamatalaga moni:

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

O le laina muamua o le ulutala. I le lumanaʻi buildroot faia se fesuiaiga $(BR2_EXTERNAL_MY_TREE_PATH), lea e tatau ona faʻaaogaina pe a faʻapipiʻi le faʻapotopotoga. Mo se faʻataʻitaʻiga, o le ala i le faila tagata e mafai ona seti e pei ona taʻua i lalo:

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

O le laina lona lua o se faʻamatalaga puupuu, e mafai ona faitau e tagata.

Config.in, fafo.mk — faila e faamatala ai afifi faaopoopo. Afai e te le faʻaopoopoina au lava afifi, o nei faila e mafai ona tuʻu avanoa. Mo le taimi nei, o le mea lena o le a tatou faia.
O lea ua saunia la matou laau i fafo, o loʻo i ai le faʻaogaina o le matou laupapa ma faila e manaʻomia. Tatou alu i le buildroot directory ma faʻamaonia e faʻaaoga fafo-laau:

[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

I le poloaiga muamua matou te faʻaaogaina le finauga BR2_FAFO=../la'u_laau/, e fa'aalia ai le fa'aogaina o se la'au i fafo. E mafai ona e fa'ama'oti nisi o la'au i fafo mo le fa'aoga i le taimi e tasi. I lenei tulaga, e na'o le tasi lava le mea e te mana'omia, a mae'a ona faia lea o se faila faila/.br-external.mk. teuina faʻamatalaga e uiga i fafo-laau faʻaaogaina:

[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

Taua! O auala i totonu o lenei faila o le a atoatoa!

O lo'o fa'aalia se mea mai fafo i le lisi:

Buildroot - vaega 2. Fausiaina o lau fa'atulagaga laupapa; fa'aogaina o la'au i fafo, rootfs-overlay, post-build scripts

O lenei submenu o le a iai a tatou afifi mai la tatou laau i fafo. O lo'o gaogao le vaega lea.

Ole taimi nei e sili atu ona taua mo i tatou le toe tusia o auala talafeagai e faʻaoga ai fafo-laau.

Faamolemole ia matau i totonu o le Fausia filifiliga → Nofoaga e teu ai buildroot config vaega, o le ai ai se ala atoatoa i le defconfig faasaoina. E faia i le taimi e faʻamaonia ai le faʻaogaina o le extgernal_tree.

O le a matou faʻasaʻo foʻi auala i le vaega Faʻatulagaina o le System. Mo se laulau o lo'o i ai tagata fa'aogaina:

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

I le vaega o le Kernel, sui le ala i le kernel configuration:

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

O le taimi nei o le a faʻaaogaina a matou faila mai le matou laau i fafo i le taimi o le faʻapotopotoga. Pe a siitia atu i se isi lisi poʻo le faʻafouina o le buildroot, o le a itiiti a tatou faʻafitauli.

Fa'aopoopo a'a fs fa'apipi'i:

O lenei masini e mafai ai e oe ona faigofie ona faʻaopoopo / sui faila i le faila faila.
Afai o le faila o loʻo i totonu o le root fs overlay, ae le o le sini, ona faʻaopoopoina lea
Afai o le faila o loʻo i totonu o le root fs overlay ma i le faʻamoemoe, ona suia lea.
Muamua, se'i o tatou seti le ala e a'a ai fs overlay dir. E faia lenei mea i le System configuration → Root filesystem overlay directories section:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Sei o tatou fatuina faila se lua.

[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

O le faila muamua (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) o le a suitulaga i le faila /etc/hosts i luga o le polokalama maeʻa. O le faila lona lua (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) o le a faaopoopo.

Matou te aoina ma siaki:

Buildroot - vaega 2. Fausiaina o lau fa'atulagaga laupapa; fa'aogaina o la'au i fafo, rootfs-overlay, post-build scripts

Fa'atinoina o tusitusiga fa'apitoa i la'asaga 'ese'ese o le fa'apotopotoga fa'apitoa

E masani ona e manaʻomia le faia o ni galuega i totonu o le faila faila aʻo leʻi faʻapipiʻiina i ata.

E mafai ona faia lenei mea i le vaega o le System configuration:

Buildroot - vaega 2. Fausiaina o lau fa'atulagaga laupapa; fa'aogaina o la'au i fafo, rootfs-overlay, post-build scripts

O tusitusiga muamua e lua e faʻatinoina pe a uma ona fausia le faila faila, ae leʻi faʻapipiʻiina i ata. O le eseesega o le fakeroot script o loʻo faʻatinoina i totonu o le faʻasologa o fakeroot, lea e faʻataʻitaʻiina le galuega o le aʻa faʻaoga.

O le fa'amaumauga mulimuli e fa'atino pe a uma ona faia ata o le faiga. E mafai ona e faia ni gaioiga faaopoopo i totonu, mo se faʻataʻitaʻiga, kopi faila manaʻomia i se NFS server pe fatuina se ata o lau masini firmware.

Mo se faʻataʻitaʻiga, o le a ou fatuina se tusitusiga o le a tusia ai le lomiga ma fausia le aso i /etc/.
Muamua o le a ou faʻaalia le ala i lenei faila i laʻu laau i fafo:

Buildroot - vaega 2. Fausiaina o lau fa'atulagaga laupapa; fa'aogaina o la'au i fafo, rootfs-overlay, post-build scripts

Ma o lea la o le tusitusiga lava ia:

[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

A maeʻa le faʻapotopotoga, e mafai ona e vaʻai i lenei faila i luga o le polokalama.

I le faʻataʻitaʻiga, e mafai ona tele le tusitusiga. O le mea lea, i le galuega moni na ou uia se auala sili atu ona alualu i luma:

  1. Na ou faia se lisi (my_tree/board_my_x86_board/inside_fakeroot_scripts) o loʻo i ai faʻamaumauga e faʻatino, ma numera faʻasologa. Mo se fa'ata'ita'iga, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Na ou tusia se tusitusiga (my_tree/board_my_x86_board/run_inside_fakeroot.sh) e alu i totonu o lenei lisi ma faʻasolosolo faʻasologa o tusitusiga o loʻo iai i totonu.
  3. Fa'ailoa mai lenei fa'amaumauga i le fa'atulagaina o le laupapa i le System configuration -> Fa'asinomaga fa'apitoa e tamo'e i totonu ole siosiomaga fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) vaega

puna: www.habr.com

Faaopoopo i ai se faamatalaga