Successfully reported this slideshow.

UEFI向け自作OSの紹介

2

Share

Loading in …3
×
1 of 11
1 of 11

UEFI向け自作OSの紹介

2

Share

Download to read offline

独自OS委員会第一回公聴会[*1]とOpen Source UN-Conference 2017 Kawagoe[*2]のLT発表内容をスライド化したものです。

[*1] https://fpgastartup.connpass.com/event/53052/
[*2] https://koedolug.connpass.com/event/47569/

独自OS委員会第一回公聴会[*1]とOpen Source UN-Conference 2017 Kawagoe[*2]のLT発表内容をスライド化したものです。

[*1] https://fpgastartup.connpass.com/event/53052/
[*2] https://koedolug.connpass.com/event/47569/

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

UEFI向け自作OSの紹介

  1. 1. UEFI向け自作OSの紹介 大神 祐真 yuma@ohgami.jp
  2. 2. ● 大神 祐真 – http://yuma.ohgami.jp ● 組み込み系の技術営業(2016/12〜) – 同会社のエンジニア(〜2016/11) ● 趣味 – フルスクラッチでOS自作 技術書典2(4/9 日) 配置: え-15 超技術書典(4/29 土) 配置: B-20
  3. 3. カーネル 時間 管理 ファイルシステム システムコール デバイスドライバ ユーザーランド libkernel libcommon コンソール CPU メモリ KBC CRTCPIT タスク管理 スケジューラ タスクローダ メモリ管理 ページング メモリアロケータ ソ フ ト ハ ー ド shell uptime whoareyou libstring libconsole ライブラリ アプリケーション
  4. 4. カーネル 時間 管理 ファイルシステム システムコール デバイスドライバ ユーザーランド libkernel libcommon コンソール CPU メモリ KBC CRTCPIT タスク管理 スケジューラ タスクローダ メモリ管理 ページング ソ フ ト ハ ー ド shell uptime whoareyou libstring libconsole ライブラリ アプリケーション メモリアロケータUEFI UEFI UEFI UEFI
  5. 5. 実行している様子 引数で与えたファイルをシェルスクリプトとして実行 view 1 2 3 4 内容 ※ タイプ数削減のため、ファイル名は1文字 【viewコマンド】 引数で与えたファイルを画像ファイルとして 画面表示
  6. 6. 実行している様子 viewコマンドを使用し、画像ファイルとして用意したスライドを表示 【viewコマンド実行中の操作】 ● 'h'キー: 最初へ ● 'j'キー: 次へ ● 'J'キー: 5枚次へ ● 'k'キー: 前へ ● 'K'キー: 5枚前へ ● 'l'キー: 最後へ ● 'q'キー: 終了
  7. 7. 実行している様子 UEFIで扱う文字はUnicodeなので、 日本語を表示できる multitestはUEFIでマルチコアを扱う動作確認コマンド 発表時のPC(Lenovo ThinkPad)にはCPUが4つあり、 その内の1つがBSP(Boot Strap Processor)で、 残る3つがAP(Application Processor) BSPではシェルを実行中 multitestは、各APにプロセッサ番号を表示させている
  8. 8. 備考 ● インタフェース仕様はUEFIで決められているが、 ファームウェア実装はメーカーによりけりな模様 ● Lenovo ThinkPadのファームウェア(UEFIバージョン2.3.1)では 以下のとおり – 大抵の漢字は化ける – 画像表示関数(*1)が使えない ● フレームバッファの先頭アドレスを取得し、 ピクセルデータを直接書き込むことで画像表示している (*1) Graphics Output ProtocolのBlt(Block Transfer)関数
  9. 9. 付録1: 試してみるには ● 以下で実行バイナリ版を公開しています – http://yuma.ohgami.jp ● zipを展開し、以下の構成でストレージへ配置してください – USBフラッシュメモリ ├ EFI │└ BOOT │ └ BOOTX64.EFI ├ 1 ├ 2 ├ 3 ├ 4 ├ a ├ b ├ c └ d ● その後、ファイルを配置したストレージから 起動してください ※ 起動ディスクの設定を行うこと ※ 第1パーティションへ配置すること ※ 第1パーティションはFATでフォーマット   されていること ※ Lenovoのファームウェア(UEFIバージョン2.3.1)   でしか試したことがなく、ちゃんと動くかは   分かりません
  10. 10. 付録2: catとviewのデータ形式 ● cat – UTF-16 (リトルエンディアン / BOM無し) – nkfコマンドでの変換例 $ nkf -w16L0 hello.txt > hello_utf16.txt ● view – ピクセルフォーマット: BGRA各8ビット(32bits/pixel) – 解像度: 640x480 のみ – convertコマンドでの変換例 $ convert slide.png -resize 640x -depth 8 slide.bgra
  11. 11. 付録3: ソースコードの場所 ● 発表時点のソースコード – https://github.com/cupnes/os6/releases/tag/demo_20170413 ● ビルド方法など – 以下を参照(bare_metal_uefiのGitHubプロジェクト) ● https://github.com/cupnes/bare_metal_uefi – 現時点で、OS6のソースコードは読みやすいものではないので、 UEFIプログラミング方法などを参照する際も bare_metal_uefiの方が見やすいと思います – ブログ記事も書きました 「UEFIベアメタルプログラミング - Hello UEFI!(ベアメタルプログラミングの流れについて) - へにゃぺんて@日々勉強のまとめ」 http://d.hatena.ne.jp/cupnes/20170408/1491654807

×