Buildroot - cuid 2. Cumraíocht do bhoird a chruthú; ag baint úsáide as crann seachtrach, rootfs-forleagan, scripteanna iar-thógála

Sa chuid seo féachaim ar chuid de na roghanna saincheaptha a bhí de dhíth orm. Ní liosta iomlán é seo de na rudaí a thairgeann buildroot, ach tá siad feidhmiúil go leor agus ní gá idirghabháil a dhéanamh i gcomhaid buildroot féin.

Ag baint úsáide as an meicníocht SEACHTRACH le haghaidh saincheaptha

In alt roimhe seo D'fhéachamar ar shampla simplí de do chumraíocht féin a chur leis trí defconfig an bhoird agus na comhaid riachtanacha a chur go díreach leis an eolaire Buildroot.

Ach nach bhfuil an modh seo an-áisiúil, go háirithe nuair a nuashonrú buildroot. Tá meicníocht ann chun an fhadhb seo a réiteach crann seachtrach. Is é a bunúsach gur féidir leat bord, cumraíochtaí, pacáistí agus eolairí eile a stóráil in eolaire ar leith (mar shampla, úsáidim an t-eolaire paistí chun paistí a chur i bhfeidhm ar phacáistí, tuilleadh sonraí i rannóg ar leith) agus cuirfidh buildroot féin leis iad siúd i a eolaire.

Tabhair faoi deara: is féidir leat roinnt crann seachtracha a fhorleagan ag an am céanna, tá sampla sa lámhleabhar buildroot

Cruthaímid eolaire my_tree, atá suite in aice leis an eolaire buildroot agus aistrímid ár gcumraíocht ann. Ba cheart go mbeadh an struchtúr comhaid seo a leanas san aschur:

[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 fheiceann tú, go ginearálta athrá ar an struchtúr struchtúr buildroot.

Eolaire bord ina bhfuil comhaid a bhaineann go sonrach le gach bord inár gcás:

  • Is script é bef_cr_fs_img.sh a fhorghníomhófar tar éis an spriocchóras comhaid a thógáil, ach sula ndéantar é a phacáistiú in íomhánna. Bainfimid úsáid as sa todhchaí
  • linux.config - cumraíocht eithne
  • rootfs_overlay - eolaire le forleagan ar bharr an chórais comhad sprice
  • users.txt - comhad a chuireann síos ar na húsáideoirí atá le cruthú

Eolaire configs ina bhfuil defconfig ar ár boird. Níl ach ceann amháin againn.

Pacáiste - catalóg lenár bpacáistí. Ar dtús, tá tuairiscí agus rialacha ag buildroot maidir le líon teoranta pacáistí a thógáil. Níos déanaí cuirfimid an bainisteoir fuinneog icewm agus an bainisteoir logáil isteach grafach caol anseo.
Paistí — ligeann sé duit do phaistí a stóráil go háisiúil le haghaidh pacáistí éagsúla. Tuilleadh sonraí i rannán ar leith thíos.
Anois ní mór dúinn na comhaid tuairisce dár gcrann seachtrach a chur leis. Tá 3 chomhad freagrach as seo: external.desc, Config.in, external.mk.

seachtrach.desc tá an cur síos iarbhír:

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

Is é an chéad líne an teideal. Sa todhchaí buildroot cruthaigh athróg $(BR2_EXTERNAL_MY_TREE_PATH), ba chóir a úsáid nuair a bhíonn an tionól á chumrú. Mar shampla, is féidir an cosán chuig an gcomhad úsáideora a shocrú mar seo a leanas:

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

Is cur síos gairid é an dara líne atá inléite ag an duine.

Cumraíocht.in, seachtracha.mk — comhaid chun cur síos a dhéanamh ar phacáistí breise. Mura gcuireann tú do phacáistí féin leis, is féidir na comhaid seo a fhágáil folamh. Go dtí seo, sin an méid a dhéanfaimid.
Anois tá ár gcrann seachtrach réidh againn, ina bhfuil defconfig ár mbord agus na comhaid a theastaíonn uaidh. Rachaimid chuig an eolaire buildroot agus sonraigh chun crann seachtrach a úsáid:

[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 chéad ordú úsáidimid an argóint BR2_EXTERNAL=../my_tree/, a léiríonn úsáid crann seachtrach. Is féidir leat roinnt crann seachtrach a shonrú lena n-úsáid ag an am céanna. Sa chás seo, ní gá duit é seo a dhéanamh ach uair amháin, agus ina dhiaidh sin cruthaítear aschur comhaid/.br-external.mk go stóráiltear faisnéis faoin gcrann seachtrach a úsáidtear:

[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

Tábhachtach! Beidh na cosáin sa chomhad seo absalóideach!

Tá mír roghanna Seachtracha le feiceáil sa roghchlár:

Buildroot - cuid 2. Cumraíocht do bhoird a chruthú; ag baint úsáide as crann seachtrach, rootfs-forleagan, scripteanna iar-thógála

Beidh ár bpacáistí ónár gcrann seachtrach san fho-roghchlár seo. Tá an chuid seo folamh faoi láthair.

Anois tá sé níos tábhachtaí dúinn na cosáin riachtanacha a athscríobh chun crann seachtrach a úsáid.

Tabhair faoi deara le do thoil, sa rannán Roghanna Tógáil → Suíomh chun cumraíocht buildroot a shábháil, beidh cosán iomlán ann chuig an defconfig sábháilte. Cruthaítear é faoi láthair a shonraítear úsáid extgernal_tree.

Déanfaimid na cosáin sa rannán cumraíochta Córais a cheartú freisin. Le haghaidh tábla le húsáideoirí cruthaithe:

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

Sa chuid Eithne, athraigh an cosán go dtí an chumraíocht eithne:

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

Anois bainfear úsáid as ár gcomhaid ónár gcrann seachtrach le linn an tionóil. Nuair a bhogaimid chuig eolaire eile nó nuair a bheidh an buildroot á nuashonrú, beidh íosmhéid fadhbanna againn.

Forleagan fréimhe fs á chur leis:

Ligeann an mheicníocht seo duit comhaid a shuimiú / a athsholáthar go héasca sa spriocchóras comhad.
Má tá an comhad i bhforleagan fréamh fs, ach nach bhfuil sa sprioc, cuirfear leis é
Má tá an comhad i bhforleagan fréamh fs agus sa sprioc, ansin cuirfear ina ionad.
Ar dtús, socróimid an cosán chun dir forleagan fs a fhréamh. Déantar é seo i gcumraíocht an Chórais → Eolairí forleagan an chórais comhad root:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Anois, déanaimis dhá chomhad a chruthú.

[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

Cuirfear an chéad chomhad (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) in ionad an chomhaid /etc/hosts ar an gcóras críochnaithe. Cuirfear an dara comhad (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt).

Bailímid agus seiceálann muid:

Buildroot - cuid 2. Cumraíocht do bhoird a chruthú; ag baint úsáide as crann seachtrach, rootfs-forleagan, scripteanna iar-thógála

Scripteanna saincheaptha a fhorghníomhú ag céimeanna éagsúla de thionól an chórais

Go minic ní mór duit roinnt oibre a dhéanamh taobh istigh den spriocchóras comhaid sula ndéantar é a phacáistiú in íomhánna.

Is féidir é seo a dhéanamh sa rannán cumraíocht an Chórais:

Buildroot - cuid 2. Cumraíocht do bhoird a chruthú; ag baint úsáide as crann seachtrach, rootfs-forleagan, scripteanna iar-thógála

Déantar an chéad dá script a fhorghníomhú tar éis an spriocchóras comhaid a thógáil, ach sula ndéantar é a phacáistiú in íomhánna. Is é an difríocht ná go ndéantar an script fakeroot a fhorghníomhú i gcomhthéacs fakeroot, a shamhlaíonn obair mar an t-úsáideoir fréimhe.

Déantar an script dheireanach a fhorghníomhú tar éis na híomhánna córais a chruthú. Is féidir leat gníomhartha breise a dhéanamh ann, mar shampla, na comhaid riachtanacha a chóipeáil chuig freastalaí NFS nó íomhá de firmware do ghléis a chruthú.

Mar shampla, cruthóidh mé script a scríobhfaidh an leagan agus a thógfaidh dáta le /etc/.
Ar dtús cuirfidh mé an cosán chuig an gcomhad seo in iúl i mo chrann seachtrach:

Buildroot - cuid 2. Cumraíocht do bhoird a chruthú; ag baint úsáide as crann seachtrach, rootfs-forleagan, scripteanna iar-thógála

Agus anois an script fé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

Tar éis tionóil, is féidir leat an comhad seo a fheiceáil ar an gcóras.

Go praiticiúil, is féidir leis an script a bheith mór. Mar sin, sa tionscadal fíor ghlac mé bealach níos forbartha:

  1. Chruthaigh mé eolaire (my_tree/board_my_x86_board/inside_fakeroot_scripts) ina bhfuil scripteanna le cur i gcrích, le sraithuimhreacha. Mar shampla, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Scríobh mé script (my_tree/board_my_x86_board/run_inside_fakeroot.sh) a théann tríd an eolaire seo agus a ritheann go seicheamhach na scripteanna atá ann
  3. Sonraigh an script seo i socruithe an chláir i gcumraíocht an Chórais -> Scripteanna saincheaptha le rith laistigh den timpeallacht fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) rannán

Foinse: will.com

Add a comment