Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
tamago — 베어 메탈 프로세서에서 Go 애플리케이션을 컴파일 및 실행하기 위한 프레임워크로, OS 및 C 종속성을 제거하여 공격 표면을 줄인 안전한 펌웨어 개발을 가능하게 합니다. | Kitploit
도구/GitHubGitHub/usbarmory/tamago
Embedded Systems SecuritySecurity VirtualizationHardware SecurityFirmware Analysis
GitHubusbarmory/tamago

tamago

베어 메탈 프로세서에서 Go 애플리케이션을 컴파일 및 실행하기 위한 프레임워크로, OS 및 C 종속성을 제거하여 공격 표면을 줄인 안전한 펌웨어 개발을 가능하게 합니다.

저장소 보기
2.0k834810일 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
TamaGo - 베어메탈 Go
======================

tamago | https://github.com/usbarmory/tamago  

Copyright (c) The TamaGo Authors. All Rights Reserved.  

![TamaGo gopher](https://github.com/usbarmory/tamago/wiki/images/tamago.svg?sanitize=true)

소개
============

TamaGo는 베어메탈 프로세서에서 순수 Go 애플리케이션의 컴파일과 실행을 가능하게 하는 프레임워크입니다.

이 프로젝트는 C 코드와 운영체제에 대한 런타임 의존성을 제거하여 임베디드 시스템 펌웨어의 공격 표면을 줄이려는 목적에서 시작되었습니다.

TamaGo 프레임워크는 다음 구성 요소로 이루어져 있습니다:

 - `GOOS` 지원을 `tamago` 타겟으로 확장하는 수정된 [Go 배포판](https://github.com/usbarmory/tamago-go)으로, `GOOSPKG`에 의해 설정된 [runtime/goos](https://github.com/usbarmory/tamago-go/tree/latest/src/runtime/goos) 오버레이를 통해 베어메탈 실행을 가능하게 합니다.

 - 프로세서/SoC 지원을 위한 Go 패키지.

 - 보드 지원을 위한 Go 패키지.

수정 사항은 원래의 Go 컴파일러, 런타임 및 대상 애플리케이션(하나의 import 필요)에 대해 최소한이며, 다른 아키텍처와 깔끔하게 분리되어 있습니다.

표준 Go 런타임에 이미 포함된 기존 아키텍처로부터의 코드 재사용에 강한 중점을 두고 있습니다. 자세한 내용은 [Internals](https://github.com/usbarmory/tamago/wiki/Internals)를 참조하세요.

수정 사항은 [완전한 표준 라이브러리 지원](https://github.com/usbarmory/tamago/wiki/Compatibility)을 유지합니다.

이러한 측면은 임베디드 시스템에서 안전한 Go 펌웨어 개발을 가능하게 하는 프레임워크를 제공하려는 목적에서 비롯되었습니다.

현재 릴리스
================

다음 링크는 해당 Go 버전에 `GOOS=tamago` 지원을 추가하는 [TamaGo 수정 Go 배포판](https://github.com/usbarmory/tamago-go)과 [TamaGo 라이브러리](https://github.com/usbarmory/tamago)의 최신 릴리스입니다:

[![GitHub release](https://img.shields.io/github/v/release/usbarmory/tamago-go)](https://github.com/usbarmory/tamago-go/releases/latest) [![Build Status](https://github.com/usbarmory/tamago-go/workflows/Build%20Go%20compiler/badge.svg)](https://github.com/usbarmory/tamago-go/actions)  
[![GitHub release](https://img.shields.io/github/v/release/usbarmory/tamago)](https://github.com/usbarmory/tamago/releases/latest)

문서
=============

[![Go Reference](https://pkg.go.dev/badge/github.com/usbarmory/tamago.svg)](https://pkg.go.dev/github.com/usbarmory/tamago)

주요 문서는 [프로젝트 위키](https://github.com/usbarmory/tamago/wiki)에서 확인할 수 있습니다.

패키지 API 문서는 [pkg.go.dev](https://pkg.go.dev/github.com/usbarmory/tamago)에서 확인할 수 있습니다.

지원되는 AMD64 타겟
=======================

다음 표는 현재 지원되는 x86-64 타겟(`GOOS=tamago GOARCH=amd64`)을 요약한 것입니다.

| CPU              | Platform                                                                  | CPU package                                                    | Platform package                                                                                                                                    |
|------------------|---------------------------------------------------------------------------|----------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------|
| AMD/Intel 64-bit | [Cloud Hypervisor](https://www.cloudhypervisor.org )                      | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [cloud_hypervisor/vm](https://github.com/usbarmory/tamago/tree/master/board/cloud_hypervisor/vm)                                                    |
| AMD/Intel 64-bit | [Firecracker microvm](https://firecracker-microvm.github.io)              | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [firecracker/microvm](https://github.com/usbarmory/tamago/tree/master/board/firecracker/microvm)                                                    |
| AMD/Intel 64-bit | [QEMU microvm](https://www.qemu.org/docs/master/system/i386/microvm.html) | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [qemu/microvm](https://github.com/usbarmory/tamago/tree/master/board/qemu/microvm)                                                                  |
| AMD/Intel 64-bit | [UEFI](https://uefi.org/)                                                 | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [uefi/x64](https://github.com/usbarmory/go-boot/tree/main/uefi/x64)                                                                                 |
| AMD/Intel 64-bit | [Google Compute Engine](https://cloud.google.com/products/compute)        | [amd64](https://github.com/usbarmory/tamago/tree/master/amd64) | [google/gcp](https://github.com/usbarmory/tamago/tree/master/board/google/gcp), [uefi/x64](https://github.com/usbarmory/go-boot/tree/main/uefi/x64) |

지원되는 ARM 타겟
=====================

다음 표는 현재 지원되는 ARM SoC와 보드(`GOOS=tamago GOARCH=arm`)를 요약한 것입니다.

| SoC                   | Board                                                                                                                                                                                | SoC package                                                                  | Board package                                                                          |
|-----------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------|----------------------------------------------------------------------------------------|
| NXP i.MX6ULZ/i.MX6UL  | [USB armory Mk II](https://github.com/usbarmory/usbarmory/wiki/Mk-II-Introduction)                                                                                                   | [imx6ul](https://github.com/usbarmory/tamago/tree/master/soc/nxp/imx6ul)     | [usbarmory/mk2](https://github.com/usbarmory/tamago/tree/master/board/usbarmory)       |
| NXP i.MX6ULL/i.MX6UL  | [USB armory Mk II LAN](https://github.com/usbarmory/usbarmory/wiki/Mk-II-LAN)                                                                                                        | [imx6ul](https://github.com/usbarmory/tamago/tree/master/soc/nxp/imx6ul)     | [usbarmory/mk2](https://github.com/usbarmory/tamago/tree/master/board/usbarmory)       |
| NXP i.MX6ULL/i.MX6ULZ | [MCIMX6ULL-EVK](https://www.nxp.com/design/development-boards/i-mx-evaluation-and-development-boards/evaluation-kit-for-the-i-mx-6ull-and-6ulz-applications-processor:MCIMX6ULL-EVK) | [imx6ul](https://github.com/usbarmory/tamago/tree/master/soc/nxp/imx6ul)     | [mx6ullevk](https://github.com/usbarmory/tamago/tree/master/board/nxp/mx6ullevk)       |
| Broadcom BCM2835      | [Raspberry Pi Zero](https://www.raspberrypi.org/products/raspberry-pi-zero)                                                                                                          | [bcm2835](https://github.com/usbarmory/tamago/tree/master/soc/bcm2835)       | [pi/pizero](https://github.com/usbarmory/tamago/tree/master/board/raspberrypi)         |
| Broadcom BCM2835      | [Raspberry Pi 1 Model A+](https://www.raspberrypi.org/products/raspberry-pi-1-model-a-plus/)                                                                                         | [bcm2835](https://github.com/usbarmory/tamago/tree/master/soc/bcm2835)       | [pi/pi1](https://github.com/usbarmory/tamago/tree/master/board/raspberrypi)            |
| Broadcom BCM2835      | [Raspberry Pi 1 Model B+](https://www.raspberrypi.org/products/raspberry-pi-1-model-b-plus/)                                                                                         | [bcm2835](https://github.com/usbarmory/tamago/tree/master/soc/bcm2835)       | [pi/pi1](https://github.com/usbarmory/tamago/tree/master/board/raspberrypi)            |
| Broadcom BCM2836      | [Raspberry Pi 2 Model B](https://www.raspberrypi.org/products/raspberry-pi-2-model-b)                                                                                                | [bcm2835](https://github.com/usbarmory/tamago/tree/master/soc/bcm2835)       | [pi/pi2](https://github.com/usbarmory/tamago/tree/master/board/raspberrypi)            |
| Nuvoton NUC980        | [NuMaker-IIoT-NUC980G2](https://www.nuvoton.com/products/iot-solution/iot-platform/numaker-iiot-nuc980g2)                                                                            | [nuc980](https://github.com/usbarmory/tamago/tree/master/soc/nuvoton/nuc980) | [nuc980iiot](https://github.com/usbarmory/tamago/tree/master/board/nuvoton/nuc980iiot) |

지원되는 ARM64 타겟
=======================

다음 표는 현재 지원되는 ARM64 SoC와 보드(`GOOS=tamago GOARCH=arm64`)를 요약한 것입니다.

| SoC               | Board                                                                                                    | SoC package                                                                      | Board package                                                                            |
|-------------------|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| NXP i.MX8M Plus   | [8MPLUSLPD4-EVK](https://www.nxp.com/design/design-center/development-boards-and-designs/8MPLUSLPD4-EVK) | [imx8mp](https://github.com/usbarmory/tamago/tree/master/soc/nxp/imx8mp)         | [imx8mpevk](https://github.com/usbarmory/tamago/tree/master/board/nxp/imx8mpevk)         |
| Microchip LAN969x | [EVB-LAN9696-24port](https://www.microchip.com/en-us/development-tool/ev23x71a)                          | [lan969x](https://github.com/usbarmory/tamago/tree/master/soc/microchip/lan969x) | [lan9696evb](https://github.com/usbarmory/tamago/tree/master/board/microchip/lan9696evb) |

지원되는 RISC-V 타겟
========================

다음 표는 현재 지원되는 RISC-V SoC와 보드(`GOOS=tamago GOARCH=riscv64`)를 요약한 것입니다.

| SoC                 | Board                                                                         | SoC package                                                                       | Board package                                                                            |
|---------------------|-------------------------------------------------------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------------------|
| AI Foundry Erbium   | [erbium_emu](https://github.com/aifoundry-org/et-platform)                    | [erbium](https://github.com/usbarmory/tamago/tree/master/soc/aifoundry/erbium)    | [erbium_emu](https://github.com/usbarmory/tamago/tree/master/board/aifoundry/erbium_emu) |
| AI Foundry ET-SoC-1 | [sys_emu](https://github.com/aifoundry-org/et-platform/tree/master/sw-sysemu) | [etsoc1](https://github.com/usbarmory/tamago/tree/master/soc/aifoundry/etsoc1)    | [sys_emu](https://github.com/usbarmory/tamago/tree/master/board/aifoundry/sys_emu)       |
| Fisilink FSL91030   | [MilkV Vega](https://milkv.io/vega)                                           | [fsl91030](https://github.com/usbarmory/tamago/tree/master/soc/fisilink/fsl91030) | [vega](https://github.com/usbarmory/tamago/tree/master/board/milkv/vega)                 |
| Fisilink FSL91030   | [Nuclei QEMU](https://doc.nucleisys.com/nuclei_tools/qemu/index.html)         | [fsl91030](https://github.com/usbarmory/tamago/tree/master/soc/fisilink/fsl91030) | [eval_soc](https://github.com/usbarmory/tamago/tree/master/board/nuclei/eval_soc)        |
| SiFive FU540        | [QEMU sifive_u](https://www.qemu.org/docs/master/system/riscv/sifive_u.html)  | [fu540](https://github.com/usbarmory/tamago/tree/master/soc/sifive/fu540)         | [qemu/sifive_u](https://github.com/usbarmory/tamago/tree/master/board/qemu/sifive_u)     |

지원되는 LoongArch 타겟
===========================

다음 표는 현재 지원되는 LoongArch SoC와 보드(`GOOS=tamago GOARCH=loong64`)를 요약한 것입니다.

| SoC             | Board                                                                    | SoC package                                                                       | Board package                                                                |
|-----------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------------------|------------------------------------------------------------------------------|
| Loongson 3A5000 | [QEMU virt](https://www.qemu.org/docs/master/system/loongarch/virt.html) | [ls3a5000](https://github.com/usbarmory/tamago/tree/master/soc/loongson/ls3a5000) | [qemu/virt](https://github.com/usbarmory/tamago/tree/master/board/qemu/virt) |

사용자 공간 타겟
=================

`GOOS=tamago`로 컴파일된 프로그램은 베어메탈 드라이버 대신 OS 감독 하에 필요한 `runtime/goos` 오버레이를 구현하는 패키지를 import함으로써 사용자 공간에서도 실행할 수 있습니다.

사용자 공간에서 `GOOS=tamago`로 Go 프로그램을 컴파일하고 실행하면 실행 파일이 Go 런타임을 활용하여 OS 리소스에 직접 접근할 수 없기 때문에 시스템 호출 격리라는 이점을 제공합니다. 그 결과:

  * 인메모리 에뮬레이션 디스크를 통한 OS 파일 시스템으로부터의 격리
  * OS 네트워킹으로부터의 격리, [net.SocketFunc](https://github.com/usbarmory/tamago-go/blob/latest/src/net/net_tamago.go) 참조
  * 사용자 정의 네트워킹, rng, 시간 핸들러를 위한 API

다음 표는 현재 사용 가능한 사용자 공간 지원을 요약한 것입니다:

| Operating System                             | `GOARCH`                | Runtime packages                                                                     |
|----------------------------------------------|-------------------------|--------------------------------------------------------------------------------------|
| [Linux](https://www.kernel.org/)             | amd64,arm,arm64,riscv64 | [runtime/goos](https://github.com/usbarmory/tamago-go/blob/latest/src/runtime/goos)¹ |
| [Linux](https://www.kernel.org/)             | amd64,arm,arm64,riscv64 | [linux](https://github.com/usbarmory/tamago/tree/master/user/linux)                  |
| [GoTEE](https://github.com/usbarmory/GoTEE/) |             arm,riscv64 | [applet](https://pkg.go.dev/github.com/usbarmory/GoTEE/applet)                       |

¹ [표준 배포판 테스트](https://github.com/usbarmory/tamago/wiki/Compatibility)와 `go test -tags user_linux`를 실행하는 데 사용됩니다

컴파일
=========

`GOOS=tamago`를 지원하는 Go 배포판
---------------------------------------

[tamago](https://github.com/usbarmory/tamago/tree/latest/cmd/tamago) 명령은 애플리케이션 `go.mod`의 tamago 모듈 버전과 일치하는 [TamaGo 배포판](https://github.com/usbarmory/tamago-go)의 `go` 명령을 다운로드, 컴파일 및 실행합니다.

애플리케이션은 `github.com/usbarmory/tamago`를 `go.mod`에 추가한 다음 `go` 명령을 다음과 같이 대체할 수 있습니다:


```sh
go run github.com/usbarmory/tamago/cmd/tamago
```

또는 `go tool tamago`를 go 명령으로 사용하려면 `go.mod`에 다음 줄을 추가하세요:

```
tool github.com/usbarmory/tamago/cmd/tamago
```

또는
[최신 TamaGo 배포판](https://github.com/usbarmory/tamago-go/tree/latest)을
수동으로 빌드하거나
[최신 바이너리 릴리스](https://github.com/usbarmory/tamago-go/releases/latest)를 사용할 수 있습니다:

```sh
wget https://github.com/usbarmory/tamago-go/archive/refs/tags/latest.zip
unzip latest.zip
cd tamago-go-latest/src && ./all.bash
cd ../bin && export TAMAGO=`pwd`/go
```

애플리케이션 빌드
---------------------

컴파일할 때 `GOOS=tamago`를 지원하는 오버레이로 이 라이브러리를 활성화하려면 `GOOSPKG` Go 환경 변수를 설정해야 합니다.

```
export GOOSPKG=github.com/usbarmory/tamago
```

Go 애플리케이션은 하드웨어 초기화와 런타임 지원이 이루어지도록 관련 보드 패키지를 임포트해야 합니다:

```golang
import (
	// Example for USB armory Mk II
	_ "github.com/usbarmory/tamago/board/usbarmory/mk2"
)
```

Go 애플리케이션은 이전 단계에서 빌드한 컴파일러로 컴파일할 수 있으며,
몇 가지 플래그/변수를 추가하면 됩니다:

```sh
# set this library as `runtime/goos` overlay
export GOOSPKG=github.com/usbarmory/tamago

# Example for Cloud Hypervisory, QEMU and Firecracker KVMs
GOOS=tamago GOARCH=amd64 ${TAMAGO} build -ldflags "-T 0x10010000 -R 0x1000" main.go

# Example for NXP i.MX6UL
GOOS=tamago GOARM=7 GOARCH=arm ${TAMAGO} build -ldflags "-T 0x80010000 -R 0x1000" main.go

# Example for NXP 8MPLUSLPD4-EVK
GOOS=tamago GOARCH=arm64 ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# Example for SiFive FU540
GOOS=tamago GOARCH=riscv64 ${TAMAGO} build -ldflags "-T 0x80010000 -R 0x1000" main.go

# Example for AI Foundry Erbium
GOOS=tamago GOARCH=riscv64 GOEXPERIMENT=softfloat ${TAMAGO} build -ldflags "-T 0x40010000 -R 0x1000" main.go

# Example for QEMU LoongArch virt
GOOS=tamago GOARCH=loong64 ${TAMAGO} build -ldflags "-T 0x1000000 -R 0x1000" main.go

# Example for Linux userspace
GOOS=tamago ${TAMAGO} build main.go
```

각 특정 타깃에 대한 컴파일 정보는 해당 보드 패키지 README 파일을 참조하십시오.

빌드 태그
==========

다음 빌드 태그를 사용하면 애플리케이션이 `runtime/goos` 오버레이에 대한 패키지 자체 정의를 재정의할 수 있습니다:

* `linkramstart`: `ramStart` 재정의
* `linkramsize`: `ramSize` 재정의
* `linkprintk`: `printk` 재정의
* `linkcpuinit`: `cpuinit` 재정의
* `tiny`: 힙 할당 요구 사항 감소

실행 및 디버깅
=======================

각 특정 타깃(실제 또는 에뮬레이션)에 대한 실행 및 디버깅 정보는 해당 보드 패키지 README 파일을 참조하십시오.

[예제 애플리케이션](https://github.com/usbarmory/tamago-example)은 네이티브 및 에뮬레이션 실행 모두에 대한 샘플 드라이버 사용법과 지침을 제공합니다.

[예제 애플리케이션](https://github.com/usbarmory/tamago-example)의 에뮬레이션 실행은 다음과 같이 시작할 수 있습니다:

```sh
git clone https://github.com/usbarmory/tamago-example
cd tamago-example && make qemu
```

TamaGo를 사용하는 애플리케이션
=========================

* [go-boot](https://github.com/usbarmory/go-boot) - 베어 메탈 Go UEFI 부트 관리자
* [GoKey](https://github.com/usbarmory/GoKey) - 베어 메탈 Go 스마트카드
* [GoTEE](https://github.com/usbarmory/GoTEE) - Go 신뢰 실행 환경
* [ArmoredWitness](https://github.com/transparency-dev/armored-witness) - 크로스 에코시스템 위트니스 네트워크
* [armory-drive](https://github.com/usbarmory/armory-drive) - USB 암호화 드라이브
* [armory-ums](https://github.com/usbarmory/armory-ums) - USB 대용량 저장소 펌웨어
* [armory-boot](https://github.com/usbarmory/armory-boot) - USB armory 부트 로더
* [tamago-example](https://github.com/usbarmory/tamago-example) - TamaGo 예제 애플리케이션
* [tamago-sev-example](https://github.com/usbarmory/tamago-sev-example) - 기밀 VM (AMD SEV-SNP) 예제
* [kotama](https://github.com/usbarmory/kotama) - 초소형 RISC-V 타깃 데모
* [kanzashi](https://github.com/abarisani/kanzashi) - 베어 메탈 에이전트

TamaGo를 사용하는 외부 드라이버
=============================

* [go-net](https://github.com/usbarmory/go-net) - 범용 네트워크 드라이버
* [go-net/imx-usb](https://github.com/usbarmory/go-net/tree/main/imx-usb) - i.MX 이더넷 오버 USB 드라이버
* [go-net/virtio](https://github.com/usbarmory/go-net/tree/main/virtio) - VirtIO 네트워크 드라이버
* [imx-usbserial](https://github.com/usbarmory/imx-usbserial) - i.MX 시리얼 오버 USB 드라이버

추가 자료
====================

* [패키지 API](https://pkg.go.dev/github.com/usbarmory/tamago)
* [런타임 API](https://github.com/usbarmory/tamago-go/blob/latest/src/runtime/goos/README.md)
* [호환성](https://github.com/usbarmory/tamago/wiki/Compatibility)
* [내부 구조](https://github.com/usbarmory/tamago/wiki/Internals)
* [FAQ](https://github.com/usbarmory/tamago/wiki/Frequently-Asked-Questions-(FAQ))
* 발표 자료: [TamaGo](https://github.com/abarisani/abarisani.github.io/tree/master/research/tamago), [ArmoredWitness](https://github.com/abarisani/abarisani.github.io/tree/master/research/witness)

유지 관리자
===========

Andrea Barisani  
[email protected]  

Andrej Rosano  
[email protected]  

라이선스
=======

tamago | https://github.com/usbarmory/tamago  
Copyright (c) The TamaGo Authors. All Rights Reserved.

이 프로젝트는 [LICENSE](https://github.com/usbarmory/tamago/blob/master/LICENSE) 파일에 있는
BSD 스타일 라이선스에 따라 배포됩니다.

TamaGo 로고는 Renee French가 디자인하고 Creative Commons 3.0 Attributions
라이선스에 따라 라이선스가 부여된 Go gopher를 각색한 것입니다. Go Gopher 벡터
일러스트는 Hugo Arganda가 제작했습니다.
도구 다운로드