Zum Inhalt springen

Alles von der fehlgeschlagenen Task bis zum geflashten Board

36 Befehle, eine CLI. Alle laufen lokal auf Ihrem Build-Verzeichnis oder Projekt. Die KI ist für Analysen optional und ändert ohne Bestätigung keine Dateien.

Diagnostizieren und reparieren

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

Bei bitbake-Fehlern liest yocman fix das Task-Log, untersucht schreibgeschützt die Ursache und schlägt einen Unified Diff für Ihren Layer vor. Nach Bestätigung wird der Patch angewendet und der Task wiederholt. Diagnosen bleiben in Ihrem privaten Verlauf; bekannte Fehler werden ohne neue KI-Nutzung beantwortet.

  • explain liefert die Diagnose, ohne Änderungen vorzunehmen
  • Änderungen aus ask oder explain werden für yocman fix gespeichert
  • Bereits gelöste Fehler werden sofort beantwortet; --fresh fragt die KI erneut
  • Patches betreffen nur Ihre Layer, niemals poky oder Upstream-Layer
  • --dry-run zeigt die maskierten Daten, ohne sie zu senden
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
Beispielausgabe des mitgelieferten Demo-Builds

Befehle

fix
Fehlgeschlagenen Task reparieren: Patch für Ihren Layer nach Bestätigung anwenden und Task wiederholen; ohne Fehler den Vorschlag von ask oder explain anwenden
explain
Letzten Build-Fehler ohne Änderungen erklären; gefundene Korrekturen für yocman fix speichern
ask
Fragen zum Projekt stellen; Rezeptänderungen für yocman fix speichern
context
Erkannte Release, Maschine, Distribution und Layer offline anzeigen
login
API-Schlüssel speichern und beim Dienst prüfen

Build analysieren

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

Deterministische Analysen aus vorhandenen bitbake-Dateien: Konfiguration, Layer, Abhängigkeiten, Image-Inhalt und Größe, Build-Zeit, sstate und Bootzeit. Fakten stammen aus Dateien; eine optionale KI-Zusammenfassung interpretiert sie.

  • why zeigt die Abhängigkeitsketten eines Pakets im Image
  • size diff vergleicht Builds oder buildhistory-Revisionen paketweise
  • sstate findet bei jedem Build neu erstellte Rezepte
  • doctor zeigt fehlende Datenquellen und deren Aktivierung
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
Beispielausgabe des mitgelieferten Demo-Builds

Befehle

doctor
Datenquellen im Build-Verzeichnis und Aktivierung fehlender Quellen anzeigen
rules
Analyseregeln mit ID, Kategorie und Schweregrad auflisten
conf
local.conf, bblayers.conf, auto.conf und site.conf prüfen
layers check
Layer aus bblayers.conf prüfen: fehlend, doppelt, inkompatibel, verwaiste .bbappend
deps
Build- und Laufzeitabhängigkeiten eines Pakets und abhängige Pakete anzeigen
why
Warum ein Paket im Image ist: Abhängigkeitsketten ab IMAGE_INSTALL
provides
Paket ermitteln, das eine Datei im Image installiert
unused
Paketkandidaten zur Entfernung prüfen
orphans
Gebaute Rezepte, die nie im Image landen
duplicates
Doppelte Funktionen im Image, etwa zwei SSH-Server
size
Image-Größe nach Paket, Datei und Kategorie; size diff vergleicht Builds
buildtime
Langsamste Tasks und Rezepte aus buildstats sowie effektive Parallelität
sstate
Shared-State-Wiederverwendung und bei jedem Build neu gebaute Rezepte
boot
Bootzeit anhand von systemd-analyze blame und critical-chain

Sicherheit und Konformität

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

Prüfen Sie das ausgelieferte Image auf ungepatchte CVEs, Geheimnisse, Konten, Berechtigungen, Dienste, Kernel-Härtung, Lizenzen und SPDX-SBOM, mit Bewertung je Kategorie.

  • Geheimnisse werden nach Fundort und Typ gemeldet, nie angezeigt
  • cve diff zeigt durch ein Release-Update behobene oder eingeführte Probleme
  • kernel-audit prüft die Kernel-.config anhand einer Härtungsliste
  • Markdown- und JSON-Berichte für Reviews und Audits
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
Beispielausgabe des mitgelieferten Demo-Builds

Befehle

audit
Vollständiges Sicherheits- und Konformitätsaudit mit Bewertung je Kategorie
cve
Ungepatchte CVEs aus cve-check nach CVSS; cve diff vergleicht Builds
secrets
Schlüssel, Token und Passwörter in rootfs und Layern erkennen, nie anzeigen
users
Konten prüfen: leere Passwörter, zusätzliche UID 0, schwache Hashes, Login-Shells
perms
Berechtigungen prüfen: setuid, für alle schreibbar, sensible Dateien, unbekannte Eigentümer
services
Autostart-Dienste, unsichere Netzwerkdienste, SSH- und Debug-Einstellungen prüfen
kernel-audit
Kernel-.config mit einer Härtungscheckliste vergleichen
licenses
GPLv3, proprietäre und unklare Lizenzen sowie Quellcodepflichten prüfen
sbom
Vorhandensein und Konsistenz des SPDX-SBOM mit dem Image prüfen
cra report
CRA-Vorbereitung: Build-Nachweise aus CVE, Geheimnissen, SBOM, Lizenzen und Kernel den Anforderungen zuordnen

Projekt starten

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

Ein kas-Projekt für eines von 21 geprüften Boards erstellen (Raspberry Pi, BeagleBone, Radxa, Orange Pi, i.MX 8M Plus EVK, QEMU…) oder von der KI vorfüllen lassen. SSH, WLAN, Qt 6 oder Docker hinzufügen, auf Host oder kas-Container mit Live-Fortschritt bauen und SD-Karten mit verpflichtender Geräteprüfung flashen.

  • Board-Katalog anhand realer Layer-Repositories geprüft
  • init --board-search sucht weitere Boards im OpenEmbedded Layer Index
  • build zeigt Phase, laufende Tasks und Restzeit
  • env prüft Voraussetzungen und wechselt zwischen Host und Container
  • flash zeigt nur Wechseldatenträger und verlangt den Gerätenamen
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
Beispielausgabe des mitgelieferten Demo-Builds

Befehle

init
kas-Projekt für geprüftes Board und Release erstellen; --describe lässt die KI vorfüllen
add
Funktion hinzufügen (SSH, WLAN, Qt 6, Docker…) mit bestätigtem Diff und Commit
remove
Funktion entfernen, sofern keine andere Funktion sie benötigt
build
Image bauen mit Live-Fortschritt: Phase, laufende Tasks, Restzeit
shell
Shell mit bitbake-Umgebung auf Host oder Container öffnen
env
Build-Umgebung prüfen und zwischen Host und Container wechseln, kas-Image aktualisieren
flash
Image auf SD-Karte oder USB-Laufwerk schreiben, nur Wechseldatenträger und mit getippter Bestätigung

Integrationen

  • --format json
  • --fail-on
  • --no-ai
  • VS Code(demnächst)

Yocman ist eine normale CLI für jeden CI-Runner. Jede Analyse bietet maschinenlesbare Ausgaben und Exitcodes zur Pipeline-Steuerung.

  • --fail-on high beendet mit Code 1 bei Befunden ab dieser Stufe
  • --no-ai hält die Pipeline vollständig offline
  • Eine VS Code Erweiterung erscheint demnächst
.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]
Beispielausgabe des mitgelieferten Demo-Builds

Der kostenlose Tarif umfasst Korrekturen, Erklärungen, alle lokalen Analysen und bis zu 5 Sicherheitsbefehle pro Monat.

Kostenlos starten