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 -
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:
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 dibyniaethmake <pkg>-graph-depends
adeiladu coeden ddibyniaeth pecyn penodolBR2_GRAPH_OUT=png make graph-build
plot adeiladu graff amser gydag allbwn PNGmake 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:
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:
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:
Creu eich ffurfwedd bwrdd eich hun
Ychwanegu Ffeiliau Bwrdd
Gweler y rhestr o ffurfweddiadau:
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):
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.
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.
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:
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 (
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
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
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
Bootloaders - y dewis o bootloaders a gasglwyd. Dewiswch isolinix
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.
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
Ychwanegu cefnogaeth integreiddio Virtualbox Guest
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
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:
Gan ddechrau o'r iso adeiledig:
Rhestr o ddeunyddiau a ddefnyddir
- Llawlyfr Buildroot
Ffynhonnell: hab.com