
tamago v1.26.5
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 em bare metal
tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. Todos os direitos reservados.
Introdução
TamaGo é um framework que possibilita a compilação e execução de aplicações Go sem dependências em processadores bare metal (AMD64, ARM, ARM64, RISCV64).
O projeto surge do desejo de reduzir a superfície de ataque do firmware de sistemas embarcados, removendo qualquer dependência em tempo de execução de código C e sistemas operacionais.
O framework TamaGo consiste nos seguintes componentes:
-
Uma distribuição Go modificada que estende o suporte a
GOOSpara o destinotamago, permitindo execução bare metal através de uma sobreposição runtime/goos definida porGOOSPKG. -
Pacotes Go para suporte a processadores/SoCs.
-
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 (uma importação necessária), com uma separação limpa de outras arquiteturas.
Uma forte ênfase é colocada na reutilização de código de arquiteturas existentes já incluídas no runtime Go padrão, veja Internos.
As modificações mantêm suporte completo à biblioteca padrão.
Tais aspectos são motivados pelo desejo de fornecer um framework que permita o desenvolvimento seguro de firmware Go em sistemas embarcados.
Lançamentos atuais
Os links a seguir são os lançamentos mais recentes da
Distribuição Go modificada TamaGo,
que adiciona suporte a GOOS=tamago à versão Go correspondente, e da
Biblioteca TamaGo:
Documentação
A documentação principal pode ser encontrada no wiki do projeto.
A documentação da API dos pacotes pode ser encontrada em pkg.go.dev.
Destinos AMD64 suportados
A tabela a seguir resume os destinos 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 |
Destinos ARM suportados
A tabela a seguir resume os SoCs e placas ARM atualmente suportados
(GOOS=tamago GOARCH=arm).