Development for Multiple Linux Distributions mini-HOWTO Ed Hill 山口つかさ - 日本語訳 PDC01212@nifty.com 2001-03-01 Revision History Revision 0.9.1 2002-08-14 Revised by: EH3 Small update for using X11 (sockets). Revision 0.9 2001-12-03 Revised by: EH3 Initial version. この文書では複数のディストリビューション向けにユーザースペースプログラ ムの開発とテストを行うときに役立つ手軽な方法について概略を示します。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Table of Contents 1. 始めに 1.1. 著作権及び使用許諾 2. セットアップ 3. 「セカンダリ」ディストリビューションの利用 4. クレジット 5. 日本語訳について 1. 始めに プログラム開発をしていると複数の Linux ディストリビューション向けにプロ グラムの作成やテストをする羽目に陥ることもあるでしょう。この mini-howto で概説する方法を使えば、巧妙な chroot トリックを使うことにより、テスト や開発を複数の Linux ディストリビューションで行う度に再起動するのをほぼ 避けられます。 簡単に言えば、「トリック」のネタは、ある Linux ディストリビューション固 有のファイルを一個のディレクトリ内に収めて、プログラムの開発・テスト・ デバッグに際しては chroot でそのディレクトリをルートに設定する点にあり ます。この方法を実現するには以下の条件があります― 1. 使用する「メイン」あるいは「プライマリ」のディストリビューションの カーネルが「セカンダリ」または chroot されるディストリビューション と(最低限何らかの)互換性があること、及び 2. 対象のアプリケーションが本来ユーザースペースのものであり(カーネルモ ジュールなどではなく)、特定のカーネルの機能に強く依存したりしていな いこと(例えば /proc の振る舞いに依存しない) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.1. 著作権及び使用許諾 This document is copyright 2001 by Ed Hill III. 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 no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is available at http://www.gnu.org/copyleft/fdl.html. ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 2. セットアップ 以下に挙げるものを前提としています― 1. 2.4 系以降のカーネルを使用する「メイン」または「プライマリ」の Linux ディストリビューションがインストール済み 2. 2 〜 4 GByte の空きパーティションが利用可能 3. 「セカンダリ」のディストリビューションのインストール(それに続けて行 う開発・テスト作業)に十分な空きスペース 上述の条件を満たした上で、以下の手順により「セカンダリ」の Linux ディス トリビューションをセットアップし、開発・テストなどの目的に利用します― 1. 始めに、十分な空き容量 (通常 2 〜 4 GByte) のあるハードディスクに未 使用のパーティションを作成し、「セカンダリ」のディストリビューショ ンを通常通りインストールするのに使います。 2. 「セカンダリ」のディストリビューションを、作成したパーティションに インストールしますが、起動用の設定項目に追加はしません。ここでは開 発対象(テスト対象)のアプリケーションに必要なパッケージだけをインス トールする点に注意してください。例えば X サーバーなどの場所食い虫を 入れることはならないでしょう。 3. 「プライマリ」の Linux ディストリビューションを再起動して、次に新し くインストールした「セカンダリ」のディストリビューションが入ったパ ーティションをマウントします。「セカンダリ」ディストリビューション の全ファイルを /opt/distros/DISTRO_NAME 等の場所にコピーします(許 可属性の保持が可能な tar -cp などの方法が好ましい)。 4. 2 〜 3 の手順を繰り返して必要なディストリビューションをインストール します。その結果、下に示すようなディレクトリ構造になるはずです― /opt/distros/redhat_6.2/ suse_7.2/ mandrake_8.1/ debian-potato/ slackware_8.0/ 各々のディストリビューションをインストールした際に作成されたファイ ルは全て各ディレクトリ下にあります。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 3. 「セカンダリ」ディストリビューションの利用 「セカンダリ」ディストリビューションのインストール後は次の手順で利用で きるようにします― 1. ここで重要なのは「プライマリ」Linux ディストリビューションには 2.4 系以降のカーネルを用いることで、その結果 2.4 系が備えるマルチマウン トポイント機能が使えます。多くの作業では、以下に示す方法で /proc と /tmp ファイルシステムを「セカンダリ」ディストリビューションに再マウ ントする必要があるでしょう― mount --bind /proc /opt/distros/redhat_6.2/proc mount --bind /tmp /opt/distros/redhat_6.2/tmp 2. また、「プライマリ」ディストリビューションのソースツリーは「セカン ダリ」ディストリビューションに再マウントする方が ( コピーするよりは ) 有益です― mount --bind /home/USER/src/PROJECT /opt/distros/redhat_6.2/USER/src/PROJECT 3. root になって次のコマンドを使います― xhost +localhost chroot /opt/distros/redhat_6.2 /bin/bash これで「セカンダリ」ディストリビューションのシェルを使えるようにな ります。X Window Systemのアプリケーションを使おうとしている場合にの み xhost コマンドが必須な点に注意してください。 4. 最後に、(必要に応じて) chroot したシェル上でユーザーを作成し、この 「独立した」Linuxディストリビューションで開発、ビルド、テストを行っ てください。X 用アプリケーションを使う場合は、忘れずにDISPLAY 関連 の変数を指定してください。 でき上がり!これで任意の「セカンダリ」ディストリビューションで好きなよ うにシェルが使えるようになりました。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 4. クレジット この文書のアイデアは私が考え出したものではありません。( OpenNMS の) Ben Reed 氏が TriLUG の メーリングリストに投稿したものです。私にはとても有用に思われたので文書 化して多くの人に知らせることにしました。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 5. 日本語訳について 翻訳にあたって適切な助言を頂いた JF メーリングリストの小林雅典さん、 IKEDA Katsumi さんに感謝します。ありがとうございました。