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 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:
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 igimake <pkg>-graph-depends
kọ igi igbẹkẹle fun package kan patoBR2_GRAPH_OUT=png make graph-build
Idite Kọ akoko pẹlu PNG o wumake 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:
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 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:
Ṣiṣẹda ara rẹ ọkọ iṣeto ni
Fifi Board Files
Jẹ ki a wo atokọ ti awọn atunto:
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):
A tẹ apakan akọkọ Awọn aṣayan Ifojusi. Nibi o le yan faaji ibi-afẹde fun eyiti kikọ yoo ṣee ṣe.
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ẹ.
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:
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 (
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
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
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
Bootloaders – yiyan ti bootloaders lati gba. Jẹ ká yan isolinix
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ẹ.
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
Jẹ ki a ṣafikun atilẹyin isọpọ Alejo Virtualbox
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
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:
Lọlẹ lati isojọpọ:
Akojọ awọn ohun elo ti a lo
- Buildroot Afowoyi
orisun: www.habr.com