Buildroot - pàirt 2. A 'cruthachadh rèiteachadh a' bhùird agad; cleachdadh craobh a-muigh, rootfs-overlay, sgriobtaichean iar-thogail

Anns an earrainn seo bheir mi sùil air cuid de na roghainnean gnàthachaidh a bha a dhìth orm. Chan e liosta iomlan a tha seo de na tha buildroot a’ tabhann, ach tha iad gu math obrachail agus chan fheum iad eadar-theachd ann am faidhlichean buildroot fhèin.

A’ cleachdadh an uidheamachd EXTERNAL airson gnàthachadh

Anns an artaigil roimhe Choimhead sinn air eisimpleir shìmplidh de bhith a 'cur ris an rèiteachadh agad fhèin le bhith a' cur defconfig a 'bhùird agus na faidhlichean riatanach gu dìreach ris an eòlaire Buildroot.

Ach chan eil an dòigh seo gu math goireasach, gu sònraichte nuair a bhios tu ag ùrachadh buildroot. Tha inneal ann airson an duilgheadas seo fhuasgladh craobh a-muigh. Is e an rud a th’ ann gun urrainn dhut bòrd, configs, pacaidean agus clàran eile a stòradh ann an eòlaire air leth (mar eisimpleir, bidh mi a’ cleachdadh an eòlaire pasgain gus pasgain a chuir an sàs ann am pasganan, barrachd mion-fhiosrachaidh ann an earrann air leth) agus cuiridh buildroot fhèin iad ris an fheadhainn a tha ann an an eòlaire aige.

Thoir an aire: faodaidh tu grunn chraobhan a-muigh a chòmhdach aig an aon àm, tha eisimpleir anns an leabhar-làimhe buildroot

Cruthaichidh sinn eòlaire my_tree, suidhichte ri taobh an eòlaire buildroot agus gluais ar rèiteachadh an sin. Bu chòir gum biodh an structar faidhle a leanas aig an toradh:

[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

Mar a chì thu, san fharsaingeachd bidh an structar ag ath-aithris structar buildroot.

eòlaire air a 'bhòrd anns a bheil faidhlichean a tha sònraichte do gach bòrd sa chùis againn:

  • bef_cr_fs_img.sh na sgriobt a thèid a chuir gu bàs às deidh dha an siostam faidhle targaid a thogail, ach mus tèid a phacadh gu ìomhaighean. Cleachdaidh sinn e san àm ri teachd
  • linux.config - rèiteachadh kernel
  • rootfs_overlay - eòlaire ri ath-chòmhdach air mullach an t-siostam faidhle targaid
  • users.txt - faidhle a' toirt cunntas air na cleachdaichean a thèid a chruthachadh

eòlaire cumaidhean tha defconfig de na bùird againn. Chan eil againn ach aon.

pasgan - catalog leis na pacaidean againn. An toiseach, buildroot tha tuairisgeulan agus riaghailtean airson a bhith a 'togail àireamh chuingealaichte de phasgan. Nas fhaide air adhart cuiridh sinn am manaidsear uinneig icewm agus am manaidsear logadh a-steach grafaigeach Slim an seo.
Pàirtean - a’ leigeil leat na pìosan agad a stòradh gu h-iomchaidh airson diofar phasganan. Tuilleadh fiosrachaidh ann an earrann air leth gu h-ìosal.
A-nis feumaidh sinn na faidhlichean tuairisgeul a chuir ris airson ar craobh a-muigh. Tha 3 faidhlichean an urra ri seo: external.desc, Config.in, external.mk.

taobh a-muigh.desc tha an fhìor thuairisgeul ann:

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

Is e a’ chiad loidhne an tiotal. Anns an àm ri teachd buildroot cruthaich caochladair $(BR2_EXTERNAL_MY_TREE_PATH), a bu chòir a chleachdadh nuair a thathar a’ rèiteachadh a’ cho-chruinneachaidh. Mar eisimpleir, faodar an t-slighe gu faidhle cleachdaiche a shuidheachadh mar a leanas:

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

Tha an dàrna loidhne na thuairisgeul goirid, a ghabhas leughadh le daoine.

Config.in, taobh a-muigh.mk - faidhlichean airson cunntas a thoirt air pacaidean a bharrachd. Mura cuir thu na pacaidean agad fhèin ris, faodar na faidhlichean sin fhàgail falamh. Airson a-nis, is e sin a nì sinn.
A-nis tha a’ chraobh a-muigh againn deiseil, anns a bheil defconfig ar bòrd agus na faidhlichean a dh’ fheumas e. Rachamaid chun an eòlaire buildroot agus sònraich sinn gus craobh a-muigh a chleachdadh:

[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

Anns a 'chiad àithne bidh sinn a' cleachdadh an argamaid BR2_EXTERNAL=../my_tree/, a’ comharrachadh cleachdadh craobh a-muigh. Faodaidh tu grunn chraobhan taobh a-muigh a shònrachadh airson an cleachdadh aig an aon àm. Anns a’ chùis seo, cha leig thu leas ach seo a dhèanamh aon turas, às deidh sin cruthaichear toradh faidhle/.br-external.mk sin a’ stòradh fiosrachadh mun chraoibh a-muigh a thathar a’ cleachdadh:

[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

Cudromach! Bidh na slighean san fhaidhle seo iomlan!

Tha rud roghainnean taobh a-muigh air nochdadh sa chlàr:

Buildroot - pàirt 2. A 'cruthachadh rèiteachadh a' bhùird agad; cleachdadh craobh a-muigh, rootfs-overlay, sgriobtaichean iar-thogail

Anns an fho-chlàr seo bidh na pacaidean againn bhon chraobh a-muigh againn. Tha an earrann seo falamh an-dràsta.

A-nis tha e nas cudromaiche dhuinn na slighean riatanach ath-sgrìobhadh gus craobh a-muigh a chleachdadh.

Thoir an aire, anns na roghainnean Togbhail → Àite gus sàbhaladh buildroot config earrann, bidh slighe iomlan ann chun an defconfig a chaidh a shàbhaladh. Tha e air a chruthachadh aig an àm a bhith a 'sònrachadh cleachdadh extgernal_tree.

Ceartaichidh sinn cuideachd na slighean ann an roinn rèiteachadh an t-siostaim. Airson clàr le luchd-cleachdaidh cruthaichte:

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

Anns an roinn Kernel, atharraich an t-slighe gu rèiteachadh kernel:

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

A-nis bidh na faidhlichean againn bhon chraobh a-muigh againn air an cleachdadh aig àm co-chruinneachadh. Nuair a ghluaiseas tu gu eòlaire eile no nuair a bhios tu ag ùrachadh an buildroot, bidh co-dhiù duilgheadasan againn.

A’ cur freumh fs ath-chòmhdach ris:

Leigidh an uidheamachd seo leat faidhlichean a chuir ris / a chuir nan àite gu furasta san t-siostam faidhle targaid.
Ma tha am faidhle ann am freumh fs ath-chòmhdach, ach chan ann san targaid, thèid a chur ris
Ma tha am faidhle ann am freumh fs ath-chòmhdach agus san targaid, thèid a chuir na àite.
An toiseach, suidhich sinn an t-slighe gu freumh fs overlay dir. Tha seo air a dhèanamh ann an rèiteachadh an t-siostaim → Root siostam faidhlichean ath-chòmhdach roinn eòlairean:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

A-nis cruthaichidh sinn dà fhaidhle.

[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

Thèid a’ chiad fhaidhle (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) an àite am faidhle /etc/hosts air an t-siostam chrìochnaichte. Thèid an dàrna faidhle (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) a chur ris.

Bidh sinn a’ cruinneachadh agus a’ sgrùdadh:

Buildroot - pàirt 2. A 'cruthachadh rèiteachadh a' bhùird agad; cleachdadh craobh a-muigh, rootfs-overlay, sgriobtaichean iar-thogail

Cur an gnìomh sgriobtaichean gnàthachaidh aig diofar ìrean de cho-chruinneachadh siostam

Gu tric feumaidh tu beagan obrach a dhèanamh taobh a-staigh an t-siostam faidhle targaid mus tèid a phacaigeadh ann an ìomhaighean.

Faodar seo a dhèanamh ann an roinn rèiteachadh an t-siostaim:

Buildroot - pàirt 2. A 'cruthachadh rèiteachadh a' bhùird agad; cleachdadh craobh a-muigh, rootfs-overlay, sgriobtaichean iar-thogail

Thèid a’ chiad dà sgriobt a chur gu bàs às deidh an siostam faidhle targaid a thogail, ach mus tèid a phacaigeadh ann an ìomhaighean. Is e an eadar-dhealachadh gu bheil an sgriobt fakeroot air a chuir gu bàs ann an co-theacsa fakeroot, a tha coltach ri obair mar an neach-cleachdaidh freumh.

Thèid an sgriobt mu dheireadh a chuir gu bàs às deidh na h-ìomhaighean siostam a chruthachadh. Faodaidh tu gnìomhan a bharrachd a dhèanamh ann, mar eisimpleir, dèan lethbhreac de na faidhlichean riatanach gu frithealaiche NFS no cruthaich ìomhaigh de firmware an uidheim agad.

Mar eisimpleir, cruthaichidh mi sgriobt a sgrìobhas an dreach agus a thogas ceann-latha gu /etc/.
An toiseach seallaidh mi an t-slighe chun an fhaidhle seo anns a’ chraobh a-muigh agam:

Buildroot - pàirt 2. A 'cruthachadh rèiteachadh a' bhùird agad; cleachdadh craobh a-muigh, rootfs-overlay, sgriobtaichean iar-thogail

Agus a-nis an sgriobt fhèin:

[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

Às deidh co-chruinneachadh, chì thu am faidhle seo air an t-siostam.

Ann an cleachdadh, faodaidh an sgriobt fàs mòr. Mar sin, anns a 'phròiseact fìor ghabh mi slighe nas adhartaiche:

  1. Chruthaich mi eòlaire (my_tree/board_my_x86_board/inside_fakeroot_scripts) anns a bheil sgriobtaichean rin cur gu bàs, le àireamhan sreathach. Mar eisimpleir, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Sgrìobh mi sgriobt (my_tree/board_my_x86_board/run_inside_fakeroot.sh) a tha a’ dol tron ​​eòlaire seo agus a’ cur an gnìomh na sgriobtaichean a tha na bhroinn ann an òrdugh
  3. Shònraich an sgriobt seo ann an roghainnean a’ bhùird ann an rèiteachadh an t-Siostaim -> Sgriobtaichean gnàthaichte airson ruith taobh a-staigh na h-àrainneachd fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) earrann

Source: www.habr.com

Cuir beachd ann