Nattyの開発
11.04(Natty)のリリースまで約一ヶ月となり、Nattyの開発が加速しています。Unityなどの新機能については大幅に変更が加えられ、機能面では「ほぼ実用」と言える状態になってきています。開発版に特有のクラッシュバグやおかしな挙動は残っていますが、それなりの準備をすれば、実機に導入してテストを開始できる状態と言えるでしょう(とはいえ、いわゆる本番環境に用いるにはまだまだ危険です。十分なバックアップ体制や予備機を準備して利用するべきでしょう。特定のアップデートを適用すると起動不能になる、というのは良くあることです)。
なお、NattyのXのABI変更に伴い、一時的に最新のXパッケージが依存関係によりアップデート/インストール不能になっています。新しいドライバがビルドされ、アーカイブサーバーにミラーされるまで待つ必要があります[1]。
multiarchサポート
現在のIntelアーキテクチャ(IA)のCPUは、ほとんどが32bit・64bitの両モードをサポートしています。現在のIA CPUがサポートする64bitモードは、AMD64(x64)で、32bit(IA32)命令セットを拡張したものです。すべてのx64対応CPUは、IA32命令セットを実行することができます。これは、「既存の32bitアプリケーションのバイナリは、x64対応CPU上でそのまま動作する」ことを意味します。ただしこれはユーザランドのコードに限った話で、IA32で動作するカーネルとAMD64で動作するカーネルはABIが異なるため、そのまま実行することはできません。このため、OSとしては「32bit APIを64bit APIに変換する」仕組みが必要になります。
たとえば64bitのWindows環境では、WoW64と呼ばれるエミュレーションレイヤが暗黙で導入されており、32bitアプリケーションから行われるAPI64bitAPIにマッピングしながら動作させることができ、「Program Files(x86)」などといったフォルダに32bitアプリケーションが配置され、そのままで動作する、という互換機能を実現しています。これにより、64bit Windowsでは「日常的な環境のほとんどは64bitで動作しているものの、Flashを安定動作させるためにInternet Explorerだけは32bit版を使う」といったことが簡単に行えるようになっています。
細かい部分の説明を放棄して単純な説明にすると、「x64環境では32bit用バイナリはそのままでは動作しないものの、細工を行うことで32bitのコードも実行可能である」ということです。DebianやUbuntuでは伝統的に、この「細工」の部分をia32-libs*パッケージを用いて実現しています[2]。このia32-libsパッケージのソースは莫大なサイズを誇る上[3]、さまざまな黒魔術的小細工に依存しており、メンテナンス性の観点からは良いものではありませんでした。また、プロプライエタリソフトウェアにおいては、「ソフトウェアはバイナリを含むパッケージで提供されるが、64bit用にはそもそもパッケージがない」といったこともあり、このような場合には「32bit環境用のパッケージを『無理やり』64bit環境にインストールする」、といった曲芸が必要になる(しかも、しばしば依存関係がうまく満たせずに上手くいかない)、ということが起こりがちです。言い換えれば、現在のDebian・Ubuntu環境では、「Flashの安定性を重視するために、64bitカーネルが導入された環境で、32bitのブラウザを簡単に使う」(かつ、それをパッケージ的に妥当な形で管理する)ということは実現できていませんでした。
Natty以降では、こうした問題を改善するため、「64bit環境に32bitパッケージを“区分けして”インストールする」機能がサポートされていく予定です。Nattyではあくまで土台の部分だけで、完全に機能するのはOneiric(11.10)からとなる予定です。ユーザーにとってのメリットは開発者(パッケージャー)がどの程度“区分けする”機能をサポートしてくれるかにも依存するものの、Oneiric以降では「Flashが正常動作しないので64bit版は使わない」といった手を取らず、「カーネルその他は64bitにしておき、FirefoxとFlashだけは32bitで動作させる」といった環境が実現できるようになるかもしれません[4]。
仮想化の利用方法の中には、「VDI」(Virtual Desktop Infrastructure)と呼ばれる応用があります。これは、比較的処理性能の高いサーバー上で仮想マシンソフトウェアを動作させ、その上で動作する仮想マシンにシンクライアントから接続し、日常的な作業を行うデスクトップ環境として用いる、というものです。古典的なターミナルサーバー環境やシンクライアント環境を、仮想化を用いてより便利にしたもの、といった位置づけです。
一方、最近さまざまな形で注目を浴びているAmazon EC2やEucalyptus・OpenStackなどの「クラウド」サービスは、本質的には「柔軟に仮想マシンの数を増減できる仮想マシンホスティング環境」です。内部ではXenやKVM・VMwareなどの仮想化ソフトウェアが動作しています。
これらを組み合わせると、「クラウドベースのVDI」といった環境を作ることができます。たとえばAmazon EC2上で仮想マシンを実行し、そこにシンクライアントやノートPCなどから接続してデスクトップ環境を使う、というものです。デスクトップ向けソフトウェアのテストやユーザビリティ調査に役立つのはもちろん、「外出先から任意のデスクトップに接続する」といった使い方も可能です。
ただし、Amazon EC2やEucalyptusではシステムの初期化やサポートするカーネルの調整など、「既存のデスクトップOSをそのまま使う」にはやや面倒な作業が必要になります。Ubuntuではこうした用途に使うため、「Amazon EC2/Eucalyptus環境向けのデスクトップイメージ」が、コミュニティベースのリリースではあるものの、10.04から提供されてきています。
Natty〜Oneiricにかけて、このイメージも大きく進化する予定です。現在のターゲットは「Oneiricでの公式リリースイメージ化」で、Natty時点ではUnity-2Dベースのデスクトップ環境・リモートデスクトップ接続に加えて、「Webサイトからの体験的な利用」のサポートを目指して作業が進んでいます(ただし少し遅れ気味)。リモートログインの方法にはx2goが基本となる予定です。こちらも複数アーキテクチャのサポートと同じく、「Nattyの」というよりは「Nattyの次の」機能ではあるものの、大きな進歩になりそうです。
その他のニュース
今週のセキュリティアップデート
- usn-1079-3:OpenJDK 6のセキュリティアップデート
- usn-1089-1:Linux kernelのセキュリティアップデート
- https://lists.ubuntu.com/archives/ubuntu-security-announce/2011-March/001281.html
- Ubuntu 9.10用のアップデータがリリースされています。CVE-2010-4076, CVE-2010-4077, CVE-2010-4158, CVE-2010-4162, CVE-2010-4163, CVE-2010-4175, CVE-2010-4242を修正します。
- 対処方法:アップデータを適用の上、システムを再起動してください。
- 備考:ABIの変更を伴います。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性 により自動的にアップデートされるので、通常はそのままアップデートを適用しても問題ありません。もしも自分でコンパイルしたカーネルモジュールを利用している・独自のカーネルモジュールパッケージを利用している場合、それらのモジュールの再コンパイルまたはアップデートが必要です。
- usn-1090-1:Linux kernelのセキュリティアップデート
- https://lists.ubuntu.com/archives/ubuntu-security-announce/2011-March/001282.html
- Ubuntu 10.04 LTS・10.10用のアップデータです。CVE-2010-4076, CVE-2010-4077, CVE-2010-4158, CVE-2010-4163, CVE-2010-4175を修正します。
- 対処方法:アップデータを適用の上、システムを再起動してください。
- 備考:ABIの変更を伴います。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性 により自動的にアップデートされるので、通常はそのままアップデートを適用しても問題ありません。もしも自分でコンパイルしたカーネルモジュールを利用している・独自のカーネルモジュールパッケージを利用している場合、それらのモジュールの再コンパイルまたはアップデートが必要です。