Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Ifihan

Ninu jara ti awọn nkan, Mo fẹ lati wo eto kikọ pinpin pinpin buildroot ati pin iriri mi ni isọdi rẹ. Iriri ilowo yoo wa ni ṣiṣẹda OS kekere kan pẹlu wiwo ayaworan ati iṣẹ ṣiṣe to kere.

Ni akọkọ, o yẹ ki o ko daamu eto kikọ ati pinpin. Buildroot le kọ eto kan lati ṣeto awọn idii ti a nṣe si rẹ. Buildroot wa ni itumọ ti lori makefiles ati nitorina ni o ni awọn agbara isọdi nla. Rọpo package pẹlu ẹya miiran, ṣafikun package tirẹ, yi awọn ofin pada fun kikọ package kan, ṣe akanṣe eto faili lẹhin fifi sori gbogbo awọn idii? buildroot le ṣe gbogbo eyi.

Ni Russia, buildroot ti wa ni lilo, ṣugbọn ninu ero mi nibẹ ni kekere Russian-ede alaye fun olubere.

Ibi-afẹde ti iṣẹ naa ni lati ṣajọ ohun elo pinpin pẹlu igbasilẹ laaye, wiwo icewm ati ẹrọ aṣawakiri. Syeed ibi-afẹde jẹ apoti foju.

Kí nìdí kọ ara rẹ pinpin? Nigbagbogbo iṣẹ ṣiṣe to lopin nilo pẹlu awọn orisun to lopin. Paapaa diẹ sii nigbagbogbo ni adaṣe o nilo lati ṣẹda famuwia. Iyipada pinpin idi-gbogboogbo nipa mimọ awọn idii ti ko wulo ati yiyi pada si famuwia jẹ aladanla diẹ sii ju kikọ pinpin tuntun. Lilo Gentoo tun ni awọn idiwọn rẹ.

Eto Buildroot lagbara pupọ, ṣugbọn kii yoo ṣe ohunkohun fun ọ. O le nikan jeki ati ki o automate awọn ijọ ilana.

Awọn ọna ṣiṣe ikole yiyan (yocto, eto ṣiṣe ṣiṣi ati awọn miiran) ko ṣe akiyesi tabi ṣe afiwe.

Nibo ni lati gba ati bi o ṣe le bẹrẹ

Oju opo wẹẹbu ise agbese - buildroot.org. Nibi o le ṣe igbasilẹ ẹya ti isiyi ati ka iwe afọwọkọ naa. Nibẹ o le kan si agbegbe, olutọpa kokoro kan wa, awọn atokọ meeli ati ikanni irc kan.

Buildroot nṣiṣẹ defconfigs fun awọn afojusun ọkọ ti awọn Kọ. Defconfig jẹ faili iṣeto ni ti o tọju awọn aṣayan nikan ti ko ni awọn iye aiyipada. O jẹ ẹniti o pinnu ohun ti yoo gba ati bii. Ni ọran yii, o le tunto lọtọ awọn atunto ti busybox, linux-kernel, uglibc, u-boot ati awọn bootloaders barebox, ṣugbọn gbogbo wọn ni yoo so mọ igbimọ ibi-afẹde.
Lẹhin ṣiṣi silẹ pamosi ti o gbasilẹ tabi ẹda oniye lati git, a ni ipilẹ-lati-lo buildroot. O le ka diẹ sii nipa ilana ilana ninu itọnisọna; Emi yoo sọ fun ọ nipa awọn pataki julọ:

ọkọ - itọsọna kan pẹlu awọn faili ni pato si igbimọ kọọkan. Iwọnyi le jẹ awọn iwe afọwọkọ fun ṣiṣẹda awọn aworan eto (iso, sdcart, cpio ati awọn miiran), itọsọna agbekọja, atunto ekuro, ati bẹbẹ lọ.
awọn atunto - gangan defconfig ti awọn ọkọ. Defconfig jẹ iṣeto igbimọ ti ko pe. O tọju awọn paramita nikan ti o yatọ si awọn eto aiyipada
dl - itọsọna pẹlu awọn koodu orisun ti o gbasilẹ / awọn faili fun apejọ
o wu / afojusun - eto faili ti o pejọ ti OS ti o yọrisi. Lẹhinna, awọn aworan ti ṣẹda lati inu rẹ fun igbasilẹ / fifi sori ẹrọ
o wu / ogun - ogun igbesi fun ijọ
o wu / kọ - jọ jo

Apejọ naa ti tunto nipasẹ KConfig. Eto kanna ni a lo lati kọ ekuro Linux. Atokọ ti awọn aṣẹ ti o wọpọ julọ ti a lo (ṣe ṣiṣẹ ninu itọsọna buildroot):

  • ṣe menuconfig - pe iṣeto ni Kọ. O tun le lo wiwo ayaworan (ṣe nconfig, ṣe xconfig, ṣe gconfig)
  • ṣe linux-menuconfig - pe ekuro iṣeto ni.
  • jẹ mimọ - nu awọn abajade kikọ (gbogbo ohun ti o fipamọ sinu iṣelọpọ)
  • ṣe - kọ eto kan. Eyi ko tun ṣajọpọ awọn ilana ti o ti ṣajọpọ tẹlẹ.
  • ṣe defconfig_name - yipada iṣeto si defconfig kan pato
  • ṣe akojọ-defconfigs - ṣafihan atokọ ti awọn defconfigs
  • ṣe orisun - kan ṣe igbasilẹ awọn faili fifi sori ẹrọ, laisi kikọ.
  • ṣe iranlọwọ - ṣe atokọ awọn aṣẹ ti o ṣeeṣe

Awọn akọsilẹ pataki ati awọn imọran iranlọwọ

Buildroot ko tun ṣe awọn idii ti o ti kọ tẹlẹ! Nitorina, ipo kan le dide nibiti o nilo atunṣe pipe.

O le tun package lọtọ ṣe pẹlu aṣẹ ṣe packagename-atunṣe. Fun apẹẹrẹ, o le tun ekuro Linux kọ:

make linux-rebuild

Buildroot tọju ipo ti package eyikeyi nipa ṣiṣẹda awọn faili .stamp ninu iṣẹjade / kọ / $ packagename directory:

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Nitorinaa, o le tun awọn root-fs ati awọn aworan ṣe laisi awọn idii atunkọ:

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

Wulo Oniyipada

buildroot ni o ni kan ti ṣeto ti oniyipada fun rorun iṣeto ni

  • $TOPDIR - buildroot liana
  • $ BASEDIR - OUTPUT liana
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR — fs agbalejo, awọn eto fs, afojusun fs kọ awọn ilana.
  • $BUILD_DIR - itọsọna pẹlu awọn idii ti a ko kojọpọ ati ti a ṣe

Wiwo

buildroot ni ẹya iworan kan. Awọn abajade wa ni irisi awọn faili pdf (o le yan lati svn, png) ninu ilana iṣelọpọ / awọn aworan.

Awọn apẹẹrẹ ti awọn pipaṣẹ iworan:

  • make graph-depends kọ gbára igi
  • make <pkg>-graph-depends kọ igi igbẹkẹle fun package kan pato
  • BR2_GRAPH_OUT=png make graph-build Idite Kọ akoko pẹlu PNG o wu
  • make graph-size Idite soso iwọn

Awọn iwe afọwọkọ ti o wulo

Itọsọna abẹlẹ kan wa ninu itọsọna buildroot awọn ohun elo pẹlu wulo iwe afọwọkọ. Fun apẹẹrẹ, iwe afọwọkọ kan wa ti o ṣayẹwo deede ti awọn apejuwe package. Eyi le wulo nigbati o ba ṣafikun awọn idii tirẹ (Emi yoo ṣe eyi nigbamii). Faili utils/readme.txt ni ijuwe ti awọn iwe afọwọkọ wọnyi ninu.

Jẹ ká kọ kan iṣura pinpin

O ṣe pataki lati ranti pe gbogbo awọn iṣẹ ṣiṣe ni a ṣe ni ipo olumulo deede, kii ṣe gbongbo.
Gbogbo awọn aṣẹ ti wa ni ṣiṣe ni buildroot. Apopọ buildroot tẹlẹ pẹlu ṣeto awọn atunto fun ọpọlọpọ awọn igbimọ ti o wọpọ ati agbara ipa.

Jẹ ki a wo atokọ ti awọn atunto:

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Yipada si qemu_x86_64_defconfig konfigi

make qemu_x86_64_defconfig

Ati pe a bẹrẹ apejọ naa

make

Ikọle naa ti pari ni aṣeyọri, wo awọn abajade:

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Buildroot ti ṣajọ awọn aworan ti o le ṣiṣẹ ni Qemu ati rii daju pe wọn ṣiṣẹ.

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

Abajade jẹ eto ti n ṣiṣẹ ni qemu:

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Ṣiṣẹda ara rẹ ọkọ iṣeto ni

Fifi Board Files

Jẹ ki a wo atokọ ti awọn atunto:

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Ninu atokọ ti a rii pc_x86_64_efi_defconfig. A yoo ṣẹda igbimọ tiwa nipa didakọ rẹ lati iṣeto:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Jẹ ki a ṣẹda itọsọna igbimọ lẹsẹkẹsẹ lati tọju awọn iwe afọwọkọ wa, rootfs-overlay ati awọn faili pataki miiran:

mkdir board/my_x86_board

Yipada si defconfig yii:

make my_x86_board_defconfig

Nitorinaa, ni bayi atunto kọ (ti o fipamọ sinu .config ni gbongbo ti itọsọna buildroot) ni ibamu si ẹrọ ibi-afẹde bata x86-64 (bios).

Jẹ ki a daakọ iṣeto ni linux-kernel (wulo nigbamii):

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

Ṣiṣeto awọn ipilẹ kikọ nipasẹ KConfig

Jẹ ki a bẹrẹ iṣeto:

make menuconfig 

Ferese KConfig yoo ṣii. O ṣee ṣe lati tunto pẹlu wiwo ayaworan (ṣe nconfig, ṣe xconfig, ṣe gconfig):

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

A tẹ apakan akọkọ Awọn aṣayan Ifojusi. Nibi o le yan faaji ibi-afẹde fun eyiti kikọ yoo ṣee ṣe.

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Awọn aṣayan Kọ - ọpọlọpọ awọn eto kikọ wa nibi. O le pato awọn ilana pẹlu awọn koodu orisun, nọmba awọn okun kikọ, awọn digi fun igbasilẹ awọn koodu orisun ati awọn eto miiran. Jẹ ki a fi awọn eto silẹ ni aiyipada.

Ohun elo irinṣẹ - awọn irinṣẹ kikọ funrararẹ ni tunto nibi. Ka siwaju sii nipa rẹ.

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Iru irin-irinṣẹ – iru ẹrọ irinṣẹ ti a lo. Eyi le jẹ ohun elo irinṣẹ ti a ṣe sinu buildroot tabi ọkan ita (o le pato ilana naa pẹlu ọkan ti a ti kọ tẹlẹ tabi url fun igbasilẹ). Awọn aṣayan afikun wa fun oriṣiriṣi awọn faaji. Fun apẹẹrẹ, fun apa o le nirọrun yan ẹya Linaro ti ẹwọn irinṣẹ ita.

Ile-ikawe C – yiyan ti ile-ikawe C. Iṣiṣẹ ti gbogbo eto da lori eyi. Ni deede, glibc lo, eyiti o ṣe atilẹyin gbogbo iṣẹ ṣiṣe. Ṣugbọn o le tobi ju fun eto ifibọ, nitorina uglibc tabi musl nigbagbogbo yan. A yoo yan glibc (eyi yoo nilo nigbamii lati lo systemd).

Awọn akọle Kernel ati Aṣa Awọn akọle Kernel - gbọdọ baramu ẹya ti ekuro ti yoo wa ninu eto ti o pejọ. Fun awọn akọle kernel, o tun le pato ọna si bọọlu afẹsẹgba tabi ibi ipamọ git.

GCC COMPILER VERSIONS – yan ẹya alakojo lati ṣee lo fun kikọ
Mu atilẹyin C ++ ṣiṣẹ – yan lati kọ pẹlu atilẹyin fun awọn ile-ikawe C ++ ninu eto naa. Eyi yoo wulo fun wa ni ojo iwaju.

Awọn aṣayan gcc ni afikun – o le ṣeto awọn aṣayan akojọpọ afikun. A ko nilo rẹ fun bayi.

Iṣeto ni eto gba ọ laaye lati ṣeto awọn aye iwaju ti eto ti o ṣẹda:

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Pupọ julọ awọn aaye jẹ kedere lati akọle. Jẹ ki a san ifojusi si awọn aaye wọnyi:
Ọna si awọn tabili awọn olumulo - tabili pẹlu awọn olumulo lati ṣẹda (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Faili apẹẹrẹ. Olumulo olumulo yoo ṣẹda pẹlu abojuto ọrọ igbaniwọle, gid/uid laifọwọyi, / bin/sh ikarahun, olumulo ẹgbẹ aiyipada, gbongbo ọmọ ẹgbẹ ẹgbẹ, asọye Foo olumulo

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

Gbongbo filesystem awọn ilana agbekọja – ilana bò lori oke afojusun-fs ti o pejọ. Ṣafikun awọn faili titun ati rọpo awọn ti o wa tẹlẹ.

Awọn iwe afọwọkọ aṣa lati ṣiṣẹ ṣaaju ṣiṣẹda awọn aworan eto faili - Awọn iwe afọwọkọ ti ṣiṣẹ lẹsẹkẹsẹ ṣaaju kika faili faili sinu awọn aworan. Jẹ ki a fi iwe afọwọkọ silẹ ni ofo fun bayi.

Jẹ ki a lọ si apakan Kernel

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Awọn eto ekuro ti ṣeto nibi. Ekuro funrararẹ jẹ tunto nipasẹ ṣiṣe linux-menuconfig.
O le ṣeto ẹya ekuro ni awọn ọna oriṣiriṣi: yan lati awọn ti a funni, tẹ ẹya sii pẹlu ọwọ, pato ibi ipamọ kan tabi bọọlu ti o ti ṣetan.

Eto ekuro - ọna si atunto ekuro. O le yan iṣeto aiyipada fun faaji ti o yan tabi defocnfig lati Lainos. Orisun Lainos ni ṣeto awọn defconfigs fun oriṣiriṣi awọn eto ibi-afẹde. O le wa eyi ti o nilo nipa wiwo taara ni awọn orisun nibi. Fun apẹẹrẹ, fun igbimọ dudu egungun beagle o le yan atunto.

Abala awọn idii Àkọlé gba ọ laaye lati yan iru awọn idii ti yoo fi sori ẹrọ lori eto ti a kọ. Jẹ ki a fi silẹ lai yipada fun bayi. A yoo ṣafikun awọn idii wa si atokọ yii nigbamii.
Awọn aworan eto faili – atokọ ti awọn aworan eto faili ti yoo gba. Fi aworan iso kun

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Bootloaders – yiyan ti bootloaders lati gba. Jẹ ká yan isolinix

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Tito leto Systemd

Systemd n di ọkan ninu awọn ọwọn Linux, pẹlu ekuro ati glibc. Nitorinaa, Mo gbe eto rẹ si nkan lọtọ.

Tunto nipasẹ ṣiṣe menuconfig, lẹhinna awọn idii Àkọlé → Awọn irinṣẹ eto → systemd. Nibi o le pato iru awọn iṣẹ eto ti yoo fi sori ẹrọ ati bẹrẹ nigbati eto ba bẹrẹ.

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Nfifipamọ awọn eto iṣeto ni

A fipamọ atunto yii nipasẹ KConfig.

Lẹhinna fipamọ defconfig wa:

make savedefconfig

Iṣeto ni Ekuro Linux

Iṣeto kernel Linux jẹ ipe pẹlu aṣẹ atẹle:

make linux-menuconfig

Jẹ ki a ṣafikun atilẹyin fun kaadi fidio Virtualbox

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Jẹ ki a ṣafikun atilẹyin isọpọ Alejo Virtualbox

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Fipamọ ati jade. NIPA: iṣeto ni yoo wa ni fipamọ ni o wu / kọ / Linux- $ version / konfigi, sugbon ko ni ọkọ / my_x86_board/linux.config

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Nitorinaa, o nilo lati daakọ atunto pẹlu ọwọ si ipo ibi ipamọ kan:

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

Lẹhin eyi a yoo ṣe atunṣe pipe ti gbogbo eto naa. buildroot ko tun ohun ti a ti kọ tẹlẹ, o gbọdọ pẹlu ọwọ pato awọn idii fun Títún. Ni ibere ki o má ba padanu akoko ati awọn ara, o rọrun lati tun eto kekere kan ṣe patapata):

make clean;make

Ni ipari ti ikole, ṣe ifilọlẹ VirtualBox (idanwo lori awọn ẹya 5.2 ati 6.0) gbigba lati CD. Awọn paramita eto:

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Lọlẹ lati isojọpọ:

Buildroot - apakan 1. Gbogbogbo alaye, Nto a pọọku eto, iṣeto ni nipasẹ awọn akojọ

Akojọ awọn ohun elo ti a lo

  1. Buildroot Afowoyi

orisun: www.habr.com

Fi ọrọìwòye kun