11月版 x86系重複コードの悪夢は消えるのか?


上川純一
日本ヒューレット・パッカード株式会社
コンサルティング・インテグレーション統括本部
2007/12/4


x86以外のプラットフォームにもKVMを

 KVMの開発は活発に継続されています。LKMLだけを見るとあまり目立った動きはないのですが、kvm-develでは活発に開発が進んでおり、そこでの成果がlinuxのgit treeにマージされていっています。

 初期のころはどんどん互換性が失われていたLinux KernelとKVMのAPIバージョンの対応ですが、最近は、APIバージョンを頻繁に上げないようにしているようです。この結果、カーネルとユーザー空間の組み合わせに悩んでいた初期のころよりも、KVMを試しやすくなっているようです。

Linuxバージョン KVM_API_VERSION
2.6.20 2
2.6.21 4
2.6.22 12
2.6.23 12
2.6.24-rc3 12
Linux KernelのバージョンとKVM_API_VERSIONの変遷

 Laurent Vivierは「Virtual Machine Time Accounting」という名前で、仮想マシンのゲストOSの処理に使われている時間をguest時間としてカウントするためのパッチを投げています。その最初の実装例としてKVMが取り上げられています。

 従来のUNIXのプロセス実行時間の管理では、「system」と「user」という分類になりますが、それに「guest」が追加される形になります。これはまだマージされていないようですが、使い方によっては便利かもしれませんね。

 また、KVMをx86以外のプラットフォームに移植可能にするパッチが出ています。powerpc(PPC440)用の移植についてはkvm-ppc-develメーリングリストが設けられており、その中で、IBMのJerone Young、Hollis Blanchardなどにより活発に開発が行われているようです。また、IA64用の移植については、Intel内部で開発が行われているようです。

 9月26日には、kvm-develに、Intelの担当者であるXiantao Zhangから最初の投稿がありました。その後も、IA64移植用のパッチそのものではなく、KVMを移植しやすくするためのパッチ(KVM Portability)についての議論が続いています。

 さらに、lguestを開発しているRusty Russelが、kvm-liteというパッチをリリースしているのも気になります。9月6日にkvm-devel MLに投稿されてから更新されていませんが、kvm-liteとは、lguestをKVMに移植したもののようです。KVMは、最近の新しいCPUの仮想化機構を利用して実装されているもので、古いCPUでは利用できません。これに対し、仮想化機構を持たないCPUでも、疑似仮想化カーネルをゲストOSとして利用できるようにするのがkvm-liteだそうです。

 このようにKVMの用途がどんどん広がっていっているようですが、皆さんはもう試しましたか?

関連リンク:
2006年12月版 ついに仮想化がカーネル標準機能に!?
http://www.atmarkit.co.jp/flinux/rensai/watch2006/watch12b.html
Linux Tips「カーネルの仮想化機能「KVM」を使うには」
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a044kvm.html

-stableの進ちょく

 最後に、10月の-stableツリーはどうなったかを見てみましょう。

 Greg K-Hは、10月はまだ2.6.23がリリースされた直後だったからか、2.6.22.yツリーと2.6.23.yツリーを並行してリリースしていました。2.6.22.yのメンテナンスがいつまで続くのか、また、誰がそれを受け継ぐのかが気になるところです。

 一方、Adrian Bunkの管理している2.6.16.yのメンテナンスはしっかりと行われており、多数のパッチがバックポートされています。Willy Tarreauの管理している2.6.20.yについても順調にメンテナンスされているようです。

■2.6.16.y: Adrian Bunkの管理

  • 2.6.16.54(10月8日)
    ・多数のMD関連の修正
    ・PPP関連の修正
    ・SPARC32の修正
    そのほか、23パッチ
  • 2.6.16.55(10月15日)
    ・snd-page-alloc procファイルにseq_fileを利用する(CVE-2007-4571)
    ・sysfsのinode番号の扱いでreaddirでoopsしたのを修正(CVE-2007-3104)
    ・乱数発生器のスタックオーバフローの可能性の修正など(CVE-2007-3105、CVE-2007-2453)
    ・SUIDの場合のcurrent->pdeath_signalのセキュリティホール修正(CVE-2007-3848)
    ・moxaドライバのバッファオーバフローの修正(CVE-2005-0504)
    ・x86_64: 32bitの場合にptraceの後に全レジスタをゼロ拡張する(CVE-2007-4573)
    そのほか、19パッチ
  • 2.6.16.56(11月2日)
    ・スタックがhugetlbに予約されている領域にいかないようにする(CVE-2007-3739)
    ・IA64のis_hugepage_only_rangeの修正
    ・powerpcの浮動小数点演算のエミュレーションでstfiwxの挙動が正しくなかったのを修正
    ・alphaのepollのシステムコールのヘッダファイルの修正
    そのほか、23パッチ

■2.6.20.y: Willy Tarreauの管理しているツリー

  • 2.6.20.21(10月17日)
    ・USBの修正
    ・ipv6の修正
    ・ieee1394がモジュールでない場合の初期化の修正
    そのほか、32パッチ

■2.6.22.y:Greg K-Hたちが管理しているツリー

  • 2.6.22.10(10月10日):Greg K-H
    ・selinuxでSIDが変更してもcurrent->pdeath_signalがクリアされていなかったのを修正
    ・sky2ネットワークカードの修正
    ・PPPのMicrosoft Point-to-Point Encryption(MPPE)で、スタックではなく、kmallocした領域に置く
    そのほか、13パッチ
  • 2.6.22.11(11月2日):Greg K-H
    ・TCP関連の修正
    ・hwmon関連の修正
    ・powerpcの浮動小数点演算のエミュレーションでstfiwxの挙動が正しくなかったのを修正
    そのほか、27パッチ
  • 2.6.22.12(11月5日):Greg K-H
    ・minixfs: dir i_sizeが不正な場合にprintkを制限する(CVE-2006-6058)
    ・"x86_64: allocate sparsemem memmap above 4G"をrevert
    ・dm snapshot:デッドロックの修正
    ・x86:fix global_flush_tlb()のバグ
    そのほか、9パッチ

■2.6.23.y: Greg K-Hたちが管理しているツリー

  • 2.6.23.1(10月12日):Greg K-H
    ・libata: sata_mv:さらなるscatter-gatherの修正
    以上、1パッチ

(以上、敬称略)

2/2

Index
Linux Kernel Watch 11月版
 x86系重複コードの悪夢は消えるのか?
  Page 1
 長い長い開発サイクルを経てようやく登場した2.6.23
 マージでx86系コードのスリム化なるか?
 SG chainingの導入でドライバ変更の大騒ぎ
Page 2
 x86以外のプラットフォームにもKVMを
 -stableの進ちょく

連載 Linux Kernel Watch


 Linux Squareフォーラム Linuxカーネル関連記事
連載:Linux Kernel Watch(連載中)
Linuxカーネル開発の現場ではさまざまな提案や議論が交わされています。その中からいくつかのトピックをピックアップしてお伝えします
連載:Linuxファイルシステム技術解説
ファイルシステムにはそれぞれ特性がある。本連載では、基礎技術から各ファイルシステムの特徴、パフォーマンスを検証する
特集:全貌を現したLinuxカーネル2.6[第1章]
エンタープライズ向けに刷新されたカーネル・コア
ついに全貌が明らかになったカーネル2.6。6月に正式リリースされる予定の次期安定版カーネルの改良点や新機能を詳しく解説する
特集:/procによるLinuxチューニング[前編]
/procで理解するOSの状態

Linuxの状態確認や挙動の変更で重要なのが/procファイルシステムである。/procの概念や/procを利用したOSの状態確認方法を解説する
特集:仮想OS「User Mode Linux」活用法
Linux上で仮想的なLinuxを動かすUMLの仕組みからインストール/管理方法やIPv6などに対応させるカーネル構築までを徹底解説
Linuxのカーネルメンテナは柔軟なシステム
カーネルメンテナが語るコミュニティとIA-64 Linux
IA-64 LinuxのカーネルメンテナであるBjorn Helgaas氏。同氏にLinuxカーネルの開発体制などについて伺った

MONOist組み込み開発フォーラムの中から、Linux関連記事を紹介します


Linux & OSS フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Linux & OSS 記事ランキング

本日 月間