Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Mau oyamba

M'nkhani zotsatizanazi, ndikufuna kuyang'ana kachitidwe kamangidwe ka buildroot ndikugawana zomwe ndakumana nazo pakuzisintha. Apa mudzakhala ndi chidziwitso chothandiza pakupanga OS yaying'ono yokhala ndi mawonekedwe owonetsera komanso magwiridwe antchito ochepa.

Choyamba, musasokoneze dongosolo lomanga ndi kugawa. Buildroot ikhoza kupanga dongosolo kuchokera pamaphukusi omwe amaperekedwa kwa iwo. Buildroot imamangidwa pa makefiles ndipo chifukwa chake ili ndi kuthekera kwakukulu kosintha mwamakonda. Bwezerani phukusi ndi mtundu wina, onjezani phukusi lanu, sinthani malamulo omanga phukusi, sinthani mawonekedwe a fayilo mutatha kukhazikitsa mapaketi onse? buildroot akhoza kuchita zonsezi.

Ku Russia, buildroot imagwiritsidwa ntchito, koma m'malingaliro mwanga pali chidziwitso chochepa cha chilankhulo cha Chirasha kwa oyamba kumene.

Cholinga cha ntchitoyi ndikusonkhanitsa zida zogawa ndi kutsitsa kwamoyo, mawonekedwe a icewm ndi osatsegula. Pulatifomu yomwe mukufuna ndi virtualbox.

Nchifukwa chiyani mumapanga zogawa zanu? Nthawi zambiri magwiridwe antchito amafunikira ndi zinthu zochepa. Nthawi zambiri mumangofunika kupanga firmware. Kusintha kagawidwe ka zolinga wamba poyeretsa mapaketi osafunikira ndikusandutsa kukhala firmware ndikovuta kwambiri kuposa kupanga kugawa kwatsopano. Kugwiritsa ntchito Gentoo kulinso ndi malire ake.

Dongosolo la Buildroot ndi lamphamvu kwambiri, koma silingakuchitireni chilichonse. Itha kungoyambitsa ndikusinthiratu kusonkhana.

Njira zomangira zina (yocto, open build system ndi zina) sizimaganiziridwa kapena kufananizidwa.

Komwe mungapeze ndi momwe mungayambire

Webusaiti ya polojekiti - buildroot.org. Apa mutha kutsitsa mtundu wamakono ndikuwerenga bukuli. Kumeneko mutha kulumikizana ndi anthu ammudzi, pali cholozera cholakwika, mindandanda yamakalata ndi njira ya irc.

Buildroot imagwiritsa ntchito defconfigs pagulu lomwe mukufuna kumanga. Defconfig ndi fayilo yosinthira yomwe imasunga zosankha zomwe zilibe zosintha. Ndi iye amene amasankha zomwe zidzasonkhanitsidwe ndi momwe zidzasonkhanitsire. Pankhaniyi, mutha kusintha padera ma configs a busybox, linux-kernel, uglibc, u-boot ndi barebox bootloaders, koma onse amangiriridwa ku gulu lomwe mukufuna.
Pambuyo pomasula zosungidwa zomwe zidatsitsidwa kapena kupanga ku git, timapeza buildroot yokonzeka kugwiritsa ntchito. Mutha kuwerenga zambiri zamakanema mu bukhuli; Ndikuuzani zofunika kwambiri:

bolodi - chikwatu chokhala ndi mafayilo okhudzana ndi bolodi lililonse. Izi zitha kukhala zolemba zopangira zithunzi zamakina (iso, sdcart, cpio ndi ena), chikwatu chophatikizika, kernel config, ndi zina.
zopindika - defconfig yeniyeni ya bolodi. Defconfig ndi dongosolo losakwanira la board. Imasunga magawo okhawo omwe amasiyana ndi zosintha zokhazikika
dl - chikwatu chokhala ndi ma code / mafayilo otsitsidwa kuti asonkhane
zotuluka/chandamale - Fayilo yosonkhanitsidwa ya OS yomwe yatsatira. Pambuyo pake, zithunzi zimapangidwa kuchokera pamenepo kuti zitsitsidwe / kuyika
zotuluka/host - Zothandizira zopangira zopangira
zotuluka/kumanga - anasonkhanitsa phukusi

Msonkhanowu umakonzedwa kudzera pa KConfig. Dongosolo lomwelo limagwiritsidwa ntchito popanga Linux kernel. Mndandanda wamalamulo omwe amagwiritsidwa ntchito kwambiri (perekani mu bukhu la buildroot):

  • pangani menyuconfig - imbani kasinthidwe kamangidwe. Mutha kugwiritsanso ntchito mawonekedwe ojambulira (pangani nconfig, pangani xconfig, pangani gconfig)
  • pangani linux-menuconfig - imbani kasinthidwe ka kernel.
  • yeretsani - yeretsani zotsatira zomanga (zonse zomwe zasungidwa)
  • kupanga - kupanga dongosolo. Izi sizikuphatikizanso njira zomwe zasonkhanitsidwa kale.
  • pangani defconfig_name - sinthani kasinthidwe kukhala defconfig
  • pangani mndandanda-defconfigs - onetsani mndandanda wa defconfigs
  • make source - ingotsitsani mafayilo oyika, osamanga.
  • pangani thandizo - tchulani malamulo omwe angathe

Zolemba zofunika ndi malangizo othandiza

Buildroot simanganso mapaketi omwe adamangidwa kale! Choncho, zinthu zikhoza kuchitika pamene kukonzanso kwathunthu kumafunika.

Mutha kumanganso phukusi lapadera ndi lamulo pangani dzina la phukusi-kumanganso. Mwachitsanzo, mutha kumanganso Linux kernel:

make linux-rebuild

Buildroot imasunga chikhalidwe cha phukusi lililonse popanga mafayilo a .stamp muzotuluka/build/$packagename:

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Chifukwa chake, mutha kupanganso mizu-fs ndi zithunzi popanda kumanganso phukusi:

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

Zosintha Zothandiza

buildroot ili ndi zosintha zingapo kuti zisinthidwe mosavuta

  • $TOPDIR - chikwatu cha buildroot
  • $BASEDIR - OUTPUT directory
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - host fs, staging fs, target fs build directories.
  • $BUILD_DIR - chikwatu chokhala ndi mapaketi osapakidwa komanso omangidwa

Kuwonetseratu

buildroot ili ndi mawonekedwe.Mutha kupanga chojambula chodalira, chithunzi cha nthawi yomanga, ndi chithunzi cha kukula kwa phukusi mukamamaliza. Zotsatira zake zili ngati mafayilo a pdf (mutha kusankha kuchokera ku svn, png) mu bukhu lotulutsa / graph.

Zitsanzo za malamulo owonera:

  • make graph-depends kumanga mtengo wodalira
  • make <pkg>-graph-depends pangani mtengo wodalira phukusi lapadera
  • BR2_GRAPH_OUT=png make graph-build nthawi yomanga chiwembu ndi zotuluka za PNG
  • make graph-size saizi ya paketi

Zolemba zothandiza

Pali subdirectory mu bukhu la buildroot zida ndi zolemba zothandiza. Mwachitsanzo, pali script yomwe imayang'ana kulondola kwa mafotokozedwe a phukusi. Izi zitha kukhala zothandiza powonjezera maphukusi anu (ndichita izi pambuyo pake). Fayilo utils/readme.txt ili ndi kufotokozera za zolembedwazi.

Tiyeni timange kugawa katundu

Ndikofunika kukumbukira kuti ntchito zonse zimachitika m'malo mwa wogwiritsa ntchito nthawi zonse, osati mizu.
Malamulo onse amachitidwa mu buildroot. Phukusi la buildroot limaphatikizaponso masinthidwe a ma board ambiri wamba komanso virtualization.

Tiyeni tiwone mndandanda wamasinthidwe:

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Sinthani ku qemu_x86_64_defconfig config

make qemu_x86_64_defconfig

Ndipo timayamba msonkhano

make

Ntchito yomangayo ikutha bwino, yang'anani zotsatira zake:

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Buildroot yapanga zithunzi zomwe mutha kuthamanga ku Qemu ndikuwonetsetsa kuti zimagwira ntchito.

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

Zotsatira zake ndi dongosolo lomwe likuyenda mu qemu:

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Kupanga masinthidwe a board anu

Kuwonjezera Mafayilo a Board

Tiyeni tiwone mndandanda wamasinthidwe:

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

M'ndandanda tikuwona pc_x86_64_efi_defconfig. Tidzapanga bolodi yathu poyikopera kuchokera pamasinthidwe:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Tiyeni tipange chikwatu nthawi yomweyo kuti tisunge zolemba zathu, rootfs-overlay ndi mafayilo ena ofunikira:

mkdir board/my_x86_board

Sinthani ku defconfig iyi:

make my_x86_board_defconfig

Choncho, tsopano kumanga config (kusungidwa mu .config muzu wa bukhu la buildroot) likufanana ndi x86-64 legacy(bios) makina a boot target.

Tiyeni tikopere kasinthidwe ka linux-kernel (zothandiza pambuyo pake):

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

Kukhazikitsa magawo omanga kudzera pa KConfig

Tiyeni tiyambe:

make menuconfig 

Zenera la KConfig lidzatsegulidwa. Ndizotheka kukonza ndi mawonekedwe azithunzi (kupanga nconfig, kupanga xconfig, kupanga gconfig):

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Timalowetsa gawo loyamba Zosankha Zofuna. Apa mutha kusankha zomanga zomwe mukufuna kumanga.

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Pangani zosankha - pali makonda osiyanasiyana apa. Mutha kufotokozera maulalo okhala ndi ma source code, kuchuluka kwa ulusi womanga, magalasi otsitsa ma code source ndi zosintha zina. Tiyeni tisiye zoikamo mokhazikika.

Toolchain - zida zomangira zokha zimakhazikitsidwa pano. Werengani zambiri za iye.

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Mtundu wa Toolchain - mtundu wa zida zomwe zimagwiritsidwa ntchito. Uwu utha kukhala chida chomangidwa mu buildroot kapena chakunja (mutha kufotokoza chikwatu chomwe chamangidwa kale kapena ulalo wotsitsa). Palinso zosankha zina zamapangidwe osiyanasiyana. Mwachitsanzo, kwa mkono mungathe kusankha Linaro Baibulo la toolchain kunja.

C laibulale - kusankha kwa laibulale ya C. Kugwiritsa ntchito dongosolo lonse kumadalira izi. Nthawi zambiri, glibc imagwiritsidwa ntchito, yomwe imathandizira magwiridwe antchito onse. Koma ikhoza kukhala yayikulu kwambiri pamakina ophatikizidwa, kotero uglibc kapena musl nthawi zambiri amasankhidwa. Tidzasankha glibc (izi zidzafunika pambuyo pake kuti tigwiritse ntchito systemd).

Mitu ya Kernel ndi Custom Kernel Headers mndandanda - uyenera kufanana ndi mtundu wa kernel womwe udzakhale mu dongosolo lophatikizidwa. Pamutu wa kernel, mutha kufotokozeranso njira yopita ku tarball kapena git repository.

GCC COMPILER VERSIONS - sankhani mtundu wa compiler womwe ungagwiritsidwe ntchito pomanga
Yambitsani chithandizo cha C ++ - sankhani kumanga ndi chithandizo cha malaibulale a C ++ mu dongosolo. Izi zidzakhala zothandiza kwa ife mtsogolo.

Zosankha zowonjezera za gcc - mutha kukhazikitsa zosankha zina zowonjezera. Sitikuzifuna pakadali pano.

Kukonzekera kwadongosolo kumakupatsani mwayi wokhazikitsa magawo amtsogolo adongosolo lopangidwa:

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Mfundo zambiri ndi zomveka bwino pamutuwu. Tiyeni tisamalire mfundo zotsatirazi:
Njira yopita kumatebulo ogwiritsa ntchito - tebulo lokhala ndi ogwiritsa ntchito kuti lipangidwe (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Fayilo yachitsanzo. Wogwiritsa ntchito adzapangidwa ndi mawu achinsinsi, gid / uid, / bin/sh chipolopolo, wogwiritsa ntchito gulu, muzu wagulu, ndemanga wogwiritsa ntchito Foo

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

Root filesystem overlay directories - chikwatu chokutidwa pamwamba pa chandamale-fs chophatikizidwa. Imawonjezera mafayilo atsopano ndikulowetsa omwe alipo.

Zolemba zamachitidwe kuti ziyendetse musanapange zithunzi zamafayilo - Zolemba zimachitidwa nthawi yomweyo musanapinge fayilo kukhala zithunzi. Tiyeni tisiye zolemba zilibe kanthu pakadali pano.

Tiyeni tipite ku gawo la Kernel

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Zokonda pa Kernel zakhazikitsidwa apa. Kernel yokha imakonzedwa kudzera pa make linux-menuconfig.
Mutha kukhazikitsa mtundu wa kernel m'njira zosiyanasiyana: sankhani kuchokera pazomwe zaperekedwa, lowetsani pamanja, tchulani malo osungira kapena tarball yopangidwa kale.

Kusintha kwa Kernel - njira yopita ku kasinthidwe ka kernel. Mutha kusankha masinthidwe okhazikika pamapangidwe osankhidwa kapena defocnfig kuchokera ku Linux. Gwero la Linux lili ndi ma defconfigs amitundu yosiyanasiyana. Mutha kupeza yomwe mukufuna poyang'ana mwachindunji magwero apa. Mwachitsanzo, kwa beagle fupa wakuda bolodi mungathe sankhani config.

Gawo la phukusi la Target limakupatsani mwayi wosankha phukusi lomwe lidzayikidwe pamakina omwe akumangidwa. Tiyeni tizisiye osasintha pakadali pano. Tidzawonjezera phukusi lathu pamndandandawu pambuyo pake.
Zithunzi za Filesystem - mndandanda wazithunzi zamafayilo zomwe zidzasonkhanitsidwe. Onjezani chithunzi cha iso

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Bootloaders - kusankha kwa bootloaders kuti mutenge. Tiyeni tisankhe isolinix

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Kukonza Systemd

Systemd ikukhala imodzi mwazipilala za Linux, pamodzi ndi kernel ndi glibc. Chifukwa chake, ndidasuntha zoikamo zake ku chinthu china.

Zokonzedwa kudzera pa make menuconfig, kenako Target phukusi β†’ Zida zadongosolo β†’ systemd. Apa mutha kufotokoza kuti ndi ma systemd ati omwe adzayikidwe ndikuyambika pomwe dongosolo liyamba.

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Kusunga dongosolo kasinthidwe

Timasunga izi kudzera pa KConfig.

Kenako sungani defconfig yathu:

make savedefconfig

Kusintha kwa Linux Kernel

Kukonzekera kwa Linux kernel kumayendetsedwa ndi lamulo ili:

make linux-menuconfig

Tiyeni tiwonjezeko chithandizo cha khadi la kanema la Virtualbox

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Tiyeni tiwonjezere thandizo la kuphatikiza kwa Virtualbox Guest

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Sungani ndikutuluka. ZOFUNIKA: kasinthidwe adzasungidwa mu zotuluka/build/linux-$version/config, koma osati mu board/my_x86_board/linux.config

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Chifukwa chake, muyenera kukopera pamanja config kumalo osungira:

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

Pambuyo pake tidzachita kukonzanso kwathunthu kwa dongosolo lonse. buildroot samamanganso zomwe zamangidwa kale, muyenera kufotokozera pamanja paketi yomanganso. Kuti musataye nthawi ndi mitsempha, ndikosavuta kumanganso kachitidwe kakang'ono kotheratu):

make clean;make

Mukamaliza kumanga, yambitsani VirtualBox (yoyesedwa pamitundu 5.2 ndi 6.0) poyambira pa CD.

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Kuthamanga kuchokera ku iso yophatikizidwa:

Buildroot - gawo 1. Zambiri, kusonkhanitsa kachitidwe kakang'ono, kasinthidwe kudzera pa menyu

Mndandanda wazinthu zomwe zimagwiritsidwa ntchito

  1. Buku la Buidroot

Source: www.habr.com

Kuwonjezera ndemanga