Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Okwu Mmalite

N'ime usoro isiokwu a, achọrọ m ileba anya na usoro nkesa nkesa na-ewulite ma kesaa ahụmịhe m na ịhazi ya. A ga-enwe ahụmịhe bara uru n'ịmepụta obere OS nwere interface eserese yana obere ọrụ.

Nke mbụ, ịkwesighi ịgbagha usoro ihe owuwu na nkesa. Buildroot nwere ike wulite usoro site na ngwugwu a na-enye ya. Ewubere Buildroot na makefiles ma yabụ nwere nnukwu ikike ịhazi ya. Dochie ngwugwu na ụdị ọzọ, gbakwunye ngwugwu nke gị, gbanwee iwu maka ịmepụta ngwugwu, hazie usoro faịlụ mgbe ị wụnyechara ngwugwu niile? buildroot nwere ike ime ihe a niile.

Na Russia, a na-eji buildroot eme ihe, mana n'echiche m enwere obere ozi asụsụ Russian maka ndị mbido.

Ebumnuche nke ọrụ ahụ bụ ikpokọta ngwa nkesa na nbudata dị ndụ, interface icewm na ihe nchọgharị. Ezubere ikpo okwu bụ virtualbox.

Kedu ihe kpatara wulite nkesa nke gị? Ọtụtụ mgbe a na-achọ ọrụ nwere oke na akụrụngwa nwere oke. Ọbụna ọtụtụ mgbe na akpaaka ịkwesịrị ịmepụta firmware. Ịmeghari nkesa ebumnuche izugbe site na ihichapụ ngwugwu ndị na-adịghị mkpa na ịtụgharị ya na firmware na-arụsi ọrụ ike karịa ịmepụta nkesa ọhụrụ. Iji Gentoo nwekwara oke ya.

Sistemụ Buildroot dị ike nke ukwuu, mana ọ gaghị emere gị ihe ọ bụla. Ọ nwere ike mee naanị ma megharịa usoro mgbakọ ahụ.

A naghị atụle ma ọ bụ atụnyere Sistemụ nrụpụta ndị ọzọ (yocto, sistemu oghe na ndị ọzọ).

Ebe ị ga-enweta ya na otu esi amalite

Weebụsaịtị ọrụ - buildroot.org. Ebe ị nwere ike ibudata ụdị ugbu a wee gụọ akwụkwọ ntuziaka. N'ebe ahụ ị nwere ike ịkpọtụrụ ndị obodo, enwere ihe nchọta ahụhụ, ndetu ozi na ọwa irc.

Buildroot na-arụ ọrụ defconfigs maka bọọdụ ebumnuche nke ihe owuwu ahụ. Defconfig bụ faịlụ nhazi nke na-echekwa naanị nhọrọ na-enweghị ụkpụrụ ndabara. Ọ bụ ya na-ekpebi ihe a ga-anakọta na otú. N'okwu a, ị nwere ike hazie configs nke busybox, Linux-kernel, uglibc, u-boot na barebox bootloaders, mana ha niile ga-ejikọta na bọọdụ ebumnuche.
Mgbe emechara ihe ndekọ ebudatara ma ọ bụ cloning site na git, anyị ga-enweta rootroot dị njikere iji. Ị nwere ike ịgụkwu gbasara usoro ndekọ aha na akwụkwọ ntuziaka; M ga-agwa gị gbasara ndị kacha mkpa:

osisi - akwụkwọ ndekọ nwere faịlụ akọwapụtara maka bọọdụ ọ bụla. Ndị a nwere ike ịbụ edemede maka imepụta onyonyo sistemụ (iso, sdcart, cpio na ndị ọzọ), akwụkwọ ndekọ machie, nhazi kernel, wdg.
nhazi - defconfig nke osisi ahụ n'ezie. Defconfig bụ nhazi bọọdụ ezughị ezu. Ọ na-echekwa naanị parampat dị iche na ntọala ndabara
dl - ndekọ nwere koodu/faịlụ isi mmalite ebudatara maka mgbakọ
mmepụta/ebumnobi - usoro faịlụ gbakọtara nke OS na-apụta. Na-esote, a na-emepụta ihe oyiyi site na ya maka nbudata/nwụnye
mmepụta/onye ọbịa - ụlọ ọrụ nnabata maka mgbakọ
mmepụta/ewu - kpọkọtara ngwugwu

A na-ahazi ọgbakọ ahụ site na KConfig. A na-eji otu usoro a rụọ kernel Linux. Ndepụta nke iwu ndị a na-ejikarị eme ihe (mere na ndekọ ihe nrụpụta):

  • mee menuconfig - kpọọ nhazi nhazi. Ị nwekwara ike iji interface eserese (mee nconfig, mee xconfig, mee gconfig)
  • mee linux-menuconfig - kpọọ nhazi kernel.
  • mee ọcha - hichaa nsonaazụ ụlọ (ihe niile echekwara na mmepụta)
  • eme - wuo usoro. Nke a anaghị achịkọta usoro agbakọtalarị.
  • mee defconfig_name - gbanwee nhazi ahụ na defconfig kpọmkwem
  • mee list-defconfigs - gosi ndepụta defconfigs
  • mee isi iyi - naanị budata faịlụ nrụnye, na-enweghị ụlọ.
  • mee enyemaka - depụta iwu enwere ike

Ihe ndetu dị mkpa na ndụmọdụ enyemaka

Buildroot anaghị ewughachi ngwugwu arụrụlarị! Ya mere, ọnọdụ nwere ike ibili ebe achọrọ nhazigharị zuru ezu.

Ị nwere ike iji iwu ahụ wughachi ngwugwu dị iche mee ngwugwu aha-ewughachi. Dịka ọmụmaatụ, ị nwere ike wughachi kernel Linux:

make linux-rebuild

Buildroot na-echekwa ọnọdụ nke ngwugwu ọ bụla site na ịmepụta faịlụ stampụ n'ime ndekọ aha mmepụta/wuo/$ ngwugwu aha:

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Ya mere, ị nwere ike wughachi mgbọrọgwụ-fs na onyonyo na-enweghị iwughachi ngwugwu:

rm output/build/host-gcc-final-*/.stamp_host_installed;rm -rf output/target;find output/ -name ".stamp_target_installed" |xargs rm -rf ; make

Ngbanwe bara uru

buildroot nwere usoro mgbanwe maka nhazi dị mfe

  • $TOPDIR - akwụkwọ ndekọ aha
  • $BASEDIR - akwụkwọ ndekọ aha
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR — ndị ọbịa fs, staging fs, target fs na-ewu akwụkwọ ndekọ aha.
  • $BUILD_DIR - ndekọ nwere ngwungwu akpakọghị ọnụ na wuru

Anya

buildroot nwere ihe nhụta anya, ị nwere ike wulite eserese dabere, eserese oge, yana eserese nke nha ngwugwu na sistemụ ikpeazụ. Nsonaazụ dị n'ụdị faịlụ pdf (ị nwere ike ịhọrọ site na svn, png) na ndekọ mmepụta/graph.

Ọmụmaatụ nke iwu ịhụ anya:

  • make graph-depends wuo ndabere osisi
  • make <pkg>-graph-depends wuo osisi ndabere maka otu ngwugwu
  • BR2_GRAPH_OUT=png make graph-build Mwepụta oge iji mepụta PNG
  • make graph-size nha ngwugwu nkata

Ederede bara uru

Enwere subdirectory n'ime ndekọ aha buildroot utils na ederede bara uru. Dịka ọmụmaatụ, enwere edemede na-enyocha izi ezi nkọwa ngwugwu. Nke a nwere ike ịba uru mgbe ị na-agbakwunye ngwugwu nke gị (M ga-eme nke a ma emechaa). Utils/readme.txt faịlụ nwere nkọwa nke scripts ndị a.

Ka anyị wulite nkesa ngwaahịa

Ọ dị mkpa icheta na a na-arụ ọrụ niile n'aha onye ọrụ mgbe niile, ọ bụghị mgbọrọgwụ.
A na-eme iwu niile na Buildroot. Ihe ngwungwu buildroot agụnyelarị nhazi nhazi maka ọtụtụ bọọdụ nkịtị na ime ihe ike.

Ka anyị leba anya na ndepụta nhazi:

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Gbanwee na qemu_x86_64_defconfig config

make qemu_x86_64_defconfig

Anyị na-amalitekwa mgbakọ ahụ

make

Ihe owuwu a mezuru nke ọma, lelee nsonaazụ ya:

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Buildroot achịkọtala onyonyo ị nwere ike ịgba ọsọ na Qemu wee chọpụta na ha na-arụ ọrụ.

qemu-system-x86_64 -kernel output/images/bzImage -hda    output/images/rootfs.ext2 -append "root=/dev/sda rw" -s -S

Nsonaazụ bụ sistemụ na-arụ ọrụ na qemu:

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Ịmepụta nhazi osisi nke gị

Na-agbakwụnye faịlụ bọọdụ

Ka anyị leba anya na ndepụta nhazi:

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Na ndepụta anyị na-ahụ pc_x86_64_efi_defconfig. Anyị ga-emepụta bọọdụ nke anyị site na iṅomi ya na nhazi:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Ka anyị mepụta akwụkwọ ndekọ aha ozugbo iji chekwaa scripts, rootfs-overlay na faịlụ ndị ọzọ dị mkpa:

mkdir board/my_x86_board

Banye na defconfig a:

make my_x86_board_defconfig

N'ihi ya, ugbu a, wuo config (echekwara na .config na mgbọrọgwụ nke buildroot directory) kwekọrọ x86-64 legacy(bios) boot target machine.

Ka anyị detuo nhazi Linux-kernel (ọ bara uru ma emechaa):

cp board/pc/linux.config board/my_x86_board/

Ịtọ ntọala ntọala site na KConfig

Ka anyị malite nhazi:

make menuconfig 

Window KConfig ga-emeghe. Ọ ga-ekwe omume iji interface eserese hazie (mee nconfig, mee xconfig, mee gconfig):

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Anyị na-abanye na ngalaba nke mbụ Nhọrọ Nhọrọ. N'ebe a, ị nwere ike họrọ ihe owuwu ebumnuche nke a ga-arụ ya.

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Mee nhọrọ - enwere ntọala ntọala dị iche iche ebe a. Ị nwere ike dee akwụkwọ ndekọ aha nwere koodu isi mmalite, ọnụ ọgụgụ nke eriri ihe nrụpụta, enyo maka nbudata koodu isi na ntọala ndị ọzọ. Ka anyị hapụ ntọala na ndabara.

Toolchain – a na-ahazi ngwaọrụ eji arụ ọrụ n'onwe ya ebe a. Gụkwuo banyere ya.

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Ụdị ngwá ọrụ - ụdị ngwá ọrụ eji eme ihe. Nke a nwere ike ịbụ ngwa ọrụ arụnyere n'ime rootroot ma ọ bụ nke mpụga (ị nwere ike dee ndekọ ahụ na nke arụgorolarị ma ọ bụ url maka nbudata). Enwere nhọrọ ndị ọzọ maka ụlọ ọrụ dị iche iche. Dịka ọmụmaatụ, maka ogwe aka ị nwere ike họrọ ụdị Linaro nke chain ngwaọrụ mpụga.

Ọbá akwụkwọ C - nhọrọ nke ụlọ akwụkwọ C. Ọrụ nke usoro dum dabere na nke a. Dịka, a na-eji glibc, nke na-akwado ọrụ niile enwere ike. Mana ọ nwere ike buru oke ibu maka sistemu agbakwunyere, yabụ a na-ahọrọ uglibc ma ọ bụ musl. Anyị ga-ahọrọ glibc (nke a ga-achọrọ ma emechaa iji systemd).

Usoro ihe nrụnye kernel na usoro ihe eji isi mee kernel - ga-adakọrịrị ụdị kernel nke ga-adị na sistemụ gbakọtara. Maka nkụnye eji isi mee kernel, ị nwekwara ike ịkọwa ụzọ na ebe nchekwa tarball ma ọ bụ git.

GCC COMPILER VERSIONS – họrọ ụdị mkpokọta a ga-eji wuo ya
Kwado nkwado C++ - họrọ iji nkwado maka ọba akwụkwọ C++ na sistemụ. Nke a ga-abara anyị uru n'ọdịnihu.

Nhọrọ gcc agbakwunyere - ị nwere ike ịtọ nhọrọ nchịkọta mkpokọta. Anyị achọghị ya ugbu a.

Nhazi sistemụ na-enye gị ohere ịtọ parampat nke sistemu emepụtara n'ọdịnihu:

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Ọtụtụ isi ihe doro anya site na aha. Ka anyị tinye uche n'ihe ndị a:
Ụzọ na tebụl ndị ọrụ - tebụl nke ndị ọrụ ga-emepụta (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Ihe atụ faịlụ. A ga-emepụta onye ọrụ na paswọọdụ admin, gid/uid na-akpaghị aka, / bin/sh shell, onye ọrụ ndabara, mgbọrọgwụ otu, onye ọrụ Foo

[alexey@alexey-pc buildroot ]$ cat board/my_x86_board/users.txt 
user -1 user -1 =admin /home/user /bin/sh root Foo user

Akwụkwọ ndekọ aha maka sistemụ faịlụ mgbọrọgwụ - akwụkwọ ndekọ aha ekpuchiri n'elu target-fs gbakọtara. Na-agbakwụnye faịlụ ọhụrụ ma dochie ndị dị adị.

Edemede omenala ga-agba ọsọ tupu imepụta onyonyo sistemụ faịlụ - Egburu Script ozugbo tupu mpịaji sistemụ faịlụ n'ime onyonyo. Ka anyị hapụ edemede ahụ efu ugbu a.

Ka anyị gaa na ngalaba kernel

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Edebere ntọala kernel ebe a. A na-ahazi kernel n'onwe ya site na ịme linux-menuconfig.
Ị nwere ike ịtọ ụdị kernel n'ụzọ dị iche iche: họrọ n'ime ndị a na-enye, jiri aka tinye ụdị ahụ, kọwaa ebe nchekwa ma ọ bụ tarball emebere.

Nhazi kernel - ụzọ na nhazi kernel. Ị nwere ike họrọ nhazi ndabere maka ụlọ ọrụ ahọpụtara ma ọ bụ defocnfig sitere na Linux. Isi iyi Linux nwere ọtụtụ defconfigs maka sistemụ ebumnuche dị iche iche. Ị nwere ike ịchọta nke ị chọrọ site n'ile anya ozugbo na isi mmalite ebe a. Dịka ọmụmaatụ, maka bọọdụ ojii beagle ọkpụkpụ ị nwere ike họrọ nhazi.

Ngalaba nchịkọta Target na-enye gị ohere ịhọrọ ngwugwu ndị a ga-etinye na usoro a na-ewu. Ka anyị hapụ ya na-agbanweghị ugbu a. Anyị ga-agbakwunye ngwugwu anyị na ndepụta a ma emechaa.
Ihe onyonyo sistemụ faịlụ - ndepụta nke onyonyo sistemụ faịlụ nke a ga-anakọta. Tinye onyonyo iso

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Bootloaders – nhọrọ nke bootloaders ịnakọta. Ka anyị họrọ isolinix

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Na-ahazi Sistemu

Systemd na-aghọ otu n'ime ogidi Linux, yana kernel na glibc. Ya mere, akwagara m ntọala ya na ihe dị iche.

Haziri site na ịme menuconfig, wee ngwugwu Target → Ngwaọrụ sistemu → systemd. N'ebe a, ị nwere ike ịkọwapụta ọrụ sistemụd ga-arụnye wee malite mgbe sistemụ malitere.

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Ịchekwa nhazi usoro

Anyị na-echekwa nhazi a site na KConfig.

Wee chekwaa defconfig anyị:

make savedefconfig

Nhazi Linux Kernel

A na-eji iwu ndị a kpọkuo nhazi kernel Linux:

make linux-menuconfig

Ka anyị tinye nkwado maka kaadị vidiyo Virtualbox

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Ka anyị tinye nkwado njikọta nke ndị ọbịa Virtualbox

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Chekwa ma pụọ. Mkpa: A ga-echekwa nhazi na mmepụta / wuo / Linux- $ ụdị / nhazi, ma ọ bụghị na bọọdụ / my_x86_board / Linux.config

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Ya mere, ịkwesịrị iji aka detuo nhazi ahụ na ebe nchekwa:

cp output/build/linux-4.19.25/.config board/my_x86_board/linux.config

Mgbe nke a gasị, anyị ga-eme nhazigharị zuru ezu nke usoro ahụ dum. buildroot anaghị ewughachi ihe ewurularị, ị ga-eji aka dee ngwugwu maka iwughachi. Ka ị ghara igbu oge na irighiri akwara, ọ dị mfe iji wughachi obere usoro kpamkpam):

make clean;make

Mgbe arụchara ọrụ ahụ, malite VirtualBox (nke a nwalere na ụdị 5.2 na 6.0) na-agbapụ na CD.

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Na-agba ọsọ site na iso gbakọtara:

Buildroot - akụkụ 1. Ozi izugbe, na-achịkọta usoro dị ntakịrị, nhazi site na menu

Ndepụta ihe eji eme ihe

  1. Akwụkwọ ntuziaka Buildroot

isi: www.habr.com

Tinye a comment