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.

軽快なBHyVe

3,269 views

Published on

Published in: Technology
  • DOWNLOAD THAT BOOKS/FILE INTO AVAILABLE FORMAT - (Unlimited) ......................................................................................................................... ......................................................................................................................... Download FULL PDF EBOOK here { http://bit.ly/2m6jJ5M } ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... accessibility Books Library allowing access to top content, including thousands of title from favorite author, plus the ability to read or download a huge selection of books for your pc or smartphone within minutes Christian, Classics, Comics, Contemporary, Cookbooks, Art, Biography, Business, Chick Lit, Children's, Manga, Memoir, Music, Science, Science Fiction, Self Help, History, Horror, Humor And Comedy, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

軽快なBHyVe

  1. 1. 軽快なBHyVe @syuu1228
  2. 2. BHyVeの現状• 独自ローダからFreeBSDカーネルをゲス トOSとしてロード&ブート出来るだけ• BIOS無いからブートローダが動かな い! →ディスクイメージから任意のOSを起 動出来ない!
  3. 3. BIOSコールの仕組みint 13h ソフト割込(INT命令) CPUが割込ベクタを読む BIOS上のハンドラを実行 IO ハードウェア
  4. 4. KVM上でのBIOSコール int 13h ソフト割込(INT命令) CPUが割込ベクタを読む BIOS上のハンドラを実行 SeaBIOSがHWへIO IO Trap を実行 QEMU HWGuest Emulation QEMUが必要なHWエ HyperVisor ミュレーションを実施
  5. 5. SeaBIOSをBHyVeに 載せりゃええやん• 提案しました• 却下されました• GPLだからです• ( ゚∀゚)o彡゚BSDL! ( ゚∀゚)o彡゚BSDL!
  6. 6. でもBSDLでBIOSコールをエミュレートするソフトはあるよ• doscmdとか(FreeBSD上で動作)• 仮想8086モードでDOSプログラムを走 らせ、BIOSコールやDOS APIなどのソフ ト割り込みをtrap、エミュレート• 32bit実装だし移植するならHyperVisor側 に入れた方が楽
  7. 7. BIOSコールをHyperVisorで エミュレーションする Guest ソフト割込(INT命令) 割り込み TrapHyperVisor BHyVe BIOS Emulation • ソフト割り込みをTrapしてHyperVisor側 でBIOSエミュレーションを実行すれば よい?
  8. 8. Intel VTでソフト割り込みを Trapすると…• 全てのソフト割り込みがTrapされる• 多くのOSがシステムコールにソフト割 り込みを使うが、それはゲストOSで処 理して欲しいのでTrapしたくない
  9. 9. ソフト割り込みの中から BIOSコールだけを抽出• CPUのモードがリアルモードか仮想8086モードになっ た時にソフト割り込みの全Trapを有効化、プロテクト モードになった時に無効化 →BIOSエミュレーションとCPUモードのステート管理 を行う• この場合でも、リアルモードを用いるOSではシステム コールでTrapがかかってしまう• 面倒くさそう
  10. 10. ついにこの本を役立てる時が来たか(ゴゴゴゴゴゴ…
  11. 11. 軽快なBIOSコール エミュレーションの提案 ソフト割込(INT命令) CPUが割込ベクタを読む 擬似BIOS上のハンドラを実行 擬似BIOSが VMCALL Trap VMCALL命令を発行 BHyVe BIOSGuest Emulation BHyVeが必要なBIOSコールエ HyperVisor ミュレーションを実施
  12. 12. 擬似BIOS上の ハンドラ実行イメージpush dx /* dxを退避 */ push cx /* cxを退避 */ xor dx, dx /* dx = 0 (0番のvmcallはBIOSコール) */ mov cx, 13h /* cx = 13h (int 13hである事を通知) */ vmcall /* HyperVisorへVMExit、BIOSエミュレーション */ pop cx /* cxを復帰 */ pop dx /* dxを復帰 */ iret /* 割り込みから復帰 */
  13. 13. 軽快なBIOSコールエミュレーションでは…• 意図しないTrapを発生させない• 発生させない為に努力をする必要もな い• シンプル
  14. 14. まとめ• VM床ぶち抜き術はこんなところでも使 えて非常に有用な技術です• あなたのお持ちのVT対応パソコンも早 く床をぶち抜きたくてうずうずしてい ます、期待に応えてあげましょう
  15. 15. 何でBIOS無いと ブートローダ動かんの• GRUBの例 /* * BIOS call "INT 0x13 Function 0x42" to read sectors from disk into memory * Call with %ah = 0x42 * %dl = drive number * %ds:%si = segment:offset of disk address packet * Return: * %al = 0x0 on success; err code on failure */ movb $0x42, %ah int $0x13   ↑BIOSコール(ソフトウェア割り込みにより実現)
  16. 16. BIOSコールの仕組み ③IO命令でHWへアクセス highmem FFFF:000F ROM BIOS FFFF:0000 F000:0000②割込ベクタが指してるアドレス VGAとか色々 へジャンプ! A000:0000 lowmem 0000:0400①割込ハンドラのアドレスを取得 割り込みベクタ 0000:0000
  17. 17. KVM上でのBIOSコール ③IO命令をKVMでtrap、 QEMUでエミュレーション highmem FFFF:000F SeaBIOS FFFF:0000 F000:0000②割込ベクタが指してるアドレス VGAとか色々 へジャンプ! A000:0000 lowmem 0000:0400①割込ハンドラのアドレスを取得 割り込みベクタ 0000:0000

×