Vai al contenuto

Tutto ciò che fa Yocman, dal task fallito alla scheda pronta

36 comandi, una CLI. Tutti operano localmente sulla directory di build o sul progetto. L’IA è facoltativa per le analisi e non modifica file senza conferma.

Diagnostica e correggi

  • fix
  • explain
  • ask
  • context
  • login
  • --dry-run
  • --fresh

Quando bitbake fallisce, yocman fix legge il log, indaga in sola lettura e propone un diff per il tuo layer. Dopo conferma applica la patch e riesegue il task. La diagnosi resta nella cronologia privata: lo stesso errore viene risolto senza nuovo uso IA.

  • explain fornisce la diagnosi senza modificare nulla
  • Le modifiche trovate da ask o explain vengono conservate per yocman fix
  • Gli errori già risolti ricevono risposta immediata; --fresh interroga di nuovo l’IA
  • Le patch vanno nei tuoi layer, mai in poky o in quelli upstream
  • --dry-run mostra i dati mascherati senza inviarli
yocman fix
$ yocman fix
… pre-analysis: missing_dependency in myapp:do_compile
… reading meta-custom/recipes-apps/myapp/myapp_1.0.bb
Diagnosis zlib headers are missing from the recipe sysroot
fatal error: zlib.h: No such file or directory
--- a/recipes-apps/myapp/myapp_1.0.bb
+++ b/recipes-apps/myapp/myapp_1.0.bb
@@ -10,6 +10,7 @@
inherit cmake systemd
+DEPENDS += "zlib"
Apply this patch? [y/N] y
✓ patch applied in meta-custom
✓ do_compile succeeded
Esempio di output sulla build dimostrativa inclusa

Comandi

fix
Corregge un task fallito: applica una patch al tuo layer dopo conferma e riesegue il task; senza errori applica la proposta di ask o explain
explain
Spiega l’ultimo errore senza modifiche; conserva la correzione per yocman fix
ask
Risponde a domande sul progetto; conserva le modifiche per yocman fix
context
Mostra release, macchina, distribuzione e layer rilevati, offline
login
Salva la chiave API e la verifica sul servizio

Analizza la build

  • doctor
  • rules
  • conf
  • layers check
  • deps
  • why
  • provides
  • unused
  • orphans
  • duplicates
  • size
  • buildtime
  • sstate
  • boot
  • --no-ai

Analisi deterministiche dei file già prodotti da bitbake: configurazione, layer, dipendenze, contenuto e dimensioni, tempi di build, sstate e avvio. I fatti vengono dai file; un riepilogo IA facoltativo li interpreta.

  • why mostra le catene che portano un pacchetto nell’immagine
  • size diff confronta build o revisioni buildhistory pacchetto per pacchetto
  • sstate trova le ricette ricostruite a ogni build
  • doctor indica le fonti dati mancanti e come attivarle
yocman why busybox · yocman buildtime
$ yocman why busybox
core-image-minimal → packagegroup-core-boot (IMAGE_INSTALL) → busybox
$ yocman buildtime
Wall time 58m20s
Effective parallelism 1.0 (BB_NUMBER_THREADS 64)
linux-yocto do_compile 25m00s
linux-yocto do_fetch 15m00s
myapp do_compile 5m00s
Esempio di output sulla build dimostrativa inclusa

Comandi

doctor
Elenca le fonti dati nella directory di build e come attivare quelle mancanti
rules
Elenca regole di analisi con ID, categoria e gravità
conf
Verifica local.conf, bblayers.conf, auto.conf e site.conf
layers check
Verifica layer di bblayers.conf: mancanti, duplicati, incompatibili, .bbappend orfani
deps
Mostra le dipendenze di build ed esecuzione di un pacchetto e chi ne dipende
why
Spiega perché un pacchetto è nell’immagine: catene da IMAGE_INSTALL
provides
Individua il pacchetto che installa un file nell’immagine
unused
Elenca pacchetti candidati alla rimozione, da verificare
orphans
Ricette compilate che non entrano nell’immagine
duplicates
Funzionalità duplicate nell’immagine, come due server SSH
size
Dimensioni per pacchetto, file e categoria; size diff confronta build
buildtime
Task e ricette più lenti da buildstats e parallelismo effettivo
sstate
Riutilizzo di sstate e ricette ricostruite a ogni build
boot
Tempo di avvio da systemd-analyze blame e critical-chain

Sicurezza e conformità

  • audit
  • cve
  • secrets
  • users
  • perms
  • services
  • kernel-audit
  • licenses
  • sbom
  • cra report

Verifica l’immagine distribuita: CVE non corrette, segreti, account, permessi, servizi, hardening del kernel, licenze e SBOM SPDX, con punteggi per categoria.

  • I segreti vengono segnalati per posizione e tipo, mai mostrati
  • cve diff mostra cosa corregge o introduce un aggiornamento
  • kernel-audit verifica la .config del kernel con una checklist di hardening
  • Report Markdown e JSON per revisioni e audit
yocman audit
$ yocman audit --fail-on high
Overall score 18/100 over 10 categories
conf 17 findings, worst high 0
secrets 7 findings, worst critical 0
licenses 4 findings, worst medium 76
sbom 3 findings, worst medium 86
critical CVE-001 CVE-2099-0101 (CVSS 9.8) in openssl 3.2.1
→ upgrade the recipe or backport the fix with 'CVE: <id>'
exit 1: findings at or above high
Esempio di output sulla build dimostrativa inclusa

Comandi

audit
Audit completo di sicurezza e conformità con punteggio per categoria
cve
CVE non corrette da cve-check per CVSS; cve diff confronta build
secrets
Rileva chiavi, token e password in rootfs e layer, senza mostrarli
users
Verifica account: password vuote, UID 0 aggiuntivi, hash deboli, shell di accesso
perms
Verifica permessi: setuid, scrittura per tutti, file sensibili, proprietari ignoti
services
Verifica servizi all’avvio, servizi di rete non sicuri, impostazioni SSH e debug
kernel-audit
Confronta la .config del kernel con una checklist di hardening
licenses
Verifica licenze GPLv3, proprietarie, ambigue e obblighi sui sorgenti
sbom
Verifica presenza dello SBOM SPDX e coerenza con l’immagine
cra report
Preparazione CRA: associa evidenze di build da CVE, segreti, SBOM, licenze e kernel ai requisiti

Avvia un progetto

  • init
  • add
  • remove
  • build
  • shell
  • env
  • flash
  • init --describe
  • init --board-search

Crea un progetto kas per una delle 21 schede verificate (Raspberry Pi, BeagleBone, Radxa, Orange Pi, i.MX 8M Plus EVK, QEMU…) o descrivilo all’IA. Aggiungi SSH, Wi-Fi, Qt 6 o Docker, compila su host o container kas con avanzamento e scrivi una SD con controllo obbligatorio del dispositivo.

  • Catalogo delle schede verificato sui repository reali dei layer
  • init --board-search cerca altre schede nell’indice dei layer OpenEmbedded
  • build mostra fase, task attivi e tempo rimanente
  • env verifica i prerequisiti e passa tra host e container
  • flash elenca solo dischi rimovibili e richiede il nome del dispositivo
yocman init
$ yocman init --release scarthgap --board rpi4-64 \
--feature ssh-openssh --feature wifi --env container
✓ Project generated in ~/yocto/rpi4-64-scarthgap
… kas checkout, kas lock (layers pinned)
$ yocman build
Compiling 2140/3412 tasks (62%) ~38 min left
linux-raspberrypi:do_compile qtbase:do_compile gcc:do_install
$ yocman flash --device /dev/sdb
sdb SanDisk Ultra 29.7 GiB usb removable
Type the device name (sdb) to confirm: sdb
Esempio di output sulla build dimostrativa inclusa

Comandi

init
Crea un progetto kas per scheda e release verificate; --describe precompila con l’IA
add
Aggiunge funzionalità (SSH, Wi-Fi, Qt 6, Docker…) con diff da confermare e commit
remove
Rimuove una funzionalità se nessun’altra ne dipende
build
Compila l’immagine con avanzamento: fase, task attivi, tempo rimanente
shell
Apre una shell con ambiente bitbake su host o container
env
Verifica l’ambiente, passa tra host e container e aggiorna l’immagine kas
flash
Scrive l’immagine su SD o USB, solo dischi rimovibili e con conferma digitata

Integrazioni

  • --format json
  • --fail-on
  • --no-ai
  • VS Code(in arrivo)

Yocman è una normale CLI per qualsiasi runner CI. Ogni analisi offre output leggibile dalle macchine e codici di uscita per controllare la pipeline.

  • --fail-on high termina con codice 1 quando un rilievo raggiunge quel livello
  • --no-ai mantiene la pipeline completamente offline
  • Un’estensione VS Code è in arrivo
.gitlab-ci.yml
audit:
script:
- yocman audit --no-ai --format json -o audit.json --fail-on high
- yocman size diff previous/ build/ --format md -o size.md
artifacts:
paths: [audit.json, size.md]
Esempio di output sulla build dimostrativa inclusa

Il piano gratuito comprende correzioni, spiegazioni, tutte le analisi locali e fino a 5 comandi di sicurezza al mese.

Inizia gratis