
tamago v1.27.1
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
Copyright (c) The TamaGo Authors. All Rights Reserved.
はじめに
TamaGo は、ベアメタルプロセッサ上で無改造の Go アプリケーションのコンパイルと実行を可能にするフレームワークです。
このプロジェクトは、C コードやオペレーティングシステムへの実行時依存を排除することで、組み込みシステムファームウェアの攻撃対象領域を削減したいという願いから生まれました。
TamaGo フレームワークは以下のコンポーネントで構成されています:
-
GOOSサポートをtamagoターゲットに拡張した修正版 Go ディストリビューション。これによりGOOSPKGによって設定される runtime/goos オーバーレイを通じたベアメタル実行が可能になります。 -
プロセッサ/SoC サポート用の Go パッケージ。
-
ボードサポート用の Go パッケージ。
変更は元の Go コンパイラ、ランタイム、およびターゲットアプリケーション(1 つのインポートが必要)に対して最小限であり、他のアーキテクチャから明確に分離されています。
標準 Go ランタイムに既に含まれている既存アーキテクチャからのコード再利用に重点が置かれています。詳細は内部構造を参照してください。
変更は完全な標準ライブラリサポートを維持しています。
このような側面は、組み込みシステム上で安全な Go ファームウェア開発を可能にするフレームワークを提供したいという願いから来ています。
現在のリリース
以下のリンクは、対応する Go バージョンに GOOS=tamago サポートを追加する TamaGo 修正版 Go ディストリビューションと、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)をまとめたものです。