Ni apakan yii Mo wo diẹ ninu awọn aṣayan isọdi ti Mo nilo. Eyi kii ṣe atokọ pipe ti kini awọn ipese buildroot, ṣugbọn wọn jẹ iṣẹ ṣiṣe pupọ ati pe ko nilo ilowosi ninu awọn faili ti buildroot funrararẹ.
Lilo ẹrọ ita ita fun isọdi
Ṣugbọn ọna yii ko rọrun pupọ, paapaa nigbati o nmu imudojuiwọn buildroot. Ilana kan wa lati yanju iṣoro yii ita igi. Ohun pataki rẹ ni pe o le fipamọ igbimọ, awọn atunto, awọn idii ati awọn ilana miiran ni itọsọna lọtọ (fun apẹẹrẹ, Mo lo ilana awọn abulẹ lati lo awọn abulẹ si awọn idii, awọn alaye diẹ sii ni apakan lọtọ) ati buildroot funrararẹ yoo ṣafikun wọn si awọn ti o wa ninu awọn oniwe-liana.
Akiyesi: o le bori ọpọlọpọ awọn igi ita ni ẹẹkan, apẹẹrẹ wa ninu afọwọṣe buildroot
Jẹ ki a ṣẹda iwe ilana my_tree kan, ti o wa lẹgbẹẹ itọsọna buildroot ati gbe iṣeto wa sibẹ. Ijade yẹ ki o jẹ eto faili atẹle:
[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
Bii o ti le rii, ni gbogbogbo eto naa tun ṣe eto ti buildroot.
Directory ọkọ ni awọn faili kan pato si igbimọ kọọkan ninu ọran wa:
- bef_cr_fs_img.sh jẹ iwe afọwọkọ ti yoo ṣe lẹhin kikọ eto faili ibi-afẹde, ṣugbọn ṣaaju iṣakojọpọ sinu awọn aworan. A yoo lo ni ojo iwaju
- linux.config - ekuro iṣeto ni
- rootfs_overlay – itọsọna lati bo lori oke ti eto faili ibi-afẹde
- users.txt – faili kan ti n ṣapejuwe awọn olumulo lati ṣẹda
Directory awọn atunto ni defconfig ti wa lọọgan. A nikan ni ọkan.
package - katalogi pẹlu awọn idii wa. Ni ibẹrẹ, buildroot ni awọn apejuwe ati awọn ofin fun kikọ nọmba to lopin ti awọn idii. Nigbamii a yoo ṣafikun oluṣakoso window icewm ati oluṣakoso iwọle ayaworan Slim nibi.
Awọn asomọ - gba ọ laaye lati tọju awọn abulẹ rẹ ni irọrun fun awọn idii oriṣiriṣi. Awọn alaye diẹ sii ni apakan lọtọ ni isalẹ.
Bayi a nilo lati ṣafikun awọn faili apejuwe fun igi ita wa. Awọn faili 3 wa lodidi fun eyi: external.desc, Config.in, external.mk.
ita.desc ni apejuwe gangan:
[alexey@alexey-pc my_tree]$ cat external.desc
name: my_tree
desc: My simple external-tree for article
Laini akọkọ jẹ akọle. Ni ojo iwaju buildroot ṣẹda a ayípadà $(BR2_EXTERNAL_MY_TREE_PATH), eyi ti o yẹ ki o lo nigbati o ba tunto apejọ naa. Fun apẹẹrẹ, ọna si faili olumulo le ṣeto bi atẹle:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Laini keji jẹ kukuru, apejuwe eniyan-ṣe kika.
Config.in, ita.mk - awọn faili lati ṣe apejuwe awọn idii ti a ṣafikun. Ti o ko ba ṣafikun awọn idii tirẹ, lẹhinna awọn faili wọnyi le jẹ osi sofo. Fun bayi, iyẹn ni ohun ti a yoo ṣe.
Bayi a ti ṣetan igi ita wa, ti o ni defconfig ti igbimọ wa ati awọn faili ti o nilo. Jẹ ki a lọ si itọsọna buildroot ati pato lati lo igi ita:
[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
Ni akọkọ pipaṣẹ a lo ariyanjiyan BR2_EXTERNAL=../my_igi/O le ṣe afihan awọn igi ita pupọ fun lilo ni akoko kanna, ni idi eyi, o nilo lati ṣe eyi ni ẹẹkan, lẹhin eyi ti a ṣẹda faili ti o wu / .br-external.mk. tọju alaye nipa igi ita ti a lo:
[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
Pataki! Awọn ọna inu faili yii yoo jẹ pipe!
Ohun kan awọn aṣayan ita ti han ninu akojọ aṣayan:
Akojọ aṣiwaju yii yoo ni awọn idii wa lati inu igi ita wa. Abala yii ṣofo lọwọlọwọ.
Bayi o ṣe pataki diẹ sii fun wa lati tun kọ awọn ọna pataki lati lo igi ita-ita.
Jọwọ ṣe akiyesi pe ninu awọn aṣayan Kọ → Ipo lati ṣafipamọ apakan atunto buildroot, ọna pipe yoo wa si defconfig ti o fipamọ. O ti wa ni akoso ni akoko ti pato awọn lilo ti extgernal_tree.
A yoo tun ṣe atunṣe awọn ọna ni apakan iṣeto ni System. Fun tabili pẹlu awọn olumulo ti a ṣẹda:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt
Ni apakan Kernel, yi ọna pada si iṣeto ekuro:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config
Bayi awọn faili wa lati ita-igi wa yoo ṣee lo lakoko apejọ. Nigbati o ba nlọ si itọsọna miiran tabi mimu dojuiwọn buildroot, a yoo ni o kere ju awọn iṣoro.
Fifi root fs agbekọja:
Ilana yii gba ọ laaye lati ṣafikun / rọpo awọn faili ni irọrun ni eto faili ibi-afẹde.
Ti faili naa ba wa ni ipilẹ fs root, ṣugbọn kii ṣe ni ibi-afẹde, lẹhinna o yoo ṣafikun
Ti faili naa ba wa ni ipilẹ fs root ati ni ibi-afẹde, lẹhinna o yoo rọpo.
Ni akọkọ, jẹ ki a ṣeto ọna si root fs overlay dir. Eyi ni a ṣe ni iṣeto ni Eto → Gbongbo filesystem ti awọn ilana ti o bori:
$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/
Bayi jẹ ki a ṣẹda awọn faili meji.
[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
Faili akọkọ (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) yoo rọpo faili /etc/hosts lori eto ti pari. Faili keji (ologbo my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) ni ao fi kun.
A gba ati ṣayẹwo:
Ṣiṣe awọn iwe afọwọkọ isọdi ni awọn ipele oriṣiriṣi ti apejọ eto
Nigbagbogbo o nilo lati ṣe diẹ ninu awọn iṣẹ inu eto faili ibi-afẹde ṣaaju ki o ṣajọ sinu awọn aworan.
Eyi le ṣee ṣe ni apakan iṣeto ni Eto:
Awọn iwe afọwọkọ akọkọ meji ni a ṣe lẹhin ti a ti kọ eto faili ibi-afẹde, ṣugbọn ṣaaju ki o to ṣajọ sinu awọn aworan. Iyatọ naa ni pe iwe afọwọkọ fakeroot ti wa ni ṣiṣe ni ipo ti fakeroot, eyiti o ṣe simulates iṣẹ bi olumulo gbongbo.
Awọn ti o kẹhin akosile ti wa ni executed lẹhin ti awọn aworan eto ti wa ni da. O le ṣe awọn iṣe afikun ninu rẹ, fun apẹẹrẹ, daakọ awọn faili pataki si olupin NFS tabi ṣẹda aworan ti famuwia ẹrọ rẹ.
Fun apẹẹrẹ, Emi yoo ṣẹda iwe afọwọkọ kan ti yoo kọ ẹya ati kọ ọjọ si /etc/.
Ni akọkọ Emi yoo tọka ọna si faili yii ninu igi ita mi:
Ati nisisiyi iwe afọwọkọ funrararẹ:
[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
Lẹhin apejọ, o le wo faili yii lori eto naa.
Ni iṣe, iwe afọwọkọ le di nla. Nitorinaa, ninu iṣẹ akanṣe gidi Mo gba ipa ọna ilọsiwaju diẹ sii:
- Mo ti ṣẹda liana kan (my_tree/board_my_x86_board/inside_fakeroot_scripts) ninu eyiti awọn iwe afọwọkọ wa lati ṣiṣẹ, pẹlu awọn nọmba ni tẹlentẹle. Fun apẹẹrẹ, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
- Mo kọ iwe afọwọkọ kan (my_tree/board_my_x86_board/run_inside_fakeroot.sh) ti o lọ nipasẹ itọsọna yii ati ṣiṣe awọn iwe afọwọkọ ti o wa ninu rẹ lẹsẹsẹ.
- Ti ṣe apejuwe iwe afọwọkọ yii ni awọn eto igbimọ ni iṣeto ni Eto -> Awọn iwe afọwọkọ aṣa lati ṣiṣẹ ninu agbegbe fakeroot ($ (BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakroot.sh) apakan
orisun: www.habr.com