Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
UEFI向け自作OSの紹介
大神 祐真
yuma@ohgami.jp
● 大神 祐真
– http://yuma.ohgami.jp
● 組み込み系の技術営業(2016/12〜)
– 同会社のエンジニア(〜2016/11)
● 趣味
– フルスクラッチでOS自作
技術書典2(4/9 日)
配置: え-15
超技術...
カーネル
時間
管理
ファイルシステム
システムコール
デバイスドライバ
ユーザーランド
libkernel libcommon
コンソール
CPU メモリ KBC CRTCPIT
タスク管理
スケジューラ
タスクローダ
メモリ管理
ページング...
カーネル
時間
管理
ファイルシステム
システムコール
デバイスドライバ
ユーザーランド
libkernel libcommon
コンソール
CPU メモリ KBC CRTCPIT
タスク管理
スケジューラ
タスクローダ
メモリ管理
ページング...
実行している様子
引数で与えたファイルをシェルスクリプトとして実行
view 1 2 3 4
内容
※ タイプ数削減のため、ファイル名は1文字
【viewコマンド】
引数で与えたファイルを画像ファイルとして
画面表示
実行している様子
viewコマンドを使用し、画像ファイルとして用意したスライドを表示
【viewコマンド実行中の操作】
● 'h'キー: 最初へ
● 'j'キー: 次へ
● 'J'キー: 5枚次へ
● 'k'キー: 前へ
● 'K'キー: 5枚...
実行している様子
UEFIで扱う文字はUnicodeなので、
日本語を表示できる
multitestはUEFIでマルチコアを扱う動作確認コマンド
発表時のPC(Lenovo ThinkPad)にはCPUが4つあり、
その内の1つがBSP(Boo...
備考
●
インタフェース仕様はUEFIで決められているが、
ファームウェア実装はメーカーによりけりな模様
●
Lenovo ThinkPadのファームウェア(UEFIバージョン2.3.1)では
以下のとおり
– 大抵の漢字は化ける
– 画像表示...
付録1: 試してみるには
●
以下で実行バイナリ版を公開しています
– http://yuma.ohgami.jp
●
zipを展開し、以下の構成でストレージへ配置してください
– USBフラッシュメモリ
├ EFI
│└ BOOT
│ └ B...
付録2: catとviewのデータ形式
●
cat
– UTF-16 (リトルエンディアン / BOM無し)
– nkfコマンドでの変換例
$ nkf -w16L0 hello.txt > hello_utf16.txt
●
view
– ピク...
付録3: ソースコードの場所
●
発表時点のソースコード
– https://github.com/cupnes/os6/releases/tag/demo_20170413
●
ビルド方法など
– 以下を参照(bare_metal_uefiの...
Upcoming SlideShare
Loading in …5
×

UEFI向け自作OSの紹介

458 views

Published on

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

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

Published in: Software
  • Be the first to comment

  • Be the first to like this

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

×