デジタル人材の育成

未踏IT人材発掘・育成事業:2016年度採択プロジェクト概要(木村PJ)

1.担当プロジェクトマネージャー

後藤 真孝(国立研究開発法人 産業技術総合研究所 情報技術研究部門 首席研究員)

2.採択者氏名

  • 木村 廉(神戸大学)

3.採択金額

  • 2,304,000円

4.テーマ名

  • カーネルソフトウェア開発支援ツール

5.関連Webサイト

  • なし

6.申請テーマ概要

本プロジェクトでは、DBI(Dynamic Binary Instrumentation)という手法を用いたLinux向けカーネルデバッガをはじめとする、カーネルソフトウェアを開発するための支援ツールを開発する。
DBIとは、対象とするプログラムのバイナリコード、もしくは中間表現内にデバッグ用のコードを挿入し、プログラムの動作を詳細に解析する手法であり、この手法はValgrindのようなバグ検出、プロファイラを備えた動的解析ツールに利用されているが、現存する多くの動的解析ツールは、デバイスドライバなどのカーネルプログラムには対応しておらず、これらの開発にあたっては、デベロッパは依然として古典的なデバッグ手法を強いられている。
本デバッガはカーネル空間にも対応したデバッガであり、さらにDBIを用いることでドライバ開発などのシステムプログラミングの効率を格段に向上させる。本デバッガは開発対象とするOSをQemuベースのVM上で動作させ、ホスト側からそのVM上のOSに接続した後にデバッグを開始する。Qemuの中間表現であるTCG micro codeにDBIを適用することで、Memcheckやデータの流れを追うためのテイント解析など、多種多様なデバッグ手法がカーネル空間に対して利用可能となる。加えて本デバッガはQemuの中間表現を使用するため、異なるアーキテクチャのカーネルに対しても容易に適用・拡張可能なことも特徴である。
本プロジェクトでは、デバッガフロントエンドにTimeless Debugging方式を採用することによるさらなるデバッグの効率化や、デベロッパが使いやすいユーザインタフェースの提供等、カーネルソフトウェアの開発を強固に支援する総合的なツールの実現を目指していく。

7.採択理由

ソフトウェア開発においてデバッグは不可欠だが、デバイスドライバなどのカーネル空間で動作するソフトウェアのデバッグの場合には、通常のユーザ空間でのデバッグを効率化する動的解析ツールの利用が困難という問題があるため、それを解決するカーネルソフトウェア開発支援ツールを開発する提案である。そのために、ターゲットとなるOSをCPUエミュレータ上で動作させ、デバッグ対象のカーネルソフトウェアのバイナリコードをCPUエミュレータが中間表現に変換して実行する際に、その中間表現に様々なデバッグ用コードを挿入する。これにより動的に詳細な情報を把握することが可能となり、さらに開発者が使いやすいユーザインタフェースも提供することで、柔軟で効率的なデバッグを実現することができる点が優れている。
木村君は、低レイヤーのシステムソフトウェア開発に興味を持つ人たちがもっと増えて欲しいという情熱を持っており、既に自身も様々な形でその開発に取り組んでオープンソースソフトウェア(OSS)に貢献してきている点が素晴らしい。既にオープンソースのCPUエミュレータ「QEMU」の内部構造における主要範囲をソースコードレベルで理解しており、ソフトウェアのバイナリコードあるいは中間表現にコードを挿入して動的解析する手法DBI (Dynamic Binary Instrumentation) をQEMU上で実現する方法に関しても、QEMUをベースとしたDECAFへのパッチコミットを通じて熟知している。その木村君の情熱と高い能力を活かして、大きなインパクトをもたらす成果を創出できるように、提案内容だけで満足せずに広い視野で様々な挑戦をしてくれることを期待したい。