Í þessum hluta skoða ég nokkra sérstillingarvalkosti sem ég þurfti. Þetta er ekki tæmandi listi yfir það sem buildroot býður upp á, en þeir eru nokkuð hagnýtir og þurfa ekki inngrip í skrárnar á buildroot sjálfum.
Að nota EXTERNAL vélbúnaðinn til að sérsníða
En þessi aðferð er ekki mjög þægileg, sérstaklega þegar þú uppfærir buildroot. Það er kerfi til að leysa þetta vandamál ytra tré. Kjarni þess er að þú getur geymt borð, stillingar, pakka og aðrar möppur í sérstakri möppu (til dæmis nota ég plástraskrána til að setja plástra á pakka, nánari upplýsingar í sérstökum hluta) og buildroot sjálft mun bæta þeim við þá í skrá hennar.
Athugið: þú getur lagt yfir nokkur ytri tré í einu, það er dæmi í byggingarrótarhandbókinni
Við skulum búa til möppu my_tree, staðsett við hliðina á buildroot möppunni og flytja stillingar okkar þangað. Úttakið ætti að vera eftirfarandi skráarbygging:
[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
Eins og þú sérð endurtekur uppbyggingin almennt uppbyggingu byggingarrótar.
Directory Stjórn inniheldur skrár sem eru sértækar fyrir hvert borð í okkar tilviki:
- bef_cr_fs_img.sh er forskrift sem verður keyrð eftir að markskráarkerfið er byggt, en áður en því er pakkað í myndir. Við munum nota það í framtíðinni
- linux.config - kjarnastillingar
- rootfs_overlay - skrá til að leggja ofan á markskráarkerfið
- users.txt - skrá sem lýsir notendum sem á að búa til
Directory stillingar inniheldur defconfig af borðum okkar. Við eigum bara einn.
Pakki - verslun með pakka okkar. Upphaflega inniheldur buildroot lýsingar og reglur um byggingu takmarkaðs fjölda pakka. Síðar munum við bæta við icewm gluggastjóranum og Slim grafíska innskráningarstjóranum hér.
Bætur — gerir þér kleift að geyma plástrana þína á þægilegan hátt fyrir mismunandi pakka. Nánari upplýsingar í sérstökum kafla hér að neðan.
Nú þurfum við að bæta við lýsingarskrám fyrir ytra tréð okkar. Það eru 3 skrár sem bera ábyrgð á þessu: external.desc, Config.in, external.mk.
ytri.desc inniheldur raunverulega lýsingu:
[alexey@alexey-pc my_tree]$ cat external.desc
name: my_tree
desc: My simple external-tree for article
Fyrsta línan er titillinn. Í framtíðinni býrðu til breytu $(BR2_EXTERNAL_MY_TREE_PATH), sem ætti að nota þegar samsetningin er stillt. Til dæmis er hægt að stilla slóðina að notendaskránni sem hér segir:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Önnur línan er stutt, læsileg lýsing.
Config.in, external.mk — skrár til að lýsa bættum pökkum. Ef þú bætir ekki við þínum eigin pakka, þá er hægt að skilja þessar skrár eftir tómar. Í bili munum við gera það.
Nú höfum við ytra tréð okkar tilbúið, sem inniheldur defconfig borðsins okkar og skrárnar sem það þarf. Við skulum fara í buildroot möppuna og tilgreina að nota ytra tré:
[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
Í fyrstu skipuninni notum við rökin BR2_EXTERNAL=../my_tree/, sem gefur til kynna notkun á ytri tré. Þú getur tilgreint nokkur ytri tré til notkunar á sama tíma. Í þessu tilviki þarftu aðeins að gera þetta einu sinni, eftir það er búið til skráarúttak/.br-external.mk sem geymir upplýsingar um ytra tréð sem notað er:
[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
Mikilvægt! Slóðirnar í þessari skrá verða algjörar!
Ytri valkostir atriði hefur birst í valmyndinni:
Þessi undirvalmynd mun innihalda pakka okkar frá ytri trénu okkar. Þessi hluti er tómur eins og er.
Nú er mikilvægara fyrir okkur að endurskrifa nauðsynlegar leiðir til að nota ytra tré.
Vinsamlegast athugaðu að í hlutanum Byggja valkostir → Staðsetning til að vista buildroot config, mun vera alger slóð að vistuðu defconfig. Það er myndað á því augnabliki að tilgreina notkun á ytri_tré.
Við munum einnig leiðrétta slóðirnar í hlutanum Kerfisstillingar. Fyrir töflu með stofnuðum notendum:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Í kjarnahlutanum skaltu breyta slóðinni að kjarnastillingunum:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
Nú verða skrárnar okkar frá ytri trénu okkar notaðar við samsetningu. Þegar við færum okkur yfir í aðra möppu eða uppfærir byggingarrótina munum við lenda í lágmarksvandamálum.
Bætir við rót fs yfirborði:
Þetta fyrirkomulag gerir þér kleift að bæta við/skipta um skrár í markskráarkerfinu auðveldlega.
Ef skráin er í root fs overlay, en ekki í target, þá verður henni bætt við
Ef skráin er í root fs overlay og í target, þá verður henni skipt út.
Fyrst skulum við stilla slóðina að root fs overlay dir. Þetta er gert í hlutanum Kerfisstillingar → Yfirborðsskráarmöppur rótarskráa:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/
Nú skulum við búa til tvær skrár.
[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
Fyrsta skráin (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) mun koma í stað /etc/hosts skrána á fullbúnu kerfinu. Seinni skránni (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) verður bætt við.
Við söfnum og athugum:
Framkvæmd sérsniðna forskrifta á mismunandi stigum kerfissamsetningar
Oft þarftu að framkvæma einhverja vinnu inni í markskráarkerfinu áður en því er pakkað inn í myndir.
Þetta er hægt að gera í hlutanum Kerfisstillingar:
Fyrstu tvær forskriftirnar eru keyrðar eftir að markskráarkerfið er byggt, en áður en því er pakkað inn í myndir. Munurinn er sá að fakeroot handritið er keyrt í samhengi við fakeroot, sem líkir eftir vinnu sem rót notandi.
Síðasta handritið er keyrt eftir að kerfismyndirnar eru búnar til. Þú getur framkvæmt viðbótaraðgerðir í því, til dæmis, afritað nauðsynlegar skrár á NFS netþjón eða búið til mynd af vélbúnaðar tækisins.
Sem dæmi mun ég búa til handrit sem skrifar útgáfuna og smíðadagsetningu í /etc/.
Fyrst mun ég gefa til kynna slóðina að þessari skrá í ytra trénu mínu:
Og nú handritið sjálft:
[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
Eftir samsetningu geturðu séð þessa skrá á kerfinu.
Í reynd getur handritið orðið stórt. Þess vegna, í alvöru verkefninu, tók ég lengra komna leið:
- Ég bjó til möppu (my_tree/board_my_x86_board/inside_fakeroot_scripts) þar sem það eru forskriftir til að keyra, með raðnúmerum. Til dæmis, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- Ég skrifaði handrit (my_tree/board_my_x86_board/run_inside_fakeroot.sh) sem fer í gegnum þessa möppu og keyrir forskriftirnar sem eru í henni í röð
- Tilgreindi þessa skriftu í töflustillingunum í Kerfisstillingar -> Sérsniðnar skriftur til að keyra inni í fakeroot umhverfinu ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) hlutanum
Heimild: www.habr.com