Buildroot - karolo ea 2. Ho theha sebopeho sa hau sa boto; ho sebelisa sefate sa ka ntle, rootfs-overlay, post-build scripts

Karolong ena ke sheba tse ling tsa likhetho tseo ke neng ke li hloka. Lena ha se lethathamo le felletseng la seo buildroot e fanang ka sona, empa li sebetsa hantle ebile ha li hloke ho kenella ho lifaele tsa buildroot ka boeona.

Ho sebelisa mochini oa EXTERNAL bakeng sa ho itloaetsa

Sehloohong se fetileng Re shebile mohlala o bonolo oa ho eketsa tlhophiso ea hau ka ho kenyelletsa defconfig ea boto le lifaele tse hlokahalang ka kotloloho bukeng ea Buildroot.

Empa mokhoa ona ha o bonolo haholo, haholo ha o nchafatsa buildroot. Ho na le mokhoa oa ho rarolla bothata bona sefate sa kantle. Taba ea mantlha ke hore o ka boloka boto, litlhophiso, liphutheloana le li-directory tse ling bukeng e arohaneng (mohlala, ke sebelisa bukana ea li-patches ho kenya lipache ho liphutheloana, lintlha tse ling karolong e arohaneng) mme li-buildroot ka boeona e tla li kenyelletsa ho tse ling. bukana ea eona.

Tlhokomeliso: o ka koahela lifate tse 'maloa tsa ka ntle hang-hang, ho na le mohlala bukeng ea buildroot

Ha re theheng directory my_tree, e haufi le bukana ea buildroot mme re fetisetse tlhophiso ea rona moo. Sephetho se tlameha ho ba sebopeho se latelang sa faele:

[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

Joalokaha u ka bona, ka kakaretso mohaho o pheta sebopeho sa buildroot.

dibaka boto e na le lifaele tse ikhethileng ho boto ka 'ngoe molemong oa rona:

  • bef_cr_fs_img.sh ke script e tla phethoa ka mor'a ho haha ​​​​sistimi ea faele e shebiloeng, empa pele e e phuthela litšoantšong. Re tla e sebelisa nakong e tlang
  • linux.config - tlhophiso ea kernel
  • rootfs_overlay - directory ho koahela ka holim'a tsamaiso ea faele e reretsoeng
  • users.txt - faele e hlalosang basebelisi ba lokelang ho etsoa

dibaka configs e na le defconfig ea liboto tsa rona. Re na le a le mong feela.

sephutheloana - lethathamo la liphutheloana tsa rona. Qalong, buildroot e na le litlhaloso le melao ea ho aha palo e lekanyelitsoeng ea liphutheloana. Hamorao re tla eketsa mookameli oa fensetere ea icewm le molaoli oa ho kena oa Slim graphical mona.
Litlhapi - e u lumella ho boloka lipache tsa hau habonolo bakeng sa liphutheloana tse fapaneng. Lintlha tse ling karolong e ka thoko e ka tlase.
Hona joale re hloka ho kenyelletsa lifaele tsa litlhaloso bakeng sa sefate sa rona sa kantle. Ho na le lifaele tse 3 tse ikarabellang bakeng sa sena: external.desc, Config.in, external.mk.

kantle.desc e na le tlhaloso ea 'nete:

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

Mola oa pele ke sehlooho. Nakong e tlang buildroot theha e feto-fetohang $(BR2_EXTERNAL_MY_TREE_PATH), e lokelang ho sebelisoa ha ho etsoa kopano. Mohlala, tsela e eang faeleng ea mosebelisi e ka hlophisoa ka tsela e latelang:

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

Mola oa bobeli ke tlhaloso e khutšoanyane, e ka baloang ke motho.

Config.in, external.mk - lifaele tsa ho hlalosa liphutheloana tse ekelitsoeng. Haeba u sa kenye liphutheloana tsa hau, lifaele tsena li ka sala li se na letho. Hajoale, ke seo re tla se etsa.
Hona joale re se re itokiselitse sefate sa rona sa kantle, se nang le defconfig ea boto ea rona le lifaele tseo e li hlokang. Ha re ee bukeng ea li-buildroot 'me u hlalose hore na u ka sebelisa sefate sa kantle:

[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

Taelong ea pele re sebelisa khang BR2_EXTERNAL=../my_tree/, e bontšang tšebeliso ea sefate sa ka ntle U ka bolela tse 'maloa tsa lifate tsa ka ntle bakeng sa ho sebelisoa ka nako e le' ngoe Tabeng ena, u lokela ho etsa sena hanngoe feela, ka mor'a moo file output/.br-external.mk e bōptjoa hore e boloka tlhahisoleseling mabapi le sefate sa kantle se sebelisitsoeng:

[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

Bohlokoa! Litsela faeleng ena e tla ba tse phethahetseng!

Ntho ea likhetho tsa kantle e hlahile ho menu:

Buildroot - karolo ea 2. Ho theha sebopeho sa hau sa boto; ho sebelisa sefate sa ka ntle, rootfs-overlay, post-build scripts

Submenu ena e tla ba le liphutheloana tsa rona ho tsoa ho sefate sa rona sa kantle. Karolo ena ha e na letho hajoale.

Hona joale ho bohlokoa haholo hore re ngole hape litsela tse hlokahalang tsa ho sebelisa sefate sa kantle.

Ka kopo hlokomela hore ho Build options → Sebaka sa ho boloka karolo ea config config, ho tla ba le tsela e feletseng ea ho boloka defconfig. E thehoa nakong ea ho hlalosa tšebeliso ea extgernal_tree.

Hape re tla lokisa litsela tse karolong ea tlhophiso ea Sistimi. Bakeng sa tafole e nang le basebelisi ba bōpiloeng:

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

Karolong ea Kernel, fetola tsela ea tlhophiso ea kernel:

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

Hona joale lifaele tsa rona tse tsoang sefateng sa rona sa ka ntle li tla sebelisoa nakong ea kopano. Ha re fallela bukeng e 'ngoe kapa re ntlafatsa mohaho oa mohaho, re tla ba le mathata a fokolang.

Ho eketsa motso fs overlay:

Mochine ona o u lumella ho kenya / ho fetola lifaele habonolo tsamaisong ea faele e shebiloeng.
Haeba faele e le motso oa fs, empa e se sepheo, e tla eketsoa
Haeba faele e le ka har'a motso oa fs 'me e le sepheo, e tla nkeloa sebaka.
Taba ea pele, a re ke re behe tsela ea ho root fs overlay dir. Sena se etsoa ka har'a tlhophiso ea Sisteme → Karolo ea li-directory tsa tsamaiso ea li-root file:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Joale a re theheng lifaele tse peli.

[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

Faele ea pele (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) e tla nkela faele ea /etc/hosts tsamaisong e felileng. Faele ea bobeli (cat my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) e tla eketsoa.

Re bokella le ho hlahloba:

Buildroot - karolo ea 2. Ho theha sebopeho sa hau sa boto; ho sebelisa sefate sa ka ntle, rootfs-overlay, post-build scripts

Phethahatso ea lingoloa tse ikhethileng ka mekhahlelo e fapaneng ea kopano ea sistimi

Hangata o hloka ho etsa mosebetsi o itseng ka har'a sistimi ea faele eo u batlang ho e etsa pele e kenngoa litšoantšong.

Sena se ka etsoa karolong ea tlhophiso ea Sisteme:

Buildroot - karolo ea 2. Ho theha sebopeho sa hau sa boto; ho sebelisa sefate sa ka ntle, rootfs-overlay, post-build scripts

Lingoliloeng tse peli tsa pele li etsoa ka mor'a hore mokhoa oa faele o reretsoeng o hahuoe, empa pele o kenngoa litšoantšong. Phapang ke hore mongolo oa fakeroot o etsoa molemong oa fakeroot, e etsisang mosebetsi e le mosebelisi oa motso.

Script ea ho qetela e etsoa ka mor'a hore litšoantšo tsa tsamaiso li bōptjoe. U ka etsa liketso tse eketsehileng ho eona, ka mohlala, kopitsa lifaele tse hlokahalang ho seva sa NFS kapa ho etsa setšoantšo sa firmware ea sesebelisoa sa hau.

Ka mohlala, ke tla etsa script e tla ngola phetolelo le letsatsi la ho haha ​​​​ho /etc/.
Pele ke tla bontša tsela ea faele ena sefateng sa ka sa kantle:

Buildroot - karolo ea 2. Ho theha sebopeho sa hau sa boto; ho sebelisa sefate sa ka ntle, rootfs-overlay, post-build scripts

'Me joale script ka boeona:

[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

Ka mor'a kopano, u ka bona faele ena tsamaisong.

Ha e le hantle, script e ka ba kholo. Ka hona, morerong oa 'nete ke ile ka nka tsela e tsoetseng pele haholo:

  1. Ke thehile directory (my_tree/board_my_x86_board/inside_fakeroot_scripts) eo ho eona ho nang le mangolo a lokelang ho etsoa, ​​​​ka linomoro tsa serial. Mohlala, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Ke ngotse sengoloa (my_tree/board_my_x86_board/run_inside_fakeroot.sh) se fetang bukeng ena ebe se phethahatsa sengoloa se ho sona ka tatellano.
  3. E hlalositse mongolo ona ho litlhophiso tsa boto ho tlhophiso ea Sistimi -> Mengolo e tloahelehileng ho sebetsa ka har'a tikoloho ea fakeroot ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakeroot.sh) karolo

Source: www.habr.com

Eketsa ka tlhaloso