Yn yr adran hon rwy'n edrych ar rai o'r opsiynau addasu yr oedd eu hangen arnaf. Nid yw hon yn rhestr gyflawn o'r hyn y mae buildroot yn ei gynnig, ond maent yn eithaf ymarferol ac nid oes angen ymyrraeth yn y ffeiliau buildroot ei hun.
Defnyddio'r mecanwaith ALLANOL ar gyfer addasu
Ond nid yw'r dull hwn yn gyfleus iawn, yn enwedig wrth ddiweddaru buildroot. Mae yna fecanwaith i ddatrys y broblem hon coeden allanol. Ei hanfod yw y gallwch storio bwrdd, configs, pecynnau a chyfeiriaduron eraill mewn cyfeiriadur ar wahân (er enghraifft, rwy'n defnyddio'r cyfeiriadur clytiau i gymhwyso clytiau i becynnau, mwy o fanylion mewn adran ar wahân) a bydd buildroot ei hun yn eu hychwanegu at y rhai yn ei gyfeirlyfr.
Sylwch: gallwch droshaenu sawl coeden allanol ar unwaith, mae enghraifft yn y llawlyfr buildroot
Gadewch i ni greu cyfeiriadur my_tree, wedi'i leoli wrth ymyl y cyfeiriadur buildroot a throsglwyddo ein cyfluniad yno. Dylai'r allbwn fod y strwythur ffeil canlynol:
[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
Fel y gwelwch, yn gyffredinol mae'r strwythur yn ailadrodd strwythur buildroot.
Каталог bwrdd yn cynnwys ffeiliau sy'n benodol i bob bwrdd yn ein hachos ni:
- bef_cr_fs_img.sh yn sgript a fydd yn cael ei weithredu ar ôl adeiladu'r system ffeiliau targed, ond cyn ei becynnu i mewn i ddelweddau. Byddwn yn ei ddefnyddio yn y dyfodol
- linux.config - cyfluniad cnewyllyn
- rootfs_overlay - cyfeiriadur i'w droshaenu ar ben y system ffeiliau targed
- users.txt - ffeil yn disgrifio'r defnyddwyr i'w creu
Каталог configs yn cynnwys defconfig ein byrddau. Dim ond un sydd gennym.
pecyn - catalog gyda'n pecynnau. I ddechrau, mae buildroot yn cynnwys disgrifiadau a rheolau ar gyfer adeiladu nifer gyfyngedig o becynnau. Yn ddiweddarach byddwn yn ychwanegu'r rheolwr ffenestri icewm a'r rheolwr mewngofnodi graffigol Slim yma.
Clytiau - yn caniatáu ichi storio'ch clytiau'n gyfleus ar gyfer gwahanol becynnau. Mwy o fanylion mewn adran ar wahân isod.
Nawr mae angen i ni ychwanegu'r ffeiliau disgrifiad ar gyfer ein coeden allanol. Mae 3 ffeil yn gyfrifol am hyn: external.desc, Config.in, external.mk.
allanol.desc yn cynnwys y disgrifiad gwirioneddol:
[alexey@alexey-pc my_tree]$ cat external.desc
name: my_tree
desc: My simple external-tree for article
Y llinell gyntaf yw'r teitl. Yn y dyfodol buildroot creu newidyn $(BR2_EXTERNAL_MY_TREE_PATH), y dylid ei ddefnyddio wrth ffurfweddu'r cynulliad. Er enghraifft, gellir gosod y llwybr i'r ffeil defnyddiwr fel a ganlyn:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Mae'r ail linell yn ddisgrifiad byr, hawdd ei ddarllen gan ddyn.
Config.in, allanol.mk — ffeiliau i ddisgrifio pecynnau ychwanegol. Os na fyddwch yn ychwanegu eich pecynnau eich hun, yna gellir gadael y ffeiliau hyn yn wag. Am y tro, dyna beth fyddwn ni'n ei wneud.
Nawr mae gennym ein coeden allanol yn barod, sy'n cynnwys defconfig ein bwrdd a'r ffeiliau sydd eu hangen arno. Gadewch i ni fynd i'r cyfeiriadur buildroot a nodi i ddefnyddio coeden allanol:
[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
Yn y gorchymyn cyntaf rydyn ni'n defnyddio'r ddadl BR2_EXTERNAL=../my_tree/, sy'n nodi'r defnydd o goeden allanol. Gallwch chi nodi sawl coeden allanol i'w defnyddio ar yr un pryd. Yn yr achos hwn, dim ond unwaith y bydd angen i chi wneud hyn, ac ar ôl hynny mae ffeil output/.br-external.mk yn cael ei greu sy'n yn storio gwybodaeth am y goeden allanol a ddefnyddir:
[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
Pwysig! Bydd y llwybrau yn y ffeil hon yn absoliwt!
Mae eitem Opsiynau Allanol wedi ymddangos yn y ddewislen:
Bydd yr is-ddewislen hon yn cynnwys ein pecynnau o'n coeden allanol. Mae'r adran hon yn wag ar hyn o bryd.
Nawr mae'n bwysicach i ni ailysgrifennu'r llwybrau angenrheidiol i ddefnyddio coeden allanol.
Sylwch, yn yr adran opsiynau Adeiladu → Lleoliad i arbed ffurfwedd buildroot, bydd llwybr absoliwt i'r defconfig a arbedwyd. Mae'n cael ei ffurfio ar hyn o bryd o nodi'r defnydd o extgernal_tree.
Byddwn hefyd yn cywiro'r llwybrau yn yr adran cyfluniad System. Ar gyfer tabl gyda defnyddwyr wedi'u creu:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Yn yr adran Cnewyllyn, newidiwch y llwybr i ffurfweddiad y cnewyllyn:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
Nawr bydd ein ffeiliau o'n coeden allanol yn cael eu defnyddio yn ystod y gwasanaeth. Wrth symud i gyfeiriadur arall neu ddiweddaru'r buildroot, bydd gennym leiafswm o broblemau.
Ychwanegu troshaen gwraidd fs:
Mae'r mecanwaith hwn yn caniatáu ichi ychwanegu / ailosod ffeiliau yn y system ffeiliau targed yn hawdd.
Os yw'r ffeil mewn troshaen gwraidd fs, ond nid yn y targed, yna bydd yn cael ei hychwanegu
Os yw'r ffeil mewn troshaen gwraidd fs ac yn y targed, yna bydd yn cael ei disodli.
Yn gyntaf, gadewch i ni osod y llwybr i gwraidd fs troshaenu dir. Gwneir hyn yn yr adran Cyfluniad System → Root system ffeiliau troshaenu cyfeiriaduron:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/
Nawr, gadewch i ni greu dwy ffeil.
[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
Bydd y ffeil gyntaf (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) yn disodli'r ffeil /etc/hosts ar y system orffenedig. Bydd yr ail ffeil (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) yn cael ei ychwanegu.
Rydym yn casglu ac yn gwirio:
Cyflawni sgriptiau addasu ar wahanol gamau o gydosod system
Yn aml mae angen i chi wneud rhywfaint o waith y tu mewn i'r system ffeiliau targed cyn iddo gael ei becynnu i ddelweddau.
Gellir gwneud hyn yn yr adran Cyfluniad System:
Mae'r ddwy sgript gyntaf yn cael eu gweithredu ar ôl adeiladu'r system ffeiliau targed, ond cyn iddo gael ei becynnu i ddelweddau. Y gwahaniaeth yw bod y sgript fakeroot yn cael ei weithredu yng nghyd-destun fakeroot, sy'n efelychu gwaith fel y defnyddiwr gwraidd.
Gweithredir y sgript olaf ar ôl i'r delweddau system gael eu creu. Gallwch chi gyflawni gweithredoedd ychwanegol ynddo, er enghraifft, copïo'r ffeiliau angenrheidiol i weinydd NFS neu greu delwedd o firmware eich dyfais.
Fel enghraifft, byddaf yn creu sgript a fydd yn ysgrifennu'r fersiwn ac yn adeiladu dyddiad i /etc/.
Yn gyntaf, byddaf yn nodi'r llwybr i'r ffeil hon yn fy nghoeden allanol:
Ac yn awr y sgript ei hun:
[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
Ar ôl y gwasanaeth, gallwch weld y ffeil hon ar y system.
Yn ymarferol, gall y sgript ddod yn fawr. Felly, yn y prosiect go iawn, cymerais lwybr mwy datblygedig:
- Creais gyfeiriadur (my_tree/board_my_x86_board/inside_fakeroot_scripts) lle mae sgriptiau i'w gweithredu, gyda rhifau cyfresol. Er enghraifft, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- Ysgrifennais sgript (my_tree/board_my_x86_board/run_inside_fakeroot.sh) sy'n mynd drwy'r cyfeiriadur hwn ac yn gweithredu'r sgriptiau sydd ynddo yn olynol
- Penodwyd y sgript hon yn y gosodiadau bwrdd yn y ffurfweddiad System -> Sgriptiau personol i'w rhedeg y tu mewn i'r amgylchedd fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) adran
Ffynhonnell: hab.com