Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Introduzione

In questa serie di articuli, vogliu vede u sistema di creazione di distribuzione di buildroot è sparte a mo sperienza in persunalizà. Ci sarà una sperienza pratica in a creazione di un picculu OS cù una interfaccia grafica è funziunalità minima.

Prima di tuttu, ùn deve micca cunfundà u sistema di custruzzione è a distribuzione. Buildroot pò custruisce un sistema da un inseme di pacchetti chì sò offerti à ellu. Buildroot hè custruitu nantu à i makefiles è dunque hà enormi capacità di persunalizazione. Sustituisce un pacchettu cù una altra versione, aghjunghje u vostru propiu pacchettu, cambiate e regule per custruisce un pacchettu, persunalizà u sistema di fugliale dopu avè installatu tutti i pacchetti? buildroot pò fà tuttu questu.

In Russia, buildroot hè utilizatu, ma in u mo scusa ci hè pocu infurmazione in lingua russa per i principianti.

U scopu di u travagliu hè di assemblà un kit di distribuzione cù scaricamentu live, interfaccia icewm è navigatore. A piattaforma di destinazione hè virtualbox.

Perchè custruisce a vostra propria distribuzione? Spessu una funziunalità limitata hè necessaria cù risorse limitate. Ancu più spessu in l'automatizazione avete bisognu di creà firmware. L'adattazione di una distribuzione generale per purificà i pacchetti innecessarii è trasfurmendu in firmware hè più intensivu di travagliu chè a custruisce una nova distribuzione. Utilizà Gentoo hà ancu e so limitazioni.

U sistema Buildroot hè assai putente, ma ùn farà nunda per voi. Puderà solu attivà è automatizà u prucessu di assemblea.

Sistemi di custruzzione alternativu (yocto, sistema di custruzzione aperta è altri) ùn sò micca cunsiderati o paragunati.

Induve uttene è cumu principià

U situ di u prughjettu - buildroot.org. Quì pudete scaricà a versione attuale è leghje u manuale. Quì pudete cuntattà a cumunità, ci hè un bug tracker, mail-lists è un canale irc.

Buildroot opera defconfigs per a tavola di destinazione di a custruzione. Defconfig hè un schedariu di cunfigurazione chì guarda solu opzioni chì ùn anu micca valori predeterminati. Hè ellu chì determina ciò chì serà recullatu è cumu. In questu casu, pudete cunfigurà separatamente i cunfigurazioni di busybox, linux-kernel, uglibc, u-boot è barebox bootloaders, ma tutti seranu ligati à u pianu di destinazione.
Dopu avè sbulicatu l'archiviu scaricatu o a clonazione da git, avemu un buildroot prontu per aduprà. Pudete leghje più nantu à a struttura di u repertoriu in u manuale; vi dicu i più impurtanti:

bordu - un repertoriu cù schedarii specifichi per ogni bordu. Questi ponu esse scripts per furmà l'imaghjini di u sistema (iso, sdcart, cpio è altri), un repertoriu overlay, cunfigurazione di kernel, etc.
cunfrunti - a defconfig attuale di u bordu. Defconfig hè una cunfigurazione di scheda incompleta. Memorizza solu paràmetri chì differenu da i paràmetri predeterminati
dl - repertoriu cù codici fonte / fugliali scaricati per l'assemblea
output/destinazione - u sistema di fugliale assemblatu di u SO risultatu. In seguitu, l'imaghjini sò creati da ellu per scaricamentu / installazione
output/host - utilità d'ospiti per l'assemblea
output/build - pacchetti assemblati

L'assemblea hè cunfigurata via KConfig. U listessu sistema hè utilizatu per custruisce u kernel Linux. Lista di i cumandamenti più cumunimenti usati (eseguite in u cartulare buildroot):

  • fate menuconfig - chjamate a cunfigurazione di creazione. Pudete ancu aduprà l'interfaccia gràfica (make nconfig, make xconfig, make gconfig)
  • fate linux-menuconfig - chjamate a cunfigurazione di u kernel.
  • rende pulita - pulisce i risultati di custruzzione (tuttu ciò chì hè almacenatu in output)
  • fà - custruisce un sistema. Questu ùn riunisce micca i prucessi digià assemblati.
  • make defconfig_name - cambia a cunfigurazione à un defconfig specificu
  • make list-defconfigs - mostra una lista di defconfigs
  • fà surghjente - basta à scaricà i schedari di stallazione, senza custruisce.
  • fate l'aiutu - liste i cumandamenti pussibuli

Note impurtanti è cunsiglii utili

Buildroot ùn ricustruisce micca i pacchetti chì sò digià stati custruiti! Per quessa, pò esse una situazione induve hè necessariu un riassemblamentu cumpletu.

Pudete ricustruisce un pacchettu separatu cù u cumandimu fate packagename-rebuild. Per esempiu, pudete ricustruisce u kernel Linux:

make linux-rebuild

Buildroot guarda u statu di qualsiasi pacchettu creendu schedarii .stamp in u cartulare output/build/$packagename:

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Dunque, pudete ricustruisce root-fs è images senza ricustruisce i pacchetti:

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

Variabili utili

buildroot hà un inseme di variàbili per una cunfigurazione faciule

  • $TOPDIR - buildroot directory
  • $BASEDIR - annuariu OUTPUT
  • $HOST_DIR, $STAGING_DIR, $TARGET_DIR - host fs, staging fs, target fs build directories.
  • $BUILD_DIR - repertoriu cù pacchetti sbulicati è custruitu

Visualizazione

buildroot hà una funzione di visualizazione. Pudete custruisce un diagramma di dipendenza, un graficu di u tempu di creazione, è un graficu di dimensioni di pacchettu in u sistema finali. I risultati sò in forma di fugliali pdf (pudete sceglie da svn, png) in u cartulare output / graph.

Esempii di cumandamenti di visualizazione:

  • make graph-depends custruisce un arbre di dependenza
  • make <pkg>-graph-depends custruisce un arbulu di dependenza per un pacchettu specificu
  • BR2_GRAPH_OUT=png make graph-build trama u tempu di creazione cù output PNG
  • make graph-size dimensione di u pacchettu

Scripts utili

Ci hè un subdirectory in u cartulare buildroot utili cù script utili. Per esempiu, ci hè un script chì verifica a correttezza di e descrizzioni di u pacchettu. Questu pò esse utile quandu aghjunghje i vostri pacchetti (faraghju questu dopu). U schedariu utils/readme.txt cuntene una descrizzione di sti scripts.

Custruemu una distribuzione di stock

Hè impurtante di ricurdà chì tutte e operazioni sò realizate in nome di un utilizatore regulare, micca root.
Tutti i cumandamenti sò eseguiti in u buildroot. U pacchettu buildroot include digià un set di cunfigurazioni per parechje schede cumuni è virtualizazione.

Fighjemu a lista di cunfigurazioni:

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Cambia à a cunfigurazione qemu_x86_64_defconfig

make qemu_x86_64_defconfig

È cuminciamu l'assemblea

make

A custruzione hè cumpleta cù successu, fighjate i risultati:

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Buildroot hà compilatu l'imaghjini chì pudete eseguisce in Qemu è verificate chì funzionanu.

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

U risultatu hè un sistema chì funziona in qemu:

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Crea a vostra propria cunfigurazione di bordu

Aghjunghjite i schedarii di bordu

Fighjemu a lista di cunfigurazioni:

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

In a lista vedemu pc_x86_64_efi_defconfig. Creemu a nostra propria tavola copiendu da a cunfigurazione:

cp configs/pc_x86_64_bios_defconfig configs/my_x86_board_defconfig

Creemu immediatamente un cartulare di bordu per almacenà i nostri scripts, rootfs-overlay è altri schedarii necessarii:

mkdir board/my_x86_board

Cambia à questu defconfig:

make my_x86_board_defconfig

Cusì, avà a cunfigurazione di custruzzione (almacenata in .config in a ràdica di u repertoriu di buildroot) currisponde à a macchina di destinazione d'avvio x86-64 legacy (bios).

Copiemu a cunfigurazione linux-kernel (utile dopu):

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

Impostazione di i paràmetri di creazione via KConfig

Cuminciamu a cunfigurazione:

make menuconfig 

A finestra di KConfig si apre. Hè pussibule cunfigurà cù una interfaccia grafica (make nconfig, make xconfig, make gconfig):

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Entremu in a prima sezione Opzioni di destinazione. Quì pudete selezziunà l'architettura di destinazione per quale a custruzione serà realizata.

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Opzioni di creazione - ci sò diverse paràmetri di custruzzione quì. Pudete specificà cartulari cù codici fonte, u numeru di fili di custruzzione, specchi per scaricà codici fonte è altri paràmetri. Lasciamu i paràmetri predeterminati.

Toolchain - l'arnesi di custruzzione stessi sò cunfigurati quì. Leghjite più nantu à ellu.

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Toolchain type - tipu di toolchain utilizatu. Questu pò esse un toolchain integratu in buildroot o un esternu (pudete specificà u cartulare cù quellu chì hè digià custruitu o l'url per scaricà). Ci sò opzioni supplementari per diverse architetture. Per esempiu, per u bracciu pudete simpricimenti selezziunate a versione Linaro di u toolchain esternu.

Biblioteca C - selezzione di a biblioteca C. L'operazione di tuttu u sistema dipende da questu. Di genere, glibc hè utilizatu, chì sustene tutte e funziunalità pussibuli. Ma pò esse troppu grande per un sistema incrustatu, cusì uglibc o musl sò spessu scelti. Selezziemu glibc (questu serà necessariu più tardi per aduprà systemd).

Kernel Headers è Custom Kernel Headers serie - deve currisponde à a versione di u kernel chì serà in u sistema assemblatu. Per l'intestazione di u kernel, pudete ancu specificà u percorsu à u repository tarball o git.

GCC COMPILER VERSIONS - selezziunate a versione di compilatore per esse aduprata per a custruzione
Abilita u supportu C++ - selezziunate per custruisce cù supportu per e librerie C++ in u sistema. Questu serà utile per noi in u futuru.

Opzioni gcc supplementari - pudete stabilisce opzioni di compilatore supplementari. Ùn avemu micca bisognu per avà.

A cunfigurazione di u sistema permette di stabilisce i parametri futuri di u sistema creatu:

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

A maiò parte di i punti sò chjaru da u titulu. Fighjemu attente à i seguenti punti:
Percorsu à e tavule di l'utilizatori - tavula cù l'utilizatori da creà (https://buildroot.org/downloads/manual/manual.html#makeuser-syntax).

File d'esempiu. L'utilizatore d'utilizatore serà creatu cù a password admin, automaticamente gid/uid, /bin/sh shell, utilizatore di gruppu predeterminatu, root di u membru di u gruppu, cummentari 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

Cartulari di overlay di sistema di file di root - repertoriu sovrapposto sopra u target-fs assemblatu. Aggiunge novi fugliali è rimpiazza quelli esistenti.

Scripts persunalizati per eseguisce prima di creà l'imagine di u sistema di filesystem - Scripts eseguiti immediatamente prima di plegà u sistema di filesystem in imagine. Lascemu u script stessu viotu per avà.

Andemu à a sezione Kernel

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

I paràmetri di u kernel sò stallati quì. U kernel stessu hè cunfiguratu via make linux-menuconfig.
Pudete stabilisce a versione di u kernel in diverse manere: selezziunate da quelli offerti, inserite a versione manualmente, specificà un repository o un tarball ready-made.

Configurazione di u kernel - percorsu à a cunfigurazione di u kernel. Pudete selezziunate a cunfigurazione predeterminata per l'architettura scelta o defocnfig da Linux. A fonte Linux cuntene un set di defconfigs per diversi sistemi di destinazione. Pudete truvà quellu chì avete bisognu fighjendu direttamente à e fonti quì. Per esempiu, per una tavula nera d'ossu di beagle pudete selezziunà a cunfigurazione.

A sezione Pacchetti Target permette di selezziunà quali pacchetti seranu installati in u sistema chì hè custruitu. Lasciamu per avà invariatu. Avemu aghjunghje i nostri pacchetti à sta lista più tardi.
L'imaghjini di u sistema di schedari - una lista di l'imaghjini di u sistema di schedari chì seranu cullate. Aghjunghjite una maghjina iso

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Bootloaders - selezzione di bootloaders da cullà. Scegliemu isolinix

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Configurazione di Systemd

Systemd hè diventatu unu di i pilastri di Linux, cù u kernel è glibc. Dunque, aghju spustatu u so paràmetru à un articulu separatu.

Configuratu via make menuconfig, poi Pacchetti di destinazione → Strumenti di sistema → systemd. Quì pudete specificà quale servizii di sistema seranu installati è cuminciati quandu u sistema principia.

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Salvà a cunfigurazione di u sistema

Salvemu sta cunfigurazione via KConfig.

Allora salvate a nostra defconfig:

make savedefconfig

Configurazione di u Kernel Linux

A cunfigurazione di u kernel Linux hè chjamata da u cumandimu seguente:

make linux-menuconfig

Aghjunghjemu u supportu per a carta video Virtualbox

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Aghjunghjemu u supportu di integrazione Virtualbox Guest

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Salvà è esci. IMPORTANT: a cunfigurazione serà salvata in output/build/linux-$version/config, ma micca in board/my_x86_board/linux.config

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Dunque, avete bisognu di cupià manualmente a cunfigurazione in un locu di almacenamiento:

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

Dopu à quale avemu da fà una riunione cumpleta di tuttu u sistema. buildroot ùn ricustruisce micca ciò chì hè digià statu custruitu, duvete specificà manualmente i pacchetti per a ricustruzione. Per ùn perde u tempu è i nervi, hè più faciule per ricustruisce un sistema chjucu cumpletamente):

make clean;make

À a fine di a custruzione, lanciate VirtualBox (pruvatu nantu à e versioni 5.2 è 6.0) da u CD. Parametri di u sistema:

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Esce da l'iso assemblatu:

Buildroot - Parte 1 - Panoramica, Creazione Minima di Sistema, Configurazione di Menu

Lista di materiali utilizati

  1. Manuale di buildroot

Source: www.habr.com

Add a comment