海洋軟件海洋軟件

UEFI読本 ごった煮編

  • ダウンロード商品
    ¥ 500

Unified Extensible Firmware (UEFI)はファームウェアの規格と実装であり、広く使われているx86アーキテクチャではデファクトスタンダードとなっている。本書はUEFIに関する独立したいくつかの記事をまとめたものである。 記事は以下のような内容となっている: * JavaScriptエンジンのUEFIへの移植 * 特別なツールチェーンを利用しないUEFI Applicationの作成 * OSのEFI stub化によるUEFI対応 * GDBによるUEFI Applicationのデバッグ * RustのUEFI向けライブラリの紹介と比較 全60ページ 目次 はじめに 第1章 ふつうのアプリケーションをUEFIに移植する 1.1 Linux上でのmjsのビルド 1.2 EDK2のセットアップ 1.3 mjsの移植 1.3.1 .infファイルの記述 1.3.2 mjsのUEFI対応 - UEFIに移植されたインタプリタ 第2章 ゼロからUEFI Applicationをつくってみる 2.1 作成の方針 2.2 PEヘッダ概説 2.2.1 DOS Header 2.2.2 COFF File Header 2.2.3 Optional Header 2.2.4 Section Table 2.3 PEでのセクションの配置 2.4 外部からのPEヘッダの編集 2.5 呼出規約の違い 2.6 ビルドと実行 第3章 OSをUEFIから直接起動できるようにしてみる 3.1 Unikraftとは 3.1.1 Unikraftのビルドと実行 3.2 PEヘッダの追加 3.3 Makefileへのターゲットの追加 3.4 エントリポイントの設定 3.5 イメージの再配置 3.5.1 メモリマップの取得 3.5.2 再配置先の確保とイメージのコピー 3.6 スタックとヒープの設定 3.7 ExitBootServicesの呼び出し 3.8 再配置先への移行 3.9 ビルドと実行 第4章 UEFI Applicationをデバッグする 4.1 UEFIアプリのデバッグ方法(OSdev.org) 4.1.1 UEFIアプリにベースアドレスを出力する修正を加える 4.1.2 qemuのgdb server機能を有効にして起動する 4.1.3 qemuに接続したgdb上で手順2. で調べたアドレスへシンボル情報を流し込む 4.1.4 デバッグする 4.2 UEFIアプリのデバッグ方法(tnishinaga流) 4.2.1 UEFIアプリ起動の自動化 4.2.2 ベースアドレス取得の自動化 4.3 おしまい 第5章 プログラミング言語RustをUEFIターゲットで用いるには 5.1 ベアメタルプログラミングとは 5.2 ベアメタルにおけるプログラミング言語 5.3 Rustとは 5.4 なぜRustなのか 5.5 Rust on UEFI 5.6 Rustでベアメタルプログラミングを行う準備 5.7 rust-uefi 5.8 uefi-rs 5.9 efi 5.10 efw 5.11 まとめ

Unified Extensible Firmware (UEFI)はファームウェアの規格と実装であり、広く使われているx86アーキテクチャではデファクトスタンダードとなっている。本書はUEFIに関する独立したいくつかの記事をまとめたものである。 記事は以下のような内容となっている: * JavaScriptエンジンのUEFIへの移植 * 特別なツールチェーンを利用しないUEFI Applicationの作成 * OSのEFI stub化によるUEFI対応 * GDBによるUEFI Applicationのデバッグ * RustのUEFI向けライブラリの紹介と比較 全60ページ 目次 はじめに 第1章 ふつうのアプリケーションをUEFIに移植する 1.1 Linux上でのmjsのビルド 1.2 EDK2のセットアップ 1.3 mjsの移植 1.3.1 .infファイルの記述 1.3.2 mjsのUEFI対応 - UEFIに移植されたインタプリタ 第2章 ゼロからUEFI Applicationをつくってみる 2.1 作成の方針 2.2 PEヘッダ概説 2.2.1 DOS Header 2.2.2 COFF File Header 2.2.3 Optional Header 2.2.4 Section Table 2.3 PEでのセクションの配置 2.4 外部からのPEヘッダの編集 2.5 呼出規約の違い 2.6 ビルドと実行 第3章 OSをUEFIから直接起動できるようにしてみる 3.1 Unikraftとは 3.1.1 Unikraftのビルドと実行 3.2 PEヘッダの追加 3.3 Makefileへのターゲットの追加 3.4 エントリポイントの設定 3.5 イメージの再配置 3.5.1 メモリマップの取得 3.5.2 再配置先の確保とイメージのコピー 3.6 スタックとヒープの設定 3.7 ExitBootServicesの呼び出し 3.8 再配置先への移行 3.9 ビルドと実行 第4章 UEFI Applicationをデバッグする 4.1 UEFIアプリのデバッグ方法(OSdev.org) 4.1.1 UEFIアプリにベースアドレスを出力する修正を加える 4.1.2 qemuのgdb server機能を有効にして起動する 4.1.3 qemuに接続したgdb上で手順2. で調べたアドレスへシンボル情報を流し込む 4.1.4 デバッグする 4.2 UEFIアプリのデバッグ方法(tnishinaga流) 4.2.1 UEFIアプリ起動の自動化 4.2.2 ベースアドレス取得の自動化 4.3 おしまい 第5章 プログラミング言語RustをUEFIターゲットで用いるには 5.1 ベアメタルプログラミングとは 5.2 ベアメタルにおけるプログラミング言語 5.3 Rustとは 5.4 なぜRustなのか 5.5 Rust on UEFI 5.6 Rustでベアメタルプログラミングを行う準備 5.7 rust-uefi 5.8 uefi-rs 5.9 efi 5.10 efw 5.11 まとめ