Buildroot - chikamu 2. Kugadzira yako bhodhi kugadzirisa; kushandisa muti wekunze, rootfs-overlay, post-build zvinyorwa

Muchikamu chino ndinotarisa dzimwe sarudzo dzekugadzirisa dzandaida. Iyi haisi rondedzero yakazara yezvinopihwa buildroot, asi inoshanda chaizvo uye haidi kupindira mumafaira ebuildroot pachayo.

Kushandisa iyo EXTERNAL michina yekugadzirisa

Munyaya yapfuura Takatarisa muenzaniso wakapfava wekuwedzera yako yekumisikidza nekuwedzera defconfig yebhodhi uye mafaera anodiwa zvakananga kuBuildroot dhairekitori.

Asi iyi nzira haina kunyatso batsira, kunyanya kana uchivandudza buildroot. Pane nzira yekugadzirisa dambudziko iri muti wekunze. Chakakosha ndechekuti iwe unogona kuchengeta bhodhi, configs, mapakeji uye mamwe madhairekitori mune yakaparadzana dhairekitori (semuenzaniso, ini ndinoshandisa zvigamba dhairekitori kuisa zvigamba kumapakeji, zvimwe zvakawanda muchikamu chakasiyana) uye buildroot pachayo ichawedzera kune avo vari mukati. dhairekitori rayo.

Ongorora: unogona kufukidza miti yakati wandei yekunze kamwechete, pane muenzaniso mune buildroot manual

Ngatigadzire dhairekitori my_tree, iri padivi peiyo buildroot dhairekitori uye titumire kumisikidzwa yedu ipapo. Iyo inobuda inofanira kunge iri inotevera faira chimiro:

[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

Sezvauri kuona, kazhinji chimiro chinodzokorora chimiro chebuildroot.

dhairetori bhodhi ine mafaera akananga kune yega bhodhi mune yedu kesi:

  • bef_cr_fs_img.sh igwaro rinozoitwa mushure mekuvaka iyo yakanangwa faira system, asi usati wairongedza mumifananidzo. Tichaishandisa mune ramangwana
  • linux.config - kernel kumisikidza
  • rootfs_overlay - dhairekitori kuti rifukidze pamusoro pechinangwa chefaira system
  • vashandisi.txt - faira rinotsanangura vashandisi vachagadzirwa

dhairetori configs ine defconfig yemabhodhi edu. Tine mumwe chete.

nhuri - catalog nemapakeji edu. Pakutanga, buildroot ine tsananguro nemitemo yekuvaka nhamba shoma yemapakeji. Gare gare isu tichawedzera icewm hwindo maneja uye Slim graphical login maneja pano.
Patches - inokutendera kuti uchengetedze zvigamba zvako pamapakeji akasiyana. Mamwe mashoko muchikamu chakasiyana pazasi.
Iye zvino tinoda kuwedzera mafaera etsanangudzo kune yedu yekunze-muti. Pane mafaira matatu ane chekuita neizvi: external.desc, Config.in, external.mk.

external.desc ine tsananguro chaiyo:

[alexey@alexey-pc my_tree]$ cat external.desc 
name: my_tree
desc: My simple external-tree for article

Mutsetse wekutanga ndiwo musoro. Mune ramangwana buildroot gadzira shanduko $(BR2_EXTERNAL_MY_TREE_PATH), iyo inofanirwa kushandiswa pakugadzirisa gungano. Semuenzaniso, nzira inoenda kune faira remushandisi inogona kuiswa seizvi:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt

Mutsara wechipiri ipfupi, inoverengwa nevanhu.

Config.in, external.mk - mafaira ekutsanangura mapakeji akawedzerwa. Kana iwe ukasawedzera ako mapakeji, saka mafaera aya anogona kusiiwa asina chinhu. Parizvino, ndizvo zvatichaita.
Iye zvino isu tine yedu yekunze-muti wakagadzirira, ine defconfig yebhodhi redu uye mafaera ainoda. Ngatiende kune iyo buildroot dhairekitori uye tsanangura kushandisa ekunze-muti:

[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

Mumurairo wekutanga tinoshandisa nharo BR2_EXTERNAL=../my_tree/, zvichiratidza kushandiswa kwemuti wekunze Iwe unogona kutsanangura akati wandei ekunze-miti kuti ishandiswe panguva imwe chete.Muchiitiko ichi, iwe unongoda kuita izvi kamwe chete, mushure meiyo faira kubuda/.br-external.mk inogadzirwa iyo inochengetedza ruzivo rwekunze-muti wakashandiswa:

[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

Zvakakosha! Nzira dziri mufaira iri dzichava dzakakwana!

Chinhu cheKunze chesarudzo chabuda mumenyu:

Buildroot - chikamu 2. Kugadzira yako bhodhi kugadzirisa; kushandisa muti wekunze, rootfs-overlay, post-build zvinyorwa

Iyi submenu ichava nemapakeji edu kubva kune yedu yekunze-muti. Chikamu ichi hachina chinhu.

Iye zvino zvakakosha kuti isu tinyore zvakare nzira dzinodiwa dzekushandisa kunze-muti.

Ndokumbira utarise kuti muVaka sarudzo → Nzvimbo yekuchengetedza buildroot config chikamu, pachave neyakakwana nzira kune yakachengetedzwa defconfig. Inoumbwa panguva yekutsanangura kushandiswa kweextgernal_tree.

Tichagadzirisawo nzira dziri muSitimu yekumisikidza chikamu. Kune tafura ine vashandisi vakagadzirwa:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/users.txt

Muchikamu cheKernel, shandura nzira yekumisikidza kernel:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/linux.config

Iye zvino mafaira edu kubva kunze-muti wedu achashandiswa panguva yegungano. Paunenge uchienda kune rimwe dhairekitori kana kugadzirisa iyo buildroot, isu tichava neashoma ematambudziko.

Kuwedzera mudzi fs overlay:

Iyi meshini inobvumidza iwe kuwedzera nyore / kutsiva mafaera mune yakananga faira system.
Kana iyo faira iri mumudzi fs overlay, asi isiri muchinangwa, inozowedzerwa
Kana iyo faira iri mumudzi fs overlay uye mune chinangwa, inozotsiviwa.
Kutanga, ngatiise nzira yekudzika fs overlay dir. Izvi zvinoitwa muSystem kumisikidza → Root filesystem overlay madhairekitori chikamu:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Iye zvino ngatigadzire mafaera maviri.

[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

Iyo yekutanga faira (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) ichatsiva iyo /etc/hosts faira pane yapera system. Yechipiri faira (katsi my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) ichawedzerwa.

Tinounganidza uye kutarisa:

Buildroot - chikamu 2. Kugadzira yako bhodhi kugadzirisa; kushandisa muti wekunze, rootfs-overlay, post-build zvinyorwa

Kuitwa kwezvinyorwa zvekugadzirisa pamatanho akasiyana emusangano wesystem

Kazhinji iwe unofanirwa kuita rimwe basa mukati mechinangwa faira system isati yaiswa mumifananidzo.

Izvi zvinogona kuitwa muChikamu chekugadzirisa chikamu:

Buildroot - chikamu 2. Kugadzira yako bhodhi kugadzirisa; kushandisa muti wekunze, rootfs-overlay, post-build zvinyorwa

Zvinyorwa zviviri zvekutanga zvinoitwa mushure mekunge chinangwa chefaira chavakwa, asi chisati chaiswa mumifananidzo. Musiyano ndewekuti iyo fakeroot script inoitwa mumamiriro eiyo fakeroot, iyo inoteedzera basa semudzi mushandisi.

Chinyorwa chekupedzisira chinoitwa mushure mekunge mifananidzo yehurongwa yagadzirwa. Iwe unogona kuita zvimwe zviito mairi, semuenzaniso, kukopa mafaera anodiwa kune sevha yeNFS kana kugadzira mufananidzo weiyo kifaa firmware.

Semuenzaniso, ini ndichagadzira script inonyora vhezheni uye kuvaka zuva ku /etc/.
Kutanga ini ndicharatidza nzira yeiyi faira mune yangu yekunze-muti:

Buildroot - chikamu 2. Kugadzira yako bhodhi kugadzirisa; kushandisa muti wekunze, rootfs-overlay, post-build zvinyorwa

Uye zvino script pachayo:

[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

Mushure megungano, iwe unogona kuona iyi faira pane system.

Mukuita, script inogona kuva yakakura. Naizvozvo, mupurojekiti chaiyo ndakatora nzira yepamusoro:

  1. Ini ndakagadzira dhairekitori (my_tree/board_my_x86_board/inside_fakeroot_scripts) umo mune zvinyorwa zvinofanirwa kuurayiwa, zvine nhamba dzesiriri. Semuenzaniso, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Ndakanyora script (my_tree/board_my_x86_board/run_inside_fakeroot.sh) iyo inofamba neiri dhairekitori uye inoteedzera zvinyorwa zvirimo.
  3. Yakatsanangudza chinyorwa ichi mumaseting ebhodhi muSistimu kumisikidzwa -> Tsika zvinyorwa kuti zvifambe mukati meiyo fakeroot nharaunda ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) chikamu

Source: www.habr.com

Voeg