PR
(注:記事は執筆時の情報に基づいており,現在では異なる場合があります)

Fedora Coreの不具合を回避

写真2●Xeonプロセッサ搭載機にはFedora Core1は導入できない
Fedora Core1は,AMD64アーキテクチャにしか対応していない。Fedora Core2を導入する必要がある。
写真3●検証に利用した日本HPの「HP Workstation xw6200」
EM64T対応のXeonプロセッサを2基搭載している。
写真4●Fedora Coreの「フェイルセーフなコンソール」
このセッションは,ウインドウ・マネージャなどを起動せずにxtermだけを起動する。xtermで各種の設定作業ができる。なお,twmなどを手動で起動すれば作業環境を快適にできる。
図6●言語設定に起因するIntel C++ Compilerのエラー
日本語環境では,このようなエラーが出て動作しない。LANG環境変数を「C」に設定すれば正常に動作する。
図7●Intel C++ CompilerとGCCの性能比較例
浮動少数点演算性能を測る「flops.c」というソフトウエアを実行した結果である。全体的に見るとGCCと大きな差は付いていない。

 x86-64プロセッサ向けのディストリビューションの導入例として,Fedora Coreを取り上げ,その注意点を紹介する。

 まず,Fedora Core1の場合には,EM64T対応のXeonやPentium4にはインストールすること自体できない(写真2[拡大表示])。原因は,Fedora Core1がリリースされた当時にそれらのプロセッサが存在しなかったことから,インストーラがx86-64対応プロセッサであることを識別できず,「インストール不可」と判断するためである。現行のFedora Core2であれば,EM64T対応Xeonプロセッサなどに対応している。

 また,直接x86-64プロセッサには関係ないが,これら64ビット拡張が施されたプロセッサを搭載するサーバー機は,比較的新しいデバイスを装備していることが多い。対応するデバイス・ドライバが存在しないがゆえに,インストール時に不具合が生じることがある。例えば,今回動作検証に利用した日本HPの「HP Workstation xw6200」(写真3[拡大表示])では,標準装備のイーサネット・デバイスがFedora Core2では認識されず,ネットワークを利用できなかった(結局,他のイーサネット・カードを装着し,yumコマンドを使ってカーネルを最新版にアップグレードすることで,標準搭載デバイスの認識に成功した)。

 無事にインストールできたとしても,その後に多少の作業が必要になる。標準設定のままでは,gnome-terminalやNautilusといったアプリケーションが正常に起動しないからである。特にgnome-terminalはほぼ100%不正終了してしまう。

 原因は入力メソッドにある。Fedora Coreの標準入力メソッドの「htt」がx86-64環境ではうまく動作せず,それにより接続するアプリケーションが不正終了してしまう。対策は,入力メソッドの切り替えである。切り替えには,次の通りim-switchコマンドを実行する。

$ im-switch -m kinput2

 gnome-terminalなどの端末エミュレータが起動できないので,CtrlキーとAltキー,F1キーを同時押しして仮想コンソールを表示させて,そこで作業する必要がある。または,ログイン・セッションを「フェイルセーフなコンソール」に切り替えると表示されるコンソール(写真4[拡大表示])で作業するのでもよい。設定後にログインし直せば,入力メソッドの変更が反映される。設定は各ユーザーごとに実施する必要がある。

 ロケール(言語設定)に起因する問題もある。例えば,米Intel社の「Intel C++ Compiler」のEM64T対応版は,バージョン8.1.018,8.1.020,8.1.022のいずれも,コンパイル時に図6[拡大表示]のエラーが出てコンパイル作業を実施できない。これは,環境変数LANGの設定が原因である。次の通り,同環境変数に「C」などの値を設定すれば問題は解消する。

$ export LANG=C

 なお,Intel C++ Compilerは強力な最適化機能で知られている。Linux版については,非商用利用であれば無償で利用できることもあり人気が高い。ただし,EM64T対応版については,まだ開発されたばかりということもあり,最適化能力はそれほど高いわけではないようだ。浮動少数点演算性能を図るベンチマーク・プログラム「flops.c」をビルドし,GCCと比べた結果を図7[拡大表示]に挙げた。場合によってはGCCの方が好成績を上げている。


エミュレータでx86-64プロセッサ環境構築に挑戦

図B-1●Bochsをx86-64対応にしてインストールする手順
図B-2●.bochsrcの設定例
図B-3●Bochsの起動方法
写真B-1●Knoppix 64の起動画面
残念ながら起動処理の途中で再起動してしまい,利用できなかった。

 フリーのPCエミュレータ「Bochs」(http://bochs.sourceforge.net/)は,プロセッサのエミュレーション機能も持っている。最新版のバージョン2.1.1では,x86-64アーキテクチャにも対応している。そこで,Bochsを使ったx86-64環境構築に挑戦してみたのだが,結論から言うと成功しなかった。

 Bochsをx86-64対応にするインストール手順は,図B-1[拡大表示]の通りである。ここでは,インストール先を/opt/bochsディレクトリにし,ある程度の高速化機能を有効にした場合の導入手順を紹介している。また,インストール後,図B-2[拡大表示]のような内容を持つ「.bochsrc」ファイルをユーザーのホーム・ディレクトリに作成する必要がある。

 これで,/dev/cdromというデバイス名で示されるATAPI接続のCD-ROMドライブからシステムを起動できるようになる。ここでは「Knoppix 64」のCD-ROMを利用した。

 Bochsの起動には,図B-3[拡大表示]の通りBXSHARE環境変数に値をセットしてから,bochsコマンドを実行する。実行後,メニューが表示される。そこで「5」を入力するとエミュレーションが開始され,写真B-1[拡大表示]のようなKnoppixの起動画面が表示される。

 しかし,残念ながら起動処理中にリセットがかかる不具合が発生した。カーネルそのものは稼働できているようなので,ブート・オプションの調整で何とかなる可能性はある。腕に覚えのある方はぜひチャレンジしていただきたい。なお,Gentoo Linuxのx86-64版のLiveCDで試しても,やはり起動途中でエラーとなった。一方,Fedora Core2のインストールCDでは,インストーラが起動する直前まで処理が進んだ。こちらも調整次第でうまくいく可能性がある。