
Framework zur Kompilierung und Ausführung von Go-Anwendungen auf Bare-Metal-Prozessoren, das eine sichere Firmware-Entwicklung mit reduzierter Angriffsfläche durch Entfernung von Betriebssystem- und C-Abhängigkeiten ermöglicht.
tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. All Rights Reserved.
TamaGo ist ein Framework, das die Kompilierung und Ausführung von uneingeschränkten Go-Anwendungen auf Bare-Metal-Prozessoren (AMD64, ARM, ARM64, RISCV64) ermöglicht.
Das Projekt entstand aus dem Wunsch, die Angriffsfläche von eingebetteten System-Firmware zu reduzieren, indem jegliche Laufzeitabhängigkeit von C-Code und Betriebssystemen entfernt wird.
Das TamaGo-Framework besteht aus den folgenden Komponenten:
Eine modifizierte Go-Distribution, die GOOS um das Ziel tamago erweitert und Bare-Metal-Ausführung durch einen von GOOSPKG gesetzten runtime/goos-Overlay ermöglicht.
Go-Pakete für Prozessor-/SoC-Unterstützung.
Go-Pakete für Board-Unterstützung.
Die Modifikationen am ursprünglichen Go-Compiler, der Laufzeit und der Zielanwendung (ein erforderlicher Import) sind minimal und sauber von anderen Architekturen getrennt.
Es wird großer Wert auf die Wiederverwendung von Code aus bestehenden Architekturen gelegt, die bereits in der standardmäßigen Go-Laufzeit enthalten sind – siehe Internals.
Die Modifikationen erhalten die vollständige Unterstützung der Standardbibliothek.
Diese Aspekte sind motiviert durch den Wunsch, ein Framework bereitzustellen, das eine sichere Go-Firmware-Entwicklung auf eingebetteten Systemen ermöglicht.
Die folgenden Links sind die neuesten Veröffentlichungen der
modifizierten Go-Distribution von TamaGo,
die GOOS=tamago zur entsprechenden Go-Version hinzufügt, sowie der
TamaGo-Bibliothek:
Die Hauptdokumentation befindet sich im Projekt-Wiki.
Die API-Dokumentation der Pakete findet sich unter pkg.go.dev.
Die folgende Tabelle fasst derzeit unterstützte x86-64-Ziele zusammen
(GOOS=tamago GOARCH=amd64).
| CPU | Plattform | CPU-Paket | Plattform-Paket |
|---|---|---|---|
| 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 |
Die folgende Tabelle fasst derzeit unterstützte ARM-SoCs und -Boards zusammen
(GOOS=tamago GOARCH=arm).