Enviar búsqueda
Cargar
how to port * to BitVisor (2)
•
0 recomendaciones
•
352 vistas
I
icchy
Seguir
BitVisor Summit 8
Leer menos
Leer más
Tecnología
Denunciar
Compartir
Denunciar
Compartir
1 de 15
Descargar ahora
Descargar para leer sin conexión
Recomendados
量子コンピュータと量子暗号 Quantum Computer & Quantum Cryptography
量子コンピュータと量子暗号 Quantum Computer & Quantum Cryptography
Kite Koga
平成生まれのための MINIX 講座
平成生まれのための MINIX 講座
TAKANO Mitsuhiro
Bitcoin testnet
Bitcoin testnet
Yuichiro Shibata
仮想通貨テストベッドネットワークの構築
仮想通貨テストベッドネットワークの構築
Yuichiro Shibata
図解 Blockchainの仕組み
図解 Blockchainの仕組み
Nisei Kimura
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
NTT DATA OSS Professional Services
使ってみよう暗号通貨
使ってみよう暗号通貨
Wataru Shinohara
芸術情報演習デザイン(Web) 130411
芸術情報演習デザイン(Web) 130411
Atsushi Tadokoro
Recomendados
量子コンピュータと量子暗号 Quantum Computer & Quantum Cryptography
量子コンピュータと量子暗号 Quantum Computer & Quantum Cryptography
Kite Koga
平成生まれのための MINIX 講座
平成生まれのための MINIX 講座
TAKANO Mitsuhiro
Bitcoin testnet
Bitcoin testnet
Yuichiro Shibata
仮想通貨テストベッドネットワークの構築
仮想通貨テストベッドネットワークの構築
Yuichiro Shibata
図解 Blockchainの仕組み
図解 Blockchainの仕組み
Nisei Kimura
ブロックチェーンの仕組みと動向(入門編)
ブロックチェーンの仕組みと動向(入門編)
NTT DATA OSS Professional Services
使ってみよう暗号通貨
使ってみよう暗号通貨
Wataru Shinohara
芸術情報演習デザイン(Web) 130411
芸術情報演習デザイン(Web) 130411
Atsushi Tadokoro
pkgsrcに関する何か 2009 - 何と何で何とやら
pkgsrcに関する何か 2009 - 何と何で何とやら
Akio OBATA
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchain
Takahiro Hayashida
5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み
Ryo Shimamura
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
Akio OBATA
Bsdtw repo
Bsdtw repo
Yuichiro Naito
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
bitbank, Inc. Tokyo, Japan
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
kunst1080
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話
Akio OBATA
多摩美メディア芸術基礎I 第1回: WWW基礎
多摩美メディア芸術基礎I 第1回: WWW基礎
Atsushi Tadokoro
Minecraft modding 06
Minecraft modding 06
Takunology
Minecraft modding 09
Minecraft modding 09
Takunology
情報編集(Web) 130409
情報編集(Web) 130409
Atsushi Tadokoro
Vagrantで即席クラウドストレージ
Vagrantで即席クラウドストレージ
Yoshimi Tominaga
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
Naoya Kaneko
KOF2016東海道らぐLT
KOF2016東海道らぐLT
Shu Kobuchi
Securing Supply Chains
Securing Supply Chains
Takahiro Yoshimura
Sfstudy #2
Sfstudy #2
(^-^) togakushi
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
Yuto Takei
Beijing Report 2022
Beijing Report 2022
Takahiro Yoshimura
Mashup Hackathon 名古屋 MA11
Mashup Hackathon 名古屋 MA11
Wataru Sato
how to port * to BitVisor
how to port * to BitVisor
icchy
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
bitbank, Inc. Tokyo, Japan
Más contenido relacionado
La actualidad más candente
pkgsrcに関する何か 2009 - 何と何で何とやら
pkgsrcに関する何か 2009 - 何と何で何とやら
Akio OBATA
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchain
Takahiro Hayashida
5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み
Ryo Shimamura
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
Akio OBATA
Bsdtw repo
Bsdtw repo
Yuichiro Naito
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
bitbank, Inc. Tokyo, Japan
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
kunst1080
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話
Akio OBATA
多摩美メディア芸術基礎I 第1回: WWW基礎
多摩美メディア芸術基礎I 第1回: WWW基礎
Atsushi Tadokoro
Minecraft modding 06
Minecraft modding 06
Takunology
Minecraft modding 09
Minecraft modding 09
Takunology
情報編集(Web) 130409
情報編集(Web) 130409
Atsushi Tadokoro
Vagrantで即席クラウドストレージ
Vagrantで即席クラウドストレージ
Yoshimi Tominaga
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
Naoya Kaneko
KOF2016東海道らぐLT
KOF2016東海道らぐLT
Shu Kobuchi
Securing Supply Chains
Securing Supply Chains
Takahiro Yoshimura
Sfstudy #2
Sfstudy #2
(^-^) togakushi
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
Yuto Takei
Beijing Report 2022
Beijing Report 2022
Takahiro Yoshimura
Mashup Hackathon 名古屋 MA11
Mashup Hackathon 名古屋 MA11
Wataru Sato
La actualidad más candente
(20)
pkgsrcに関する何か 2009 - 何と何で何とやら
pkgsrcに関する何か 2009 - 何と何で何とやら
Deconstruction of Serverless and blockchain
Deconstruction of Serverless and blockchain
5分でわかるブロックチェーンの基本的な仕組み
5分でわかるブロックチェーンの基本的な仕組み
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
pkgsrcに関する何か 2008 - 何かは何かであって、何かでなし
Bsdtw repo
Bsdtw repo
ビットコイン~原理からソースまで~
ビットコイン~原理からソースまで~
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
20160618 第23回シェル芸勉強会LT コマンドプロンプト芸
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話
多摩美メディア芸術基礎I 第1回: WWW基礎
多摩美メディア芸術基礎I 第1回: WWW基礎
Minecraft modding 06
Minecraft modding 06
Minecraft modding 09
Minecraft modding 09
情報編集(Web) 130409
情報編集(Web) 130409
Vagrantで即席クラウドストレージ
Vagrantで即席クラウドストレージ
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
virtio勉強会 #1 「virtioの基本的なところ(DRAFT版)」
KOF2016東海道らぐLT
KOF2016東海道らぐLT
Securing Supply Chains
Securing Supply Chains
Sfstudy #2
Sfstudy #2
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
MinChain – Bitcoin ライクな最小限のブロックチェーン実装
Beijing Report 2022
Beijing Report 2022
Mashup Hackathon 名古屋 MA11
Mashup Hackathon 名古屋 MA11
Similar a how to port * to BitVisor (2)
how to port * to BitVisor
how to port * to BitVisor
icchy
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
bitbank, Inc. Tokyo, Japan
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
Kohei Tokunaga
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
Kimihiko Kitase
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
Yuto Takei
Netmf-180224
Netmf-180224
Atomu Hidaka
Code igniter + ci phpunit-test
Code igniter + ci phpunit-test
ME iBotch
ビットキーのIoT基盤におけるAWS IoT Rule Action 活用
ビットキーのIoT基盤におけるAWS IoT Rule Action 活用
Ryo Sasaki
BitVisor Summit 3 「BitVisorの現状と今後」
BitVisor Summit 3 「BitVisorの現状と今後」
Takahiro Shinagawa
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
Hajime Ogushi
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
Takahiro Fujiwara
GitHubにおける開発フローについてのお話
GitHubにおける開発フローについてのお話
Sota Sugiura
マイクロサービスとは.pptx
マイクロサービスとは.pptx
ssuserdd7ea9
Deploy TypeScript Application by CodePipeline
Deploy TypeScript Application by CodePipeline
bitbank, Inc. Tokyo, Japan
クラウドセキュリティ基礎
クラウドセキュリティ基礎
Masahiro NAKAYAMA
[cb22] ブロックチェーンにC&Cサーバー情報を隠ぺいした攻撃者との直接対峙により得られたもの by 谷口 剛
[cb22] ブロックチェーンにC&Cサーバー情報を隠ぺいした攻撃者との直接対峙により得られたもの by 谷口 剛
CODE BLUE
【AWS Night in ITHD】AWSとのSoftLayerで仮想ネットワークオーバーレイ
【AWS Night in ITHD】AWSとのSoftLayerで仮想ネットワークオーバーレイ
Nobuyuki Matsui
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
Kentaro NOMURA
bitbankフロントエンド開発について
bitbankフロントエンド開発について
Kou Matsumoto
Desktop app dev strategy for .net core 3.0
Desktop app dev strategy for .net core 3.0
Atsushi Nakamura
Similar a how to port * to BitVisor (2)
(20)
how to port * to BitVisor
how to port * to BitVisor
ビットバンクにおける少人数で支えるインフラチームの戦略
ビットバンクにおける少人数で支えるインフラチームの戦略
BuildKitの概要と最近の機能
BuildKitの概要と最近の機能
話題のNode-REDでIoTアプリを作ってみよう
話題のNode-REDでIoTアプリを作ってみよう
[Intermediate 01] イントロダクション / Bitcoin を動作させる
[Intermediate 01] イントロダクション / Bitcoin を動作させる
Netmf-180224
Netmf-180224
Code igniter + ci phpunit-test
Code igniter + ci phpunit-test
ビットキーのIoT基盤におけるAWS IoT Rule Action 活用
ビットキーのIoT基盤におけるAWS IoT Rule Action 活用
BitVisor Summit 3 「BitVisorの現状と今後」
BitVisor Summit 3 「BitVisorの現状と今後」
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
「Gitが、おもしろいほどわかる基本の使い方33」 出版記念セミナー
Pythonとgit hubとベンチャー企業の上手な付き合い方
Pythonとgit hubとベンチャー企業の上手な付き合い方
GitHubにおける開発フローについてのお話
GitHubにおける開発フローについてのお話
マイクロサービスとは.pptx
マイクロサービスとは.pptx
Deploy TypeScript Application by CodePipeline
Deploy TypeScript Application by CodePipeline
クラウドセキュリティ基礎
クラウドセキュリティ基礎
[cb22] ブロックチェーンにC&Cサーバー情報を隠ぺいした攻撃者との直接対峙により得られたもの by 谷口 剛
[cb22] ブロックチェーンにC&Cサーバー情報を隠ぺいした攻撃者との直接対峙により得られたもの by 谷口 剛
【AWS Night in ITHD】AWSとのSoftLayerで仮想ネットワークオーバーレイ
【AWS Night in ITHD】AWSとのSoftLayerで仮想ネットワークオーバーレイ
Kubernetes 初心者の僕からの JKD 参加報告
Kubernetes 初心者の僕からの JKD 参加報告
bitbankフロントエンド開発について
bitbankフロントエンド開発について
Desktop app dev strategy for .net core 3.0
Desktop app dev strategy for .net core 3.0
Último
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
UEHARA, Tetsutaro
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
Hiroshi Tomioka
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
sugiuralab
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
akihisamiyanaga1
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
FumieNakayama
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
博三 太田
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
FumieNakayama
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
Yuki Kikuchi
Último
(8)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
how to port * to BitVisor (2)
1.
BitVisorに移植する (2) 東京農工大学 市川
遼 2019/12/12 BitVisor Summit 9
2.
自己紹介 ● 東京農工大学 工学府情報工学専攻
2年 ○ 留学していたので卒業が一年伸びた ● 興味 ○ Web security, Forensics, etc. ● 研究 ○ VMM
3.
前回お話したこと ● BitVisorにLuaやLibVMIを移植する方法 ● 依存ライブラリ
(libc, GLib) はどうする? ○ 通常のMakeでビルド ○ *.o を探し出してobjs-1に追加 ○ BitVisorに対応するためにmuslは部分的に修正する ● BitVisorのどこに追加する? ○ 保護ドメイン (process) で動かす ● Lua用のパッチが必要 ○ lua.cをBitVisorのprocess向けに編集した ○ SSEを使うためにCR0, CR4を設定
4.
今回お話すること ● 文字通りLuaのソースコードに一切手を加えず移植する方法を考案した ○ main関数を直接呼び出せる ●
musl から newlib への変更とその理由 ● 実際に Lua を今回の方法で移植する手順を紹介
5.
ディレクトリ構成 ● 新しく追加するアプリケーションを app
に配置すると仮定 ● app/third_party ○ 依存ライブラリのビルド用 (BitVisorのビルドには使わない ) ○ Luaはlibc以外に依存しないので今回は不要 ● app/lua ○ Lua本体のプログラム ● app/process/lua.c ○ アプリケーションのエントリポイント ○ ここから目的のプログラムの mainを呼び出す
6.
app/process/lua.c ● 本来のmain関数をライブラリのように扱う ○ argc,
argv を設定しておく ● exitprocessを忘れない ○ return 0では終了しない ○ 無限にプロセスが増える ● app/process/Makefile でリンク対象を指定 ○ lua-objs = lua.o ../../third_party/lua/lua-5.3.5/src/lua.o ○ lua-libs = third_party/lua/$(outa) ● これでLua本体には変更を加えず起動可能 int _start (int a1, int a2) { // app/lib/lua/lua/src/lua.c:main int main(int, char *[]); const int stacksize = 16*1024; if (setlimit (stacksize, 8*stacksize)) { printf("lua restrict failedn"); exitprocess(1); } int argc = 1; char *argv[] = {"lua", 0}; main(argc, argv); exitprocess(0); return 0; }
7.
移植の際に発生する問題点を整理する ● システムコールが全く違う ○ process用に用意されたもののみ
(core/process.c) ■ msg*, {new,exit}process, setlimit ○ 多くのプログラムはlibc経由でLinuxのシステムコールを呼び出す ● リンク時の名前衝突 ○ libcをそのままコンパイルすると BitVisorで独自実装されているものとぶつかる ● ライブラリの静的リンク ○ BitVisorのビルドシステムはちょっと特殊である
8.
解決策 ● システムコールが全く違う、リンク時の名前衝突 ○ バイナリをビルドした時点で
BitVisor用の命令セットであれば良い → BitVisor用のコンパイラを作れば良いのでは? ● ライブラリの静的リンク ○ いままではBitVisorのobjs-1に追加する方法を取っていた ■ 追加するライブラリが多くなってくると面倒 ○ GCCのstatic linkだけで片付けたい ● → BitVisor用のコンパイル環境があればよいのでは?
9.
x86_64-bitvisor-gccのビルド ● toolchain (Binutils,
GCC, newlib) のBitVisor対応 ○ https://wiki.osdev.org/OS_Specific_Toolchain ○ https://wiki.osdev.org/GCC_Cross-Compiler ○ https://wiki.osdev.org/Porting_Newlib ○ https://sourceware.org/newlib/libc.html#Syscalls ○ OSDev Wikiがnewlibにしか対応していなかったので muslから変更 ■ newlibは変更すべきファイルがまとまっていて扱いやすい ○ ● ホストの名前空間を汚したくないのでDocker上で構築する ○ x86_64-bitvisor-gcc という保護ドメイン用コンパイルが出来上がる ○ 当然このコンパイラでコンパイルされたバイナリは Linuxで実行できない
10.
BitVisorサブシステム ● newlib/libc/sys/bitvisor にシステムコール部分を実装 ○
いくつかの関数をBitVisorの機能へリンクする ● syscall:sbrk -> bitvisor:lib_mm:alloc ● syscall:_exit -> bitvisor:lib_syscall:exitprocess ● stdio:fgets -> bitvisor:lib_lineinput:lineinput ○ readを msgsendint(0,0) にしてもうまく動かない ● syscall:write -> msgsendint(1, c) ● あとはstubでとりあえず十分
11.
newlibベースtoolchainのビルド ● binutils ○ 8
files ● gcc ○ 6 files ● newlib ○ 19 files ■ 4 files: newlib本体 ■ 15 files: bitvisorサブシステム (syscall実装含む) ● diff: 2033行 ● dockerでビルドする
12.
ビルドシステム側の修正 ● process-binを吐き出すときにx86_64-bitvisor-gccに差し替える ○ Makefile.buildの
$(bins) セクション ● コンパイラフラグ ○ -static ○ -l$(lib) ● 後は普通にビルドするだけ ○ 必要なライブラリをあらかじめ docker内でビルド、インストールしておく ○ *-objs, *-libs でやってた依存関係解決を GCCで代わりにやってしまう
13.
processに追加する ● process に追加するとlibがせっかく実装したbitvisorサブシステムと衝突 →
新しくprocessディレクトリを作る (app/process) ○ psubdirs に追加 ○ process-depends を忘れない (並列ビルドすると依存関係で落ちる ) ■ Makefile: ● $(dir)app/process/$(outp_p) : $(app-depends-1) ● process/lib を用いずにビルド可能に ● 依存ライブラリはコンテナ内からリンクされる ○ *-libs に追加する必要がない
14.
欠点 ● ビルドシステムがsanity checkを持っていると走らない ○
コンパイルされたバイナリが実行可能かどうか ○ syscallが違うのでそれはそう ● GLibのビルドシステムが meson + ninja に変わった ○ LibVMIで必要 ○ x86_64-bitvisor-gcc でビルドすると途中で落ちる ○ 現在はGLibだけ x86_64-linux-gcc でビルドしている
15.
まとめ ● DockerでBitVisor用のビルド環境を作った ○ 依存ライブラリなどの問題が解決された ●
真の意味であらゆるプログラムを移植可能になった ○ newlibは最低限しか実装していない (read, write gettimeofday ○ 必要なsyscallは実装する必要がある ● newlibを用いて容易に拡張できる ○ 必要なsyscallは newlib/libc/sys/bitvisor で追加 ○ mprotectなどを実装すればJITも動くかも? (今後の展望)
Descargar ahora