
tamago v1.27.1
Framework para compilar e executar aplicações Go em processadores bare metal, permitindo o desenvolvimento seguro de firmware com superfície de ataque reduzida através da remoção de dependências de SO e C.
TamaGo - Go bare metal
tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. All Rights Reserved.
Introdução
TamaGo é um framework que permite a compilação e execução de aplicações Go sem dependências em processadores bare metal.
Os projetos surgem do desejo de reduzir a superfície de ataque do firmware de sistemas embarcados, removendo qualquer dependência de runtime em código C e Sistemas Operacionais.
O framework TamaGo é composto pelos seguintes componentes:
-
Uma distribuição Go modificada que estende o suporte a
GOOSpara o alvotamago, permitindo execução bare metal através de um overlay runtime/goos definido porGOOSPKG. -
Pacotes Go para suporte a processador/SoC.
-
Pacotes Go para suporte a placas.
As modificações são mínimas em relação ao compilador Go original, runtime e a aplicação alvo (um import necessário), com uma separação limpa de outras arquiteturas.
É dada forte ênfase à reutilização de código de arquiteturas existentes já incluídas no runtime padrão do Go, consulte Internals.
As modificações mantêm suporte completo à biblioteca padrão.
Tais aspetos são motivados pelo desejo de fornecer um framework que permita o desenvolvimento seguro de firmware Go em sistemas embarcados.
Versões atuais
Os links seguintes são as versões mais recentes para a
distribuição Go modificada do TamaGo,
que adiciona suporte a GOOS=tamago à versão Go correspondente, e
biblioteca TamaGo:
Documentação
A documentação principal pode ser encontrada na wiki do projeto.
A documentação da API dos pacotes pode ser encontrada em pkg.go.dev.
Alvos AMD64 suportados
A tabela seguinte resume os alvos x86-64 atualmente suportados
(GOOS=tamago GOARCH=amd64).
| CPU | Plataforma | Pacote CPU | Pacote 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 |
Alvos ARM suportados
A tabela seguinte resume os SoCs e placas ARM atualmente suportados
(GOOS=tamago GOARCH=arm).