
Framework per compilare ed eseguire applicazioni Go su processori bare metal, che consente lo sviluppo di firmware sicuro con una superficie di attacco ridotta grazie alla rimozione delle dipendenze da OS e C.
tamago | https://github.com/usbarmory/tamago
Copyright (c) Gli autori di TamaGo. Tutti i diritti riservati.
TamaGo è un framework che consente la compilazione e l'esecuzione di applicazioni Go libere su processori bare metal (AMD64, ARM, ARM64, RISCV64).
Il progetto nasce dal desiderio di ridurre la superficie di attacco del firmware dei sistemi embedded rimuovendo qualsiasi dipendenza runtime dal codice C e dai sistemi operativi.
Il framework TamaGo consiste nei seguenti componenti:
Una distribuzione Go modificata
che estende il supporto di GOOS al target tamago, consentendo l'esecuzione
bare metal attraverso un overlay runtime/goos
impostato da GOOSPKG.
Pacchetti Go per il supporto di processori/SoC.
Pacchetti Go per il supporto di schede.
Le modifiche sono minime rispetto al compilatore Go originale, al runtime e all'applicazione target (è richiesta una import), con una netta separazione dalle altre architetture.
Viene posta una forte enfasi sul riutilizzo del codice dalle architetture esistenti già incluse nel runtime Go standard, vedi Interni.
Le modifiche mantengono il supporto completo della libreria standard.
Tali aspetti sono motivati dal desiderio di fornire un framework che consenta lo sviluppo sicuro di firmware Go su sistemi embedded.
I seguenti link sono le ultime versioni per la
distribuzione Go modificata di TamaGo,
che aggiunge il supporto GOOS=tamago alla corrispondente versione di Go, e la
libreria TamaGo:
La documentazione principale si trova sul wiki del progetto.
La documentazione dell'API del pacchetto si trova su pkg.go.dev.
La tabella seguente riassume i target x86-64 attualmente supportati
(GOOS=tamago GOARCH=amd64).
| CPU | Piattaforma | Pacchetto CPU | Pacchetto piattaforma |
|---|---|---|---|
| AMD/Intel 64-bit | Cloud Hypervisor | amd64 | cloud_hypervisor/vm |
| AMD/Intel 64-bit | Firecracker microvm | amd64 | firecracker/microvm |
| AMD/Intel 64-bit | QEMU microvm | amd64 | qemu/microvm |
| AMD/Intel 64-bit | UEFI | amd64 | uefi/x64 |
| AMD/Intel 64-bit | Google Compute Engine | amd64 | google/gcp, uefi/x64 |
La tabella seguente riassume i SoC e le schede ARM attualmente supportati
(GOOS=tamago GOARCH=arm).