実行時情報に基づく OSカーネルのコンフィグ最小化

Slides:



Advertisements
Similar presentations
九州工業大学大学院 情報工学府 情報創成工学専攻 塩田裕司.  仮想マシン( VM )は必要なときだけ動かすこと が多い ◦ クラウドでもデスクトップでも ◦ 長期間使わない VM が存在する  VM の再開時に攻撃を受ける可能性が高くなる ◦ 停止中に OS やアプリケーションの脆弱性が発見されるこ.
Advertisements

1 Layout Utilities の紹介 Layout Utilities とは、お客様のプログラムに 流し込み印刷を簡単に組み込めるソフトウエア開発ツールです 無償 流し込み印刷の例.
MPIを用いたグラフの並列計算 情報論理工学研究室 藤本 涼一.
安全なログオン手順 2004/08/26 Port139 伊原 秀明.
ファイルキャッシュを考慮したディスク監視のオフロード
セキュリティ機構のオフロードを考慮した仮想マシンへの動的メモリ割当
榮樂 英樹 LilyVM と仮想化技術 榮樂 英樹
クラウド上の仮想マシンの安全なリモート監視機構
Linux インストール      のための基礎知識 物理実験 I 情報実験第9回 2003/12/12 中神 雄一.
ブロック線図に基づく システム制御学習環境における リアルタイム制御実験
クラウドにおける ネストした仮想化を用いた 安全な帯域外リモート管理
IaaS 仮想マシン(VM)をネットワーク経由で提供 負荷に応じてVM数や性能を変更できる ハードウェアの導入・管理・維持コストの削減
USB2.0対応PICマイコンによる データ取得システムの開発
中村孝介(九州工業大学) 光来健一(九州工業大学/JST CREST)
OSとコマンド OS:コンピュータを使うための基本プログラム コマンド:OS上で使用できる命令 OS本体であるカーネルの内部コマンド
仮想マシンの並列処理性能に対するCPU割り当ての影響の評価
クラウドにおけるライブラリOSを用いた インスタンス構成の動的最適化
ファイルシステムキャッシュを 考慮した仮想マシン監視機構
Debian GNU/Linux ー Linuxインストールに必要な基礎知識 ー 三上 彩 鈴木 倫太郎
(original Takagi & Saito, 2007)
メモリ暗号化による Android端末の盗難対策
スティックライト for USB USB-ROMの開発手順について WindowsがUSBメモリから起動します。 株式会社ロムウィン
OSが乗っ取られた場合にも機能するファイルアクセス制御システム
侵入検知システム(IDS) 停止 IDS サーバへの不正アクセスが増加している
大きな仮想マシンの 複数ホストへのマイグレーション
ネストした仮想化を用いた VMの安全な帯域外リモート管理
ユーザ毎にカスタマイズ可能な Web アプリケーション用のフレームワークの実装
VMマイグレーションを可能にするIDSオフロード機構
クラウドの内部攻撃者に対する安全なリモートVM監視機構
アスペクト指向プログラミングを用いたIDSオフロード
サスペンドした仮想マシンの オフラインアップデート
MPIによる行列積計算 情報論理工学研究室 渡邉伊織 情報論理工学研究室 渡邉伊織です。
型付きアセンブリ言語を用いた安全なカーネル拡張
仮想計算機を用いて OSを介さずに行う安全な ファイルアクセス制御
VM専用仮想メモリとの連携による VMマイグレーションの高速化
IaaS型クラウドにおける インスタンス構成の動的最適化手法
リモートホストの異常を検知するための GPUとの直接通信機構
ユーザ毎にカスタマイズ可能な Webアプリケーションの 効率の良い実装方法
仮想メモリを用いた VMマイグレーションの高速化
複数ホストに分割されたメモリを用いる仮想マシンの監視機構
仮想計算機を用いたサーバ統合に おける高速なリブートリカバリ
コードクローン検出ツールを用いた ソースコード分析システムの試作と プログラミング演習への適用
クラウドにおけるIntel SGXを用いた VMの安全な監視機構
通信機構合わせた最適化をおこなう並列化ンパイラ
オープンソース開発支援のための ソースコード及びメールの履歴対応表示システム
オープンソース開発支援のための リビジョン情報と電子メールの検索システム
東京工業大学 情報理工学研究科 数理・計算科学専攻 千葉研究室 栗田 亮
クラウドにおけるVM内コンテナを用いた 自動障害復旧システムの開発
未使用メモリに着目した 複数ホストにまたがる 仮想マシンの高速化
アスペクト指向言語のための 独立性の高いパッケージシステム
仮想マシンを用いた 既存IDSのオフロード
Intel SGXを用いた仮想マシンの 安全な監視機構
軽量な仮想マシンを用いたIoT機器の安全な監視
複数ホストにまたがって動作する仮想マシンの障害対策
VMMのソフトウェア若化を考慮した クラスタ性能の比較
信頼できないクラウドにおける仮想化システムの監視機構
同志社大学工学研究科 知的システムデザイン研究室 修士2年 中尾昌広
ソフトウェア保守のための コードクローン情報検索ツール
Cell/B.E.のSPE Isolationモードを用いた監視システム
福岡工業大学 情報工学部 情報工学科 種田研究室 于 聡
仮想マシンと物理マシンを一元管理するための仮想AMT
設計情報の再利用を目的とした UML図の自動推薦ツール
仮想マシンに対する 高いサービス可用性を実現する パケットフィルタリング
Cell/B.E. のSPE上で動作する 安全なOS監視システム
VMリダイレクト攻撃を防ぐための 安全なリモート管理機構
メソッドの同時更新履歴を用いたクラスの機能別分類法
強制パススルー機構を用いた VMの安全な帯域外リモート管理
高度プログラミング演習 (11).
IPmigrate:複数ホストに分割されたVMの マイグレーション手法
強制パススルー機構を用いた VMの安全な帯域外リモート管理
Presentation transcript:

実行時情報に基づく OSカーネルのコンフィグ最小化 九州工業大学 情報工学部 機械情報工学科 光来研究室 13237029 小野 静流

OSカーネル OSの中核を構成するソフトウェア OSカーネルの規模は 年々大きくなっている ハードウェアの資源管理 アプリケーションの管理・制御 カーネル本体とカーネルモジュールから成る カーネルモジュールは必要な時にカーネル本体にロードされる OSカーネルの規模は 年々大きくなっている Linux 4.4 のソースコード は約1GB カーネル モジュール カーネル モジュール カーネル本体 OSカーネル

多くの不要な機能 OSカーネルは非常に多くの機能を提供 それらの多くは不要な機能 様々なユーザの要求を満たすため 例:Ubuntu 16.04 の標準カーネル カーネルモジュールの数は4,000以上 カーネル本体に組み込まれている機能は2,000以上 それらの多くは不要な機能 例:パラレルポートドライバ 昔のプリンタで使われていた 例:IPv6 あまり普及していない

OSカーネルのカスタマイズ OSカーネルはカスタマイズして用いるべき カスタマイズの手順 セキュリティの向上 システム性能の向上 コンフィグの変更 再コンパイル システムの再起動 動作確認

カスタマイズの難しさ カスタマイズには専門知識が必要 カスタマイズに膨大な時間がかかる どの機能が不要なのかわからない 機能がどのコンフィグ項目に対応するかわからない コンフィグを間違えるとシステムが起動しなくなる カスタマイズに膨大な時間がかかる 試行錯誤が必要 OSカーネルのコンパイルに時間がかかる Ubuntu 16.04の標準カーネルのコンパイルに約100分

提案:config-mini OSカーネルの実行時情報に基づいて不要な機 能を無効化したコンフィグを生成 OSカーネルの実行ログを取得 各機能のキーとなる関数についてのみ 実行ログから不要な機能を発見 キーとなる関数が実行されない機能は不要と判断 不要な機能に対応するコンフィグ項目を特定 コンフィグ config-mini 実行ログ OSカーネル

キーとなる関数 すべての関数の実行ログを取得するのは現実 的ではない 機能が「使われた」時に実行される関数の実行 ログだけを取得 OSカーネル内で実行される関数は非常に多い 機能が「使われた」時に実行される関数の実行 ログだけを取得 例:シリアルドライバ 初期化を行っても「使われる」とは限らない シリアル通信を行った時に「使われた」とみなす キーとなる関数:serial8250_get_mctrl

カーネル関数の実行ログの取得 Linuxのftrace機構を利用して実行ログを取得 フィルタ機能を用いてキーとなる関数を指定 カーネルモジュールの実行ログも取得できるよ うにモジュールローダを修正 ftraceはフィルタ設定後にロードされたモジュールの実行ログを取得できない モジュールをロードするたびにフィルタを再設定 モジュールローダ:カーネルモジュールをロードする際に使われるライブラリやツール群 モジュール ローダ カーネル モジュール フィルタ再設定 ロード カーネル本体

関数の定義ファイルの特定 まず、キーとなる関数の中で実行されないもの が定義されているファイルを見つける gtagsツールを用いてデータベースを作成 カーネルのソースコードを解析して関数などの情報を格納 globalコマンドを用いて関数が定義されているファイルのパス名を取得 # global serial8250_get_mctrl drivers/tty/serial/8250/8250_port.c

パス名からコンフィグ項目の特定 次に、関数の定義ファイルに対応するコンフィ グ項目を見つける OSカーネルのソースコードのMakefileを解析してデータベースを作成 どのコンフィグ項目が有効な時にどのファイルをコンパイルするかが記述されている このデータベースを検索して,ファイルのパス名に対応するコンフィグ項目を取得 drivers/tty/serial/8250/8250_port.c → drivers/tty/serial/8250/  → CONFIG_SERIAL_8250

実験 目的 実験環境 特定の機能を無効化したコンフィグを自動生成できることを確認 いくつかのコンフィグ項目を無効化したOSカーネルのコンパイル時間・サイズを測定 実験環境 Windows 10上で VirtualBox 5.0.20 を動作させた ----- 会議メモ (17/02/16 18:00) ----- つなぎ方 メモ CPU Intel Xeon E3-1226v3 メモリ 8GB HDD 457GB 対象OS Linux 4.4.0

ISO 9660ファイルシステムの無効化 CD-ROM用のファイルシステム キーとなる関数:isofs_readpages CD-ROMを読み込んだときのみ実行ログに出現 対応するコンフィグ項目を無効化したコンフィグ が自動生成できることを確認 config-miniにキーとなる関数を入力 コンフィグ項目を特定して既存のコンフィグから削除 isofs_readpages → fs/isofs/inode.c fs/isofs/ → CONFIG_ISO9660_FS

OSカーネルのコンパイル時間・サイズ config-miniで生成したコンフィグを用いて測定 Linuxのlocalmodconfig機能を用いた場合と比較 ロードされているカーネルモジュールだけを有効にしたコンフィグを生成 コンパイル時間は195秒短縮 サイズは4.8MB減少

関連研究 Linunx の localmodconfig機能 modprobed-db 「使われた」とみなせない機能も有効になる カーネル本体の不要な機能には適用できない modprobed-db 一度でもロードされたことのあるカーネルモジュールを記録しておき,localmodconfigで利用 関数実行に基づくコンフィグ生成 [Tartler et al.’12] 実行されたすべての関数を記録し,対応するコンフィグ項目だけからなるコンフィグを一から生成

まとめ 不要な機能を無効化したコンフィグを自動生成 するconfig-miniを提案 今後の課題 キーとなる関数の実行ログを取得 実行されていない関数に対応するコンフィグ項目を特定 OSカーネルのコンパイル時間・サイズの減少を確認 今後の課題 すべての機能についてキーとなる関数を見つける (半)自動化が必要 ファイルに対応しないコンフィグ項目のサポート