[BitVisor-devel:3] Re: [Bitvisor-devel:2] BitVisor 1.1 released
Takahiro Shinagawa
shina @ cs.tsukuba.ac.jp
2010年 6月 7日 (月) 19:15:50 JST
イーゲル 榮樂さん:
筑波大学の品川です.こんにちは.
BitVisor 1.1 のリリースありがとうございました.いろいろ細かいところま
で修正が入っていますね.
ところで 1.0.1 との違いで,「新しい VT-x プロセッサでサポートされてい
る XSETBV 命令」とありますが,ざっと見た感じだと XSETBV 命令は VT-x とは
直接的には関係ないというか,VT-x がなくても XSETBV がサポートされている
というのは(理論的には)あり得るような気もしますが,「対応した」というの
はどういう意味なんでしょう?ゲストOSがこの命令を発行しても
(xsetbv_pass.cで)スルーするようにしたということでしょうか?
あと,drivers の下の "vpn" はそろそろ "nic" にした方がいいような気がし
ます(VPN 以外の用途でも使いたいですし).逆にトップレベルの "vpn"
は,"storage" との対比で言うと "network" の方が適切かもしれませんね.
ネットワークフックの一機能として VPN があるという位置づけに変えていきた
いと思っています.core/vpn* も出来れば移動したい所ですが,依存関係が面倒
なんでしょうね.
ちなみに AMD の NPT は相変わらず disable にされているようですが,これ
は一応動くんでしたでしょうか?出来れば Intel EPT にも対応してくれると,
(体感ではあまり変わらなくても)ベンチマーク的には結構効くような気がします.
あと,Intel のマニュアルを眺めていたら,VMX-preemption timer とか以前
には無かった(ですよね?)機能が増えていたりするようなので(constants.h
には既に定義されているようですが),以前話していた外部割り込みフックを止
める方法とかと組み合わせて対応しても面白いかもしれません.このあたりも含
めて,今後やるべきことややりたいことをまとめてみてもいいかもしれませんね.
とりあえず,気付いたこと・思いついたことを取りとめもなく列挙してみまし
た.まだ,この ML の参加者はほとんどは関係者だと思いますが,何か気付いた
ことがありましたら,皆さんお気軽にどうぞ.ML の宣伝は徐々に広げていきた
いと考えています.
よろしくお願いいたします.
> こんにちは。
>
> BitVisor 1.1 のリリースをお知らせできることをうれしく思います。
>
> http://sourceforge.net/projects/bitvisor/files/
>
> BitVisor 1.1 と BitVisor 1.0.1 との違いは以下の通りです。
>
> 1. 保護ドメイン機能
> プロセス機能を拡張し、VMMコアと各機能モジュール(ストレージ暗号化機
> 能、ID 管理機能、および、VPN 機能)間でメモリ保護の壁によってクラッ
> クに対する耐性を高める保護ドメイン機能を実装した。
> プロセス機能の拡張は以下のとおり:
> - メモリ確保・解放を行うライブラリ関数を追加した。
> - プロセス内のスタックおよびメッセージパッシングを制限する機能を追
> 加した。
> - 事前に共有メモリをマップする機能を追加した。
> - IOPL を 0 にすることで、プロセス上で I/O 命令や割り込み許可命令を
> 実行できないようにした。
>
> 2. AHCI SATA ドライバ
> SATA のホストコントローラ規格である AHCI に対応したドライバを実装し
> た。AHCI で制御される SATA ストレージに対し、暗号化を施すことが可能
> となった。それに伴い、既存 ATA/ATAPI ドライバに以下の変更を行った:
> - ATA コマンドを解釈する処理を一部整理した
> - ストレージのタイプ設定に STORAGE_TYPE_AHCI と
> STORAGE_TYPE_AHCI_ATAPI を追加した。
> - 一部 PC で ATAPI デバイスへの入出力が stall するバグを修正した。
>
> 3. Realtek RTL816x Ethernet ドライバ
> VPN機能の対応デバイスとして、Realtek RTL816x を追加するためのドライ
> バ実装を追加した。本実装の状態は、experimental であり、動作が不安定
> な場合がある。
>
> 4. Storage ポリシーにおけるデバイス選択条件
> - 暗号化アルゴリズムとして暗号化しない "none" を追加した。
> - デバイス ID などを指定するための "extend" オプションを追加した。
>
> 5. PCIデバイスの隠ぺい
> IEEE1394 デバイスの隠ぺい機能を拡張して、ポリシー記述に指定した条件
> に適合するPCIデバイスを隠ぺいする機能を追加した。
>
> 6. USBメモリからの起動
> USB ストレージから BitVisor を起動して内蔵 HDD にチェインロードする
> ためのブートローダ bootloaderusb を追加した。
>
> 7. バグfixと機能改善
> * USB
> - 同じアドレスまたはポートを使用した時のパニックを修正した。
> - usb_bulk_read/write でフリーズしていたバグを修正した。
> - dprintft() の時間表示フォーマットが適切でないバグを修正した。
> - タイムアウト値をマイクロ秒で扱うように変更した。
> - UHCI の assertion バグを修正した。
> - 新しいゲスト OS のドライバで EHCI が正常に動作しなかったバグを
> 修正した。
> - low speed デバイスの情報を取得できていなかったバグを修正した。
> - USB 2.0 ハブに接続された USB 1.x デバイスの情報取得とパススルー
> に対応した。
> - USB キーボードや USB マウスなどの HID に対応した。
> - 日立ソフト 秘文 LE USB メモリが使用する規格外コマンドに対応した。
> - 複数の LUN を持つ USB マスストレージデバイスに対応した。
> - USB マスストレージのセクタサイズの検出方法を変更し、ポートリセッ
> ト時にパニックするバグを修正した。
> - UHCI/EHCI ドライバの一部データ構造を見直し、性能を改善した。
> - USB 関連のログ出力処理によるオーバーヘッドを削減した
> * Intel PRO/1000 Ethernetドライバ
> - 受信パケットサイズを間違えていたバグを修正した。
> - Linux 2.6.18 ゲストでクラッシュする問題を修正した (ただし同ゲス
> トではまだ正常動作しない)。
> - transmit control register の読み取りが正常にできないバグを修正
> した。
> - 送信が無効になっている間は送信バッファにパケットを追加しないよ
> うにすることで、シャットダウン時などにバッファフルで停止してし
> まうバグを修正した。
> - ミニ OS から渡される config でログ出力を制御できるようにした。
> - ログ出力機能におけるソース IP アドレスを10.10.10.10 から
> 0.0.0.0 に変更した。
> * メモリ管理
> - 事前にマップしておく物理メモリ領域の大きさを拡張し、32 ビット環
> 境で1.75GiB を常時マップしておくようにした (今まで 16MiB だった)。
> - プロセスのスタック解放処理のバグを修正した。
> - プロセスのスタックアンダーフロー・オーバーフローを検出し警告メッ
> セージを出力するようにした。
> - 動作に影響のない見た目上の小さなバグを修正した。
> - カーネル空間のページディレクトリエントリに対してグローバルビッ
> トをセットするようにし、プロセス呼び出しのパフォーマンスを改善
> した。
> * コア
> - BIOS フックの機械語の記述ミスにより一部 PC で正常に動作しなかっ
> たバグを修正した。
> - TCG BIOS を無効にする CONFIG を追加した (一部 PC で新cdしいバー
> ジョンのWindows が正常に起動しない問題への対応)。
> - TSC の代わりに ACPI PM タイマーを主に用いるように変更した。
> - Atom Z520 など一部プロセッサで時々パニックする問題への回避策を
> 実装した。
> - 一部スレッドのスタックを大きくした。
> - CPUID の最大値を見るようにした。
> - 新しい VT-x プロセッサでサポートされている XSETBV 命令に対応し
> た。
> - パニック時に APIC を無効にする方法を変更し、一部 PC で再起動時
> にフリーズしてしまう問題を改善した。
> - ミニ OS 後にキーボード入力ができなくなることがあるバグを修正し
> た。
> - 一部 PC でミニ OS 後にストレージにアクセスできないバグを修正し
> た。
> - Makefile の config 記述の小さなバグを修正した。
> - BSS セクションのクリア時にマルチブート情報を破壊していたバグを
> 修正した。
> - シャドウページテーブルの性能を改善した。
> * その他
> - boot/loader: 読み込みのスピードを高速化した。
> - boot/login: コンパイルエラーを修正した。
> - boot/login: Linux カーネルを 2.6.31.6 にアップデートした。
> - boot/login: bitvisor.conf.tmpl を更新した。
> - ata: const 変数をすべて static とした。
> - iccard: IC カードリーダとの通信が時々途絶えるバグを修正した。
> - pci: PCI hotplug を部分的にサポートした (一部ノート PC の内蔵光
> 学ドライブなどへの対応)。
> - storage: LBA 範囲の比較処理のバグを修正した。
> - vpn: DHCP サーバーの応答内容を修正し、一部ゲスト OS の DHCP ク
> ライアントと相性が悪かった問題を解決した。
> - vpn: フラグメントパケットの数に上限を設けた(一部 PC において起
> 動に時間がかかる問題への対応)。
> - vmmcall_status: .config および bitvisor.conf での切り替えに対応
> した。
> - all: コンパイル時の警告を減らした。
> - all: ソースファイルの文字コードを UTF-8 に統一した。
>
> 楽しんで下さい!
>
BitVisor-devel メーリングリストの案内