Linux/MIPS HOWTO Ralf Baechle, ralf@gnu.org July 8, 2004 訳: Seiji Kaneko skaneko@a2.mbn.or.jp Aug 8, 2004 この FAQ は Linux オペレーティングシステムの MIPS への移植版について、 よく出会う問題とその解決、関連情報やソフトウェアの入手のしかたなどにつ いてまとめたものです。また、この FAQ では、実際はここ以外の場所で記載 されているような情報を入手するためにこの FAQ を見ている方の助けともな るようつとめています。 ______________________________________________________________________ 目次 1. Linux MIPS ポートのホームページ 2. メーリングリストとそのほかのネット上の情報源 2.1 メーリングリスト 2.2 IRC チャネル 3. カーネル 3.1 匿名 CVS サーバ 3.2 Web CVS サーバ 4. ディストリビューション 4.1 商用組み込み 4.2 RedHat 7.1 ベース 4.3 Maciej W. Rozycki 版 4.4 MIPS Technologies 4.5 Debian 4.6 MIPS Technologies UK (旧 Algorithmics) 5. ツールチェイン 5.1 MIPS SDE 5.2 商用組み込み向け 5.3 H.J. Lu 版ツールチェイン 5.4 Maciej W. Rozycki 版ツールチェイン 5.5 Dan Kegel 6. 商用 Linux ディストリビューション 7. ウェブ上の情報 7.1 ウェブサーバ 7.2 匿名 FTP サーバ 7.3 Linux-VR プロジェクト 8. サポートされているハードウェアプラットホーム 8.1 活発にサポートされている開発ボード 8.1.1 Broadcom BCM91250A 8.1.2 MIPS Malta 8.2 活発にサポートされているワークステーション 8.2.1 Cobalt Qube と Raq 8.2.2 DECstation series 8.2.3 Silicon Graphics Indy 8.2.4 Silicon Graphics Origin 200 と 2000 8.2.5 Sony Playstation と Playstation 2 8.3 サポート無し / 過去のサポートのみ 8.3.1 Acer PICA 8.3.2 Baget/MIPS シリーズ 8.3.3 DECstation 8.3.4 MIPS Magnum 4000 / Olivetti M700-10 8.3.5 MIPS Magnum 4000SC 8.3.6 NEC machines 8.3.7 Netpower 100 8.3.8 Nintendo 64 8.3.9 Phillips Nino 8.3.10 Silicon Graphics Challenge S 8.3.11 Silicon Graphics Indigo 8.3.12 Silicon Graphics Indigo2 8.3.13 Silicon Graphics Onyx 2 8.3.14 Silicon Graphics Power Series 8.3.15 SNI RM200 8.3.16 SNI RM200C 8.3.17 SNI RM300C 8.3.18 SNI RM400 8.3.19 SNI RW320 8.3.20 NEC VR41xx-based platforms 8.3.21 Toshiba TMPR39xx/Philips PR31700 platforms 8.4 私たちが決してサポートしないハードウェア 8.4.1 IBM RS6000 8.4.2 VaxStation 8.4.3 SGI VisPC 8.4.4 モトローラ 68k ベースの機種 9. サポートされている CPU 9.1 MIPS32 アーキテクチャ 9.2 MIPS64 アーキテクチャ 9.3 R2000, R3000 ファミリ 9.4 R4000 ファミリ 9.5 R5000 ファミリ 9.6 R6000 9.7 RM7000 ファミリ 9.8 R8000 9.9 R10000 9.10 TLB の無いプロセッサ 9.11 浮動小数点機構が部分的にサポートされた、または搭載されていないプロセッサ 10. 技術的 FAQ 10.1 バグの報告 10.2 Linux/MIPS のインストールとよくある問題 10.2.1 NFS ブートに失敗する 10.2.2 カーネルがコンパイルできない 10.2.3 自分でコンパイルしたカーネルがブート時にクラッシュする 10.2.4 Indy のカーネルブートが次のような PROM エラーメッセージで失敗する 10.2.5 IP22 アーキテクチャのマシンが ethernet アドレスを忘れてしまいます。 10.2.6 私の RM 200C 用のリトルエンディアンファームウェアをどこで入手したらいいんでしょうか? 10.2.7 ld が signal 6 で死にます 10.2.8 一部の版の PROM に ELF サポートがない問題 10.2.9 ネットブートを試みているんですが、私のマシンはカーネルをダウンロードしてくれません 10.2.10 TFTP サーバからのダウンロードが止まって、タイムアウトします 10.2.11 DHCP バージョン 2 のバグ 10.2.12 ブート時に "Warning: unable to open an initial console" というメッセージが出ます 10.2.13 SGI システムにインストールする際に IRIX が必要でしょうか。 10.2.14 IRIX と Linux を同じシステムで共存できますか 10.2.15 Insmod が _gp_disp シンボルが未定義だと文句を言います 10.2.16 SGI マシンのシリアルコンソール 10.2.17 SGI の機種で、有効なメモリ量が変です 10.2.18 Indy PROM 関連の問題 10.2.19 私の Indy でメモリがこんなにシステムで使われてしまうのはなぜ? 10.3 Milo 10.3.1 Milo のビルド 10.3.2 Pandora 10.4 ローダブルモジュール 10.5 クロスコンパイラ環境の構築方法 10.5.1 入手できるバイナリ 10.5.2 おすすめのコンパイラのバージョン 10.5.2.1 Binutils 10.5.2.2 gcc 10.5.2.3 glibc 10.5.2.4 uClibc 10.5.3 自分でクロスコンパイラを作成する 10.5.4 必要なディスク容量 10.5.5 バイトオーダ 10.5.6 設定に使う名前 10.5.7 GNU Binutils のインストール 10.5.8 assert.hについて 10.5.9 カーネルソースのインストール 10.5.10 egcs の最初のインストール 10.5.11 ここまでやってきたことのテスト 10.5.12 GNU libc のインストール 10.5.13 egcs の再作成 10.5.14 C++、Objective C や F77 コンパイラを作成すべきでしょうか? 10.5.15 クロスコンパイルでの既知の問題 10.5.15.1 IRIX がクラッシュする 10.5.15.2 System V 系のホストでのリソース制限 10.5.16 GDB 10.6 カーネルのコンパイル 10.6.1 プロセッサタイプを選択する 10.6.1.1 R2000, R3000 ファミリ 10.6.1.2 R4000, R5000 ファミリ 10.6.1.3 R6000 10.6.1.4 Nevada 10.6.1.5 SB1 10.6.1.6 R10000 10.6.1.7 MIPS32 10.6.2 オプションの互換性 10.6.3 クロスコンパイル 10.6.4 32-bit vs. 64-bit 11. 解説書 11.1 この情報を一つの文書として手に入れるには 11.2 See MIPS Run 11.3 The MIPS Programmer's Handbook 11.4 Computer Architecture - A Quantitative Approach 11.5 MIPS ABI 解説書 11.6 mips.com サイト 11.7 NEC サイト 11.8 techpubs.sgi.com 12. 法的事項 12.1 Copyright (著作権表記) 12.2 翻訳部の編集著作権 12.3 Software Use (ソフトウェアの利用) 12.4 ウェブサイトへのリンク 12.5 商標など 12.6 Disclaimer (免責) 12.7 Limitation of liability (責任の制限) 13. 日本語訳について ______________________________________________________________________ 1. Linux MIPS ポートのホームページ Linux/MIPS とは、広く知られた Unix 互換 OS である Linux を MIPS アーキ テクチャに移植したものです。 Linux/MIPS は技術的には大きく異なった、小 さな組込用システムから SGI や DEC 製の大きなデスクトップマシンやサーバ までの多数のシステムで稼働しています。 以下には、MIPS 上の Linux で作業を行うための、必要なリソース全てについ てのリンクが上げられています。以下のリンクを参考にすれば、自分の対象シ ステムで Linux が走るようにすることも、 Linux/MIPS システムで走る、エ ンドユーザアプリケーションや製品の開発を行うことなどができるようになる でしょう。 また、探しているのがサポートの付属した商用の Linux 製品だ、と言うこと なら、 ``商用 Linux ディストリビューション'' の章をご覧下さい。 これらのページに関して追加の希望がある場合は、``解説書'' の章に連絡先 が記載されています。ウェブサーバへの連絡先は、 webmaster@linux- mips.org です。 2. メーリングリストとそのほかのネット上の情報源 2.1. メーリングリスト Linux/MIPS に特化した二つのメーリングリストがあります。 linux-mips@linux-mips.org このメーリングリストが、現在最大のメール流量を持ちます。かなりの 数の活発な技術者が参加しており、開発者にとっては特に参考になる メーリングリストでしょう。 linux-cvs@linux-mips.org これは、Linux/MIPS コミュニティの中心的 CVS アーカイブである linux-mips.org に CVS コミットがされる度に、その内容をアナウンス として流すためのメーリングリストです。これにより、開発を変更のた びに追従することが可能です。 メーリングリストへの参加は Ecartis で管理されており、アドレス Ecartis (ecartis@linux-mips.org) に、subscribe の語を含めて電子メール を送ってください。脱退するには unsubscribe と送ってください。 help と書いたメールを送ると、より進んだ Ecartis の利用法の秘儀を知るこ とができます。 に Web ベースの Ecartis インターフェースもあります。 注意点として、linux-mips.org では RFC 3168 で規定された ECN TCP 拡張を 用いています。ECN ビットがセットされた TCP SYN パケットを落とす腐った ファイアウォールが、何年にも渡って言われ続けているにも関わらず、未だに あちこちで使われています。もし、linux-mips.org には繋がるのに、linux- mips.org メーリングリストからメールが全く届かないならば、この問題に当 たっている可能性があります。 この二つのリストのアーカイブは ftp.linux-mips.org の /pub/linux/mips/archives です。 HTML 形式でサーチ可能な、上記リストと いくつかの Linux/MIPS 関連の昔のリストのアーカイブが にあります。 2.2. IRC チャネル irc.freenode.net に Linux/MIPS 用の #mipslinux という名の IRC チャネル が用意されています。 3. カーネル Linux カーネルの最新版は kernel.org にあり、全 般的には MIPS/Linux の版より多少先行しています (以下の CVS を参照) が、MIPS固有の部分については多少古いという傾向にあります。古い、そして より枯れた版の MIPS 向けカーネルもダウンロード可能です。置かれている場 所については、 ``ディストリビューション'' の節を参照下さい。 3.1. 匿名 CVS サーバ 最先端に身を置きたいが、パッチファイルや丸ごとの tar ファイルをダウン ロードするのは避けたい方のために、匿名 CVS サーバを用意しています。CVS を使えば、次のコマンドで Linux/MIPS のソースツリーをダウンロードするこ とができます。 cvs -d :pserver:cvs@ftp.linux-mips.org:/home/cvs login (anonymous CVS を使う最初の一回のみ必要です。パスワードは "cvs" です) cvs -d :pserver:cvs@ftp.linux-mips.org:/home/cvs co linux、libc、gdb、faq のどれかを の箇所に指定してくださ い。このリポジトリに何がコミットされたか、の情報を伝達するための `` メーリングリスト'' があります。 3.2. Web CVS サーバ から最新の Linux/MIPS のカーネル ソースや、それ以外にもこの CVS アーカイブでホストされている、いくつか のプロジェクトには直接アクセスできます。直感的なインターフェースを使っ て、マウスをクリックするだけで最新の開発状況についていくことができま す。 4. ディストリビューション ディストリビューションとはカーネル、ユーザプログラム、ツールチェインや ライブラリを集めて、システムに組み込み動かせるようにしたものです。対象 のシステムの記憶装置に、ファイルをきちんと組み込んで実行するためのイン ストールプログラムを含んでいるものもあります。詳しい情報については、以 下のリンクの README をご覧下さい。 4.1. 商用組み込み ``商用 Linux''ディストリビューションを参照下さい。 4.2. RedHat 7.1 ベース RedHat 7.1 ペースの完全なディストリビューションが H.J.Lu さんにより移 植されており、 に置かれ ています。 4.3. Maciej W. Rozycki 版 リトルエンディアン専用のディストリビューションで、 Maciej さんが保守し ており、 とその mirror サイト に置 かれています。 4.4. MIPS Technologies MIPS は上記の Lu さんのディストリビューションを保守しており、インス トール可能な CD-ROM イメージを に用意して います。 4.5. Debian リトルエンディアンとビッグエンディアンのマシンの何れにも対応した、各 アーキテクチャ向けの Debian ディストリビューションが、 にあります。これを書いている時点 (January 2002) では 2.4 カーネルを使っており、カーネルコードは MIPS Technologies, Inc. の人たちが作業している移植を用いています。 【訳注:Debian 3.0(woody) では両方とも正式にサポートされています。上記 リンク参照。】 4.6. MIPS Technologies UK (旧 Algorithmics) Algorithmics は現在 MIPS Technologies の一部となり、Linux 関連の業務は 上記 MIPS Technologies に統合されています。このグループは、このカーネ ルの浮動小数点例外ハンドラとエミュレータを書いています。この部分は MIPS CPU で浮動小数点演算を信頼性良く、正しく実行するために必須です。 MIPS Technologies UK は、GNU ``ツールチェイン'' の維持もおこなってお り、無償のスナップショットと商用のサポートのあるバージョンの両方を提供 しています。商用の Linux 開発を行う場合にはご検討下さい。フリーのもの は (登録が必要です) からダウンロード 可能です。 でコンパイラグループに連絡もできます。 5. ツールチェイン ツールチェインは、コンパイラと binutils プログラムを組み合わせた開発環 境の一式で、クロスコンパイラとして、または性能的に許せばターゲットシス テム上のネイティブコンパイラとしての、どちらの環境での実行も可能です。 5.1. MIPS SDE これは完全なディストリビューションではなく、単なる Linux ツールチェイ ンです。但し、これには MIPS 向けの商用サポートがあり、無償のスナップ ショットが提供されています。 MIPS Technologies UK では、開発環境の個々のツールについて独自のソース ツリーを維持管理しています。頻繁ではありませんが、オリジナルの GNU リ リース (そのままでは、MIPS のようなマイナーアーキテクチャではバグが避 けがたいため) との同期も頻繁ではありませんが取られており、最も幅広い範 囲の MIPS CPU に対して、最も信頼性が高く、最高の性能を叩き出すコンパイ ラを提供することに注力しています。 これは私たちの SDE-MIPS 組み込みツールキットの中心となるコンパイラと同 じものです。RPM 形式で、 o ネイティブビッグエンディアン ; o ネイティブリトルエンディアン ; o ビッグエンディアンターゲット Linux/386 クロス環境 ; o リトルエンディアンターゲット Linux/386 クロス環境 で入手可能です。 MTUK では動作状況の報告を聞きたいと思っていますので、 への連絡をお願い します。 5.2. 商用組み込み向け ``商用 Linux'' ディストリビューションの項をご覧下さい。これらは全て、 対象に合ったツールチェインを収録しています。 5.3. H.J. Lu 版ツールチェイン H.J. Lu さんは Red Hat 7.1 の移植の一部としてツールチェインを配布して います。これは にあ ります。 5.4. Maciej W. Rozycki 版ツールチェイン Maciej さんによる安定なツールチェインの一式が、 と その mirror サイト から 入手できます。これは gcc 2.95.3 (patch 版) と、最新の binutils を使っ ています。 5.5. Dan Kegel Dan Kegel さんは、ビルド手順を自動化する快適なスクリプトを載せたページ を提供しています。 6. 商用 Linux ディストリビューション 以下の各社は、組み込みシステム向けに、様々なプラットホーム対応の、商用 でサポートの付いた Linux/MIPS ソリューションを提供しています。 o MontaVista o Red Hat o Lineo o LynuxWorks o TimeSys o ELinOS 7. ウェブ上の情報 7.1. ウェブサーバ 以下は Linux/MIPS 開発者に向けたウェブサーバです。 このサーバは Linux/MIPS 関連の殆どを網羅しています。何かが必要に なったら、ここを見れば大概は既にあるでしょう。 このサイトには MIPS 社の版の Linux/MIPS ベースのディストリビュー ションと、 MIPS 社のプロセッサとエバリュエーションボードのための ツールがあります。 Debian の MIPS/Linux 関連サイトです。 Sony の Playstation 2 向けの Linux/MIPS サーバのサイトです。日本 向けのサイトは ps2linux です。 Bradley D. LaRonde さんの、MIPS/Linux 向けのクロス環境でのツール チェインの HowTo ページです。 Jun Sun さんの移植ガイドには、新プラットホームへの移植の際に役に 立つ情報とコツが載っています。 7.2. 匿名 FTP サーバ Linux/MIPS で主となる匿名 ftp サーバは次のものです。 このサーバは Linux/MIPS に関する ftp のほとんどすべての要求を満 たします。本当です。 これは MIPS, Inc 社のサーバです。他のものに加え、ここには最近の RedHat ベースのディストリビューションと、MIPS チップのエバリュ エーションボードのサポート関連のものがあります。 Maciej W. Rozycki さんの FTP サーバです。アドレスは、 です。 7.3. Linux-VR プロジェクト Linux VR プロジェクトでは各種の NEC VR41xx シリーズ、東芝 TMPR39xx と フィリップス PR3170 ベースのシステムのサポート作業を行っています。ほと んどのコードは既に Linux/MIPS CVS ツリーにマージされています。プロジェ クトのホームページは以前は www.linux-vr.org でしたが、現在は にアーカイブされています。 Linux-VR CVS アーカイブは、 で、CVS によるチェックアウトも可能です。 8. サポートされているハードウェアプラットホーム 幾つかの異なったプロセッサオプションを持っているプラットホームについて は、どのプロセッサタイプがサポートされているかについて、``サポートされ ている CPU'' の節をご覧下さい。 以下は、プラットホームを以下のように大別して説明します。 o ``活発にサポートされている開発ボード'' o ``活発にサポートされているワークステーション'' o ``サポート無し / 過去のサポートのみ'' o ``サポートされない'' 8.1. 活発にサポートされている開発ボード 以下は、活発かつ継続的に移植作業が行われている開発用ボードの一覧です。 これらのボードでの移植は、信頼性高く動くでしょう。また、``商用 Linux ディストリビューション'' の章を参照下さい。これらのメーカは、ハード ウェアの追加サポートも提供しています。 8.1.1. Broadcom BCM91250A SiByte (TM) の BCM1250 デュアルプロセッサ SOC (System On Chip) 用の評 価ボードで、標準 ATX サイズのボードです。高性能のボードです。詳しく は、 まで。 8.1.2. MIPS Malta MIPS Technologies 社の Malta ボードは、搭載可能な CPU オプション全てで サポートされています。www.mips.com 以下の開発者 向けページをご覧下さい。 8.2. 活発にサポートされているワークステーション 以下は、活発かつ継続的に移植作業が行われているマシンの一覧です。これら のマシンでの移植は、信頼性高く動くでしょう。 8.2.1. Cobalt Qube と Raq Cobalt 社 (現 Sun 社) の Cobalt Qube 製品シリーズは、QED 社 (現 PMC Sierra 社) RM5230 を使ったディスプレイレスのローコストサーバシステムで す。 Sun は MIPS ベースの Qube と Raq システムのサポート終了 (EOL) を アナウンスしましたが、他の Linux ディストリビューションでサポートされ ています。この移植の最大の問題は、ブートイメージが約 700kB に制限され ていることです。これはファームウェアの制約で、誰かが回避策を見つけない 限り重大な制約になりつつあります。 8.2.2. DECstation series 現在活発に開発が行われている DECstation の機種は o 2100, コード名 PMAX o 5000/xx (Personal DECstation), コード名 MAXine o 5000/1xx, コード名 3MIN o 5000/200, コード名 3MAX o 5000/2x0, コード名 3MAX+ o 5900/2x0 (3MAX+ と同一です). です。最近は、ほとんどの作業は Harald Koerfgen (hkoerfg@web.de) さんを中心とする人たちが行っています。イ ンターネットでは DECstation 関連の情報は にあります。 DECstation ファミリは 12MHz の R2000/R2010 を用いた DECstation 2100 か ら 60 MHz の R4400SC を用いた DECstation 5000/260 まで多岐にわたってい ます。その他の DEC マシンについては以下の旧機種の章をご覧下さい。ま た、x86 や Alpha を使った機種も DECstation の名で売られていたので、注 意が必要です。 8.2.3. Silicon Graphics Indy Indy は、現時点ではもっとも良くサポートされている Silicon Graphics 社 の機種です。 8.2.4. Silicon Graphics Origin 200 と 2000 Ralf Baechle (ralf@gnu.org) さんと SGI 社員のチームが Origin 200 への 移植に取り組んでいます。これは現在まだ初期の段階ですが、単一プロセッサ でもマルチプロセッサでも走り、内蔵の IOC3 Ethernet と SCSI ホストアダ プタのドライバがあります。 8.2.5. Sony Playstation と Playstation 2 Sony Computer Entertainment は PlayStation 2 向けの Linux の移植を作成 しており、2002 年にリリースされています。PlayStation 2 向けの Linux の 入手に関する詳細と関連情報は を参照く ださい。 他に日本語のサイトが にあります。 Sony の旧機種 Playstation は R3000 派生の CPU を使っており、Sony の自 社開発のグラフィックチップセットを使っています。 Sony はこのシステムで の Linux はサポートしていませんが、ロシアのグループが www.runix.ru (現 在は、 ) で Linux の移植を公開しています。 【訳注:2004-08 時点では、 はまだ整備されてい ないようです。ダウンロードはできません。】 8.3. サポート無し / 過去のサポートのみ 以下のプラットホームは以前はサポートされていましたが、活発な保守はなさ れていないかもしれません。これらのプラットホームでは問題が起きる可能性 が高いでしょう。また、関連情報についてはメーリングリストに当たってくだ さい。 8.3.1. Acer PICA Acer PICA は Mips Magnum 4000 の設計を引き継いでいます。これは 133MHz 動作の R4400PC CPU か、機種によっては 150MHz 動作で 512KB (オプション で 2MB のものもあります) の二次キャッシュ付きの R4400PC CPU が搭載され ており、昔の Magnum の G364 gfx カードの代わりに S3 968 チップを使った カードが使われています。このシステムは X サーバ以外はサポートされてい ます。 8.3.2. Baget/MIPS シリーズ Baget シリーズは R3000 プロセッサを使った次の 3 機種からなります: Baget 23, Baget 63, and Baget 83 です。Baget 23 と 63 は 25MHz の R3500A (基本的には R3000A チップです 【訳注: IDT 社。R3000A と浮動小数 点コプロセッサ R3010A を集積したもの】) を使った BT23-201 か 50MHz の R3081E を使った BT23-202 マザーボードを使っています。BT23-202 は VME バスと VIC068 システムコントローラチップを使っています。BT23-202 ボー ドは内部バスに PCI を使い、内部に VME バスを持っています。 BT23-201 ボードのサポートは Gleb Raiko (rajko@mech.math.msu.su) さんと、 Vladimir Roganov (vroganov@msiu.ru) さんによって行われました。また Serguei Zimin (zimin@msiu.ru) さんの助力がありました。 BT23-202、およ び 3 枚の BT23-201 ボードを共有 VME バスで接続した Baget 23B のサポー トは開発中です。 Baget 83 はリストを完全にするためだけの目的でふれています。これは 2MB の RAM しか積んでおらず、Linux を走らせるにはこれでは小さすぎます。 Baget/MIPS のコードは DECstation 移植向けのコードにマージされていま す。両方に向けたソースコードは から入 手できます。 8.3.3. DECstation 下記の DECstation モデルは誰も作業していないのでみなしご状態ですが、こ れらのモデルに対するサポートは比較的やさしいはずです。 o 3100, 2100 と同じですが、CPU だけ 16MHz の R2000A/R2010A です。 o 5100, コード名 MIPSMATE, ほとんど 2100 と同じですが、R3000/R3010 チップセットを使っています。 その他の DECstation ファミリは、x86 を使ったものを除いて、CPU だけ MIPS CPU に変えた VAX と見なせます。これらのマシンについては全く何 の情報もなく、VAXLinux ポートが息を吹き返さない限り、これらのマシン がサポートされることは起こりそうもありません。具体的には o 5400, コード名 MIPSFAIR o 5500, コード名 MIPSFAIR2 o 5800, コード名 ISIS 8.3.4. MIPS Magnum 4000 / Olivetti M700-10 この二つの機種はほとんど同一です。ACE イニシアティブの頃に、Olivetti は Jazz デザインのライセンスを得て、OS として Windows NT を搭載したマ シンを出荷していました。MIPS Computer Systems 社は Jazz デザインを購入 して MIPS Magnum 4000 シリーズの機種として出荷していました。 Magnum 4000 システムはオペレーティングシステムとして Windows NT と RISC/os が 製品化されていました。 これらのマシンのファームウェアは、インストールされていた OS の種類によ ります。Linux/MIPS はこの二種のうち、リトルエンディアンのファームウェ アのみをサポートします。 M700-10 は NT マシンとしてのみ売られていたた め、この機種にはすべてリトルエンディアンのファームウェアが搭載されてい ます。 MIPS Magnum の場合はもっと複雑です。もしあなたのマシンが RISC/os 用のビッグエンディアン構成になっていた場合には、リトルエンディ アンのファームウェアに入れ直す必要があります。このファームウェアは元々 すべての Magnum の添付フロッピーに含まれていましたが、フロッピーがもう 無いと言うことなら から匿名 ftp でダウンロード できます。 M700 はファームウェア環境変数 ConsoleIn と ConsoleOut を multi()serial(0)term() に設定することでディスプレイレスの動作をさせる ように設定できます。また、有効な ARC デバイスの一覧を listdev コマンド で見ることができます。 一部のマシンの場合、例えば G364 グラフィックカードが搭載されていない が、コンソールは標準グラフィックを使う構成のままになっている場合などで は、ボード上の JP2 を設定する必要があります。次のリセットの後、マシン は COM2 をシリアルコンソールとしてリブートします。 8.3.5. MIPS Magnum 4000SC MIPS Magnum 4000SC は R4000SC CPU を積んでいる以外は Magnum 4000 と同 じものです。``上の項'' をご覧ください。 8.3.6. NEC machines NEC のシングルプロセッサの機種は Acer PICA システムの OEM ですので、該 当の項を参照ください。マルチプロセッサシステムは別物です。 Linux/MIPS の開発者達は OS を開発するに必要な技術情報を持っていません。進展が無い 限り、この点が NEC のマルチプロセッサシステムへの移植を阻む主要因であ り続けるでしょう。 8.3.7. Netpower 100 Netpower 100 は明らかに Acer PICA の外側のみ変えたものです。従ってサ ポートされているはずですが、テストはされていません。もし問題があるとす るなら、マシン判定の関連でしょう。 8.3.8. Nintendo 64 Nintendo 64 は 4MB の RAM を持つ R4300 ベースのゲーム機です。グラ フィックチップは任天堂向けに Silicon Graphic 社で開発されました。この マシンへのポートは現在「できたらいいな」程度の状態であり、任天堂が必要 な技術情報の公開を決定するまではその状態のままでしょう。もっともこの機 種に Linux/MIPS のコードを移植するのが良い考えなのかどうかも問題ではあ りますが。 8.3.9. Phillips Nino Linux 2.4 は Nino をサポートしています。メンテナがこれ以上サポートでき ないことを表明したため、2.5 からはサポートが削除されています。 8.3.10. Silicon Graphics Challenge S このマシンは Indy によく似ています。違いはこのマシンにはキーボードとグ ラフィックカードがないこと、その代わりに WD33C95 チップを使った SCSI アダプタが追加されていることです。この WD33C95 アダプタは現時点ではサ ポートされていません。 8.3.11. Silicon Graphics Indigo このマシンをここで言及しているのは、Indy や Indigo 2 と良く混同される ためです。Indigo は R3000 を使った別のアーキテクチャの機種で、まだサ ポートされていません。 8.3.12. Silicon Graphics Indigo2 このマシンは Indigo の後継機種で、Indy ととてもよく似ています。この機 種は現在サポートされていますが、かなりの機能が欠けています。また、シリ アルコンソールを使わなければいけません。Indigo2 を持っていて、現在の状 態でも良いので Linux を動かしてみたいということならば、 Florian Lohoff (flo@rfc822.org) さんに連絡を取ってください。 8.3.13. Silicon Graphics Onyx 2 Onyx 2 は、基本的には Origin 2000 に追加のグラフィックハードウェアがつ いたものです。現時点では、この追加グラフィックハードウェアの Linux サ ポートは完成していません。それ以外の点では、通常のディスプレイなしの Origin 2000 構成と同程度に Linux が走るはずです。 8.3.14. Silicon Graphics Power Series これはとても古い R3000 対称マルチプロセッサ機です。これらの機種のハー ドウェアのドキュメントはありませんし、マシン自体既にあまり残っていませ んし、ハードウェアには妙な癖があります。簡単にいって、Linux がこれらの マシンで走る可能性はほとんどゼロです。もっとも、挑戦者の意気を挫こうと いうわけではありませんが…。 8.3.15. SNI RM200 あなたのマシンに EISA と PCI スロットの両方があるなら、それは RM200C です (``下'' をご覧ください)。このアーキテクチャ的なわずかな違いのた め、RM200 のほうは現在公式ソースではサポートされていません。 Michael Engel (engel@numerik.math.uni-siegen.de) さんが彼の RM200 を部分的に動 くところまで持ってきていますが、このパッチはまだ公式の Linux/MIPS ソー スに含まれてはいません。 8.3.16. SNI RM200C 下に書かれている RM200 と違って、このマシンは EISA と PCI スロットを 持っています。このマシンは 2.0 と 2.1 ではそれなりにサポートされていま したが、最近まで長い間この移植の保守を誰も行っていませんでした。このた め、このマシンは 2.2 と 2.4 では使えませんが、2.6 では再度動くように なっています。 8.3.17. SNI RM300C RM300 は技術的には RM200C にとてもよく似ています。従って現在の Linux カーネルで動くはずですが、まだ動作レポートを受け取っていません。 8.3.18. SNI RM400 RM400 はサポートされていません。 8.3.19. SNI RW320 これは SGI Indigo の OEM 品で、従ってサポートされていません。 8.3.20. NEC VR41xx-based platforms Linux VR プロジェクトでは NEC 社 VR41xx マイクロプロセッサを使った機器 への Linux の移植を行っています。これらの機種の多くはもともと Windows CE を動かすためのものです。現在基本的なドライバを備えた動作す るカーネルが Vadem 社の Clio、Casio 社の E-105、Everex 社の Freestyle 他の機種向けに同プロジェクトで作成されています。これらのシステムのサ ポートは ``Linux-VR'' で行われています。 8.3.21. Toshiba TMPR39xx/Philips PR31700 platforms VR41xx と同様、これらのプロセッサを使った機器はもともと Windows CE を 動かすためのものです。但し、Sharp Mobilon と Compaq C-Series には基本 的ドライバを含んだ、動作するカーネルがあります。その他の機種については 開発中です。これらのシステムのサポートは ``Linux-VR'' で行われていま す。 8.4. 私たちが決してサポートしないハードウェア 8.4.1. IBM RS6000 名前の通り、これは RS6000 プロセッサシリーズを使った IBM のマシンで す。このため、これは Linux/MIPS プロジェクトの対象ではありません。よく IBM RS6000 と MIPS R6000 が混同されますが。しかしながら、Linux/PPC プ ロジェクトは該当機種をサポートしているかもしれません。詳しい情報は を見てみてください。 8.4.2. VaxStation 名前にも含まれているとおり、これらのマシンは Digital Equipment 社の VAX ファミリのメンバーです。ここでこれを取り上げるのは MIPS を使った同 じ DEC の DECstation と似たタイプ名のため、よく混同されるからです。こ の 2 つのファミリにはアーキテクチャ的に共通点はほとんどありません。こ れらのシステムは、 の Linux/VAX プロジェク トの対象です。 8.4.3. SGI VisPC これらは実際は x86 プロセッサを使ったシステムで、この FAQ の対象外で す。 Visual Workstation の旧機種には、多少制約のある Linux サポートが 提供されています。現在の Visual Workstation は公式にサポートされた SGI の製品です。詳しい情報は をご覧ください。 8.4.4. モトローラ 68k ベースの機種 例としては SGI Iris 1000, Iris 2000 や Iris 3000 シリーズです。 これ らのマシンは MIPS プロセッサを使っていませんので Linux/MIPS プロジェク トではサポートしませんし、これらの機種の情報を探すためならこの文書は間 違った場所です。また、これらは とても 古いマシンで、多分現時点で十年以 上経っています。これらがサポートされる可能性は少ないでしょ う。Motorola 68000 ベースのシステムで動作する Linux 関連の情報は を参照ください。 9. サポートされている CPU 9.1. MIPS32 アーキテクチャ MIPS32 仕様に準拠した全ての CPU がサポートされています。これには MIPS 4kc と Alchemy 社 (現 AMD 社) Au1000 ほかを含みます。 9.2. MIPS64 アーキテクチャ MIPS64 仕様に準拠した全ての CPU がサポートされています。これには MIPS 5K, 10K, Sibyte 社 SB1 コア / SB1250 SOC(System On Chip) ほかを含みま す。 9.3. R2000, R3000 ファミリ Linux は最初の MIPS プロセッサ R2000, R3000 及びこの二つから派生した多 くのプロセッサ (例えば R3081 など) をサポートしています。 9.4. R4000 ファミリ Linux は R4000 ファミリの多くのメンバーをサポートしています。現時点で は R4000PC, R4400PC, R4300, R4600, R4700 がサポートされています。 サポートされていないのは、R4000MC と R4400MC CPU (マルチプロセッサシス テム向け) と、CPU 制御の二次キャッシュを持つ R5000 システムです。後者 のほうは、キャッシュが外部のキャッシュコントローラではなく R5000 自身 で制御されている場合を指します。この違いは重要です。と言うのは、MIPS ではキャッシュはアーキテクチャ的に可視で、ソフトウェアで制御してやる必 要があるためです。 R4000SC/R4400SC サポートで CPU モジュールを提供してくれた Ulf Carlsson (ulfc@engr.sgi.com) さんの功績は特記されるべきでしょう。 SGI システムでの R4000 と R4400 のバージョン番号付けに多少紛らわしい点 があるので、ここで説明しておきます。この二つのプロセッサは基本的には同 じもので、主な違いは R4000 の一次キャッシュが 8kb づつであるのに対して R4400 はその二倍持っていることです。従ってこの二つのプロセッサは c0_PrId で自分の識別番号として同じ 4 を返し、別のバージョン番号を返す ようになっています。ところが、マーケティング上の都合で、改良品である R4400 は素晴らしい新製品であるということになりました。 R4000 プロセッ サはバージョン番号が 3.0 までで、R4400 プロセッサには 4.0 以降のバー ジョン番号が付けられています。このバージョン番号付けの結果、R4400 は新 製品として販売され、マーケティング上の番号付けは再度 1.0 から行われま した。IRIX の hinv コマンドはハードウェアのバージョン番号を返します が、Linux では混乱を最小にとどめるため、マーケティング上のほうの番号を 返しています。これは MIPS のプロセッサエラッタなどの、文書でのバージョ ン番号ではそちらが使われているためです。 9.5. R5000 ファミリ R5000 と、類似のファミリのメンバ、例えば R5230 や R5260 (PMC Sierra 社) は Linux でサポートされています。このサポート範囲には内蔵二次 キャッシュコントローラや SGI IP22 の外部キャッシュコントローラに対する サポートも含まれています。 9.6. R6000 MIPS 系のプロセッサの R6000 はしばしば IBM 社のワークステーションの RS6000 と混同されます。ですので、もし IBM 機の Linux のことが知りたい という希望を持ってこの文書を読まれているのでしたら、読む文書が違ってい ます。 R6000 は現在サポートされていません。これは 32-bit の MIPS ISA 2 (MIPS II) に準拠したプロセッサで、興味深くはありますがかなり変なチップです。 これは BIT Technology 社で開発・製造されたもので、後に NEC が生産を引 き継ぎました。これは Cray 社のスーパーコンピュータで使われていて、現在 でも使われている特に高速なチップ向けの ECL プロセスで作られています。 このプロセッサは、TLB slice と呼ばれる TLB を、外付けの一次キャッシュ の最後の数ラインの一部を使って実現する手法を採っています。このた め、MMU は R3000 や R4000 シリーズのものと相当に異なり、これがこのプロ セッサがサポートされていない理由の一つになっています。 9.7. RM7000 ファミリ RM7000 と類似のファミリのメンバは、三次キャッシュのサポートを含めて Linux でサポートされています。 9.8. R8000 R8000 は現在未サポートです。これはこのプロセッサが一部の SGI の機種の みで使われた比較的まれなプロセッサで、Linux/MIPS 開発者が誰もこのよう な機種を持っていない、ということも理由の一部です。 R8000 はかなり興味深いシリコンチップです。このプロセッサのキャッシュと TLB 周りはほかの MIPS ファミリとはかなり違っています。このプロセッサは R10000 が完成する前に、浮動小数点最高性能の名誉を Silicon Graphics が 奪い返すべくクイックハックで作成されたものです。 9.9. R10000 R10000 は mips64 カーネルとしてサポートされています。現在 IP22 アーキ テクチャ (SGI Indy、Challenge S と Indigo 2) および Origin でサポート されています。 このプロセッサは、キャッシュがノン・コヒーレントなシステムではとても制 御しづらく、このためそのようなシステムでこのプロセッサがサポートできる ようになるまでにはしばらくかかると思います。現時点では、そのようなシス テムには SGI O2 と Indigo があります。 9.10. TLB の無いプロセッサ 組み込み向け用途の上記 CPU の派生品には、TLB 機能の一部を欠くものがあ ります。これらの品種はサポートしませんし、サポートされることを期待して もらっても困ります。 ハッカーなら、マイクロコントローラ向けの Linux (略称 ucLinux) をちょっ と調べてみようと思われるかもしれません。これは TLB のないプロセッサを サポート可能です。但し、プロセッサのタイプに TLB の有無が与える影響が ほとんどないことを考えると、やはり TLB のあるプロセッサを選択すること を薦めます。そうすることで設計作業をずっと節約できます。 9.11. 浮動小数点機構が部分的にサポートされた、または搭載されていない プロセッサ Linux/MIPS バージョン 2.4 から、完全な浮動小数点エミュレーション機能が 加わりましたので、このようなプロセッサも、浮動小数点付きのプロセッサと のバイナリ互換性を保ったままサポート可能になっています。 10. 技術的 FAQ 10.1. バグの報告 バグを報告する前に、答えがこの文書に載っていないことの確認をお願いしま す。また、 のサーチエ ンジンを使って、あなたの問題をメーリングリストアーカイブから探してみて ください。 これで解決しなかった場合は、バグレポートをお願いします。カーネルのバグ レポートに不慣れな方はまず、REPORTING-BUGS (Linux 2.1 以降では、これは カーネル添付文書になっています) を読んで、必要な全ての情報がレポートに 含まれるようにしてください。特に、Oops メッセージの解析手順の部分が重 要です。これがなければ、レジスタダンプの値から意味を持つ情報を引き出す ことはほとんど不可能です。ほとんどの問題では、使っているシステムの正確 な情報も重要です。まず、システムはプロセッサだけからなる訳ではないこ と、MIPS システムは、Intel システムよりシステム間の違いが大きいことを 念頭に置いてください。一般的に言って、System.map のような大きなファイ ルを添付することは、明示的にそれを求められない限りやるべきではありませ ん。また、アーキテクチャ非依存のカーネルバグを見つけたと思っている場合 でも、念のため linux-mips@linux-mips.org にも CC をお願いします。 10.2. Linux/MIPS のインストールとよくある問題 10.2.1. NFS ブートに失敗する 通常はこれはこの現象に出くわした人たちが tar アーカイブを Linux ではな く IRIX で展開したためです。NFS 越しのデバイスファイルの定義は Unix 間 で標準化されていないため、この問題が起きます。現象としては、NFS ファイ ルシステムをマウントした直後にシステムが ``Warning: unable to open an initial console.'' というエラーメッセージで死ぬと言うものです。 今のところ、この問題の回避策は、インストールに使うアーカイブを NFS サーバに展開する際に Linux システムを使うことです。この Linux システム は MIPS 機である必要は無く、NFS サーバ自体はどのような UNIX 機でも問題 ありません。 10.2.2. カーネルがコンパイルできない Linux/MIPS でのシステムが、同じようによく保守されているわけではありま せん。一般的に言って、多くのユーザのいるマシンには細かい経験の蓄積が進 んでいますし、その結果良くサポートされています。 kernel.org からダウンロードしたカーネルには最新の MIPS サポートは含ま れていませんので、MIPS サポートのみを対象として保守されている linux- mips.org からダウンロードしたものと違ってコンパイルが通らなかったり、 動かなかったりするかもしれません。 10.2.3. 自分でコンパイルしたカーネルがブート時にクラッシュする 自分でカーネルを作ったんですが、クラッシュします。Indy ではクラッシュ メッセージは次のようなものです (同様の問題は他のマシンでも起きますが、 メッセージは全く違ったものかもしれません)。 Exception: Status register: 0x300004803 Cause register: 0x8008 Exception PC: 0x881385cc, Exception RA: 0x88002614 exception, bad address: 0x47c4 Local I/O interrupt register 1: 0x80 Saved user regs in hex (&gpda 0xa8740e48, &_regs 0xa8741048): arg: 7 8bfff938 8bfffc4d 880025dc tmp: 8818c14c 8818c14c 10 881510c4 14 8bfad9e0 0 48 sve: 8bfdf3e8 8bfffc40 8bfb2720 8bfff938 a8747420 9fc56394 0 9fc56394 t8 48 t9 8bfffee66 at 1 v0 0 v1 8bfff890 k1 bad11bad gp 881dfd90 fp 9fc4be88 sp 8bfff8b8 ra 88002614 PANIC: Unexpected exception この問題はバージョン 2.7 以降の Binutils のまだ直っていないバグのため に起きます。当面の回避策は、 arch/mips/Makefile の LINKFLAGS = -static -N という行を、下記のように修正してください。 LINKFLAGS = -static 10.2.4. Indy のカーネルブートが次のような PROM エラーメッセージで失敗 する >> boot bootp()/vmlinux 73264+592+11520+331680+27848d+3628+5792 entry: 0x8df9a960 Setting $netaddres to 192.168.1.5 (from server deadmoon) Obtaining /vmlinux from server deadmoon Cannot load bootp()/vmlinux Illegal f_magic number 0x7f45, expected MIPSELMAGIC or MIPSEBMAGIC. この問題は Indy のとても古い版の PROM では、Linux の使う ELF バイナリ フォーマットを扱うことが出来ないために発生します。この問題の解決は、現 在作業中です。 10.2.5. IP22 アーキテクチャのマシンが ethernet アドレスを忘れてしまい ます。 IP22 アーキテクチャでは、Dallas DS1286 RTC チップを時刻とファームウェ ア変数を格納するために使っています。このチップは内部に電池を持っていま すが、現在すでに約十年立っていますし、経験的にこの種の RTC バッテリの 寿命はかなり短いことを考慮すると、RTC はそろそろ情報を保持しなくなって きています。また、ソフトウェアが何かのミスで RTC の情報を上書きしてい る可能性もあります。 問題の原因が、RTC チップの不良であると判断できたなら。新品の RTC を や、そのほかの供給元より入手できます。うる さい向きとしては、更にその部品が部品棚で長いこと眠っていたものでないこ とを確認するのも良いでしょう。 以下が、RTC チップの再プログラム法です。ここでは、ethernet アドレスが aa:bb:cc:dd:ee:ff であると仮定しています。 fill -w -v 0xaa 0xbfbe04e8 fill -w -v 0xbb 0xbfbe04ec fill -w -v 0xcc 0xbfbe04f0 fill -w -v 0xdd 0xbfbe04f4 fill -w -v 0xee 0xbfbe04f8 fill -w -v 0xff 0xbfbe04fc 以下のコマンドを使ってチップ内の NVRAM の内容の検証が行えます。 dump -w -x 0xbfbe04e8 これは、MAC アドレスの各バイトを四回打ち出します。これは、Indy での チップの使い方の関係で、正常な動作です。 この MAC アドレスは、システムのシリアル番号をかねていますので、IRIX 管 理下のソフトウェアライセンスはこの番号に括り付けになります。また、 ethernet 標準では、48bit アドレスの特定の値に意味を持たせています。こ のため、再プログラムの際の ethernet アドレスには元の ethernet アドレス を使ってください。MAC アドレスはマシンに張られたシールで確認できるで しょう。通常は、このシールには 12 桁の十六進数字のみが記されており、マ シンの後ろ面のパラレルポートと左側の SCSI コネクタの間で、右側の電源と の間に張られています。シールが無くなっている場合も、syslogd の出力した Linux のブートメッセージや、 bootpd や dhcpd 設定ファイルなどからこの 値を得ることができるでしょう。 ethernet アドレスを再プログラムする必要がある場合、他の NVRAM 設定も恐 らく全て失われていますので、設定のために PROM シェルの setenv -p コマ ンドを使ってください。 10.2.6. 私の RM 200C 用のリトルエンディアンファームウェアをどこで入手 したらいいんでしょうか? SNI のシステムはビッグとリトルの両エンディアンで動作可能です。現時点で は Linux/MIPS はリトルエンディアンのファームウェアのみをサポートしてい ます。これはある意味で不幸なことで、SNI は Windows NT のサポートをやめ たため、リトルエンディアンのファームウェアをここしばらく出荷していませ ん。 ビッグエンディアンモードで動かした場合、ファームウェアは既にサポートさ れている SGI Indy に似たものですので、SNI サポートを修正するのは多分比 較的容易です。興味のあるハッカーは Ralf Baechle (ralf@gnu.org) まで連 絡ください。 10.2.7. ld が signal 6 で死にます collect2: ld terminated with signal 6 [Aborted] これは古い binutils の既知のバグです。少なくとも binutils 2.8.1 以降と 最新のパッチの組み合わせにアップグレードする必要があります。 10.2.8. 一部の版の PROM に ELF サポートがない問題 古い版の IP22 PROM は Linux カーネルの使う ELF フォーマットを知らず、 Linux が直接ブートできません。この問題に当たると、以下のようなエラー メッセージになります。 >> boot -f linux root=/dev/sda1 Cannot load scsi(0)disk(1)rdisk(0)partition(8)/linux. Illegal f_magic number 0x7f45, expected MIPSELMAGIC or MIPSEBMAGIC. Unable to load linux: ``linux'' is not a valid file to boot. >> この問題の望ましい解決策はもちろん PROM のアップグレードですが、すべて のシステムで提供されているわけではありません。 代替手段として、Irix 5 以降の Sash をカーネルをブートするために使うこ とができます。Sash は ELF バイナリをロードするやり方を知っており、それ が IRIX のカーネルか Linux のカーネルかを気にしません。PROM モニタで ``Sash'' と打ってください。別のシェルプロンプトがでたなら、それが Sash からのプロンプトです。後は普通通り Linux を起動してください。 Sash は EFS と XFS ファイルシステムを読め、bootp / tftp でカーネルを読 むこともできます。 カーネルソースと共に配布されている elf2ecoff ツールを使って ELF バイナ リを ECOFF 形式に変換することもできます。または、カーネルのビルド時に 単に ``make vmlinux.ecoff'' とすることで ECOFF 形式のカーネルを作成で きます。 10.2.9. ネットブートを試みているんですが、私のマシンはカーネルをダウ ンロードしてくれません この問題は、SNI RM200 と SGI の IP22 アーキテクチャの ARC ファームウェ アで起きます。 ブートクライアントが BOOTP パケットに返答しているのにも関わらず (tcpdump や ethereal のようなパケットスニファで確認できます)、 BOOTP サーバからカーネルをダウンロードしない場合です。これはあなたのブート サーバがカーネル 2.3 系、またはそれ以降のものを使っているときに起きま す。この問題が起きた場合には、ブートサーバで root になって "echo 1 > /proc/sys/net/ipv4/ip_no_pmtu_disc" と入力すれば回避できます。 10.2.10. TFTP サーバからのダウンロードが止まって、タイムアウトします この問題は、TFTP サーバがローカルポート番号 32768 以上を使おうとしてい るせいで起きている場合があります。Linux 2.3 以降を使っている場合に は、TFTP サーバは 32768 以降を使います。この問題は、サーバで "echo 2048 32767 > /proc/sys/net/ipv4/ip_local_port_range" とすれば回避でき るでしょう。 10.2.11. DHCP バージョン 2 のバグ DHCP バージョン 2 を使っていると、次の問題に出くわすかもしれません。現 象:あなたのマシンは BOOTP を受信し、三回返答しますが、 TFTP を始めよ うとしません。この問題はシステムをブートする前に PROM モニタで "unsetenv netaddr" と入力することで回避できます。 DHCP バージョン 3 は この問題を修正しています。 10.2.12. ブート時に "Warning: unable to open an initial console" とい うメッセージが出ます この問題には二つの可能性と解決策があります。まず、あなたのシステムで設 定されたコンソールに対して、ドライバが実際にあるかどうかを確認してくだ さい。この点には問題が無く、問題が解決しないなら、あなたは Linux ディ ストリビューションと root ファイルシステムに存在する、よくあるバグの犠 牲になっているものと考えられます。 Linux システムのコンソールは、キャ ラクタデバイスで、メジャー番号 5、マイナー番号 1 で、かつユーザとグ ループが共に root で書き込み権 622 であるべきです。もしそうなっていな いなら、ファイルシステムのルートディレクトリに cd して、以下のコマンド を root になって実行してください。 rm -f dev/console mknod --mode=622 dev/console これは NFS ルートファイルシステムでも、NFS サーバで直接行うこともでき ます。しかしメジャー番号とマイナー番号は NFS により変更されてしまうの で、この作業は Linux システムから (MIPS システムが唯一の NFS クライア ントであっても) 行う必要がありますそうしなければ、Linux クライアントが そこからブートする際にメジャー番号やマイナー番号が誤ったものになってし まいます。 10.2.13. SGI システムにインストールする際に IRIX が必要でしょうか。 様々なインストール手順の記載の中で、ディスクの分割を行うために IRIX が 使われています。これが必要になっていたのは、その手順が書かれた時点では linux で走るディスク分割ツールがなかったためです。現在は、fdisk の新し いバージョンか、GNU Parted を用いれば、ディスクを IRIX のディスクラベ ル (expert モードで選択可能になりました) を用いて分割可能になりまし た。ボリュームヘッダは dvhtool で操作できます。注意点として、dvhtool の使い方は IRIX のものとは異なります。 また、予備のオペレーティングシステムとしての IRIX は、インストール時に ramdisk や nfsroot で苦戦する手間を減らし、便利ではあります。但し、一 言注意。中身を失いたくないなら、IRIX ディスクラベルを持っていないディ スクを IRIX fx(8) に指定しては絶対にいけません。IRIX は問い合わせなし にディスクの内容を壊し ます。 10.2.14. IRIX と Linux を同じシステムで共存できますか はい。但し、必ず前の節の IRIX の fx(8) についての注意を読んで下さい。 10.2.15. Insmod が _gp_disp シンボルが未定義だと文句を言います _gp_disp は MIPS の PIC コード中で使われているマジックシンボルです。こ のエラーは、システムをクラッシュから救ってくれたため、むしろ有り難いも のです。この場合の問題の要点は、カーネル作成時の Makefile のオプション と、カーネルモジュール作成時のオプションは同じにすべきだということで す。特に、オプション -mno-pic -mno-abicalls -G 0 が重要です。 10.2.16. SGI マシンのシリアルコンソール 使っているカーネルに、シリアルインターフェースとシリアルコンソールのた めの適切なドライバが組み込まれるようにしてください。 Indy と Challenge S では ARC 環境変数 console を d1 か d2 のどちらか (コンソー ルとして使おうとしているシリアルインターフェース側) に設定してくださ い。 ブート時に、全てのカーネルメッセージがシリアルコンソールに現れ、 init が動き出した時点から何も出なくなるという問題に出くわしたのなら、多分あ なたの /dev/console の設定が間違っているのでしょう。カーネルソースをイ ンストールしているなら Linux カーネルソースの /usr/src/linux/Documentation/serial-console.txt に詳しい情報がみつかり ます。 10.2.17. SGI の機種で、有効なメモリ量が変です ブート時に Indy のカーネルは有効なメモリ量を次のようなメッセージで表示 します。 Memory: 27976k/163372k available (1220k kernel code, 2324k data) 最初の 2 つの数字が大きく違うのは、Indy のメモリアドレス空間内には先頭 の 128MB がイメージとして現れるためです。この 2 つの数字の違いはこのた め大体 128MB ぐらいで、何かの問題を示しているわけではありません。カー ネル 2.3.23 からはこの 128MB の差は数えられないようになっています。 10.2.18. Indy PROM 関連の問題 一部の人たちが、マシンを保守パーツ等でアップグレードした後にこの問題を 報告しています。 Indy の PROM には、何種類かの版があります。古い PROM 版のマシンで新しい種類の CPU にアップグレードした場合、例えば R4600SC を R5000SC モジュールにするなどした場合、次のようなメッセージを出して セルフテストがクラッシュします。 Exception: Status register: 0x30004803 Cause register: 0x4000 Exception PC: 0xbfc0b598 Interrupt exception CPU Parity Error Interrupt Local I/O interrupt register 1: 0x80 CPU parity error register: 0x80b CPU parity error: address: 0x1fc0b598 NESTED EXCEPTION #1 at EPC: 9fc3df00; first exception at PC: bfc0b598 この場合、マシンの PROM を新しい版にアップグレードするか、古い CPU に 戻す必要があります (通常 R4000SC と R4400SC モジュールは動くはずで す)。はっきり言っておきますが、この問題は Linux とは無関係です。ここで これを取り上げているのは幾人かの Linux ユーザがこれについて質問を出し ていたからです。 10.2.19. 私の Indy でメモリがこんなにシステムで使われてしまうのはな ぜ? ブート時に Indy の `Memory: ...' メッセージは 128 MB のメモリがシステ ムで使われていると答えます。これは正常です。 PC アーキテクチャで、メモ リアドレスの 640KB から 1024KB までに隙間が開いているのと同様、Indy の メモリアドレス空間内に最初の 128MB がイメージとして現れる部分があるた めです。Linux はそのことを知っていて、そのメモリを単に無視するため、こ のようなメッセージが出るのです。 10.3. Milo Milo は、ARC ファームウェアのリトルエンディアン MIPS システムをブート させるためのブートローダであり、現在 Jazz ファミリと SNI RM 200 に使わ れています。Milo は Alpha システムで使われる Milo と名前が同じで目的も ほぼ同じですが、この二つの Milo にはそれ以外に共通点はありません。この 二つは別々の人たちが開発しましたし、コードも全く別々で、違うハードウェ アプラットフォームで動作します。この二つが同じ名前なのは、単に歴史的な 「事故」というべきものです。 Milo は、RM200C 以外の ARC プラットフォームでは必要なくなっています。 他のすべてのプラットフォームでは、ECOFF カーネル (またはより新らしい ファームウェア下では ELF カーネル) を、Milo や相当品の必要なしに直接実 行可能です。RM200C ではファームウェアのおかしな振る舞いのた め、Milo 0.27.1 がカーネルのブートのために引き続き必要です。 10.3.1. Milo のビルド Milo のビルドの手順は、Milo パッケージの README ファイルに詳細にわたっ て書かれています。Milo はカーネルのヘッダファイルに多少の依存関係を持 ちますが、このヘッダファイルはカーネルリリースと共に変わるものですか ら、Milo を簡単に作成できないことが良くあります。但し、Milo の配布ファ イルには Milo と Pandora 両方のバイナリが含まれています。Milo のビルド は簡単ではありません。もし Milo を自分で変更したいと言うことでなけれ ば、とりあえずのお勧めは Milo tarball に含まれているバイナリを用いるこ とです。 10.3.2. Pandora Pandora は技術文書のないシステムを解析することを主たる目的として開発さ れた簡単なデバッガです。 Pandora には逆アセンブラやメモリダンプ機能な どが含まれています。単に Linux を使いたいだけならば、Pandora を (サイ ズは小さいですが) インストールする必要はないでしょう。 10.4. ローダブルモジュール Linux/MIPS でモジュールを使うのは実に簡単です。他の Linux システムのモ ジュール機能を使っていた人が期待するとおりに動きます。モジュールを使っ たシステムを走らせたい場合、少なくとも 980919 版以降のカーネルと、バー ジョン 2.1.121 より新しい modutils を使ってください。これより古いもの は動きません。 10.5. クロスコンパイラ環境の構築方法 10.5.1. 入手できるバイナリ クロスコンパイラ環境を構築する一番やさしい方法は、バイナリを からダウンロードし てくることです。真面目な話、Linux/MIPS の 8 年の歴史から、Linux/MIPS で多くのユーザが直面する最大の問題がこれであるということが明らかになっ ています。 Linux/i386 用のビッグエンディアンターゲット向けのパッケージ は次のものです。 binutils-mips-linux-2.13.2.1-1.i386.rpm egcs-c++-mips-linux-1.1.2-4.i386.rpm egcs-g77-mips-linux-1.1.2-4.i386.rpm egcs-libstdc++-mips-linux-2.9.0-4.i386.rpm egcs-mips-linux-1.1.2-4.i386.rpm egcs-objc-mips-linux-1.1.2-4.i386.rpm そして、次がリトルエンディアン向けのパッケージのリストです。 binutils-mipsel-linux-2.13.2.1-1.i386.rpm egcs-c++-mipsel-linux-1.1.2-4.i386.rpm egcs-g77-mipsel-linux-1.1.2-4.i386.rpm egcs-libstdc++-mipsel-linux-2.9.0-4.i386.rpm egcs-mipsel-linux-1.1.2-4.i386.rpm egcs-objc-mipsel-linux-1.1.2-4.i386.rpm 64-bit MIPS カーネル向けには、現在二つのパッケージのみが入手できます。 egcs-mips64-linux-1.1.2-4.i386.rpm egcs-mips64el-linux-1.1.2-4.i386.rpm これらの全部をインストールする必要はなく、殆どの人は C++、Objective C と Fortran 77 の各コンパイラは省略してよいでしょう。 Intel 版のバイナ リは GNU libc 2.2 にリンクされているので、アップグレードする際にはこれ もインストールする必要があるでしょう。 10.5.2. おすすめのコンパイラのバージョン 10.5.2.1. Binutils お勧めなのは、binutils 2.13.2.1 です。 10.5.2.2. gcc 2003-05-16 より前の Linux 2.4 カーネルをコンパイルするのに最低必要な gcc のバージョンは egcs 1.1.2 です。それ以降の 2.4 系列、および 2.5、2.6 カーネルをコンパイルするのに最低必要な gcc のバージョンは gcc 2.95.3 です。古すぎるコンパイラでは、コンパイラがコアダンプしたり、音 もなくコンパイルに失敗したカーネルができたりします。ツールが新しい場合 コード生成が改善されていますが、これはできあがったカーネルの性能にはほ とんど影響しません。一方、ツールが新しい場合コードの生成が劇的に遅くな る傾向にありますから、MIPS ポートのメンテナを含む一部の人たちは、古く なっているにもかかわらず旧コンパイラを使い続ける傾向にあります。 ユーザ側のアプリケーションとライブラリを作成するには、多分新しいコンパ イラが欲しくなるでしょう。一般的に言って、2.95.3 はとても安定して、同 時にまずまず高速であると考えられています。 C++ 言語の進化と、C++ ユー ザの ABI の関係で使えるコンパイラに制約が出てくる場合があるかもしれま せん。恐らく、とても新しい gcc 3.2 などのコンパイラがよい選択になるで しょう。 ここで、カーネルとユーザ用アプリケーションで同じコンパイラを使う必要は ないことに留意ください。同じコンパイラを使う必要があるのは、すべての C++ コードに対してのみです。 10.5.2.3. glibc この文書ではまだ glibc 2.0.6 をビルドする方法を採り上げていますが、こ れはもう新規プロジェクトには推奨できません。バイナリサイズのために glibc 2.0.6 を検討していたユーザは、ucLibc を代わりに検討ください。コ ンパイラをビルドするだけが目的なら、glibc をクロスコンパイラ環境にイン ストールする必要はありません。 10.5.2.4. uClibc uClibc はとても小さな libc の置き換えで、 から 入手できます。MIPS 向けのものは、 にあります。 10.5.3. 自分でクロスコンパイラを作成する 最初に次のソースパッケージをダウンロードしてきてください。 o binutils-2.13.2.1.tar.gz o egcs-1.1.2.tar.gz o glibc-2.0.6.tar.gz o glibc-crypt-2.0.6.tar.gz o glibc-localedata-2.0.6.tar.gz o glibc-linuxthreads-2.0.6.tar.gz これらのパッケージはお好みの GNU アーカイブサイトか、 ftp.linux- mips.org から入手できます。更に、パッチが必要になります。MIPS に 限った話ではありませんが、バンドルされていないパッチはいつでも最新 のものとは限りませんし、ビルドするには MIPS に固有ではない追加パッ チが必要になるかもしれません。これらの別配布のパッチは異なったバー ジョン番号付けを行っていることもありますので、お勧めの方法は ftp.linux-mips.org で配布されている RPM パッケージから、ソースと パッチを入手することです。 また、上記のものが現在お勧めのバージョンです。古いバージョンは動くかど うか分かりません。もし古いバージョンを使おうと頑張っているということで したら、バグレポートは送らないでください。どちらにせよ見ませんので。ま た、インストールする際には、binutils、egcs、 glibc の順に行ってくださ い。古いバージョンが既に入っている場合を除いては、この順番を変えると うまくいきません。 10.5.4. 必要なディスク容量 インストール時に、ファイル群をインストールする先のディレクトリを指定し なければなりません。以下ではそのディレクトリを と呼ぶことにし ます。特定の条件で発生するような問題を避けるため、 の値はその マシンの本来の gcc と同じ値にするのが最良です。例えば gcc が /usr/bin/gcc としてインストールされているなら、 として /usr を 選んでください。これからインストールしようとしているパッケージすべてに 対して、同じ を用いる必要があります。 コンパイル中には、binutils には約 31MB のディスクの空きが必要です。ま た、インストールするためには のあるパーティションに 7MB の空 きが必要です。egcs の作成には 71MB が、インストールには 14MB が必要で す。 GNU libc はコンパイルに 149MB の空きが、そしてインストールには 33MB が必要です。注意してほしいのは、これは単なる目安だということで す。この値は、異なるプロセッサ、オペレーティングシステム、コンパイラオ プションなどによって大きく異なるかもしれません。 10.5.5. バイトオーダ MIPS アーキテクチャの特徴的な機能の一つは、R8000 以外のすべてのプロ セッサが、設定によってビッグエンディアンとリトルエンディアンのどちらで でも動作できることです。バイトオーダとは、メモリ中にプロセッサが複数の バイトを格納するやり方です。ビッグエンディアンのマシンでは、最大の桁側 のバイト値が最小のアドレス位置に格納されます。リトルエンディアンのマシ ンでは、これが最大のアドレス位置に格納されます。複数の数字からなる数を 左から右に書くか、逆順で書くかの違いだ、と考えてください。クロスコンパ イラ環境を正しく設定するためには、クロスコンパイラのターゲットとなるマ シンのバイトオーダを知らなければなりません。ターゲットマシンのエンディ アンの設定を既に知っているのでなければ、マシンのバイトオーダについて ``ハードウェアプラットフォーム'' の節を参照ください。 10.5.6. 設定に使う名前 autoconf を使うパッケージの多くは、様々なアーキテクチャとオペレーティ ングシステムをサポートしています。これら多くの設定を区別するため、名前 が ----- のように付け られています。この表現を使えば、Linux/MIPS の設定の名前はビッグエン ディアン向けには mips-unknown-linux-gnu で、リトルエンディアン向けには mipsel-unknown-linux-gnu です。この二つの名前は多少長いため、順に mips-linux と mipsel-linux という省略形が許されています。クロスコンパ イル時の各パッケージのインストールでは、全パッケージに同じ名前を使わな ければいけません。また、他の名前、例えば mips-sni-linux や mipsel-sni- linux も正しい設定名ですが、mips-linux と mipsel-linux のほうを使って ください。これらの名前は Linux カーネルソースなどの他のパッケージでも 使っていますので、上記の二つ以外のものを使うとクロスコンパイル時に変更 を行う必要が出てきます。 以下ではターゲットの設定に使う名前は と呼びます。 10.5.7. GNU Binutils のインストール ここは最初の、最もやさしい部分です (少なくとも多少は真っ当な UNIX 系の OS 上でインストールしようとしている場合には、ですが)。十分な空き容量の あるディレクトリに cd して、次の処理を行ってください。 gzip -cd binutils-.tar.gz | tar xf - cd binutils- patch -p1 < ../binutils--mips.patch ./configure --prefix= --target= make CFLAGS=-O2 make install これで通常は正しく動作します。但し、GCC 2.7.x をコンパイラに使っている 一部のマシンではコアダンプすることが知られています。これは GCC の既知 のバグで、ホストマシンのコンパイラを GCC 2.13.2.1 以降のものにすること で修正できます。 10.5.8. assert.hについて 一部の人たちの環境には古い assert.h ヘッダファイルがインストールされて います。これはおそらく古いクロスコンパイル環境の残骸だと思いますが、こ のファイルが残っていると autoconf はなにも言わずに失敗します。 assert.h が必要になることはありません。これは昔の版の GCC のバグのせい でインストールされたものの残骸です。 //include/assert.h があなたのインストール環境に無いこ とを確認してください。あった場合は、単に消してください。これはどの版の クロスコンパイル環境でもインストールされるべきでは決してありませんし、 トラブルの元にもなります。 10.5.9. カーネルソースのインストール カーネルソースのインストールは簡単です。単にお好みのどこかのディレクト リに置き、設定するだけです。設定は必ず行ってください。というのは、その 過程で作成されるファイルが、インストールされるからです。設定の最後のほ うで CONFIG_CROSSCOMPILE を有効にすることを忘れないでください。引っか かる可能性のある問題は、場合によると bash のような GNU プログラムのイ ンストールが必要になるかもしれないこと、また PATH 環境変数を直して、ベ ンダの提供したものではなく GNU 版のプログラムが先に呼ばれるようにしな ければならないかもしれない、という二点だけです。インストール後に、直接 //include に行って二個のシンボリックリンク、asm と linux を include/asm と include/linux を指すように作成してください。こ の作業は、次のステップ中に必要なヘッダファイルが見つかるようにするため に、やっておかなければなりません。 10.5.10. egcs の最初のインストール さて、ここからが難所になります。いわゆるブートストラップ (ニワトリと 卵) 問題のためです。今回の場合、egcs のインストールには glibc があらか じめインストールされている必要がありますが、まだ動作するクロスコンパイ ラができていないので glibc のコンパイルができないのです。ありがたいこ とに、これを突破する必要があるのは、クロスコンパイラを作る最初の一回だ けです。この後 glibc をインストールし終えたら、物事はずっとスムーズに 行きます。では、行きましょう。 gzip -cd egcs-1.1.2.tar.gz | tar xf - cd egcs- patch -p1 < ../egcs-1.1.2-mips.patch ./configure --prefix= --with-newlib --target= make SUBDIRS="libiberty texinfo gcc" ALL_TARGET_MODULES= \ CONFIGURE_TARGET_MODULES= INSTALL_TARGET_MODULES= LANGUAGES="c" 慎重に、gcov、protoize、unprotoize とライブラリは作らないように進めま す。 gcov はクロスコンパイラ環境では意味をなしませんし、protoize と unprotoize は gcc の makefile のバグのため、既存の自マシン用のプログラ ムを上書きしてしまうかもしれません。最後に、ライブラリは glibc がまだ インストールされていないため、作成できません。すべてうまくいったら、次 のようにインストールしてください。 make SUBDIRS="libiberty texinfo gcc" INSTALL_TARGET_MODULES= \ LANGUAGES="c" install カーネルを作成するためのクロスコンパイラがほしいだけなら、ここで終了で す。 libc のクロスコンパイルは、ユーザアプリケーションをクロスコンパイ ル場合にのみ必要になります。 10.5.11. ここまでやってきたことのテスト ここまでやってきたことが実際正しく動作するかを確認するには、この時点で カーネルをコンパイルしてみればよいでしょう。 MIPS カーネルソースのディ レクトリに cd して、`make clean; make dep; make'' と打ってみてくださ い。すべて問題なければ、``make clean'' を行って、再度ソースをきれいに しておいてください。 10.5.12. GNU libc のインストール 注意:glibc 2.0.6 を egcs 1.0.3a より新しいコンパイラでコンパイルする のはお薦めできません。一部のプログラムが、バイナリの互換性問題にあたっ てしまうかもしれませんので。egcs 1.0.3a を使うか、公開されているバイナ リパッケージを使うことを勧めます。また、GNU libc をクロスコンパイルす るのは常に次善の方法です、というのはクロスコンパイル時にはコンパイルさ れない部分があるからです。適切なやり方が見つかって安定性が確認されしだ い、ここでそのやり方を文書化したいと思います。それでは、注意が済みまし たので、レシピを。 gzip -cd glibc-2.0.6.tar.gz | tar xf - cd glibc-2.0.6 gzip -cd glibc-crypt-2.0.6.tar.gz | tar xf - gzip -cd glibc-localedata-2.0.6.tar.gz | tar xf - gzip -cd glibc-linuxthreads-2.0.6.tar.gz | tar xf - patch -p1 < ../glibc-2.0.6-mips.patch mkdir build cd build CC=-gcc BUILD_CC=gcc AR=-ar RANLIB=-ranlib \ ../configure --prefix=/usr --host= \ --enable-add-ons=crypt,linuxthreads,localedata --enable-profile make これでコンパイル済みの GNU libc ができましたが、まだインストールする必 要があります。ここで単に make install と 打ってはいけません。これをや るとホストマシンのシステムファイルが Linux/MIPS 向けのファイルに置き換 わって、破壊的な結果になります。そうではなく、GNU libc をどこか他のど こかのディレクトリ に一旦インストールして、そこからクロスコ ンパイルに必要になる部品を実際のターゲットディレクトリに移動します。 make install_root= install ここで、 に cd して、最後に GNU libc を手動でインストールしま す。 cd usr/include find . -print | cpio -pumd //include cd ../../lib find . -print | cpio -pumd //lib cd ../usr/lib find . -print | cpio -pumd //lib GNU libc には詳しいオンラインドキュメントが含まれています。あなたのシ ステムには既にこのドキュメントのどれかの版が含まれているでしょうから、 もし info ページをインストールしたくない場合 (1MB 弱節約できます) や、 既にインストールされている場合には、次の手順を飛ばしてください。 cd ../info gzip -9 *.info* find . -name \*.info\* -print | cpio -pumd /info ブートストラップしない人は、ここでインストールはおしまいです。 10.5.13. egcs の再作成 最初の egcs の作成は GNU libc が無いため途中で止まっていました。今は libc もインストールしてあるので、ここで egcs の再作成を行えます。今回 はクロスコンパイラとして完全なインストールができます。 gzip -cd egcs-.tar.gz | tar xf - cd egcs- patch -p1 < ../egcs-1.1.2-mips.patch ./configure --prefix= --target= make LANGUAGES="c c++ objective-c f77" 見たとおり、手順は最初の時と殆ど同じですが、今回は --with-newlib オプ ションは省略します。このオプションは libgcc のビルドが libc が無いこと で落ちるのを防ぐために必要でした。インストールは次のようにします。 make LANGUAGES="c c++ objective-c f77" install さて、殆ど完了です。もし Objective C や F77 コンパイラが不要なら、上記 のコマンドから省くことができます。各々 3MB 位の節約になりま す。gcov、protoize と unprotoize は作成しないでください。 10.5.14. C++、Objective C や F77 コンパイラを作成すべきでしょうか? この答えは、クロスコンパイラ環境の目的に大きく依存します。もしあなたが Linux カーネルを再作成することだけを考えているなら、何もかものセット アップを進める必要はなく、Objective C と F77 コンパイラは省いても問題 ないでしょう。但し、C++ コンパイラを作成する必要はあります。これは egcs ディストリビューションに含まれるライブラリを作成するには C++ が必 要なためです。 10.5.15. クロスコンパイルでの既知の問題 10.5.15.1. IRIX がクラッシュする Origin 200 で IRIX 6.5.1 を走らせている場合、Linux カーネルソースから ``make depend'' を実行するとクラッシュすることがあります。 Indy 上の IRIX 6.5 と Origin 200 の IRIX 6.5.4 は動くことが分かっています。 10.5.15.2. System V 系のホストでのリソース制限 System V 系の Unix システム、例えば IRIX や Solaris には子プロセスに渡 せる引数の個数に制限があり、この制限を Linux カーネルや GNU libc のク ロスコンパイル時に超えてしまうことがあります。 IRIX システムでは引数の リストの最大長の既定値は 20KB ですが、Linux では少なくとも 128KB はあ ります。このサイズは root から `systune ncargs 131072'' コマンドを使っ て変更できます。 10.5.16. GDB GDB をクロスデバッガとして作成することに興味を持つのは、カーネル開発者 だけでしょう。カーネル開発者にとっては、GDB は命綱かもしれません。この ようなリモートデバッグの設定はいつも二つの部分、あるマシン上で動く GDB リモートデバッガと、デバッグ対象の Linux/MIPS カーネルの動くターゲット マシン、からなります。この二台のマシン間は通常シリアルラインで接続され ています。ターゲットマシンのカーネルには『デバッグ用プラグ』を備えてお き、リモートシリアルプロトコルを用いる GDB ホストマシンと通信できるよ うにしておく必要があります。 ターゲットのアーキテクチャに依存しますが、おそらく『デバッグ用プラグ』 は自分で作り込む必要があります。だいたいの場合は、シリアルライン用のと ても簡単なルーチンを作る必要があるだけです。この作業は、殆どのマシンが 通常 8250 や 16450 相当品を用いたよく似たシリアルハードウェアを用いて いるため、とても簡単なものです。 【訳注: 8250 と 16450 は殆ど同じ。16550A はソフトウェア上位互換で、最 近の PC-AT用のシリアルとして使われているものです。】 10.6. カーネルのコンパイル 10.6.1. プロセッサタイプを選択する 10.6.1.1. R2000, R3000 ファミリ これらのプロセッサでは、単に R3000 オプションを選択してください。この オプションで作成されたカーネルは R2000 と R3000 ファミリのプロセッサ以 外では走りません。 10.6.1.2. R4000, R5000 ファミリ Nevada ファミリを除いては、これらのプロセッサはカーネルの観点からはす べて互換です。最良の性能が得られるオプションを選択してください。 10.6.1.3. R6000 Linux は現在 R6000 をサポートしていないので、以下は完全に理論上のみの 話です。 R6000 のキャッシュと MMU アーキテクチャは、変とは言わないまで も独特で、とても扱いにくいため多量の対処作業が必要になります。このため R6000 カーネルは他のプロセッサでは動かないでしょうし、他のプロセッサ用 のカーネルも R6000 では動かないでしょう。 10.6.1.4. Nevada Nevada の愛称は、QED (現PMC Sierra) 社の RM5230, 5231, R5260, R5261, R5270 ファミリプロセッサに付けられたものです。このオプションでは、他の プロセッサではサポートされていない追加命令が有効にされるため、このオプ ションを選択していいのは、本当にこの一群のプロセッサのどれかを使ってい るときのみです。自信がなければ、 R4x00 か R5000 (``上記参照'') を使え ば、Nevada ファミリのプロセッサでも動作するカーネルができますが、一部 のプロセッサ固有の最適化は行われません。 10.6.1.5. SB1 Sibyte SB1 プロセッサの時のみこのオプションを選択してください。このプ ロセッサ向けに作成されたカーネルは他のプロセッサでは動きませんし、逆も また真です。 【訳注: SB1 はコア名で、このコアを採用しているのは Broadcom BCM1250, BCM1125 などです。Sibyte は Broadcom に買収されていますが、Sibyte の名 称はまだ残しています。】 10.6.1.6. R10000 R10000, R12000 または R14000 システムで Linux を実行する場合にはこれを 選んでください。このオプションを付けて作られたカーネルは R4000 や R5000 ファミリプロセッサでは動作しません。 10.6.1.7. MIPS32 MIPS32 ファミリメンバで Linux を走らせる場合、これを指定してください。 10.6.2. オプションの互換性 カーネル設定手順は、誤った設定が不可能になるような強過ぎる制約を入れて はいません。例えば SGI Indy ではフレームバッファは使えませんが、有効に することはできますし、その結果後でコンパイルエラーになります。この状況 は将来 CML2 が標準のカーネル設定言語になれば改善されるでしょうが、2.2 と 2.4 カーネルでは、自分で足下に気を付ける必要があります。 10.6.3. クロスコンパイル カーネルは非 MIPS システム上でのクロスコンパイル作成が可能となるよう に、注意深く開発されています。一旦クロスコンパイラの設定という崖を登っ てしまいさえすれば、クロスコンパイルは容易です。これを行うためには、二 つの選択枝があります。最初のものは、 CROSS_COMPILE=- (最後の ダッシュに注意) の後に mips-linux, mipsel-linux, mips64-linux, mips64el-linux のいずれかを続けたものを、make を起動する際の追加引数と して渡す方法です。このうちのどれにするかは、ターゲットマシンがビッグエ ンディアンかリトルエンディアンか、32-bit か 64-bit か、によります。 もう一つの、多分より易しいやり方は、CONFIG_CROSSCOMPILE 設定オプション を与える方法です。カーネルはそれにより、CROSS_COMPILE に正しい値を自動 的に設定しますので、コマンド行が少し簡単になります。 10.6.4. 32-bit vs. 64-bit 標準では Linux/MIPS カーネルソースツリーは 32-bit ターゲットを作成する ようになっています。もし、64-bit の 2.4.x カーネルをビルドしたい場合 は、make が呼び出されるすべての箇所で ARCH=mips64 の追加引数を渡してや る必要があります。2.6.x ではこれは通常の設定オプションになっています。 11. 解説書 11.1. この情報を一つの文書として手に入れるには この文書は様々なフォーマットでダウンロード可能です。 o The HTML version o The text version o The Postscript version o The Linux-Doc SGML version. この FAQ は SGML ソースコードとして ftp.linux-mips.org から anonymous CVS で得ることもできます。アーカイブ中には、入手した SGML 文書を様々な形式に変換するための Makefile を同梱しています。 ASCII 版は定期的に comp.os.linux.answers ニュースグループなどの様々な Linux 情報源に投稿されています。 この文書の変更は、SGML 版に関する unified diff として Ralf Baechle (ralf@gnu.org) へ送ってください。他の形では送らないでください。メンテ ナンスが大変になりますので。 11.2. See MIPS Run 著者: Dominic Sweetman, 版元: Morgan Kaufmann, ISBN 1-55860-410-3 この本は MIPS プログラミングのかなりわかりやすいガイドを目指したもの で、特に他の 32-bit CPU と異なる点が詳細に書かれています。これは入手で きる広い範囲の MIPS CPU について読みやすい、包括的な説明が書かれた最初 の本です。この本は他のオペレーティングシステムのことを知らなくはないよ うな MIPS プログラマに大いに助けになるはずです。また、この本の著者は free-unix の信奉者で Linux/MIPS メーリングリストに参加しています。 MIPS アーキテクチャの父、John Hennessey はこの本に次の序文を寄せていま す: 「この本は MIPS アーキテクチャについて書かれた本の中で、内容の完璧 さと読みやすさにおいて最高のものです。」 この本は RISC CPU に関する多少の説明と MIPS アーキテクチャと命令セット の詳細な説明 (CPU 制御のための co-processor 0 命令、キャッシュの章、例 外、メモリ管理及び浮動小数点) を含みます。また詳しいアセンブラ言語のガ イド、移植性に関するいくつかの注意点、そしてかなり詳しいソフトウェアの 例も書かれています。 次の各サイトと o Morgan Kaufmann (US) o Amazon USA o Amazon UK 大きな書店で入手できます。512 ページで、US では約 $50、英国では 34 ポンドです。更に二冊の本も挙げておきたいと思います。どちらも Morgan Kaufmann 社からで、www.mkp.com や大きな書店で入手できると思います。 11.3. The MIPS Programmer's Handbook 著者: Farquhar and Bunce, 版元: Morgan Kaufmann, ISBN 1-55860-297-6. PMON の作者による、低レベルの MIPS プログラミングを試みる際の読みやす い入門書です。長所:例が豊富です。短所:アーキテクチャの大きな項目がい くつか抜けています (例えば、メモリ管理、浮動小数点や高度なキャッシュ管 理など)。これは、この本が対象としている組込用製品では使われない機能で あるためです。 11.4. Computer Architecture - A Quantitative Approach 著者: Hennessy & Patterson, 版元: Morgan Kaufmann, ISBN 1-55860-329-8. 【和訳:コンピュ−タ・ア−キテクチャ〜設計・実現・評価の定量的アプロー チ〜ヘネシー&パターソン著、富田眞冶、村上和彰 訳 B5判、800ページ、価 格(本体11,650円+税)ISBN 4-8222-7152-8 日経BP社。訳は第一版のもので す】 現在のコンピュータアーキテクチャの基本中の基本の教科書で、プログラムが なぜ早かったり遅かったりするのかを知りたいなら必読です。この本が MIPS についてかどうかですが、とても MIPS に 似た アーキテクチャを例にしてい ます。この本の唯一の欠点はその大きさと重さです - 但し、重い本の通弊を もたず、この本はどのページにも価値があります。 11.5. MIPS ABI 解説書 で入手できる文書に は、MIPS 固有の技術標準、例えば関数呼び出し手順や、ELF の形式など、N32 標準を含む Linux/MIPS で使っている標準を多数規定されています。 11.6. mips.com サイト 以下に各プロセッサの概説やデータ シートが PDF 形式で置かれています。 11.7. NEC サイト NEC Electronics ( ) には NEC 製の VR41xx プロ セッサに関するマニュアルが一式そろっています。 【訳注:www.nec.co.jp にも多数置かれています。日本語のものは物によって は NEC に問い合わせる要あり。】 11.8. techpubs.sgi.com SGI 中心ですが、 にある ABI 関連の多数の文書 は Linux/MIPS にも適用されるものです。 12. 法的事項 12.1. Copyright (著作権表記) Except where otherwise specified, the information in this documentation or website is copyright (c) 1998,1999,2000,2001,2002 Ralf Baechle. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1 or any later version published by the Free Software Foundation; with the Invariant Sections being Copyright, with no Front-Cover Texts and with no Back-Cover Texts. A copy of the GNU Free Documentation License is available on the World Wide Web at You can also obtain it by writing to the Free Software Foundation, Inc. 59 Temple Place - Suite 330 Boston, MA 02111-1307 USA 12.2. 翻訳部の編集著作権 Translation Copyright (C) 2001,2002 Seiji Kaneko 翻訳配布条件は、原著作物の配布条件と同じとします。 12.3. Software Use (ソフトウェアの利用) Any software contained in or linked to by this documentation (the "Software") is copyrighted work. To use the Software you must comply with the terms of the Software's license agreement. SOFTWARE IS WARRANTED, IF AT ALL, IN ACCORDANCE WITH THE TERMS OF THE LICENSE AGREEMENT. EXCEPT AS SET FORTH IN THE LICENSE AGREEMENT, ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, OR NON-INFRINGEMENT, ARE DISCLAIMED, EXCEPT TO THE EXTENT THAT SUCH DISCLAIMERS ARE HELD TO BE LEGALLY INVALID. 12.4. ウェブサイトへのリンク This documentation may contain links to websites which are not under our control. We are not responsible for the content of those sites. The links are available only as a convenience, and the inclusion of any link to such sites does not imply endorsement of those sites. この文書には、私たちの管理下にはないウェブサイトへのリンクが含まれてい ます。私たちは、これらのサイトの内容に対して責任を負いません。これらの リンクは、便宜のため記述されているものであり、リンクを収録したことには それらのサイトを推奨するという意図はありません。 12.5. 商標など Linux is a Registered Trademark of Linus Torvalds. MIPS is a Registered Trademark of MIPS Technologies, Inc. Linux は Linus Torvalds の持つ登録商標です。MIPS は MIPS Technologies 社の登録商標です。本文書に記載された会社名及び製品名は、一般に各社の商 標または登録商標です。 12.6. Disclaimer (免責) Note that, as provided in the License, the software on this website is distributed on an "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. 12.7. Limitation of liability (責任の制限) THE AUTHORS OF THIS WEB SITE SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED AS A RESULT OF USING, MODIFYING, CONTRIBUTING, COPYING, DISTRIBUTING, OR DOWNLOADING THE MATERIALS ON THIS WEBSITE. IN NO EVENT SHALL WE BE LIABLE FOR ANY INDIRECT, PUNITIVE, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGE (INCLUDING LOSS OF BUSINESS, REVENUE, PROFITS, USE, DATA OR OTHER ECONOMIC ADVANTAGE) HOWEVER IT ARISES, WHETHER FOR BREACH OR IN TORT, EVEN IF WE HAVE BEEN PREVIOUSLY ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. YOU HAVE SOLE RESPONSIBILITY FOR ADEQUATE PROTECTION AND BACKUP OF DATA AND/OR EQUIPMENT USED IN CONNECTION WITH THE WEBSITE AND WILL NOT MAKE A CLAIM AGAINST THIS WEB SITE OR ITS AUTHORS FOR LOST DATA, RE- RUN TIME, INACCURATE OUTPUT, WORK DELAYS OR LOST PROFITS RESULTING FROM THE USE OF THE MATERIALS. YOU AGREE TO HOLD US HARMLESS FROM, AND YOU COVENANT NOT TO SUE US FOR, ANY CLAIMS BASED ON USING THE WEBSITE. 13. 日本語訳について 誤字・脱字・誤訳等なにかありましたら までお知らせくだ さい。 翻訳: o かねこ 校正: o 岡本さん o 中野さん o 境さん