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 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:
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 osisimake <pkg>-graph-depends
wuo osisi ndabere maka otu ngwugwuBR2_GRAPH_OUT=png make graph-build
Mwepụta oge iji mepụta PNGmake 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:
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 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:
Ịmepụta nhazi osisi nke gị
Na-agbakwụnye faịlụ bọọdụ
Ka anyị leba anya na ndepụta nhazi:
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):
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.
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.
Ụ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:
Ọ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 (
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
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ọ
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
Bootloaders – nhọrọ nke bootloaders ịnakọta. Ka anyị họrọ isolinix
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.
Ị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
Ka anyị tinye nkwado njikọta nke ndị ọbịa Virtualbox
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
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.
Na-agba ọsọ site na iso gbakọtara:
Ndepụta ihe eji eme ihe
- Akwụkwọ ntuziaka Buildroot
isi: www.habr.com