
tamago v1.26.6
Framework para compilar y ejecutar aplicaciones Go en procesadores bare metal, que permite el desarrollo seguro de firmware con una superficie de ataque reducida al eliminar las dependencias del sistema operativo y de C.
TamaGo - Go sobre metal desnudo
tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. All Rights Reserved.
Introducción
TamaGo es un framework que permite la compilación y ejecución de aplicaciones Go sin restricciones en procesadores de metal desnudo (AMD64, ARM, ARM64, RISCV64).
El proyecto surge del deseo de reducir la superficie de ataque del firmware de sistemas embebidos eliminando cualquier dependencia en tiempo de ejecución de código C y sistemas operativos.
El framework TamaGo consta de los siguientes componentes:
-
Una distribución Go modificada que extiende el soporte
GOOSal objetivotamago, permitiendo la ejecución en metal desnudo a través de una superposición runtime/goos establecida porGOOSPKG. -
Paquetes Go para soporte de procesador/SoC.
-
Paquetes Go para soporte de placas.
Las modificaciones son mínimas en comparación con el compilador Go original, el runtime y la aplicación objetivo (una importación requerida), con una separación limpia de otras arquitecturas.
Se pone un fuerte énfasis en la reutilización de código de las arquitecturas existentes ya incluidas en el runtime estándar de Go, consulte Internals.
Las modificaciones mantienen soporte completo de la biblioteca estándar.
Dichos aspectos están motivados por el deseo de proporcionar un framework que permita el desarrollo seguro de firmware Go en sistemas embebidos.
Lanzamientos actuales
Los siguientes enlaces son los últimos lanzamientos para la
distribución Go modificada de TamaGo,
que agrega soporte GOOS=tamago a la versión Go correspondiente, y la
biblioteca TamaGo:
Documentación
La documentación principal se puede encontrar en el wiki del proyecto.
La documentación de la API del paquete se puede encontrar en pkg.go.dev.
Objetivos AMD64 compatibles
La siguiente tabla resume los objetivos x86-64 actualmente compatibles
(GOOS=tamago GOARCH=amd64).
| CPU | Plataforma | Paquete CPU | Paquete de plataforma |
|---|---|---|---|
| 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 |
Objetivos ARM compatibles
La siguiente tabla resume los SoC y placas ARM actualmente compatibles
(GOOS=tamago GOARCH=arm).