Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Nhanganyaya

Mune ino nhevedzano yezvinyorwa, ini ndinoda kutarisa iyo buildroot yekugovera kuvaka system uye kugovera ruzivo rwangu mukuigadzirisa. Pachave neruzivo runoshanda mukugadzira diki OS ine graphical interface uye kushoma kushanda.

Chekutanga pane zvese, haufanirwe kuvhiringa iyo kuvaka system uye kugovera. Buildroot inogona kuvaka sisitimu kubva kune seti yemapakeji inopihwa kwairi. Buildroot yakavakirwa pane makefiles uye nekudaro ine hukuru hwekugadzirisa hunyanzvi. Tsiva pasuru neimwe vhezheni, wedzera yako pasuru, shandura mitemo yekuvaka pasuru, gadzirisa iyo faira system mushure mekuisa ese mapakeji? buildroot inogona kuita zvese izvi.

MuRussia, buildroot inoshandiswa, asi mukuona kwangu kune ruzivo ruduku rwemutauro weRussia kune vanotanga.

Chinangwa chebasa ndechekuunganidza kit yekugovera ine live download, icewm interface uye browser. Iyo inonangwa chikuva ndeye virtualbox.

Sei uchigadzira yako yekugovera? Kazhinji kushanda kushoma kunodiwa nezvinhu zvishoma. Kunyanya kazhinji mune otomatiki iwe unofanirwa kugadzira firmware. Kugadzirisa kugovera-chinangwa-chakawanda nekuchenesa kunze zvisina basa mapakeji uye nekuishandura kuita firmware inonyanya kushanda pane kuvaka kugovera kutsva. Kushandisa Gentoo zvakare kune painogumira.

Iyo Buildroot system ine simba kwazvo, asi haina chainokuitira. Inogona chete kugonesa uye otomatiki maitiro egungano.

Alternative kuvaka masisitimu (yocto, yakavhurika kuvaka sisitimu uye nevamwe) haina kutariswa kana kuenzaniswa.

Ndokuiwanepi uye wotanga sei

Project webhusaiti - buildroot.org. Pano unogona kudhawunirodha yazvino vhezheni uye kuverenga bhuku rekushandisa. Ikoko iwe unogona kubata nharaunda, kune bug tracker, tsamba-rondedzero uye irc chiteshi.

Buildroot inoshanda defconfigs yechinangwa chebhodhi rekuvaka. Defconfig iyi faira yekumisikidza inochengeta chete sarudzo dzisina maitiro ekutanga. Ndiye anosarudza zvichaunganidzwa uye sei. Muchiitiko ichi, unogona kupatsanura magadzirirwo ebhokisi rakabatikana, linux-kernel, uglibc, u-boot uye barebox bootloaders, asi ese anosungirirwa kune chinangwa chebhodhi.
Mushure mekusunungura iyo yakadhindwa archive kana cloning kubva git, tinowana yakagadzirira-kushandisa-buildroot. Iwe unogona kuverenga zvakawanda nezve dhairekitori chimiro mugwaro rekushandisa; Ini ndichakuudza nezve akanyanya kukosha:

bhodhi - dhairekitori rine mafaera akananga kubhodhi rega rega. Izvi zvinogona kuve zvinyorwa zvekugadzira system mifananidzo (iso, sdcart, cpio nevamwe), dhairekitori repamusoro, kernel config, nezvimwe.
configs - iyo chaiyo defconfig yebhodhi. Defconfig haina kukwana bhodhi gadziriro. Inochengeta chete ma parameter akasiyana kubva kune default marongero
dl - dhairekitori ine yakadhindwa kodhi makodhi / mafaera ekusangana
kubuda/chinangwa - iyo yakaunganidzwa faira sisitimu yeinozobuda OS. Zvadaro, mifananidzo inogadzirwa kubva pairi yekurodha/kuisa
kubuda/kugamuchira - shandisa zvinoshandiswa pakusangana
kubuda/kuvaka - akaunganidzwa mapakeji

Iyo gungano inogadziriswa kuburikidza neKConfig. Iyo yakafanana sisitimu inoshandiswa kuvaka iyo Linux kernel. Rondedzero yemirairo inonyanya kushandiswa (ita mubuilroot dhairekitori):

  • gadzira menyuconfig - fonera iyo kuvaka gadziriso. Iwe unogona zvakare kushandisa iyo graphical interface (ita nconfig, ita xconfig, ita gconfig)
  • gadzira linux-menuconfig - fonera iyo kernel kumisikidza.
  • chenesa - chenesa mhedzisiro yekuvaka (zvese zvakachengetwa mukubuda)
  • kugadzira - kuvaka system. Izvi hazvisanganise maitiro atounganidzwa.
  • ita defconfig_name - shandura iyo gadziriso kune chaiyo defconfig
  • ita runyoro-defconfigs - ratidza runyorwa rwe defconfigs
  • make source - ingo tora mafaera ekuisa, pasina kuvaka.
  • ita rubatsiro - nyora zvinogoneka mirairo

Zvinyorwa zvakakosha uye mazano anobatsira

Buildroot haivakezve mapakeji akatovakwa! Nokudaro, mamiriro ezvinhu anogona kuitika apo kuunganazve kwakakwana kunodiwa.

Iwe unogona kuvaka patsva pasuru yakaparadzana nemirairo ita packagename-kuvakazve. Semuenzaniso, unogona kuvakazve iyo Linux kernel:

make linux-rebuild

Buildroot inochengetedza mamiriro echero package nekugadzira .stamp mafaera mune zvinobuda/kuvaka/$packagename dhairekitori:

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Naizvozvo, iwe unogona kuvakazve midzi-fs uye mifananidzo pasina kuvakazve mapakeji:

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

Inobatsira Variables

buildroot ine seti yezvakasiyana kuti zvigadziriswe zviri nyore

  • $TOPDIR - buildroot directory
  • $BASEDIR - OUTPUT directory
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - host fs, staging fs, target fs kuvaka madhairekitori.
  • $BUILD_DIR - dhairekitori ine isina kurongedzerwa uye yakavakwa mapakeji

Kufungidzira

Buildroot ine chimiro chekuona. Unogona kuvaka dhayagiramu yekutsamira, girafu yenguva yekuvaka, uye girafu yemasaizi epasuru mune yekupedzisira system. Mhedzisiro yacho iri muchimiro chepdf mafaera (unogona kusarudza kubva svn, png) mune inobuda / girafu dhairekitori.

Mienzaniso yemirairo yekuona:

  • make graph-depends kuvaka kutsamira muti
  • make <pkg>-graph-depends gadzira muti wekutsamira kune chaiyo package
  • BR2_GRAPH_OUT=png make graph-build kuronga kuvaka nguva nePNG kubuda
  • make graph-size saizi yepakiti yepakiti

Zvinyorwa zvinobatsira

Iko kune subdirectory mune iyo buildroot dhairekitori zvishandiso nemagwaro anobatsira. Semuenzaniso, pane script inotarisa kurongeka kwepakeji tsananguro. Izvi zvinogona kubatsira kana uchiwedzera ako mapakeji (ini ndichaita izvi gare gare). Iyo faira utils/readme.txt ine tsananguro yezvinyorwa izvi.

Ngativake kugovera kwemasheya

Zvakakosha kuyeuka kuti mabasa ese anoitwa pachinzvimbo chemushandisi wenguva dzose, kwete mudzi.
Yese mirairo inoitwa mubuildroot. Iyo buildroot package inotosanganisira seti yezvigadziriso zveakawanda akajairwa mabhodhi uye virtualization.

Ngatitarisei runyoro rwemagadzirirwo:

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Chinja kune qemu_x86_64_defconfig config

make qemu_x86_64_defconfig

Uye tinotanga gungano

make

Kuvaka kunopera zvinobudirira, tarisa mhinduro:

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Buildroot yakaunganidza mifananidzo yaunogona kumhanya muQemu uye kuona kuti inoshanda.

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

Mhedzisiro iyi system inoshanda muqemu:

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Kugadzira yako bhodhi configuration

Kuwedzera Board Files

Ngatitarisei runyoro rwemagadzirirwo:

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Muchinyorwa tinoona pc_x86_64_efi_defconfig. Isu tichagadzira yedu bhodhi nekuikopa kubva pakumisikidzwa:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Ngatitangei nekukasika dhairekitori rekuchengetedza magwaro edu, rootfs-overlay uye mamwe mafaera anodiwa:

mkdir board/my_x86_board

Chinja kune iyi defconfig:

make my_x86_board_defconfig

Saka, ikozvino kuvaka config (yakachengetwa mu .config mumudzi webuildroot directory) inoenderana ne x86-64 legacy (bios) boot target machine.

Ngatitevedzere iyo linux-kernel kumisikidzwa (inobatsira gare gare):

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

Kuseta kuvaka paramita kuburikidza neKConfig

Ngatitange kuseta:

make menuconfig 

Hwindo reKConfig richavhurika. Zvinogoneka kugadzirisa neiyo graphical interface (ita nconfig, ita xconfig, ita gconfig):

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Tinopinda chikamu chekutanga Target Options. Pano iwe unogona kusarudza chinangwa chekuvaka icho chivakwa chichaitwa.

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Kuvaka sarudzo - kune akasiyana ekuvaka marongero pano. Iwe unogona kutsanangura madhairekitori ane masource codes, nhamba yekuvaka tambo, magirazi ekurodha masosi macode uye mamwe marongero. Ngatisiye zvigadziriso pazvimiro.

Toolchain - iwo maturusi ekuvaka pachawo akagadzirirwa pano. Verenga zvakawanda nezvake.

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Toolchain mhando - rudzi rwechishandiso chinoshandiswa. Ichi chinogona kuve chishandiso chakavakirwa mubuildroot kana chekunze (unogona kutsanangura dhairekitori neyakatovakwa kana url yekurodha). Pane zvimwe zvingasarudzwa zvezvivakwa zvakasiyana. Semuenzaniso, kune ruoko iwe unogona kungosarudza iyo Linaro vhezheni yekunze toolchain.

C library - kusarudzwa kweraibhurari yeC. Kushanda kwehurongwa hwose kunoenderana neizvi. Kazhinji glibc inoshandiswa, iyo inotsigira zvese zvinogoneka kushanda. Asi inogona kunge yakakurisa kune yakamisikidzwa system, saka uglibc kana musl inowanzosarudzwa. Isu tichasarudza glibc (izvi zvichazodiwa gare gare kushandisa systemd).

Kernel Misoro uye Tsika Kernel Misoro yakatevedzana - inofanirwa kuenderana neshanduro yekernel ichave iri muhurongwa hwakaunganidzwa. Kune misoro yekernel, unogona zvakare kutsanangura nzira inoenda kune tarball kana git repository.

GCC COMPILER VERSIONS - sarudza iyo compiler vhezheni ichashandiswa pakuvaka
Gonesa C ++ rutsigiro - sarudza kuvaka nerutsigiro rweC ++ maraibhurari muhurongwa. Izvi zvichatibatsira mune ramangwana.

Yekuwedzera gcc sarudzo - iwe unogona kuseta yekuwedzera compiler sarudzo. Hatichida parizvino.

Kugadziriswa kweSistimu kunobvumidza iwe kuseta ramangwana paramita yeyakagadzirwa system:

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Zvizhinji zvezvibodzwa zvakajeka kubva mumusoro. Ngatitarisei kune zvinotevera pfungwa:
Nzira kumatafura evashandisi - tafura ine vashandisi kuti igadzirwe (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Muenzaniso faira. Mushandisi wemushandisi achagadzirwa nepassword admin, otomatiki gid/uid, / bin/sh shell, default boka mushandisi, nhengo yeboka mudzi, comment Foo mushandisi.

[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 madhairekitori - dhairekitori rakafukidzwa pamusoro peakaungana chinangwa-fs. Inowedzera mafaera matsva uye inotsiva iripo.

Tsika magwaro ekuti umhanye usati wagadzira mafaera emifananidzo - Magwaro anoitwa pakarepo asati apeta iyo faira system mumifananidzo. Ngatisiye script isina chinhu izvozvi.

Handei kuchikamu cheKernel

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Kernel marongero akaiswa pano. Iyo kernel pachayo inogadziriswa kuburikidza nekuita linux-menuconfig.
Iwe unogona kuseta iyo kernel vhezheni nenzira dzakasiyana: sarudza kubva kune izvo zvinopihwa, isa iyo vhezheni nemaoko, tsanangura repository kana tarball yakagadzirira.

Kernel kumisikidzwa - nzira kune iyo kernel config. Iwe unogona kusarudza iyo yekumisikidzwa kweiyo yakasarudzwa dhizaini kana defocnfig kubva kuLinux. Iyo Linux sosi ine seti ye defconfigs kune akasiyana anotangwa masisitimu. Unogona kuwana waunoda nekutarisa zvakananga kune zvinyorwa pano. Semuenzaniso, kune beagle bone dema bhodhi iwe unogona sarudza config.

Iyo Target mapakeji chikamu chinokubvumira kuti usarudze kuti ndeapi mapakeji achaiswa pane iyo system iri kuvakwa. Ngatizvisiye zvisina kuchinja izvozvi. Tichawedzera mapakeji edu kune iyi runyorwa gare gare.
Filesystem mifananidzo - runyoro rwefaira system mifananidzo inozounganidzwa. Wedzera mufananidzo we iso

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Bootloaders - kusarudzwa kwema bootloaders kuunganidza. Ngatisarudzei isolinix

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Kugadzirisa Systemd

Systemd iri kuita imwe yembiru dzeLinux, pamwe nekernel uye glibc. Naizvozvo, ndakatamisa marongero ayo kune chimwe chinhu chakasiyana.

Yakagadzirirwa kuburikidza nekugadzira menuconfig, ipapo Target mapakeji β†’ System zvishandiso β†’ systemd. Pano unogona kutsanangura kuti ndeapi masevhisi esystemd achaiswa uye otangwa kana sisitimu yatanga.

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Kuchengetedza masisitimu ehurongwa

Isu tinochengetedza iyi config kuburikidza neKConfig.

Zvadaro chengetedza defconfig yedu:

make savedefconfig

Linux Kernel Configuration

Iyo Linux kernel kumisikidzwa inokumbirwa nemurairo unotevera:

make linux-menuconfig

Ngatiwedzerei rutsigiro rweVirtualbox vhidhiyo kadhi

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Ngatiwedzerei Virtualbox Guest yekubatanidza rutsigiro

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Sevha uye buda. ZVINOKOSHA: gadziriso ichachengetwa mukubuda/kuvaka/linux-$version/config, asi kwete mubhodhi/my_x86_board/linux.config

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Naizvozvo, iwe unofanirwa kukopa nemaoko config kunzvimbo yekuchengetedza:

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

Mushure mezvo tichaita reassembly yakakwana yehurongwa hwose. buildroot haivake zvakare izvo zvakatovakwa, iwe unofanirwa kutsanangura nemaoko mapakeji ekuvakazve. Kuti usatambise nguva uye tsinga, zviri nyore kuvakazve diki system zvachose):

make clean;make

Kana wapedza kuvaka, tanga VirtualBox (yakaedzwa pashanduro 5.2 uye 6.0) kutanga kubva kuCD.

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Kumhanya kubva kune yakaunganidzwa iso:

Buildroot - chikamu 1. Ruzivo rwese, kuunganidza diki system, gadziriso kuburikidza nemenyu

Rondedzero yezvinhu zvakashandiswa

  1. Buidroot manual

Source: www.habr.com

Voeg