
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) The TamaGo Authors. All Rights Reserved.
TamaGo è un framework che consente la compilazione e l'esecuzione di applicazioni Go non vincolate su processori bare metal.
I progetti nascono dal desiderio di ridurre la superficie di attacco del firmware dei sistemi embedded eliminando qualsiasi dipendenza a runtime da codice C e sistemi operativi.
Il framework TamaGo è composto dai seguenti componenti:
Una distribuzione Go modificata
che estende il supporto GOOS al target tamago, consentendo l'esecuzione
bare metal attraverso un overlay runtime/goos
impostato da GOOSPKG.
Pacchetti Go per il supporto a processori/SoC.
Pacchetti Go per il supporto alle board.
Le modifiche sono minime rispetto al compilatore Go originale, al runtime e all'applicazione target (è richiesto un solo import), con una netta separazione dalle altre architetture.
Una forte enfasi è posta sul riutilizzo del codice delle architetture esistenti già incluse nel runtime standard di Go, vedi Internals.
Le modifiche mantengono il supporto completo alla 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 release per la
distribuzione Go modificata TamaGo,
che aggiunge il supporto GOOS=tamago alla corrispondente versione di Go, e
la libreria TamaGo:
La documentazione principale è disponibile sulla wiki del progetto.
La documentazione dell'API dei pacchetti è disponibile su pkg.go.dev.
La seguente tabella 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 seguente tabella riassume i SoC e le board ARM attualmente supportati
(GOOS=tamago GOARCH=arm).