Buildroot - qaybta 2. Abuuritaanka qaabeynta guddigaaga; iyadoo la isticmaalayo geed dibadda ah, rootfs-overlay, qoraallada dib-u-dhiska

Qaybtan waxaan ku eegayaa qaar ka mid ah xulashooyinka habaynta ee aan u baahanahay. Tani maaha liis dhamaystiran oo ah waxa ay bixiso buildroot, laakiin aad ayay u shaqeeyaan oo uma baahna faragelin faylalka buildroot laftiisa.

Isticmaalka habka EXTERNAL si loo habeeyo

Maqaalkii hore Waxaan eegnay tusaale fudud oo ah ku darista qaabeyntaada anagoo ku darayna guddiga defconfig-ka iyo faylalka lagama maarmaanka ah si toos ah hagaha Buildroot.

Laakiin habkani maaha mid aad u habboon, gaar ahaan marka la cusboonaysiinayo buildroot. Waxaa jira hab lagu xalliyo dhibaatadan geed dibadda ah. Nuxurkeedu waa in aad ku kaydin karto guddiga, habaynta, baakadaha iyo hagayaasha kale buug gaar ah (tusaale ahaan, waxaan isticmaalaa hagaha balastarrada si aan u dalbado balastarrada baakadaha, tafaasiil dheeraad ah oo qayb gaar ah) iyo dhisidda lafteeda ayaa ku dari doonta kuwa ku jira hagaha.

Fiiro gaar ah: waxaad halmar ku daadin kartaa dhowr geed oo dibadda ah, tusaale ayaa ku jira buug-gacmeedka dhisidda

Aan abuurno tusaha my_tree, oo ku ag yaal hagaha Buildroot oo ku wareejino qaabayntayada halkaas. Soosaarku waa inuu ahaadaa qaab dhismeedka faylka soo socda:

[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

Sida aad arki karto, guud ahaan qaab-dhismeedku wuxuu soo celiyaa qaab-dhismeedka dhisidda.

Directory guddiga ka kooban faylal u gaar ah guddi kasta oo kiiskeena ah:

  • bef_cr_fs_img.sh waa qoraal la fulin doono ka dib marka la dhiso nidaamka faylalka bartilmaameedka ah, laakiin ka hor inta aan la baakadeynin sawirada. Waanu isticmaali doonaa mustaqbalka
  • linux.config - qaabeynta kernel
  • rootfs_overlay - hagaha lagu dul daadinayo nidaamka faylalka bartilmaameedka ah
  • users.txt - fayl qeexaya isticmaalayaasha la abuurayo

Directory khariidadaha waxaa ku jira defconfig ee looxyadayada. Waxaan leenahay hal kaliya.

Xidhmada - buug-gacmeedka baakadahayaga. Markii hore, buildroot waxay ka kooban tahay sharraxaad iyo xeerar lagu dhisayo tiro xaddidan oo xirmo ah. Ka dib waxaan ku dari doonaa maamulaha daaqada icewm iyo maamulaha garaafyada Slim halkan.
Patches - Waxay kuu ogolaanaysaa inaad si ku habboon ugu kaydiso balastarkaaga baakado kala duwan. Faahfaahin dheeraad ah oo ku saabsan qayb gaar ah hoos.
Hadda waxaan u baahanahay inaan ku darno faylasha sharaxaadda ee geedkeena dibadda Waxaa jira 3 fayl oo mas'uul ka ah tan: external.desc, Config.in, external.mk.

dibadda.desc waxa ku jira sharaxaadda dhabta ah:

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

Sadarka koowaad waa cinwaanka. Mustaqbalka buildroot samee doorsoome $ (BR2_EXTERNAL_MY_TREE_PATH), kaas oo ah in la isticmaalo marka la habeynayo golaha. Tusaale ahaan, dariiqa loo maro faylka isticmaalaha waxa loo dejin karaa sida soo socota:

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

Sadarka labaad waa tilmaan gaaban oo bani-aadmigu akhrin karo.

Config.in, dibadda.mk - faylasha si ay u qeexaan baakadaha lagu daray. Haddii aadan ku darin baakadahaaga, markaas faylashaan waxaa laga tagi karaa faaruq. Hadda, taasi waa waxa aan sameyn doono.
Hadda waxaan diyaar u nahay geed dibadda ah, oo ka kooban defconfig-ka guddigayaga iyo faylalka uu u baahan yahay. Aan tagno tusaha buildroot oo aan sheegno isticmaalka dibadda-geed:

[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

Amarka koowaad waxaan isticmaalnaa doodda BR2_EXTERNAL=../my_geed/, oo tilmaamaya isticmaalka geed dibadda ah, waxaad qeexi kartaa dhowr geed oo dibadda ah oo isku mar la isticmaalo, kiiskan, waxaad u baahan tahay oo keliya inaad tan sameyso hal mar, ka dib faylka faylka / .br-external.mk ayaa la abuuray waxay kaydisaa macluumaadka ku saabsan geedka dibadda loo isticmaalo:

[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

Muhiim! Waddooyinka ku jira faylkan waxay ahaan doonaan gabi ahaanba!

Shayga ikhtiyaariga ah ee dibadda ayaa ka soo muuqday liiska:

Buildroot - qaybta 2. Abuuritaanka qaabeynta guddigaaga; iyadoo la isticmaalayo geed dibadda ah, rootfs-overlay, qoraallada dib-u-dhiska

Liiskan hoose waxa uu ka koobnaan doonaa xidhmooyinkayaga geed-dibadeedka. Qaybtan hadda waa madhan

Hadda waxaa aad muhiim noogu ah in aan dib u qorno waddooyinka lagama maarmaanka ah si loo isticmaalo geed dibadda ah.

Fadlan ogow in ikhtiyaarka Dhiska → Goobta si loo badbaadiyo qaybta qaabaynta dhismaha, waxaa jiri doona waddo dhammaystiran oo loo maro defconfig-ka badbaadsan. Waxa la sameeyay wakhtiga lagu cayimay isticmaalka extgernal_geed.

Waxaan sidoo kale sixi doonaa waddooyinka qaybta qaabeynta Nidaamka. Shaxda isticmaalayaasha la abuuray:

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

Qaybta Kernel, u beddel jidka qaabaynta kernel:

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

Hadda faylalkayaga geedka-dibadeedka ayaa la isticmaali doonaa inta lagu jiro kulanka. Markaad u guurto hagaha kale ama cusboonaysiinta rootka, waxaan la kulmi doonaa ugu yaraan dhibaatooyin.

Ku darida xidid fs dulsaar:

Habkani wuxuu kuu ogolaanayaa inaad si fudud ugu darto / u beddesho faylasha nidaamka faylka bartilmaameedka ah.
Haddii feylku ku jiro xidid fs overlay, laakiin aan ku jirin bartilmaameed, markaa waa lagu dari doonaa
Haddii feylku ku jiro xidid fs dulsaar iyo bartilmaameed, markaa waa la bedeli doonaa.
Marka hore, aynu dejino dariiqa loo maro xididka fs overlay dir. Tan waxaa lagu sameeyaa habka qaabeynta → Qaybta hagaha dusha sare ee nidaamka faylka:

$(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/rootfs_overlay/

Hadda aynu abuurno laba fayl.

[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

Faylka ugu horreeya (my_tree/board/my_x86_board/rootfs_overlay/etc/hosts) ayaa beddeli doona faylka /etc/hosts ee nidaamka dhammaystiran. Faylka labaad (bisad my_tree/board/my_x86_board/rootfs_overlay/new_file.txt) ayaa lagu dari doonaa.

Waxaan aruurineynaa oo hubineynaa:

Buildroot - qaybta 2. Abuuritaanka qaabeynta guddigaaga; iyadoo la isticmaalayo geed dibadda ah, rootfs-overlay, qoraallada dib-u-dhiska

Fulinta qoraalada habaynta ee heerarka kala duwan ee isu-ururinta nidaamka

Badanaa waxaad u baahan tahay inaad qabato shaqada qaar ka mid ah gudaha nidaamka faylalka bartilmaameedka ka hor inta aan lagu xirin sawirada.

Tan waxaa lagu samayn karaa qaybta qaabeynta Nidaamka:

Buildroot - qaybta 2. Abuuritaanka qaabeynta guddigaaga; iyadoo la isticmaalayo geed dibadda ah, rootfs-overlay, qoraallada dib-u-dhiska

Labada qoraal ee ugu horreeya waxaa la sameeyaa ka dib marka la dhiso nidaamka faylka bartilmaameedka, laakiin ka hor inta aan la baakadeynin sawirada. Farqiga u dhexeeya ayaa ah in qoraalka fakeroot lagu fuliyo macnaha guud ee fakeroot, kaas oo ka dhigaya shaqada xidid isticmaale.

Qoraalka ugu dambeeya ayaa la sameeyaa ka dib marka sawirada nidaamka la abuuro. Waxaad ku samayn kartaa waxqabadyo dheeraad ah dhexdeeda, tusaale ahaan, koobi kara faylasha lagama maarmaanka ah ee serverka NFS ama samee sawirka qalabkaaga firmware.

Tusaale ahaan, waxaan abuuri doonaa qoraal qori doona nooca oo dhisi doona taariikhda /etc/.
Marka hore waxaan ku tusi doonaa dariiqa faylkan geedka-dibadda:

Buildroot - qaybta 2. Abuuritaanka qaabeynta guddigaaga; iyadoo la isticmaalayo geed dibadda ah, rootfs-overlay, qoraallada dib-u-dhiska

Oo hadda qoraalka laftiisa:

[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 dib kulanka, waxaad arki kartaa faylkan nidaamka.

Ficil ahaan, qoraalku wuxuu noqon karaa mid weyn. Sidaa darteed, mashruuca dhabta ah waxaan qaaday waddo aad u horumarsan:

  1. Waxaan sameeyay hagaha (my_tree/board_my_x86_board/inside_fakeroot_scripts) oo ay ku jiraan qoraallo la fulinayo, oo leh nambaro taxane ah. Tusaale ahaan, 0001-add-my_small_linux-version.sh, 0002-clear-apache-root-dir.sh
  2. Waxaan qoray qoraal (my_tree/board_my_x86_board/run_inside_fakeroot.sh) oo dhex mara tusahan oo si isdaba joog ah u fulinaya qoraallada ku jira
  3. Waxa lagu qeexay qoraalkan habaynta guddiga qaabaynta nidaamka -> Qoraallada gaarka ah ee lagu socodsiiyo gudaha deegaanka been abuurka ah ($(BR2_EXTERNAL_my_tree_PATH)/board/my_x86_board/run_inside_fakrooot.sh) qaybta

Source: www.habr.com

Add a comment