Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Ro-ràdh

Anns an t-sreath artaigilean seo, tha mi airson sùil a thoirt air an t-siostam togail cuairteachaidh buildroot agus an eòlas agam air a ghnàthachadh a cho-roinn. An seo bidh eòlas practaigeach agad ann a bhith a’ cruthachadh OS beag le eadar-aghaidh grafaigeach agus glè bheag de ghnìomhachd.

An toiseach, cha bu chòir dhut an siostam togail agus an sgaoileadh a mheasgachadh. Faodaidh Buildroot siostam a thogail bho sheata de phasganan a thèid a thabhann dha. Tha Buildroot air a thogail air faidhlichean dèanamh agus mar sin tha comasan gnàthachaidh fìor mhòr aige. Cuir dreach eile an àite pasgan, cuir do phacaid fhèin ris, atharraich na riaghailtean airson pasgan a thogail, gnàthaich an siostam faidhle às deidh dhut na pacaidean gu lèir a chuir a-steach? faodaidh buildroot seo uile a dhèanamh.

Anns an Ruis, thathas a 'cleachdadh buildroot, ach nam bheachd-sa chan eil mòran fiosrachaidh ann an cànan na Ruis airson luchd-tòiseachaidh.

Is e amas na h-obrach pasgan cuairteachaidh a chuir ri chèile le luchdachadh sìos beò, eadar-aghaidh icewm agus brobhsair. Is e an àrd-ùrlar targaid virtualbox.

Carson a thogas tu do chuairteachadh fhèin? Gu tric tha feum air comas-gnìomh cuibhrichte le goireasan cuibhrichte. Fiù ‘s nas trice ann an fèin-ghluasad feumaidh tu firmware a chruthachadh. Tha e nas dian-obrach a bhith ag atharrachadh cuairteachadh adhbhar coitcheann le bhith a’ glanadh phasganan neo-riatanach agus ga thionndadh gu firmware na bhith a’ togail cuairteachadh ùr. Tha crìochan aig cleachdadh Gentoo cuideachd.

Tha an siostam Buildroot gu math cumhachdach, ach cha dèan e dad dhut. Chan urrainn dha ach am pròiseas cruinneachaidh a chomasachadh agus a dhèanamh fèin-ghluasadach.

Chan eilear a’ beachdachadh no a’ dèanamh coimeas eadar siostaman togail eile (yocto, siostam togail fosgailte agus feadhainn eile).

Càite am faigh e agus mar a thòisicheas tu

Làrach-lìn pròiseict - buildroot.org. An seo faodaidh tu an dreach làithreach a luchdachadh sìos agus an leabhar-làimhe a leughadh. An sin faodaidh tu fios a chuir chun choimhearsnachd, tha rianadair bug, liostaichean puist agus seanal irc.

Bidh Buildroot ag obrachadh defconfigs airson bòrd targaid an togalaich. Is e faidhle rèiteachaidh a th’ ann an Defconfig a bhios a’ stòradh dìreach roghainnean aig nach eil luachan bunaiteach. Is e esan a bhios a 'dearbhadh dè a thèid a chruinneachadh agus ciamar. Anns a 'chùis seo, faodaidh tu na rèiteachaidhean de busybox, linux-kernel, uglibc, u-boot agus luchd-luirg bogsa-rùisgte a rèiteachadh, ach bidh iad uile ceangailte ris a' bhòrd targaid.
Às deidh dhuinn an tasglann a chaidh a luchdachadh sìos a dhì-phapadh no clonadh bho git, gheibh sinn buildroot deiseil airson a chleachdadh. Faodaidh tu barrachd a leughadh mu structar an eòlaire san leabhar-làimhe; Innsidh mi dhut mun fheadhainn as cudromaiche:

air a 'bhòrd - eòlaire le faidhlichean a tha sònraichte do gach bòrd. Faodaidh iad sin a bhith nan sgriobtaichean airson ìomhaighean siostam a chruthachadh (iso, sdcart, cpio agus feadhainn eile), eòlaire ath-chòmhdach, config kernel, msaa.
cumaidhean - fìor defconfig a’ bhùird. Tha Defconfig na rèiteachadh bùird neo-choileanta. Bidh e a’ stòradh dìreach paramadairean a tha eadar-dhealaichte bho na roghainnean bunaiteach
dl - eòlaire le còdan / faidhlichean stòr air an luchdachadh sìos airson co-chruinneachadh
toradh/targaid - siostam faidhle cruinnichte an OS a thàinig às. Às deidh sin, thèid ìomhaighean a chruthachadh bhuaithe airson an luchdachadh sìos / stàladh
toradh / aoigheachd - goireasan aoigheachd airson co-chruinneachadh
toradh/togail - pacaidean cruinnichte

Tha an co-chruinneachadh air a rèiteachadh tro KConfig. Tha an aon siostam air a chleachdadh gus an kernel Linux a thogail. Liosta de na h-òrdughan as cumanta a chleachdar (cuir an gnìomh san eòlaire buildroot):

  • dèan menuconfig - cuir fios gu rèiteachadh togail. Faodaidh tu cuideachd an eadar-aghaidh grafaigeach a chleachdadh (dèan nconfig, dèan xconfig, dèan gconfig)
  • dèan linux-menuconfig - cuir fios gu rèiteachadh kernel.
  • dèan glan - glan na toraidhean togail (a h-uile càil air a stòradh ann an toradh)
  • dèan - tog siostam. Chan eil seo coltach ri pròiseasan a chaidh a chruinneachadh mar-thà.
  • dèan defconfig_name - atharraich an rèiteachadh gu defconfig sònraichte
  • dèan liosta-defconfigs - seall liosta de defconfigs
  • dèan stòr - dìreach luchdaich sìos na faidhlichean stàlaidh, gun togail.
  • dèan cuideachadh - liostaich òrdughan a dh'fhaodadh a bhith ann

Notaichean cudromach agus molaidhean cuideachail

Cha bhith Buildroot ag ath-thogail pacaidean a chaidh a thogail mar-thà! Mar sin, dh’ fhaodadh suidheachadh èirigh far a bheil feum air ath-chruinneachadh iomlan.

Faodaidh tu pasgan fa leth ath-thogail leis an àithne dèan packname-ath-thogail. Mar eisimpleir, faodaidh tu an kernel Linux ath-thogail:

make linux-rebuild

Bidh Buildroot a’ stòradh staid pacaid sam bith le bhith a’ cruthachadh faidhlichean .stamp anns an eòlaire toraidh/togail/$packagename:

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Mar sin, faodaidh tu root-fs agus ìomhaighean ath-thogail gun phasganan ath-thogail:

rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make

Caochlaidhean feumail

tha seata de chaochladairean aig buildroot airson rèiteachadh furasta

  • $TOPDIR - eòlaire buildroot
  • $BASEDIR - eòlaire TORAIDHEAN
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - aoigheachd fs, stèidse fs, targaid fs togail chlàran.
  • $BUILD_DIR - eòlaire le pacaidean gun phacaid agus air an togail

Ìomhaigh

Tha feart fradharc aig Buildroot. Faodaidh tu diagram eisimeileachd, graf ùine togail, agus graf de mheudan pacaid a thogail san t-siostam deireannach. Tha na toraidhean ann an cruth faidhlichean pdf (faodaidh tu taghadh bho svn, png) anns an eòlaire toraidh / graf.

Eisimpleirean de òrdughan seallaidh:

  • make graph-depends tog craobh eisimeileachd
  • make <pkg>-graph-depends tog craobh eisimeileachd airson pasgan sònraichte
  • BR2_GRAPH_OUT=png make graph-build ùine togail cuilbheart le toradh PNG
  • make graph-size meud pacaid plota

Sgriobtaichean feumail

Tha fo-eòlaire anns an eòlaire buildroot goireasan le sgriobtaichean feumail. Mar eisimpleir, tha sgriobt ann a nì sgrùdadh air ceartachd tuairisgeulan pacaid. Is dòcha gum bi seo feumail nuair a chuireas tu na pacaidean agad fhèin ris (nì mi seo nas fhaide air adhart). Anns an fhaidhle utils/readme.txt tha tuairisgeul air na sgriobtaichean seo.

Togamaid cuairteachadh stoc

Tha e cudromach cuimhneachadh gu bheil a h-uile gnìomhachd air a dhèanamh às leth neach-cleachdaidh cunbhalach, chan e freumh.
Tha na h-òrdughan uile air an cur an gnìomh anns an buildroot. Tha am pasgan buildroot mu thràth a’ toirt a-steach seata de rèiteachaidhean airson mòran bhùird cumanta agus virtualization.

Bheir sinn sùil air an liosta de rèiteachaidhean:

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Gluais gu config qemu_x86_64_defconfig

make qemu_x86_64_defconfig

Agus bidh sinn a 'tòiseachadh air a' cho-chruinneachadh

make

Tha an togail deiseil gu soirbheachail, thoir sùil air na toraidhean:

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Tha Buildroot air ìomhaighean a chuir ri chèile as urrainn dhut a ruith ann an Qemu agus dearbhadh gu bheil iad ag obair.

qemu-system-x86_64 -kernel output/images/bzImage -hda    output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S

Mar thoradh air an sin, tha siostam a’ ruith ann an qemu:

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

A 'cruthachadh do bhòrd rèiteachaidh fhèin

A' cur Faidhlichean Bùird ris

Bheir sinn sùil air an liosta de rèiteachaidhean:

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Anns an liosta chì sinn pc_x86_64_efi_defconfig. Cruthaichidh sinn ar bòrd fhèin le bhith ga chopaigeadh bhon rèiteachadh:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Cruthaichidh sinn sa bhad eòlaire bùird gus na sgriobtaichean againn, rootfs-overlay agus faidhlichean riatanach eile a stòradh:

mkdir board/my_x86_board

Atharraich dhan defconfig seo:

make my_x86_board_defconfig

Mar sin, a-nis tha an config togail (air a stòradh ann an .config ann am freumh an eòlaire buildroot) a’ freagairt ris an inneal targaid bròg dìleab x86-64 (bios).

Dèanamaid lethbhreac den rèiteachadh linux-kernel (feumail nas fhaide air adhart):

cp board/pc/linux.config board/my_x86_board/

A’ suidheachadh paramadairean togail tro KConfig

Feuch an tòisich sinn air an rèiteachadh:

make menuconfig 

Fosglaidh uinneag KConfig. Tha e comasach rèiteachadh le eadar-aghaidh grafaigeach (dèan nconfig, dèan xconfig, dèan gconfig):

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Bidh sinn a’ dol a-steach don chiad roinn Targaid Options. An seo faodaidh tu an ailtireachd targaid a thaghadh airson an tèid an togail a dhèanamh.

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Roghainnean togail - tha diofar shuidheachaidhean togail an seo. Faodaidh tu clàran a shònrachadh le còdan stòr, an àireamh de snàithleanan togail, sgàthan airson còdan stòr a luchdachadh sìos agus roghainnean eile. Fàgaidh sinn na roghainnean gu bunaiteach.

Toolchain - tha na h-innealan togail fhèin air an rèiteachadh an seo. Leugh tuilleadh mu dheidhinn.

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Seòrsa slabhraidh innealan - an seòrsa slabhraidh innealan a thathar a 'cleachdadh. Faodaidh seo a bhith na inneal a chaidh a thogail a-steach do buildroot no fear a-muigh (faodaidh tu an eòlaire a shònrachadh leis an fhear a chaidh a thogail mu thràth no an url airson luchdachadh sìos). Tha roghainnean a bharrachd ann airson diofar ailtireachd. Mar eisimpleir, airson gàirdean faodaidh tu dìreach an tionndadh Linaro den t-sreath innealan taobh a-muigh a thaghadh.

Leabharlann C - taghadh leabharlann C. Tha obrachadh an t-siostaim gu lèir an urra ri seo. Mar as trice, bidh glibc air a chleachdadh, a bheir taic do gach gnìomh a dh’ fhaodadh a bhith ann. Ach dh’ fhaodadh gu bheil e ro mhòr airson siostam freumhaichte, agus mar sin bidh uglibc no musl air an taghadh gu tric. Taghaidh sinn glibc (feumar seo nas fhaide air adhart gus systemd a chleachdadh).

Sreath Kernel Headers agus Custom Kernel Headers - feumaidh iad a bhith co-ionnan ris an dreach den kernel a bhios san t-siostam cruinnichte. Airson cinn-cinn kernel, faodaidh tu cuideachd an t-slighe gu stòr tarball no git a shònrachadh.

Tionndaidhean Compiler GCC - tagh an dreach cruinneachaidh a thèid a chleachdadh airson togail
Dèan comas air taic C ++ - tagh airson togail le taic airson leabharlannan C ++ san t-siostam. Bidh seo feumail dhuinn san àm ri teachd.

Roghainnean gcc a bharrachd - faodaidh tu roghainnean cruinneachaidh a bharrachd a shuidheachadh. Chan eil feum againn air an-dràsta.

Leigidh rèiteachadh an t-siostaim dhut crìochan an t-siostam cruthaichte san àm ri teachd a shuidheachadh:

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Tha a’ mhòr-chuid de na puingean soilleir bhon tiotal. Bheir sinn aire do na puingean a leanas:
Slighe gu bùird an luchd-cleachdaidh - clàr le luchd-cleachdaidh ri chruthachadh (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Faidhle eisimpleir. Thèid an cleachdaiche cleachdaiche a chruthachadh leis an rianaire facal-faire, gu fèin-ghluasadach gid / uid, / bin / sh slige, cleachdaiche bunaiteach buidhne, freumh ball den bhuidheann, beachd cleachdaiche Foo

[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt 
user -1 user -1 =admin /home/user /bin/sh root Foo user

Clàran ath-chòmhdach siostam faidhlichean freumh - eòlaire air a chòmhdach thairis air na targaid-fs cruinnichte. A’ cur faidhlichean ùra ris agus a’ dol an àite an fheadhainn a th’ ann mar-thà.

Sgriobtaichean gnàthaichte ri ruith mus cruthaich thu ìomhaighean siostam fhaidhlichean - Sgriobtaichean air an cur gu bàs sa bhad mus paisg iad an siostam faidhle gu ìomhaighean. Fàgaidh sinn an sgriobt falamh airson a-nis.

Rachamaid gu roinn Kernel

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Tha roghainnean kernel air an suidheachadh an seo. Tha an kernel fhèin air a rèiteachadh tro make linux-menuconfig.
Faodaidh tu an dreach kernel a shuidheachadh ann an diofar dhòighean: tagh bhon fheadhainn a tha air an tabhann, cuir a-steach an dreach le làimh, sònraich stòr no tarball deiseil.

Rèiteachadh kernel - slighe gu rèiteachadh kernel. Faodaidh tu an rèiteachadh bunaiteach airson an ailtireachd taghte no defocnfig a thaghadh bho Linux. Ann an stòr Linux tha seata de defconfigs airson diofar shiostaman targaid. Gheibh thu am fear a tha a dhìth ort le bhith a’ coimhead gu dìreach air na stòran an seo. Mar eisimpleir, faodaidh tu bòrd dubh beagle cnàimh tagh config.

Leigidh an roinn pacaidean targaid dhut taghadh dè na pacaidean a thèid a chuir a-steach air an t-siostam a thathar a’ togail. Fàgaidh sinn e gun atharrachadh airson a-nis. Cuiridh sinn na pacaidean againn ris an liosta seo nas fhaide air adhart.
Ìomhaighean siostam faidhle - liosta de dhealbhan siostam faidhle a thèid a chruinneachadh. Cuir ìomhaigh iso ris

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Bootloaders - taghadh de luchdan boot airson cruinneachadh. Feuch an tagh sinn isolinix

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

A' rèiteachadh Systemd

Tha Systemd a’ fàs mar aon de na colbhan aig Linux, còmhla ri kernel agus glibc. Mar sin, ghluais mi a shuidheachadh gu rud air leth.

Air a rèiteachadh le bhith a’ dèanamh menuconfig, an uairsin pacaidean targaid → Innealan siostaim → systemd. An seo faodaidh tu sònrachadh dè na seirbheisean systemd a thèid a chuir a-steach agus a thòiseachadh nuair a thòisicheas an siostam.

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Sàbhaladh rèiteachadh an t-siostaim

Sàbhailidh sinn an rèiteachadh seo tro KConfig.

An uairsin sàbhail ar defconfig:

make savedefconfig

Rèiteachadh Linux Kernel

Tha an rèiteachadh kernel Linux air a chleachdadh leis an òrdugh a leanas:

make linux-menuconfig

Nach cuir sinn taic ris a’ chairt bhidio Virtualbox

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Nach cuir sinn taic amalachaidh Virtualbox Guest ris

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Sàbhail agus falbh. CUDROMACH: thèid rèiteachadh a shàbhaladh ann an toradh/build/linux-$version/config, ach chan ann ann am bòrd/my_x86_board/linux.config

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Mar sin, feumaidh tu an config a chopaigeadh le làimh gu àite stòraidh:

cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config

Às deidh sin nì sinn ath-chruinneachadh iomlan den t-siostam gu lèir. chan eil buildroot ag ath-thogail na chaidh a thogail mar-thà, feumaidh tu pasganan ath-thogail a shònrachadh le làimh. Gus nach bi thu a 'caitheamh ùine agus nerves, tha e nas fhasa siostam beag ath-thogail gu tur):

make clean;make

Nuair a bhios an co-chruinneachadh deiseil, cuir air bhog VirtualBox (deuchainn air dreachan 5.2 agus 6.0) bhon CD. Paramadairean an t-siostaim:

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

A’ ruith bhon iso cruinnichte:

Buildroot - pàirt 1. Fiosrachadh coitcheann, a 'togail siostam as lugha, a' stèidheachadh tron ​​​​chlàr

Liosta de stuthan a chaidh a chleachdadh

  1. Leabhar buildroot

Source: www.habr.com

Cuir beachd ann