Buildroot - apakan 2. Ṣiṣẹda iṣeto igbimọ rẹ; lilo ita igi, rootfs-apọju, ranse si-Kọ awọn iwe afọwọkọ

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

Ninu nkan ti tẹlẹ A wo apẹẹrẹ ti o rọrun ti fifi iṣeto ti ara rẹ kun nipa fifikun defconfig igbimọ ati awọn faili pataki taara si itọsọna Buildroot.

Ṣ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:

Buildroot - apakan 2. Ṣiṣẹda iṣeto igbimọ rẹ; lilo ita igi, rootfs-apọju, ranse si-Kọ awọn iwe afọwọkọ

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:

Buildroot - apakan 2. Ṣiṣẹda iṣeto igbimọ rẹ; lilo ita igi, rootfs-apọju, ranse si-Kọ awọn iwe afọwọkọ

Ṣ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:

Buildroot - apakan 2. Ṣiṣẹda iṣeto igbimọ rẹ; lilo ita igi, rootfs-apọju, ranse si-Kọ awọn iwe afọwọkọ

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:

Buildroot - apakan 2. Ṣiṣẹda iṣeto igbimọ rẹ; lilo ita igi, rootfs-apọju, ranse si-Kọ awọn iwe afọwọkọ

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:

  1. 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
  2. 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ẹ.
  3. 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

Fi ọrọìwòye kun