Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Pasiuna

Niini nga serye sa mga artikulo, gusto nakong tan-awon ang buildroot distribution build system ug ipaambit ang akong kasinatian sa pag-customize niini. Adunay praktikal nga kasinatian sa paghimo sa usa ka gamay nga OS nga adunay usa ka graphical nga interface ug gamay nga gamit.

Una sa tanan, dili nimo kinahanglan nga libugon ang sistema sa pagtukod ug ang pag-apod-apod. Ang Buildroot makahimo og usa ka sistema gikan sa usa ka hugpong sa mga pakete nga gitanyag niini. Ang Buildroot gitukod sa mga makefile ug busa adunay daghang mga kapabilidad sa pag-customize. Ilisan ang usa ka pakete sa lain nga bersyon, idugang ang imong kaugalingon nga pakete, usba ang mga lagda alang sa pagtukod sa usa ka pakete, ipasibo ang file system pagkahuman ma-install ang tanan nga mga pakete? buildroot makahimo sa tanan niini.

Sa Russia, gigamit ang buildroot, apan sa akong opinyon adunay gamay nga impormasyon sa Russian nga pinulongan alang sa mga nagsugod.

Ang tumong sa trabaho mao ang pag-assemble og distribution kit nga adunay live download, icewm interface ug browser. Ang target nga plataporma mao ang virtualbox.

Nganong magtukod kag kaugalingong distribution? Kasagaran limitado nga gamit ang gikinahanglan nga adunay limitado nga mga kapanguhaan. Mas kanunay sa automation kinahanglan nimo nga maghimo firmware. Ang pagpahiangay sa usa ka kinatibuk-ang katuyoan nga pag-apod-apod pinaagi sa paglimpyo sa wala kinahanglana nga mga pakete ug paghimo niini nga firmware labi ka kusog sa pagtrabaho kaysa paghimo usa ka bag-ong pag-apod-apod. Ang paggamit sa Gentoo adunay mga limitasyon usab.

Ang sistema sa Buildroot kusgan kaayo, apan wala’y mahimo alang kanimo. Makahimo lang kini ug ma-automate ang proseso sa asembliya.

Ang mga alternatibong sistema sa pagtukod (yocto, open build system ug uban pa) wala gikonsiderar o gitandi.

Asa kini makuha ug unsaon pagsugod

Website sa proyekto - buildroot.org. Dinhi mahimo nimong i-download ang kasamtangan nga bersyon ug basahon ang manwal. Didto makontak nimo ang komunidad, adunay bug tracker, mail-list ug irc channel.

Ang Buildroot naglihok sa mga defconfig alang sa target nga board sa pagtukod. Ang Defconfig usa ka configuration file nga nagtipig lamang sa mga opsyon nga walay default values. Siya ang nagtino kung unsa ang kolektahon ug kung giunsa. Sa kini nga kaso, mahimo nimong i-configure ang mga config sa busybox, linux-kernel, uglibc, u-boot ug barebox bootloader, apan silang tanan ihigot sa target board.
Pagkahuman sa pag-unpack sa na-download nga archive o pag-clone gikan sa git, nakakuha kami usa ka andam nga magamit nga buildroot. Mahimo nimong mabasa ang dugang bahin sa istruktura sa direktoryo sa manwal; Isulti ko kanimo ang bahin sa labing hinungdanon:

board - usa ka direktoryo nga adunay mga file nga piho sa matag board. Mahimo kini nga mga script alang sa pagporma sa mga imahe sa sistema (iso, sdcart, cpio ug uban pa), usa ka overlay nga direktoryo, kernel config, ug uban pa.
mga kombinasyon β€” ang aktuwal nga defconfig sa board. Ang Defconfig usa ka dili kompleto nga configuration sa board. Gitipigan lamang niini ang mga parameter nga lahi sa mga default setting
dl β€” direktoryo nga adunay na-download nga mga source code/file alang sa asembliya
output/target - ang gitigum nga sistema sa file sa resulta nga OS. Pagkahuman, ang mga imahe gihimo gikan niini alang sa pag-download / pag-install
output/host - host utilities alang sa asembliya
output/pagtukod - gitigum nga mga pakete

Ang asembliya gi-configure pinaagi sa KConfig. Ang sama nga sistema gigamit sa pagtukod sa Linux kernel. Listahan sa labing kasagarang gigamit nga mga sugo (ipatuman sa buildroot directory):

  • paghimo sa menuconfig - tawga ang pagtukod sa configuration. Mahimo usab nimo gamiton ang graphical interface (paghimo nconfig, paghimo xconfig, paghimo gconfig)
  • paghimo linux-menuconfig - tawga ang kernel configuration.
  • limpyo - limpyo ang mga resulta sa pagtukod (tanan nga gitipigan sa output)
  • paghimo - paghimo og sistema. Dili kini mag-reassemble sa natapok na nga mga proseso.
  • paghimo defconfig_name - ibalhin ang configuration sa usa ka piho nga defconfig
  • paghimo list-defconfigs - ipakita ang usa ka lista sa mga defconfig
  • paghimo tinubdan - i-download lang ang mga file sa pag-install, nga wala magtukod.
  • paghimo og tabang - ilista ang posible nga mga sugo

Importante nga mga nota ug makatabang nga mga tip

Ang Buildroot wala magtukod pag-usab sa mga pakete nga natukod na! Busa, ang usa ka sitwasyon mahimong motungha diin ang usa ka bug-os nga reassembly gikinahanglan.

Mahimo nimong tukuron ang usa ka separado nga pakete gamit ang mando paghimo packagename-rebuild. Pananglitan, mahimo nimong tukuron pag-usab ang Linux kernel:

make linux-rebuild

Gitipigan sa Buildroot ang kahimtang sa bisan unsang pakete pinaagi sa paghimo og .stamp nga mga file sa output/build/$packagename nga direktoryo:

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Busa, mahimo nimong tukuron pag-usab ang root-fs ug mga imahe nga wala magtukod pag-usab sa mga pakete:

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

Mapuslanon nga mga Variable

Ang buildroot adunay usa ka hugpong sa mga variable alang sa dali nga pag-configure

  • $TOPDIR - buildroot nga direktoryo
  • $BASEDIR - OUTPUT nga direktoryo
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR β€” host fs, staging fs, target fs magtukod og mga direktoryo.
  • $BUILD_DIR - direktoryo nga adunay wala maputos ug gitukod nga mga pakete

Paglaraw

Ang Buildroot adunay feature sa visualization. Makahimo ka og dependency diagram, build time graph, ug graph sa mga gidak-on sa package sa kataposang sistema. Ang mga resulta anaa sa porma sa mga pdf file (mahimo kang mopili gikan sa svn,png) sa output/graph directory.

Mga pananglitan sa visualization commands:

  • make graph-depends magtukod ug dependency tree
  • make <pkg>-graph-depends paghimo usa ka dependency tree alang sa usa ka piho nga pakete
  • BR2_GRAPH_OUT=png make graph-build plano sa pagtukod sa panahon uban sa PNG output
  • make graph-size gidak-on sa pakete

Mapuslanon nga mga script

Adunay usa ka subdirectory sa buildroot directory gamit uban sa mapuslanong mga script. Pananglitan, adunay usa ka script nga nagsusi sa pagkahusto sa mga paghulagway sa pakete. Mahimong mapuslanon kini kung magdugang sa imong kaugalingon nga mga pakete (buhaton ko kini sa ulahi). Ang file utils/readme.txt adunay usa ka paghulagway niini nga mga script.

Magtukod ta og stock distribution

Mahinungdanon nga hinumdoman nga ang tanan nga mga operasyon gihimo alang sa usa ka regular nga tiggamit, dili gamut.
Ang tanan nga mga sugo gipatuman sa buildroot. Ang buildroot nga pakete naglakip na sa usa ka set sa mga configuration alang sa daghang komon nga mga tabla ug virtualization.

Atong tan-awon ang listahan sa mga configuration:

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Pagbalhin sa qemu_x86_64_defconfig config

make qemu_x86_64_defconfig

Ug atong sugdan ang asembliya

make

Ang pagtukod malampuson nga nahuman, tan-awa ang mga resulta:

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Ang Buildroot nag-compile og mga hulagway nga mahimo nimong ipadagan sa Qemu ug pamatud-i nga kini nagtrabaho.

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

Ang resulta usa ka sistema nga nagdagan sa qemu:

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Paghimo sa imong kaugalingon nga pag-configure sa board

Pagdugang sa mga Board Files

Atong tan-awon ang listahan sa mga configuration:

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Sa lista atong makita ang pc_x86_64_efi_defconfig. Maghimo kami og among kaugalingong board pinaagi sa pagkopya niini gikan sa configuration:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Himoon dayon nato ang board directory aron tipigan ang atong mga script, rootfs-overlay ug uban pang gikinahanglang files:

mkdir board/my_x86_board

Pagbalhin sa kini nga defconfig:

make my_x86_board_defconfig

Busa, karon ang build config (gitipigan sa .config sa gamut sa buildroot directory) katumbas sa x86-64 legacy(bios) boot target machine.

Atong kopyahon ang linux-kernel configuration (mapuslanon sa ulahi):

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

Pag-set sa mga parameter sa pagtukod pinaagi sa KConfig

Atong sugdan ang setup:

make menuconfig 

Ang bintana sa KConfig moabli. Posible nga i-configure gamit ang usa ka graphical nga interface (paghimo nconfig, paghimo xconfig, paghimo gconfig):

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Gisulod namo ang unang seksyon nga Target Options. Dinhi mahimo nimong pilion ang target nga arkitektura kung diin himuon ang pagtukod.

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Mga kapilian sa pagtukod - adunay lainlaing mga setting sa pagtukod dinhi. Mahimo nimong ipiho ang mga direktoryo nga adunay mga source code, ang gidaghanon sa mga thread sa pagtukod, mga salamin alang sa pag-download sa mga source code ug uban pang mga setting. Ibilin nato ang mga setting sa default.

Toolchain - ang mga himan sa pagtukod mismo gi-configure dinhi. Basaha ang dugang bahin kaniya.

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Tipo sa Toolchain - tipo sa toolchain nga gigamit. Mahimo kini nga usa ka toolchain nga gitukod sa buildroot o usa ka eksternal (mahimo nimong ipiho ang direktoryo nga adunay natukod na o ang url alang sa pag-download). Adunay dugang nga mga kapilian alang sa lainlaing mga arkitektura. Pananglitan, alang sa bukton mahimo nimong pilion ang bersyon sa Linaro sa eksternal nga toolchain.

C library – pagpili sa C library. Ang operasyon sa tibuok sistema nagdepende niini. Kasagaran, gigamit ang glibc, nga nagsuporta sa tanan nga posible nga pagpaandar. Apan kini mahimong dako kaayo alang sa usa ka naka-embed nga sistema, mao nga ang uglibc o musl kanunay nga gipili. Pilion namon ang glibc (kinahanglan kini sa ulahi aron magamit ang systemd).

Mga Kernel Header ug Custom Kernel Header nga serye – kinahanglang motakdo sa bersyon sa kernel nga naa sa gitigom nga sistema. Alang sa mga header sa kernel, mahimo usab nimo ipiho ang agianan sa tarball o git repository.

GCC COMPILER VERSIONS – pilia ang compiler version nga gamiton sa pagtukod
I-enable ang suporta sa C++ - pilia ang pagtukod nga adunay suporta alang sa mga librarya sa C++ sa sistema. Kini mapuslanon kanato sa umaabot.

Dugang nga mga kapilian sa gcc – mahimo nimong itakda ang dugang nga mga kapilian sa compiler. Wala na namo kini kinahanglana sa pagkakaron.

Ang pagsumpo sa sistema nagtugot kanimo sa pagtakda sa umaabot nga mga parametro sa gibuhat nga sistema:

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Kadaghanan sa mga punto klaro gikan sa titulo. Atong hatagan ug pagtagad ang mosunod nga mga punto:
Path to the users tables - table with users to be created (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

Pananglitan nga file. Ang user user himoon gamit ang password admin, automatic gid/uid, /bin/sh shell, default group user, group member root, comment Foo user

[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 nga mga direktoryo - direktoryo nga gisapawan sa ibabaw sa gitigom nga target-fs. Nagdugang bag-ong mga file ug gipulihan ang mga naa na.

Pasadya nga mga script nga ipadagan sa dili pa maghimo mga imahe sa filesystem - Gipatuman dayon ang mga script sa wala pa ipilo ang filesystem ngadto sa mga imahe. Atong biyaan nga walay sulod ang script sa pagkakaron.

Adto ta sa seksyon sa Kernel

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Ang mga setting sa kernel gitakda dinhi. Ang kernel mismo gi-configure pinaagi sa paghimo sa linux-menuconfig.
Mahimo nimong itakda ang bersyon sa kernel sa lain-laing mga paagi: pagpili gikan sa mga gitanyag, pagsulod sa bersyon nga mano-mano, pagtino sa usa ka repositoryo o usa ka andam nga tarball.

Pag-configure sa kernel - agianan sa kernel config. Mahimo nimong pilion ang default configuration alang sa pinili nga arkitektura o defocnfig gikan sa Linux. Ang tinubdan sa Linux adunay usa ka set sa mga defconfig para sa lain-laing target nga sistema. Makita nimo ang imong gikinahanglan pinaagi sa direktang pagtan-aw sa mga tinubdan dinhi. Pananglitan, alang sa usa ka beagle bone black board mahimo nimo pilia ang config.

Ang seksyon sa Target nga mga pakete nagtugot kanimo sa pagpili kung unsang mga pakete ang i-install sa sistema nga gitukod. Pasagdi lang nato kini nga wala mausab sa pagkakaron. Idugang namon ang among mga pakete sa kini nga lista sa ulahi.
Mga imahe sa filesystem - usa ka lista sa mga imahe sa file system nga kolektahon. Pagdugang og iso image

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Mga Bootloader - pagpili sa mga bootloader nga kolektahon. Pilion nato ang isolinix

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Pag-configure sa Systemd

Ang Systemd nahimong usa sa mga haligi sa Linux, kauban ang kernel ug glibc. Busa, gibalhin nako ang setting niini sa usa ka lahi nga butang.

Gi-configure pinaagi sa paghimo sa menuconfig, dayon Target nga mga pakete β†’ Mga himan sa sistema β†’ systemd. Dinhi mahimo nimong mahibal-an kung unsang mga serbisyo sa system ang i-install ug magsugod kung magsugod ang sistema.

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Pag-save sa configuration sa sistema

Gitipigan namon kini nga config pinaagi sa KConfig.

Unya i-save ang among defconfig:

make savedefconfig

Pag-configure sa Linux Kernel

Ang configuration sa Linux kernel gisangpit uban sa mosunod nga sugo:

make linux-menuconfig

Atong idugang ang suporta alang sa Virtualbox video card

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Atong idugang ang suporta sa panagsama sa Virtualbox Guest

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Pag-save ug paggawas. IMPORTANTE: Ang configuration maluwas sa output/build/linux-$version/config, pero dili sa board/my_x86_board/linux.config

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Busa, kinahanglan nimo nga mano-mano nga kopyahon ang config sa usa ka lokasyon sa pagtipig:

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

Human niana atong ipahigayon ang usa ka kompletong reassembly sa tibuok nga sistema. Ang buildroot wala magtukod pag-usab kung unsa ang natukod na, kinahanglan nimo nga mano-mano nga ipiho ang mga pakete alang sa pagtukod pag-usab. Aron dili mag-usik sa oras ug nerbiyos, mas dali ang pagtukod pag-usab sa usa ka gamay nga sistema sa hingpit):

make clean;make

Pagkahuman sa pagtukod, ilunsad ang VirtualBox (gisulayan sa mga bersyon 5.2 ug 6.0) nga mag-boot gikan sa CD. Mga parameter sa sistema:

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Pagdagan gikan sa gitigum nga iso:

Buildroot - bahin 1. Kinatibuk-ang impormasyon, pag-assemble sa usa ka gamay nga sistema, pagsumpo pinaagi sa menu

Listahan sa mga materyales nga gigamit

  1. Manwal sa Buildroot

Source: www.habr.com

Idugang sa usa ka comment