Adobe Flashなどの32ビットアプリケーションを64ビットLinux上で利用する

 64ビットコンピューティングは今やマルチコアコンピューティングと同じくらい一般的になってきている。プロセッサが64ビットレジスタを利用できるようにするためのAMDのLongモード拡張も、最近ではIntelやAMDの新しいプロセッサのほぼすべてでサポートされている。32ビットのプロセッサが4ギガバイトのRAMのアドレス空間を扱うことができるのに対して、64ビットのプロセッサでは16エクサバイト、言い換えれば約172ギガバイトのRAMのアドレス空間を扱うことが可能だ。とは言え64ビット処理が可能なコンピュータでも、大抵の場合その機能は活かされないまま32ビットOSを実行するために使用されている。というのも64ビットの操作を行うためにはアプリケーションの再コンパイルや、場合によっては書き直しが必要になるため64ビットOS用のアプリケーションがそれほど多くはないためだ。しかし32ビット版Linux用のバイナリを64ビット版Linuxカーネル上でネイティブに実行するという手もある。

 本稿では、64ビットハードウェア上で32ビットアプリケーションを実行して希望通りの結果を得ることが可能な3つの事例を紹介する。なお本稿で使用したコマンドはUbuntu 8.04用のものだが、使用したアプリケーションはどのDebianベースの64ビット版Linuxディストリビューションでも使用可能なはずだ。

 技術ファンの私は、AMD Turion 64 X2デュアルコアプロセッサを搭載した新しい東芝製ノートPCに、64ビット版Ubuntuをインストールすることにした。Ubuntuのリポジトリにあるアプリケーションのほとんどは64ビットをサポートするように再コンパイルされているため、アプリケーションが少ないなどの実用上の問題になることはない。ATI frglxドライバやAtheros MadWifiドライバなどのプロプライエタリのドライバまで、すでにコンパイルされた状態で提供されていた。そしてUbuntuのインストール完了のほぼ直後から、文書作成、ウェブ閲覧、Ekigaを使ったチャット、音楽再生を快適に利用することができたのだが、YouTubeでお気に入りの新曲のビデオを検索しようとしたときに問題が起こった。どうやら状況としては、Flashビデオ用として利用可能なプラグインがオープンソースのGnashプレイヤしかなく、GnashではYouTubeのビデオプレイヤの表示さえもできないということのようだった。

 超アマチュアのミュージシャンでもある私は、お気に入りのソフトウェアシンセサイザの一つであるRTSynthもインストールしたいと思っていた。RTSynthは物理モデル音源方式のシンセサイザだ。無料ソフトではあるものの、物理モデル音源に関する特許についての懸念から残念ながらフリーソフトウェアではなく、32ビットLinux用のバイナリとしてのみ利用可能になっている。通常はそのような「問題のあるプログラム」については仮想マシンを起動して利用するようにしているのだが、現時点で利用可能なハードウェア上で実行した仮想マシンソフトウェアの中には、サウンド関連の処理(特に物理モデル音源)が要求する処理や遅延の条件を満たすことのできるものはない。

 私は「ここの天気は気に入らなくても数分待てば変わるよ」という言葉が決まり文句になっている地方に住んでいる。この地方の天気はあまりに変わりやすいため、天気に左右される用事の予定を決める際には天気予報よりも気象レーダーを利用することが多い。NWS(米気象局)には、嵐や雨の動きを示す気象レーダーのページがある。このページを見るにはJavaが必要なのだが、Sunによる64ビットコンピュータのサポートはAdobeと同様に遅れている。それどころかSunのJavaはFlashのために使用するプラグインラッパー(後述)を使っても利用できない。とは言え嬉しいことに、JRE(Java Runtime Environment)を提供しているのはSunだけではない。

32ビット用バイナリ

 調べてみたところ、UbuntuがベースとしているDebianの親切な人々によって64ビットLinux上で32ビットバイナリを実行するという問題はすでに解決されていた。32ビットバイナリの実行に必要なすべては、IA32ライブラリによって提供されている。IA32ライブラリをインストールするには、「sudo apt-get install ia32-libs」コマンドを実行する。asoundライブラリがインストールできないという内容のエラーが表示された場合は、「sudo apt-get install libasound2=1.0.15-3ubuntu4」コマンドを実行すればうまく行くはずだ。

 たったこれだけで完了だ。これで、32ビットバイナリ(とそれらが呼び出すライブラリ)が動作するようになったはずだ。テストとして、各々64ビットネイティブのアプリケーションであるQJackCTLとVKeyBDとaconnectguiと一緒に、RTSynthのJACK版を試してみた。aconnectguiを使って、QJackCTLの出力とVKeyBDのMIDIをRTSynthに渡したところ、キーボードを使って素晴らしい音色のギターを演奏することができた。RTSynthの32ビットバイナリは、64ビットネイティブのプログラムとまったく問題なくやり取りした。

Adobe Flashでビデオ再生

 以上はすべてうまく行った――つまり、それほどメジャーではない特殊用途のバイナリを64ビットシステム上でネイティブに実行することはできた。それでは、インターネット上のマルチメディア用のキラーアプリケーションであるAdobe Flashについてはどうなのだろうか。オープンソースのFlashプレイヤであるGnashの開発者たちは、Gnashの開始以来ほぼずっと仕様を参照せずに開発してきた。FlashビデオとSWFコンテナの仕様はまだ公開後間もないので、現時点ではGnashはその全情報を活用するまでには至っていない。また、Flashの仕様の重要な一部分であるActionScriptが公開されていないということもある。そのため現時点で日常的に使用するためにはやはりAdobeによるFlashプラグインが必要だ。しかし前述した32ビットライブラリを使用するだけでは、FlashをFirefoxにインストールすることはできない。

 この問題に対する答えは、nspluginwrapperという便利な小さいツールを使うことだ。nspluginwrapperを64ビット版のFirefox上にインストールすれば、32ビット版のFlashを実行することができるようになる。Flashを利用できるようにするためには、IA32ライブラリをインストールして、(Gnashがインストールされている場合)Gnashを削除する。

sudo apt-get remove gnash

 次にnspluginwrapperとFlash 9をインストールしよう。

sudo apt-get install nspluginwrapper flashplugin-nonfree lib32nss-mdns

 Flash 9はパッケージに入っていないのだが、パッケージインストーラスクリプトがAdobeのダウンロードサイトから取得してインストールしてくれる。それでは次に、nspluginwrapperをFirefoxのプラグインとしてインストールしよう。

sudo ln -sf /usr/lib/nspluginwrapper/plugins/npwrapper.libflashplayer.so /usr/lib/firefox-addons/plugins/
sudo ln -sf /usr/lib/nspluginwrapper/plugins/npwrapper.libflashplayer.so /usr/lib/firefox-3.0/plugins/

 Firefoxを再起動すれば、Flash 9プラグインがインストールされていて適切に利用可能になっているはずなので、YouTubeやGoogle Videoで何か面白いものを見てみよう。

どのJavaを利用するのか

 最後に、ウェブの双方向性をクライアントサイドで実現した最初のものであり、「一度書けばどこでも動く」と言われている言語、すなわちJavaを利用してみよう。残念なことに少なくともウェブアプレットについて言えば「どこでも」の中に64ビットマシンが含まれるとはSunは考えていないようで、Sunによる64ビットLinux用JREは利用可能になっているものの、機能するブラウザプラグインは含まれていない。一方、IcedTea Javaプラグインは64ビットLinux上で機能する。IcedTeaプラグインは以下のようなコマンドを実行してFirefox上にインストールすることができる。

sudo apt-get install icedtea-java7-plugin
sudo ln -sf /usr/lib/jvm/java-6-openjdk/jre/lib/amd64/gcjwebplugin.so /usr/lib/firefox/plugins

 ここでもやはり、インストールしたプラグインを利用するためにはFirefoxを再起動する必要がある。その後は、どのウェブページにあるJavaアプレットについても利用可能になるはずだ。テストのために、NWSのサイトでオハイオ州の天気を見てみよう。

「4ギガバイトもあれば誰にとっても十分なはずだ!」は過去の話

 64ビットのプロセッサ/OS/アプリケーションは、コンピュータのパーソナルな利用においてもビジネスでの利用においても、もう目前にまで迫ってきている。とは言え現在使用されているアプリケーションのほとんどは、現時点でのインターネットが構築されたプラットフォームのほとんどと同様に、32ビットコンピュータ上で開発/作成されたものであり、そのすべてが64ビットOSに移植済みあるいは移植予定であるわけではない。しかしこの分野においてはLinuxは後方互換性という難問を巧妙に取り扱い、レガシーアプリケーションのサポートという、よくある悩みの種を回避することに成功している。Flashがまだサポートされていないことや、その他の32ビットのみに対応したLinuxアプリケーションが利用できないことを懸念して64ビットOSへの移行に二の足を踏んでいるなら、以上に紹介したような簡単な方法で、そのようなアプリケーションを性能の高い64ビットネイティブの他のアプリケーションと一緒に利用できるようにすることも可能なので、検討してみよう。

Edward Amsdenはロチェスター工科大学でコンピュータサイエンスを専攻する大学生。オープンソースファンのプログラマで、非営利FMラジオ局のコンピュータ担当も務めている。

Linux.com 原文