
tamago v1.27.1
用于在裸机处理器上编译和执行Go应用程序的框架,通过移除操作系统和C依赖来缩小攻击面,实现安全的固件开发。
TamaGo - 裸机 Go
tamago | https://github.com/usbarmory/tamago
Copyright (c) The TamaGo Authors. All Rights Reserved.
简介
TamaGo 是一个框架,支持在裸机处理器上编译和执行无额外依赖的 Go 应用程序。
这些项目源于通过消除对 C 代码和操作系统的任何运行时依赖来减少嵌入式系统固件攻击面的愿望。
TamaGo 框架由以下组件组成:
-
一个修改过的 Go 发行版, 它将
GOOS支持扩展到tamago目标,允许通过由GOOSPKG设置的 runtime/goos 覆盖层进行裸机执行。 -
用于处理器/SoC 支持的 Go 包。
-
用于开发板支持的 Go 包。
相对于原始 Go 编译器、运行时和目标应用程序(需要一次导入),这些修改是最小的,并且与其他架构清晰分离。
重点强调从标准 Go 运行时中已包含的现有架构中复用代码,参见 内部机制。
这些修改保持了完整的标准库支持。
这些方面的动机是希望提供一个框架,允许在嵌入式系统上进行安全的 Go 固件开发。
当前版本
以下链接是
TamaGo 修改版 Go 发行版
(为相应 Go 版本添加 GOOS=tamago 支持)和
TamaGo 库的最新版本:
文档
主要文档可在 项目 wiki上找到。
包 API 文档可在 pkg.go.dev上找到。
支持的 AMD64 目标
下表总结了当前支持的 x86-64 目标
(GOOS=tamago GOARCH=amd64)。
| CPU | Platform | CPU package | Platform package |
|---|---|---|---|
| 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 |
支持的 ARM 目标
下表总结了当前支持的 ARM SoC 和开发板
(GOOS=tamago GOARCH=arm)。
| SoC | Board | SoC package | Board package |
|---|---|---|---|
| NXP i.MX6ULZ/i.MX6UL | USB armory Mk II | imx6ul | usbarmory/mk2 |
| NXP i.MX6ULL/i.MX6UL | USB armory Mk II LAN | imx6ul | usbarmory/mk2 |
| NXP i.MX6ULL/i.MX6ULZ | MCIMX6ULL-EVK | imx6ul | mx6ullevk |
| Broadcom BCM2835 | Raspberry Pi Zero | bcm2835 | pi/pizero |
| Broadcom BCM2835 | Raspberry Pi 1 Model A+ | bcm2835 | pi/pi1 |
| Broadcom BCM2835 | Raspberry Pi 1 Model B+ | bcm2835 | pi/pi1 |
| Broadcom BCM2836 | Raspberry Pi 2 Model B | bcm2835 | pi/pi2 |
| Nuvoton NUC980 | NuMaker-IIoT-NUC980G2 | nuc980 | nuc980iiot |
支持的 ARM64 目标
下表总结了当前支持的 ARM64 SoC 和开发板
(GOOS=tamago GOARCH=arm64)。