
tamago v1.26.6
Framework for compiling and executing Go applications on bare metal processors, enabling secure firmware development with reduced attack surface through OS and C dependency removal. Goアプリケーションをベアメタルプロセッサ上でコンパイルおよび実行するためのフレームワーク。OSとCの依存関係を取り除くことで攻撃対象領域を減らし、セキュアなファームウェア開発を可能にします。
TamaGo - ベアメタルGo
tamago | https://github.com/usbarmory/tamago
著作権所有 (c) TamaGo Authors. 無断複製・転載を禁じます。
はじめに
TamaGo は、ベアメタルプロセッサ(AMD64、ARM、ARM64、RISCV64)上で、制約のない Go アプリケーションのコンパイルと実行を可能にするフレームワークです。
このプロジェクトは、C コードやオペレーティングシステムへの実行時依存性を排除することで、組み込みシステム ファームウェアの攻撃対象領域を削減したいという願いから生まれました。
TamaGo フレームワークは以下のコンポーネントで構成されています:
-
GOOS のサポートを
tamagoターゲットに拡張する、修正版の Go ディストリビューション。GOOSPKGによって設定される runtime/goos オーバーレイを通じてベアメタル実行を可能にします。 -
プロセッサ/SoC サポート用の Go パッケージ。
-
ボードサポート用の Go パッケージ。
変更は元の Go コンパイラ、ランタイム、およびターゲットアプリケーションに対して最小限であり(必要なインポートは1つ)、他のアーキテクチャから明確に分離されています。
標準 Go ランタイムに既に含まれている既存のアーキテクチャからのコード再利用に重点が置かれています。詳細は Internals を参照してください。
この変更により、完全な標準ライブラリのサポートが維持されます。
これらの側面は、組み込みシステム上で安全な Go ファームウェア開発を可能にするフレームワークを提供したいという願望に動機付けられています。
現在のリリース
以下のリンクは、対応する Go バージョンに GOOS=tamago サポートを追加する TamaGo 修正版 Go ディストリビューションと、TamaGo ライブラリの最新リリースです:
ドキュメント
主要なドキュメントは プロジェクト wiki にあります。
パッケージの API ドキュメントは pkg.go.dev にあります。
サポートされている AMD64 ターゲット
以下の表は、現在サポートされている x86-64 ターゲット(GOOS=tamago GOARCH=amd64)の概要です。
| CPU | プラットフォーム | CPU パッケージ | プラットフォーム パッケージ |
|---|---|---|---|
| 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)の概要です。