**Go‑Boot:ベアメタル用 Go で書かれた UEFI ブートマネージャ**

UEFI ファームウェア上で直接動作する軽量な純粋 Go 実装のブートローダです。UEFI の設定を解析し、カーネルイメージをロードして制御を渡す機能を備えており、開発と移植性を重視してすべて Go で実装されています。

2025/12/18 9:08

**Go‑Boot:ベアメタル用 Go で書かれた UEFI ブートマネージャ** UEFI ファームウェア上で直接動作する軽量な純粋 Go 実装のブートローダです。UEFI の設定を解析し、カーネルイメージをロードして制御を渡す機能を備えており、開発と移植性を重視してすべて Go で実装されています。

RSS: https://news.ycombinator.com/rss

要約

Japanese Translation:


Summary

go‑boot は AMD64 マシン向けに UEFI シェルと OS ローダーを提供する軽量 Go ユニカーネルです。 EFI アプリケーション、Linux カーネル(UAPI エントリ経由)、および Windows UEFI ブートマネージャイメージを起動できます。

Core features

  • cat
    cpuid
    efivar
    dns
    linux/l
    memmap
    net
    peek
    protocol
    等、多数の組み込みコマンド付きインタラクティブ UEFI シェルを提供します。
  • デフォルト動作ではシェルが表示されます。Enter キー(または
    l
    /
    linux
    と入力)でコンパイル時デフォルトの UAPI エントリ(
    \loader\entries\arch.conf
    )が起動します。

Building and configuration

go-boot.efi
をビルドするには、以下の環境変数を設定します:

VariablePurposeDefault
IMAGE_BASE
(hex)
バイナリのベースアドレス必須
DEFAULT_EFI_ENTRY
デフォルト EFI イメージへのパス
\efi\boot\bootx64.efi
DEFAULT_LINUX_ENTRY
デフォルト Linux エントリへのパス
\loader\entries\arch.conf
CONSOLE
コンソールタイプ(
com1
または
text
text
NET
ネットワーク有効化(SNP/​go‑net)
0

以下でビルドします:

make efi IMAGE_BASE=10000000 CONSOLE=text   # ネットワークを有効にする場合は NET=1 を追加

Running locally or in emulation

  • UEFI boot manager – バイナリを
    /boot/loader/entries/go-boot.conf
    配下(例:
    efi /EFI/Linux/go-boot.efi
    )に置きます。
  • QEMU + OVMF
    make qemu OVMFCODE=<path>
    を使用します。ネットワークを有効にした場合は TAP インターフェース(
    tap0
    )を設定し、
    make qemu-gdb
    で GDB を
    target remote 127.0.0.1:1234
    経由でアタッチします。
  • ネットワークコマンド (
    net
    dns
    ) は設定済み IP アドレス上でデバッグサーバー(HTTP pprof、SSH)を起動します。

Documentation & licensing

プロジェクトは wiki 上にハードウェア互換性リスト(HCL)を維持しており、コンパイル用のテスト

IMAGE_BASE
値が掲載されています。go‑boot は BSD スタイルライセンス(
https://github.com/usbarmory/go-boot
)でオープンソース化されており、コピーレフト制限なしに商業利用できます。

Cloud example

Google Compute Engine デプロイメント例が提供されており(抜粋では詳細は省略)、go‑boot がクラウド VM 環境でも動作可能であることを示しています。


この要約はすべての主要ポイントを網羅し、非サポート推論を削除し、読者に対して技術的な詳細を明確化します。

本文

はじめに

go‑boot プロジェクトは、TamaGo ユニカーネルであり、AMD64 用の UEFI Shell と OS ローダーを実装しています。UEFI API との対話やオペレーティングシステムのロードが可能です。

OS ローディング機能では以下を起動できます:

  • EFI アプリケーションイメージ
  • Linux カーネル(Linux ユーザー空間 API (UAPI) のブートローダーエントリから構成情報を解析)
  • Windows UEFI ブートマネージャ

将来のリリースではブート透明性サポートが計画されています。


作者

Andrea Barisani – andrea@inversepath.com


操作方法

デフォルトの操作は UEFI Shell とヘルプを表示します。

ショートカット(
l
または
linux
と同等)は、コンパイル時に設定されたデフォルト UAPI エントリセットをブートします(ビルド方法 を参照)。

Shell> go-boot.efi
initializing EFI services
initializing console (text)

go-boot • tamago/amd64 (go1.24.1) • UEFI x64

<path>            # EFI イメージをロードして起動
build              # ビルド情報
cat <path>         # ファイル内容表示
clear              # 画面クリア
cpuid <leaf> <subleaf>   # CPU 能力表示
date (time in RFC339 format)?   # 実行時日時を表示/変更
efivar (verbose)?               # UEFI 変数一覧
dns <host>                     # ドメイン解決
exit,quit                      # アプリケーション終了
halt,shutdown                  # システムシャットダウン
info                           # 実行時情報
linux,l (loader entry path)?   # Linux カーネルイメージをブート
linux,l,\r                    # `l \loader\entries\arch.conf`
log                            # 実行時ログ表示
ls (path)?                     # ディレクトリ内容一覧
lspci                          # PCI デバイス一覧
memmap (e820)?                 # UEFI メモリマップ表示
mode <mode>                    # 画面モード設定
net <ip> <mac> <gw> (debug)?   # UEFI ネットワーク開始
peek <hex offset> <size>       # メモリ閲覧(注意)
poke <hex offset> <hex value>  # メモリ書き込み(注意)
protocol <registry format GUID> # UEFI プロトコル検索
reset (cold|warm)?             # システム再起動
stack                          # 現在のゴルーチンスタックトレース
stackall                       # すべてのゴルーチンスタックトレース
stat <path>                    # ファイル情報表示
uefi                           # UEFI 情報
uptime                         # システム稼働時間
windows,win,w                  # Windows UEFI ブートマネージャ起動

> uefi
UEFI Revision ......: 2.70
Firmware Vendor ....: Lenovo
Firmware Revision ..: 0x1560
Runtime Services  ..: 0x90e2eb98
Boot Services ......: 0x6bd17690
Frame Buffer .......: 1920x1200 @ 0x4000000000
Configuration Tables: 0x8f426018
  ee4e5898-3914-4259-9d6e-dc7bd79403cf (0x8db6dc98)
  dcfa911d-26eb-469f-a220-38b7dc461220 (0x8b037018)

> memmap
Type Start            End              Pages            Attributes
02   0000000090000000 0000000090000fff 0000000000000001 000000000000000f

> linux \loader\entries\arch.conf
loading boot loader entry \loader\entries\arch.conf
go-boot exiting EFI boot services and jumping to kernel
Linux version 6.13.6-arch1-1 (linux@archlinux) (gcc (GCC) 14.2.1 20250207, GNU ld (GNU Binutils) 2.44)

パッケージドキュメント

ハードウェア互換性リスト

サポート対象ハードウェアはプロジェクト Wiki の HCL に記載されています。コンパイル時に渡すべき

IMAGE_BASE
値(テスト済み)が掲載されています。

ビルド方法

TamaGo コンパイラをビルドするか、最新バイナリを使用します。

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

環境変数(

go-boot.efi
用):

変数目的
IMAGE_BASEターゲット UEFI 環境で利用可能なメモリ領域内に設定する必要があります。HCL または
memmap
コマンドで取得できます。空の場合は共通デフォルトが使用されます。
DEFAULT_EFI_ENTRYEFI イメージロード用の
.
ショートカットエントリパス(デフォルト:
\efi\boot\bootx64.efi
)。
DEFAULT_LINUX_ENTRYLinux カーネル起動用ショートカットローダーエントリパス(デフォルト:
\loader\entries\arch.conf
)。
CONSOLE
com1
または
text
(デフォルト)で出力コンソールを制御。
NET0(デフォルト)または 1 で UEFI ネットワークサポートを有効化。

実行ファイルをビルド:

git clone https://github.com/usbarmory/go-boot && cd go-boot
make efi IMAGE_BASE=10000000 CONSOLE=text

UEFI アプリケーションとして実行

UEFI Shell またはブートマネージャから

go-boot.efi
をロードします。

systemd‑boot エントリ例

# /boot/loader/entries/go-boot.conf
title Go Boot
efi /EFI/Linux/go-boot.efi

EFIBootmgr 例

efibootmgr -C -L "go-boot" -d $DISK -p $PART -l '\EFI\go-boot.efi'

UEFI ネットワーク

NET=1
の場合、Simple Network Protocol (SNP) と
go-net
によりネットワークサポートが組み込まれます。
net
dns
コマンドが利用可能になります。

> net 10.0.0.1/24 : 10.0.0.2 debug
starting debug servers:
        http://10.0.0.1:80/debug/pprof
        ssh://10.0.0.1:22
network initialized (10.0.0.1/24 da:e7:ac:e2:5e:05)

> dns golang.org
[142.251.209.17 2a00:1450:4002:410::2011]

QEMU エミュレーション

make qemu OVMFCODE=<path to OVMF_CODE.fd>

NET=1
の場合、Linux 例ではタップインターフェースを設定します:

ip tuntap add dev tap0 mode tap group <your user group>
ip addr add 10.0.0.2/24 dev tap0
ip link set tap0 up

GDB デバッグ

make qemu-gdb   # QEMU が GDB 接続を待機
gdb -ex "target remote 127.0.0.1:1234"

通常通りブレークポイントを設定してください。

クラウドデプロイメント

例として、Google Compute Engine 等のクラウド環境向けに UEFI ブート可能なイメージを作成・展開する手順が示されています。


ライセンス

go-boothttps://github.com/usbarmory/go-boot
著作権 © go‑boot 作者全員 All Rights Reserved.

本ソースファイルは

LICENSE
ファイルに記載されている BSD スタイルのライセンスの下で配布されています。

同じ日のほかのニュース

一覧に戻る →

2025/12/24 2:33

ファブリス・ベルラドが MicroQuickJS をリリース

## Japanese Translation: GitHubの最新オファリングは、AI駆動のコード作成、統合開発ワークフロー、および組み込みセキュリティを一つの体験に融合した統一プラットフォームです。 - **AIツール**:CopilotとSparkは開発者がより高品質なコードを書き、プロンプトを管理し、外部サービスへ接続するのを支援します。 - **ワークフロー**:Actionsは任意のワークフローを自動化し、Codespacesは即時にクラウド開発環境を提供します。Issues、Plans、およびCode Reviewはチームが作業を追跡し変更点をレビューできるようにし、すべて単一パイプライン内でハンドオフを減らします。 - **セキュリティ**:Advanced Securityはビルド時に脆弱性をスキャンし、シークレット保護は認証情報の漏洩を事前に防止します。 - **対象ユーザー**:エンタープライズから中小チーム、スタートアップ、非営利団体まで、アプリモダナイゼーション、DevSecOps、DevOps、およびCI/CDなどのユースケースで利用可能です。 - **対応業界**:ヘルスケア、金融サービス、製造、政府機関その他多数。 - **追加リソース**:ドキュメント、ブログ、変更履歴、マーケットプレイス、イベント/ウェビナー、電子書籍/レポート、ビジネスインサイト、スキルトレーニング、サポート、コミュニティフォーラム、Trust Center、およびパートナープログラムがすべて利用可能で、チームの成功を支援します。 - **エンタープライズソリューション**:GitHub Enterprise PlatformにはAdvanced Security、Copilot for Business、プレミアムサポート、24/7 エンタープライズレベルサービスなどのAI駆動開発プラットフォームと追加機能が含まれ、それぞれ階層化された価格モデルで提供されます。 これらの機能を組み合わせることで、あらゆる規模の組織においてコード生成をより迅速かつ安全に行い、ワークフローを効率化します。

2025/12/24 6:54

**X‑ray:PDF 文書における不適切な赤字消去(レダクション)を検出するための Python ライブラリ**

## Japanese Translation: --- ## Summary x‑rayは、PDF文書内の不適切な赤字(黒い四角形が背後にあるテキストを完全に覆えていない)を自動で検出するPythonライブラリです。PyMuPDFでPDFをスキャンし、四角形の形状を特定してページコンテンツ上に重ね合わせ、各形状が実際に隠された情報を遮蔽しているかどうかをテストします。不適切な赤字はJSON(またはPython辞書)として報告され、ページ番号、境界ボックス、および隠されたテキストがリスト化されます。 ### Installation ```bash uv add x-ray # 既存のuvプロジェクトに追加 pip install xray # 標準的なpipインストール ``` インストールせずに実行することも可能です: ```bash uvx --from x-ray xray <PDF_URL> ``` ### Usage *コマンドライン:* ```bash xray path/to/file.pdf xray https://free.law/pdf/example.pdf # バッチURL cat urls.txt | xargs -n 1 xray ``` *Python import:* ```python import xray bad_redactions = xray.inspect("some/path/to/file.pdf") # `inspect` は str、pathlib.Path、URL(https://)、または PDF コンテンツの bytes を受け取ります。 ``` ### Output このツールは、ページ番号をキーとし、不適切な赤字オブジェクトのリストを値とするJSONを出力します。各オブジェクトには `bbox` タプルと隠された `text` が含まれます。モジュールとして使用した場合、同等のPython辞書が返されます。 ### Project context - Free Law Projectで数百万件のPDFを監査し、法的透明性を確保するために使用されています。 - GitHub上でオープンソース化されており、貢献にはCLAへの署名が必要で、issues経由で管理されます。 - リリースはGitHub Actionsで自動化されており、手動リリースでは `CHANGES.md`、`pyproject.toml` の更新、タグ付け、およびPoetryによる公開を行います。 - BSDライセンス(許諾型)で配布されています。 x‑rayの軽量なインストールと明確なレポート機能は、法務テック企業や規制当局、オープンデータイニシアチブが不備のある赤字を迅速に特定し、コンプライアンスと透明性を維持するのに役立ちます。

2025/12/24 4:35

テレンス・マリック『Disciples』

## Japanese Translation: テレンス・マリックの独特な美学―長いモンタージュ、自然光、詩的ナレーション、そして従来の物語構造への拒否――は、そのスタイルを直接模倣せずに採用する新しい映画作家たちの波を呼び起こしました。 代表例としてラメル・ロス監督の『ニッケル・ボーイズ』(2024年)が挙げられます。この作品はコールソン・ホワイトヘッド小説の改編で、ベストピクチャー賞ノミネートを獲得しました。ロスはマリックの『The Tree of Life』に触発され、その制作に関わったプロデューサーの一人が手助けしたといいます。彼は監督のアプローチを第一人称視点と断片的な詩性へと翻訳し、没入型の神話的物語を創造していますが、それでも独自性を保っています。 他の現代映画監督――クロエ・ザオ(『ノマドランド』)、クリント・ベンツリー(『Train Dreams』)、デイヴィッド・ゴードン・グリーン(『ジョージ・ワシントン』)、そしてローラ・ダン――はマリックの視覚言語を響かせますが、表面的な模倣を避けるために自らの感性と融合させる必要があります。A.J. エドワーズ(『The Better Angels』)やデイヴィッド・ロウリー(『Ain’t Them Bodies Saints』)による試みは、スタイルフレームワーク内で真の人間性を捉える難しさを示しています。 マリックのキャリアは、『Badlands』と『Days of Heaven』という初期叙事詩から始まり、20年間の休止期間を経て、『The Thin Red Line』『The New World』『The Tree of Life』などの後期作品へと進化しました。彼の作品は常に精神性・自然・人間存在を探求しつつ、批評家から高い評価を受ける一方で、ボックスオフィスでは稀にしかヒットしません。マリックの総合的な目標――失われた精神性とアメリカ映画を再接続すること――は、芸術的解放とハリウッドの従来の物語期待との間で緊張を生み出します。 この記事では、マリックの美学と制作手法が多くの人々にインスピレーションを与えている一方で、本当の影響力は表面的な技術を単純に模倣するのではなく、それらの要素を自分自身の物語ビジョンへと翻訳することにあると主張しています。

**Go‑Boot:ベアメタル用 Go で書かれた UEFI ブートマネージャ** UEFI ファームウェア上で直接動作する軽量な純粋 Go 実装のブートローダです。UEFI の設定を解析し、カーネルイメージをロードして制御を渡す機能を備えており、開発と移植性を重視してすべて Go で実装されています。 | そっか~ニュース