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
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:
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:
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:
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:
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:
- 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
- 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
- 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