Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Cyflwyniad

Yn y gyfres hon o erthyglau, rwyf am adolygu system adeiladu'r dosbarthiad buildroot a rhannu fy mhrofiad wrth ei addasu. Bydd profiad ymarferol o greu OS bach gyda rhyngwyneb graffigol ac ychydig iawn o ymarferoldeb.

Yn gyntaf oll, peidiwch â drysu'r system adeiladu gyda'r dosbarthiad. Gall Buildroot adeiladu system o set o becynnau a gynigir iddo. Mae Buildroot wedi'i adeiladu ar ffeiliau gwneud ac felly mae ganddo lawer o opsiynau addasu. Amnewid y pecyn gyda fersiwn arall, ychwanegwch eich pecyn eich hun, newid y rheolau ar gyfer adeiladu'r pecyn, addasu'r system ffeiliau ar ôl gosod yr holl becynnau? Gall hyn i gyd buildroot.

Yn Rwsia, defnyddir buildroot, ond yn fy marn i nid oes llawer o wybodaeth iaith Rwsieg ar gyfer dechreuwyr.

Pwrpas y gwaith yw adeiladu pecyn dosbarthu gyda lawrlwythiad byw, rhyngwyneb icewm a phorwr. Y llwyfan targed yw virtualbox.

Pam adeiladu eich dosbarthiad eich hun? Yn aml mae angen ymarferoldeb cyfyngedig arnoch gydag adnoddau cyfyngedig. Yn amlach mewn awtomeiddio, mae angen i chi greu firmware. Mae addasu dosbarthiad pwrpas cyffredinol trwy lanhau pecynnau diangen a'i droi'n firmware yn ffordd sy'n cymryd mwy o amser na llunio dosbarthiad newydd. Mae gan ddefnyddio Gentoo ei gyfyngiadau hefyd.

Mae'r system Buildroot yn bwerus iawn, ond ni fydd yn gwneud unrhyw beth i chi. Gall alluogi ac awtomeiddio'r broses gydosod yn unig.

Nid yw systemau adeiladu amgen (yocto, system adeiladu agored, ac ati) yn cael eu hystyried na'u cymharu.

Ble i gael a sut i ddechrau

Gwefan y prosiect - buildroot.org. Yma gallwch chi lawrlwytho'r fersiwn ddiweddaraf a darllen y llawlyfr. Yno gallwch hefyd gysylltu â'r gymuned, mae traciwr namau, rhestrau post a sianel irc.

Mae Buildroot yn gweithredu gyda defconfigs ar gyfer y bwrdd adeiladu targed. Mae Defconfig yn ffeil ffurfweddu sy'n cynnwys opsiynau yn unig nad oes ganddynt werth rhagosodedig. Ef sy'n penderfynu beth a sut i'w gasglu. Yn yr achos hwn, gallwch chi ffurfweddu'r configs bootloader busybox, linux-kernel, u-boot a barebox, ond byddant i gyd yn gysylltiedig â'r bwrdd targed.
Ar ôl dadbacio'r archif wedi'i lawrlwytho neu glonio o git, rydyn ni'n cael buildroot yn barod ar gyfer gwaith. Gallwch ddarllen mwy am y strwythur cyfeiriadur yn y llawlyfr, byddaf yn dweud wrthych am y rhai pwysicaf:

bwrdd - cyfeiriadur gyda ffeiliau sy'n benodol i bob bwrdd. Gall y rhain fod yn sgriptiau delweddu system (iso, sdcart, cpio ac eraill), cyfeiriadur troshaenu, cyfluniad cnewyllyn, ac ati.
configs - Defconfig gwirioneddol y bwrdd. Mae Defconfig yn gyfluniad bwrdd anghyflawn. Mae'n storio paramedrau heblaw'r gosodiadau diofyn yn unig.
dl - cyfeiriadur gyda chodau ffynhonnell / ffeiliau wedi'u lawrlwytho i'w cydosod
allbwn/targed - system ffeiliau ymgynnull yr AO a dderbyniwyd. Yn y dyfodol, crëir delweddau ohono i'w lawrlwytho / gosod
allbwn / gwesteiwr - cyfleustodau gwesteiwr ar gyfer cynulliad
allbwn/adeiladu - pecynnau wedi'u cydosod

Gwneir cyfluniad cynulliad trwy KConfig. Defnyddir yr un system i adeiladu'r cnewyllyn linux. Rhestr o'r gorchmynion a ddefnyddir amlaf (gweithredwch yn y cyfeiriadur buildroot):

  • gwneud menuconfig - ffoniwch y ffurfwedd adeiladu. Gallwch hefyd ddefnyddio'r GUI (gwneud nconfig, gwneud xconfig, gwneud gconfig)
  • gwneud linux-menuconfig - cyfluniad cnewyllyn galwad.
  • gwneud canlyniadau adeiladu glân - glân (popeth sy'n cael ei storio mewn allbwn)
  • make - adeiladu'r system. Nid yw hyn yn ailadeiladu prosesau a adeiladwyd eisoes.
  • gwneud defconfig_name - newid cyfluniad i defconfig penodol
  • gwneud list-defconfigs - dangos rhestr o defconfigs
  • gwneud ffynhonnell - dim ond lawrlwytho'r ffeiliau gosod, dim cynulliad.
  • gwnewch help - dangoswch restr o orchmynion posibl

Nodiadau Pwysig ac Awgrymiadau Defnyddiol

Nid yw Buildroot yn ailadeiladu pecynnau sydd eisoes wedi'u hadeiladu! Felly, gall sefyllfa godi pan fydd angen ailgynulliad cyflawn.

Gallwch ailadeiladu un pecyn gyda'r gorchymyn gwneud packagename-ailadeiladu. Er enghraifft, gallwch chi ailadeiladu'r cnewyllyn linux:

make linux-rebuild

Mae Buildroot yn storio cyflwr unrhyw becyn trwy greu ffeiliau .stamp yn y cyfeiriadur allbwn/build/$packagename:

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Felly, mae'n bosibl ailadeiladu root-fs a delweddau heb ailadeiladu pecynnau:

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

Newidynnau Defnyddiol

Mae gan buildroot set o newidynnau ar gyfer cyfluniad hawdd

  • $TOPDIR - cyfeiriadur gwraidd buildroot
  • $BASEDIR - cyfeiriadur ALLBWN
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - gwesteiwr fs, llwyfannu fs, targed fs adeiladu cyfeiriaduron.
  • $BUILD_DIR - cyfeiriadur gyda phecynnau wedi'u dadbacio a'u hadeiladu

Delweddu

Mae gan buildroot y gallu i ddelweddu. Gallwch chi adeiladu diagram dibyniaeth, adeiladu graff amser, graff maint pecyn yn y system derfynol. Canlyniadau fel ffeiliau pdf (gallwch ddewis o svn, png) yn y cyfeiriadur allbwn/graff.

Enghreifftiau o orchmynion rendrad:

  • make graph-depends adeiladu coeden dibyniaeth
  • make <pkg>-graph-depends adeiladu coeden ddibyniaeth pecyn penodol
  • BR2_GRAPH_OUT=png make graph-build plot adeiladu graff amser gydag allbwn PNG
  • make graph-size plotio maint y pecyn

Sgriptiau defnyddiol

Mae gan y cyfeiriadur buildroot is-gyfeiriadur utils gyda sgriptiau defnyddiol. Er enghraifft, mae sgript sy'n gwirio cywirdeb disgrifiadau pecyn. Gall hyn fod yn ddefnyddiol wrth ychwanegu pecynnau arfer (byddaf yn gwneud hynny yn nes ymlaen). Mae gan y ffeil utils/readme.txt ddisgrifiad o'r sgriptiau hyn.

Gadewch i ni adeiladu dosbarthiad stoc

Mae'n bwysig cofio bod pob gweithrediad yn cael ei wneud ar ran defnyddiwr rheolaidd, nid gwraidd.
Gweithredir pob gorchymyn yn buildroot. Mae gan y dosbarthiad buildroot set o gyfluniadau eisoes ar gyfer llawer o fyrddau cyffredin a rhithwiroli.

Gweler y rhestr o ffurfweddiadau:

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Newid i config qemu_x86_64_defconfig

make qemu_x86_64_defconfig

A dechrau adeiladu

make

Mae'r gwaith adeiladu wedi'i gwblhau'n llwyddiannus, edrychwch ar y canlyniadau:

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Mae Buildroot wedi llunio delweddau y gallwch eu rhedeg yn Qemu a gweld a ydynt yn gweithio.

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

Y canlyniad yw system sy'n rhedeg yn qemu:

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Creu eich ffurfwedd bwrdd eich hun

Ychwanegu Ffeiliau Bwrdd

Gweler y rhestr o ffurfweddiadau:

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Yn y rhestr gwelwn pc_x86_64_efi_defconfig. Byddwn yn creu ein bwrdd trwy ei gopïo o'r ffurfweddiad:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Creu cyfeiriadur bwrdd ar unwaith i storio ein sgriptiau, rootfs-overlay a ffeiliau angenrheidiol eraill:

mkdir board/my_x86_board

Newidiwch i'r defconfig hwn:

make my_x86_board_defconfig

Felly nawr mae'r ffurfwedd adeiladu (wedi'i storio yn .config wrth wraidd cyfeiriadur buildroot) yn cyd-fynd â pheiriant targed etifeddiaeth x86-64 (bios) trwy gychwyn.

Copïwch y cyfluniad linux-kernel (defnyddiol yn ddiweddarach):

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

Ffurfweddu Opsiynau Adeiladu trwy KConfig

Gadewch i ni ddechrau'r gosodiad:

make menuconfig 

Bydd y ffenestr KConfig yn agor. Mae'n bosibl ffurfweddu gyda rhyngwyneb graffigol (gwneud nconfig, gwneud xconfig, gwneud gconfig):

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Rydyn ni'n mynd i mewn i'r adran gyntaf Opsiynau Targed. Yma gallwch ddewis y bensaernïaeth darged y bydd y cynulliad yn cael ei gynnal ar ei gyfer.

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Opsiynau adeiladu - mae opsiynau adeiladu amrywiol yma. Gallwch nodi cyfeiriaduron gyda chodau ffynhonnell, nifer yr edafedd adeiladu, drychau ar gyfer lawrlwytho codau ffynhonnell, a gosodiadau eraill. Gadewch i ni adael y gosodiadau diofyn.

Toolchain - mae'r pecyn cymorth adeiladu ei hun wedi'i ffurfweddu yma. Mwy amdano.

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Math o gadwyn offer - y math o gadwyn offer a ddefnyddir. Gellir cynnwys hwn yn buildroot neu gadwyn offer allanol (gallwch nodi cyfeiriadur gydag un sydd eisoes wedi'i adeiladu neu url i'w lawrlwytho). Mae yna opsiynau ychwanegol ar gyfer gwahanol bensaernïaeth. Er enghraifft, ar gyfer braich, gallwch ddewis y fersiwn o'r gadwyn offer Linaro allanol.

Llyfrgell C - dewis llyfrgell C. Mae gweithrediad y system gyfan yn dibynnu ar hyn. Fel arfer defnyddir glibc, sy'n cefnogi pob swyddogaeth bosibl. Ond gall fod yn rhy fawr i system wreiddio, felly mae uglibc neu musl yn aml yn cael ei ddewis. Byddwn yn dewis glibc (bydd angen hyn yn ddiweddarach i ddefnyddio systemd).

Penawdau Cnewyllyn a chyfres Penawdau Cnewyllyn Custom - rhaid iddynt gyd-fynd â'r fersiwn o'r cnewyllyn a fydd yn y system sy'n cael ei hadeiladu. Ar gyfer penawdau cnewyllyn, gallwch hefyd nodi'r llwybr i'r tarball neu'r ystorfa git.

FERSIYNAU CASGLIAD GCC - dewiswch y fersiwn casglwr a fydd yn cael ei ddefnyddio ar gyfer adeiladu
Galluogi cefnogaeth C++ - dewiswch adeiladu gyda chefnogaeth ar gyfer llyfrgelloedd c++ yn y system. Bydd angen hyn arnom yn nes ymlaen.

Opsiynau gcc ychwanegol - gallwch chi osod opsiynau casglwr ychwanegol. Nid oes ei angen arnom ar hyn o bryd.

Mae cyfluniad system yn caniatáu ichi osod paramedrau'r system a grëwyd yn y dyfodol:

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Mae'r rhan fwyaf o'r pwyntiau'n glir o'r teitl. Gadewch i ni dalu sylw i'r pwyntiau canlynol:
Llwybr i'r tablau defnyddwyr - tabl gyda defnyddwyr a grëwyd (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Enghraifft o ffeil. Bydd y defnyddiwr defnyddiwr yn cael ei greu gyda gweinyddwr cyfrinair, yn awtomatig gid/uid, /bin/sh cragen, defnyddiwr grŵp rhagosodedig, aelod o'r grŵp gwraidd, sylw defnyddiwr Foo

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

cyfeiriaduron troshaen system ffeiliau gwraidd - cyfeiriadur sydd wedi'i droshaenu ar ben y targed-fs a luniwyd. Yn ychwanegu ffeiliau newydd ac yn disodli'r rhai presennol.

Sgriptiau personol i'w rhedeg cyn creu delweddau system ffeiliau Gadewch y sgript yn wag am y tro.

Gadewch i ni fynd i'r adran Kernel

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Dyma lle mae'r gosodiadau cnewyllyn wedi'u gosod. Mae'r cnewyllyn ei hun wedi'i ffurfweddu trwy make linux-menuconfig.
Gallwch chi osod y fersiwn cnewyllyn mewn gwahanol ffyrdd: dewiswch o'r rhai a gynigir, nodwch y fersiwn â llaw, nodwch ystorfa neu darball parod.

Cyfluniad cnewyllyn - llwybr i'r ffurfwedd cnewyllyn. Gallwch ddewis y ffurfweddiad diofyn ar gyfer y bensaernïaeth a ddewiswyd neu defocnfig o Linux. Mae gan y ffynonellau Linux set o defconfigs ar gyfer gwahanol systemau targed. Gallwch chi ddod o hyd i'r un sydd ei angen arnoch chi edrych yn uniongyrchol ar y ffynhonnell yma. Er enghraifft, ar gyfer bwrdd du asgwrn bachle, gallwch chi dewiswch config.

Mae'r adran pecynnau Targed yn eich galluogi i ddewis pa becynnau fydd yn cael eu gosod ar y system darged. Gadewch i ni ei adael heb ei newid am y tro. Yn ddiweddarach byddwn yn ychwanegu ein pecynnau at y rhestr hon.
Delweddau system ffeiliau - Rhestr o ddelweddau system ffeiliau i'w hadeiladu. Ychwanegu delwedd iso

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Bootloaders - y dewis o bootloaders a gasglwyd. Dewiswch isolinix

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Ffurfweddu Systemd

Daw Systemd yn un o bileri linux, ynghyd â chnewyllyn a glibc. Felly, cymerais ei osodiad mewn paragraff ar wahân.

Mae'n cael ei ffurfweddu trwy make menuconfig, yna pecynnau Targed → Offer system → systemd. Yma gallwch chi nodi pa wasanaethau systemd fydd yn cael eu gosod a'u cychwyn wrth gychwyn y system.

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Arbed cyfluniad y system

Rydym yn cadw'r ffurfwedd hon trwy KConfig.

Yna rydym yn arbed ein defconfig:

make savedefconfig

Cyfluniad cnewyllyn Linux

Mae ffurfweddiad cnewyllyn linux yn cael ei weithredu gan y gorchymyn canlynol:

make linux-menuconfig

Ychwanegu cefnogaeth ar gyfer cerdyn fideo Virtualbox

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Ychwanegu cefnogaeth integreiddio Virtualbox Guest

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Rydym yn arbed ac yn gadael. PWYSIG: bydd cyfluniad yn cael ei gadw yn allbwn/build/linux-$version/config ond nid yn board/my_x86_board/linux.config

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Felly, mae angen i chi gopïo'r ffurfwedd â llaw i'r lleoliad storio:

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

Ar ôl hynny, byddwn yn perfformio ailgynulliad cyflawn o'r system gyfan. Nid yw buildroot yn ailadeiladu'r hyn sydd eisoes wedi'i adeiladu, rhaid i chi nodi'r pecynnau i'w hailadeiladu â llaw. Er mwyn peidio â gwastraffu amser a nerfau, mae'n haws ailadeiladu system fach yn ei chyfanrwydd):

make clean;make

Ar ôl cwblhau'r gwasanaeth, rydym yn lansio VirtualBox (wedi'i brofi ar fersiynau 5.2 a 6.0) gyda cychwyn o'r ddisg cd. Paramedrau'r system:

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Gan ddechrau o'r iso adeiledig:

Buildroot - Rhan 1 - Trosolwg, Adeiladu System Lleiaf, Gosod Dewislen

Rhestr o ddeunyddiau a ddefnyddir

  1. Llawlyfr Buildroot

Ffynhonnell: hab.com

Ychwanegu sylw