66
Gentoo Linux AMD64 ハンドブック Sven Vermeulen Author Roy Marples Author Daniel Robbins Author Chris Houser Author Jerry Alexandratos Author Seemant Kulleen Gentoo x86 Developer Tavis Ormandy Gentoo Alpha Developer Jason Huebel Gentoo AMD64 Developer Guy Martin Gentoo HPPA developer Pieter Van den Abeele Gentoo PPC developer Joe Kallar Gentoo SPARC developer John P. Davis Editor PierreHenri Jondot Editor Eric Stockbridge Editor Rajiv Manglani Editor Jungmin Seo Editor Stoyan Zhekov Editor Jared Hudson Editor Colin Morey Editor Jorge Paulo Editor Carl Anderson Editor Jon Portnoy Editor Zack Gilburd Editor Jack Morgan Editor Benny Chuang Editor Erwin Editor Joshua Kinard Editor Tobias Scherbaum Editor Xavier Neys Editor Grant Goodyear Reviewer Gerald J. Normandin Jr. Reviewer Donnie Berkholz Reviewer Ken Nowack Reviewer Lars Weiler Contributor おぎうち やすお 翻訳 わただ ゆうすけ 翻訳 せーいち 翻訳 五十嵐 正尚 翻訳 武田 洋之 翻訳 村上 誠 翻訳 小林 弘樹 翻訳 真藤 直観 翻訳 萩原 佳明 翻訳 松葉 翻訳 藤中 正次 翻訳 池田 健吾 翻訳 中野 正智 翻訳 飴谷 茂寛 翻訳 村上 卓 翻訳 田中 裕也 翻訳 増田 昌也 翻訳 更新日 2011813このドキュメントのオリジナルバージョン の更新日は2011109目次: Gentooをインストールする ここではGentooをシステムにインストールする方法を説明します。 1. Gentoo Linuxのインストールについて ここではGentooをシステムにインストールする方法を説明します。 2. 適切なインストールメディアの選択 いろいろな方法でGentooをインストールできます。Universal インストールCDは同様にインストールに使用できますが、この章ではminimal インストールCDを使ってGentooをインストールする方法を説明します。 3. ネットワーク設定 最新のソースコードをダウンロードするために、 ネットワークの設定をする必要があります。 4. ディスクの準備 Gentooをインストールするには、そのために必要なパーティションを作成する必要があります。 この章では、後で必要となるパーティション を作成する方法を説明します。 5. Gentooインストールファイルをインストールする Gentooのインストールは、stage3アーカイブファイルを使って行います。 この章では、stage3ファイルの解凍方法とPortageの設定を説明し ます。 6. Gentooベースシステムのインストール stage3のインストールと設定の後、最後には望みどおりのGentooベースシステムが手に入ります。 この章では、Gentooベースシステムを手

Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

Embed Size (px)

DESCRIPTION

gentoo linux ドキュメント

Citation preview

Page 1: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

Gentoo Linux AMD64 ハンドブックSven Vermeulen AuthorRoy Marples AuthorDaniel Robbins AuthorChris Houser AuthorJerry Alexandratos AuthorSeemant Kulleen Gentoo x86 DeveloperTavis Ormandy Gentoo Alpha DeveloperJason Huebel Gentoo AMD64 DeveloperGuy Martin Gentoo HPPA developerPieter Van den Abeele Gentoo PPC developerJoe Kallar Gentoo SPARC developerJohn P. Davis EditorPierre­Henri Jondot EditorEric Stockbridge EditorRajiv Manglani EditorJungmin Seo EditorStoyan Zhekov EditorJared Hudson EditorColin Morey EditorJorge Paulo EditorCarl Anderson EditorJon Portnoy EditorZack Gilburd EditorJack Morgan EditorBenny Chuang EditorErwin EditorJoshua Kinard EditorTobias Scherbaum EditorXavier Neys EditorGrant Goodyear ReviewerGerald J. Normandin Jr. ReviewerDonnie Berkholz ReviewerKen Nowack ReviewerLars Weiler Contributorおぎうち やすお 翻訳わただ ゆうすけ 翻訳せーいち 翻訳五十嵐 正尚 翻訳武田 洋之 翻訳村上 誠 翻訳小林 弘樹 翻訳真藤 直観 翻訳萩原 佳明 翻訳松葉 翻訳藤中 正次 翻訳池田 健吾 翻訳中野 正智 翻訳飴谷 茂寛 翻訳村上 卓 翻訳田中 裕也 翻訳増田 昌也 翻訳

更新日 2011年 8月 13日 このドキュメントのオリジナルバージョン の更新日は2011年 10月 9日

目次:

GentooをインストールするここではGentooをシステムにインストールする方法を説明します。

1. Gentoo LinuxのインストールについてここではGentooをシステムにインストールする方法を説明します。

2. 適切なインストールメディアの選択いろいろな方法でGentooをインストールできます。Universal インストールCDは同様にインストールに使用できますが、この章ではminimalインストールCDを使ってGentooをインストールする方法を説明します。

3. ネットワーク設定最新のソースコードをダウンロードするために、 ネットワークの設定をする必要があります。

4. ディスクの準備Gentooをインストールするには、そのために必要なパーティションを作成する必要があります。 この章では、後で必要となるパーティションを作成する方法を説明します。

5. GentooインストールファイルをインストールするGentooのインストールは、stage3アーカイブファイルを使って行います。 この章では、stage3ファイルの解凍方法とPortageの設定を説明します。

6. Gentooベースシステムのインストール

stage3のインストールと設定の後、最後には望みどおりのGentooベースシステムが手に入ります。 この章では、Gentooベースシステムを手

Page 2: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

stage3のインストールと設定の後、最後には望みどおりのGentooベースシステムが手に入ります。 この章では、Gentooベースシステムを手に入れるまでの方法を説明します。

7. カーネル設定全ディストリビューションの構成の核をなすのは、Linuxカーネルです。 この章では、カーネルの設定方法について説明します。

8. システム設定いくつかの重要な設定ファイルを編集しなければなりません。 この章では、これらの重要なファイルの概要や、どのように設定を進めていくかがわかります。

9. 必要なシステムツールをインストールする以前に説明したとおり、選択できることこそがGentooです。 この章では、いくつかの重要なツールをどのように選択し、インストールするかを説明します。

10. ブートローダを設定するこの章では、GRUBブートローダの説明とあなたの要求に合わせたGRUBブートローダ設定 方法を順を追って説明します。

11. Gentooインストールの締めくくりこれでほぼ完了です。一つ(または複数)のユーザを作成しましょう。

12. これからどうすればいいの?Gentooシステムは完成しましたが、次は何をすればいいのでしょう?

Gentooを使いこなすGentooの使いこなし方を説明します。主にソフトウェアのインストール、変数の変更、 Portageの動作に関する変更などです。

1. Portageについてこの章では、システム上のソフトウェアを整備するために絶対に知っておかなければならないことを、"簡単な"手順で説明します。

2. USEフラグUSEフラグは、Gentooにおいて大変重要な概念です。この章ではUSEフラグをどのように使うか、 USEフラグがシステムにどういう影響を及ぼすかについて説明します。

3. Portageの機能分散コンパイルやccacheを使用したコンパイルのサポートなど、Portageが備える隠れた機能を発見するでしょう。

4. initスクリプトGentooは特有のinitスクリプトを採用しています。それは、数ある機能の中でも特に、 依存関係による判定や仮想initスクリプトを可能にします。この章では、これら全ての特徴や、 スクリプトの扱い方について説明します。

5. 環境変数Gentooでは、システムの環境変数を簡単に管理することができます。 この章では、環境変数の管理の仕方や、よく使われる環境変数について説明します。

Portageを使いこなす"Portageを使いこなす"では、Gentooのソフトウェア管理ツールとしてのPortageに徹底的に踏み込んだ内容を扱います。

1. ファイルとディレクトリPortageを詳細に知りたいならば、そのファイルとデータがどこに保存されているか知らなければなりません。

2. 変数による設定Portageは、設定ファイルや環境変数で設定したさまざまな変数を通して完全に調整可能です。

3. ソフトウェアのブランチを併用するGentooは、安定性や、アーキテクチャごとのサポート状況といった情報を元に、 ソフトウェアを複数のブランチに分けて提供しています。"ソフトウェアのブランチを併用する"では、このブランチはどう設定できるのか、 また個々の設定をどうやってユーザーが上書きするかについて説明します。

4. 追加のPortageツールPortageには、Gentoo環境をより良くする拡張ツールがいくつか付属しています。 dispatch­confやその他のツールを使う方法を理解するために読んでください。

5. オフィシャルツリーの活用"オフィシャルツリーの活用"では、Portageツリーの使い方におけるいくつかの便利な小技や、必要なカテゴリだけをシンクロさせる方法、パッケージを挿入する方法など、を伝授します。

6. ebuildアプリケーション"ebuildアプリケーション"では、Portageがソフトウェアをインストールする行程を説明し、 あなた自身でebuildアプリケーションを使用して同じことをする方法を説明します。

Gentooネットワーク設定Gentooにおけるネットワークの総合手引き書です。

1. はじめに最も一般的な環境でネットワークに素早く接続し、稼働させるためのガイドです。

2. 高度な設定ここではどのように設定するかを学びます。個別のネットワークより先に学ぶ必要があります。

3. 個別ネットワークGentooは柔軟なネットワーク構成を提供しています。ここでは異なるDHCPクライアントの選び方や関連づけ、ブリッジ、VLANなどのセットアップについてお話しします。

4. 無線ネットワーク無線設定は簡単ではありません。この説明で無事に動きますように。

5. 機能の追加冒険してみたいなら、ネットワークに機能追加することで味わえます。

6. ネットワーク管理ノートPCユーザや異なるネットワークにコンピュータを接続する人向けのお話です。

A. Gentooをインストールする

1. Gentoo Linuxのインストールについて

1.a. はじめに

Page 3: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

1.a. はじめに

ようこそ!

Gentooへようこそ。あなたは選択の自由とパフォーマンスの追求を 許された世界に足を踏み入れようとしています。Gentooとは選択です。 Gentooをインストールするとき、あなたはこの事実に何度か向き合うことになります。 どのくらい自分でコンパイルするのか、どのようにGentooをインストールするのか、 どのシステムロガーを使うのか、といったことをあなたが自分で決めるのです。

Gentooはシンプル、かつフレキシブルにデザインされた、 速くて先進的なメタディストリビューションです。 Gentooはディストリビューションとしてフリーソフトウェア (訳註: フリーではないものもあります)の上に覆い被さっていますが、 それをユーザーから覆い隠すようなことはしません。 Portage、これはGentooの使うパッケージ管理システムですが、 誰もが簡単にソースコードを見たり変更したりできるように、 Pythonで書かれています。 Gentooのパッケージングシステムはソースコードを使いますし (とはいえ、コンパイル済みパッケージのサポートもあります)、 Gentooの設定も通常のテキストファイルを通して行なわれます。 一言でいえば「Openness Everywhere」です。

選択がGentooを動かすのであって、Gentooが選択させるのではない、 ということを理解する事はとても重要です。 私たちは、あなたにあなたの望まないことを強いることのないよう、 十分気を付けています。もし、私たちがそうしていると感じたら、それをバグ報告してください。

インストールの流れはどんな感じ?

Gentooのインストールは、2章から11章に対応した、 10段階の手順に分けることができます。 それぞれの段階を終えたときの状態は、以下の通りです。

1段階終了、Gentooをインストールするための作業環境の構築が完了2段階終了、Gentooをインストールするためのインターネット接続の準備が完了3段階終了、ハードディスクにGentooをインストールする準備が完了4段階終了、インストール環境の準備が完了、インストールする環境にchroot

5段階終了、コアパッケージ(全てのGentooインストールで共通)のインストールが完了6段階終了、Linuxカーネルのコンパイルが完了7段階終了、Gentooシステムの主要な設定ファイルの編集が完了8段階終了、必要なシステムツール(推奨リストから選択可)のインストールが完了9段階終了、選択したブートローダーのインストールと設定が完了、 新しいGentooシステムにログイン10段階終了、Gentoo Linux環境を探検する準備が完了

選択肢を提示するときには、 それぞれの良い点と悪い点について説明するようにしています。 そのあとで、タイトルに"一般的な選択:"と明記された、 一般的な選択肢を提示します。 その他の選択肢には"もう一つの選択:"と記されています。 一般的な選択を私たちが推奨しているとは考えないでください。 それは私たちが、大多数のユーザーが選択すると考えている選択肢です。

ある場面では任意的な段階を挟むこともできます。 そのような段階には"自由選択:"と記されています。 任意選択ですのでGentooのインストールに絶対必要なものではありません。 その中には事前の決定の影響を受けるものもあります。 そのようなときは、その決定時とその段階の説明直前の双方で、 そのことについての説明があります。

どんなことを選べるの?

Gentooは様々な方法でインストールできます。私たちのインストールCDや、 インストール済みのデストリビューション、Gentoo以外の起動可能なCD(Knoppixなど)、 ネットワークブート環境、緊急用フロッピー、 といったものの中から適当なものを適宜ダウンロードして、 そこからインストールすることができます。

この文書ではGentooインストールCDを使ったインストールと、一部、 ネットワークブートを扱います。ここでは個々のパッケージについて、 最新バージョンをインストールするものとして話が進められています。

注意: その他、Gentoo以外のCDを使う場合などのインストール手段については、 Alternative Installation Guide (日本語訳)をご覧ください。

ネットワークレス・インストールを行ないたい場合は、 ネットワークレス環境でのインストール方法が載っているGentoo 2008.0 ハンドブック(英語)をご覧ください。

また、GRP (Gentoo Reference Platform、コンパイル済みパッケージのコレクション。 Gentooインストールの終了と同時にシステムを使えるようにするためのもの) を利用しようと考えている場合は必ず、Gentoo 2008.0 ハンドブック の指示に従うようにしてください。

Gentoo Installation Tips & Tricks(日本語訳)という文書も参考になるでしょう。 Gentoo経験者でインストールチェックリストの要約だけを読みたいのであれば Documentation Resources(日本語訳)にある Quick Installation Guideを試してみてください (あなたのアーキテクチャにそのような文書があれば)。

選べることはまだあります。 システム全体をスクラッチからコンパイルすることもできますし、 コンパイル済み環境を利用して、Gentoo環境をすぐに立ち上げることもできます。 もちろんその中間の方法として、全てをコンパイルするのではなく、 半分出来上がった状態のシステムからコンパイルを始めることもできます。

トラブル?

インストール中に(またはインストール文書に)何か問題を見つけたら、 バグ・トラッキング・システム(訳注:日本ユーザ会bugzilla)で 既知のバグとして報告されていないかどうか、確認してみてください。 もし無いようであれば、私たちが対応できるように、その問題をバグ報告してください。 その(あなたが報告した)バグを担当する開発者たちを恐れないでください。 取って喰われるようなことは滅多にありませんから。

あなたが今読んでいる文書は、特定のアーキテクチャ向けということになっていますが、 他のアーキテクチャの情報も、その中に紛れ込んでしまっているかもしれない、 ということを一応、先に言っておきます。これはGentooハンドブックの多くの部分が、 全てのアーキテクチャに共通のソースコードを使用していることに因ります (重複作業を減らして開発リソースを節約するため)。 混乱しないように、このような部分は最小限に抑えていきたいと思っています。

その問題が、ユーザーの問題(文書をよく読んだにもかかわらず起きたあなたのミス)なのか、 ソフトウェアの問題(インストール/文書をよくテストしたにもかかわらず起きた私たちのミス)なのか、 はっきりしないときには、irc.freenode.netの#gentooに気軽に参加してみてください。 もちろん、そんなときじゃなくても全然かまいません :)

Gentooについて何か分からないことがあったら、 Gentoo Documentation (日本語訳)の Frequently Asked Questions (日本語訳)や、 フォーラムの FAQsを見てください。 そこで解決できないときは、irc.freenode.netにある私たちのIRCチャンネル、 #gentoo(訳注:GentooJPのチャネル #gentoo­jaもあります)で

Page 4: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

見てください。 そこで解決できないときは、irc.freenode.netにある私たちのIRCチャンネル、 #gentoo(訳注:GentooJPのチャネル #gentoo­jaもあります)で質問してください。誰もいなかったら? ご安心ください、私たちのうちの何人かはIRC常駐フリークです :­)

2. 適切なインストールメディアの選択

2.a. ハードウェア要件

はじめに

始める前に、まず最初にGentooをうまくインストールするために必要なハードウェア要件は、何であるかを示します。

ハードウェア要件

CPU AMD64 CPU*

メモリ 64 MB

ディスク容量 1.5 GB (スワップ領域を除く)

スワップ領域 最低 256 MB

Gentoo AMD64 Project Pageも、始める前に参照してください。

2.b. GentooインストールCD

はじめに

GentooのインストールCDは、それだけで自立したGentoo環境を含むブート可能CDです。 そのCDからLinuxを起動できます。ブート中にあなたのハードウェアが検知され、適切なドライバがロードされます。 これらのインストールCDは、Gentoo開発者によってメンテナンスされています。

すべてのインストールCDはブートし、ネットワークをセットアップし、パーティションを初期化し、そして、インターネットからGentooインストールを開始することができます。 現在のところ二つのインストールCDを提供しています。 利用できるパッケージの最新バージョンを使用してインターネット経由でGentooをインストールすることを考えているならば、この二つのインストールCDは同様に適しています。

有効なインターネット接続なしでGentooをインストールしたいなら、Gentoo 2006.0 Handbooks(英語)で記述されているインストール手順を使用してください。

現在のところ、以下の二つのインストールCDを提供しています。

Gentoo MinimalインストールCD。システムをブートしネットワーク接続を準備し、Gentooのインストールを続行することを唯一の目的とする、小さく実用的なブート可能CDです。Gentoo UniversalインストールCD。MinimalインストールCDと同様の機能をもつブート可能CDです。加えて、(個々のサブアーキテクチャに最適化された)いくつかのstage3圧縮アーカイブファイルが含まれています。

どちらのインストールCDが必要であるかを判断しやすくするために、それぞれのインストールCDの主要な長所と短所を記載しました。

GentooのMinimalインストールCD

MinimalインストールCDは、install­amd64­minimal­2006.0.isoというファイル名で、ディスク容量は45MBだけしか占有しません。Gentooをインストールするために、このインストールCDを使用できますが、常時接続のインターネット環境がある場合だけです。

MinimalインストールCD 長所と短所+ 最小なのでダウンロードに時間がかかりません

­ stage3 tarballファイル、Portageスナップショット、構築済みパッケージを一つも含まないので、ネットワークなしでインストールするには適していません

GentooのUniversalインストールCD

UniversalインストールCDは、install­amd64­universal­2006.0.isoというファイル名で、401MBのCD領域を使います。 Gentooをインストールするために、このインストールCDを使用できます。インターネット接続なしでGentooをインストールするのにも使用できます。 他のPCにインストールしたくなったときにも使えますよ。:­)

UniversalインストールCD 長所と短所+ インストールに必要となる全てが含まれています。ネットワーク接続なしでもインストールできます。

­ 非常に大きいのでダウンロードに時間がかかります

その他のCD

ミラーサイトのうちの一つで、パッケージCDを見つけるかもしれません。 このCDは、インストールCDではありませんが、ネットワークなしでインストールしている時に利用できる追加のリソースです。 ネットワークなしでGentooをインストールした後すぐに、追加のアプリケーション(OpenOffice.org、KDE、GNOME、など)を簡単に手早くインストールできる構築済みパッケージ(いわゆるGRPのセット)が含まれています。

もし、パッケージCDを用いて追加のソフトウェアを、手早くインストールつもりであれば、ご使用になるstage3 tarballと同じサブアーキテクチャを同じものを使ってください。

The Stage3 Tarball

Stage3 tarballとは、このマニュアルに記載されている指示にしたがってGentooをインストールのに 適した最小のGentoo環境を含むアーカイブです。 これまで、Gentoo Handbookは、3つのstage tarballのうちの一つを選択するように説明していました。 Gentooは、まだstage1とstage2 tarballを提供してはいますが、公式なインストール方法はstage3 tarballを用いたものになります。 もし、あなたがstage1もしくはstage2 tarballを使用してGentooをインストール方法に興味があるならば、Gentoo FAQのHow do I Install Gentoo Using a Stage1 or Stage2 Tarball?を呼んでください。

2.c. GentooインストールCDをダウンロードして、CDに焼いて、ブートします

インストールCDをダウンロードしてCDに焼く

Page 5: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

インストールCDをダウンロードしてCDに焼く

使用するGentooインストールCDを選択します。まず選んだインストールCDをダウンロードしてCDに焼くことから開始します。 何種類かのインストールCDについて既にお話しましたが、それらはどこにあるのでしょうか?。

ミラーサイトの中の一つから好きなインストールCD(と、望むなら同様にパッケージCD)をダウンロードできます。 (訳注: 日本で利用できるミラーサイトを以下に抜粋します。)mirror.gentoo.gr.jp (Japan)gg3.net (Japan)gg3.net (Japan/ftp)University of Tokyo (Japan/ftp)インストールCDはreleases/amd64/2006.0/installcdディレクトリにあります。

そのディレクトリ内には、ISOファイルがあります。CD­Rに焼くことができる完全なCDイメージです。

ダウンロードしたファイルが壊れているかも?と心配な場合は、ダウンロードしたファイルのMD5チェックサムをチェックし、私たちが提供するもの(install­amd64­minimal­2006.0.iso.md5のようなファイル)と比較します。Linux/Unixのmd5sumツールか、Windows用のmd5sumでMD5チェックサムをチェックできます。

ダウンロードしたファイルの正当性をチェックする別の方法は、私たちが提供する暗号化シグネチャ(.ascで終わるファイル)を確認するためにGnuPGを使用することです。以下のようにしてシグネチャファイルをダウンロードして、公開キーを取得してください。

コード表示 3.1: 公開キーの取得

$ gpg ­­keyserver subkeys.pgp.net ­­recv­keys 17072058

では、以下のようにしてシグネチャを確認してください。

コード表示 3.2: 暗号化シグネチャの確認

$ gpg ­­verify <signature file> <downloaded iso>

ダウンロードしたISOファイルをCDに焼くために、ロー(raw)モードを選んでください。 その方法は、使用するライタプログラム毎にまったく異なります。ここではcdrecordとK3Bについてお話します。より詳細な情報は、Gentoo FAQ(日本語訳)で見つかります。

cdrecordを用いる場合、単にcdrecord dev=/dev/hdc <ダウンロードしたISOファイル>を入力します。 (/dev/hdcをあなたのCD­RWドライブのデバイスパスで置き換えてください)

K3Bを用いる場合、メニューのTools > CD > Burn Imageを選択してください。 次に'Image to Burn'エリアにISOファイルを選びます。最後にStartボタンを押します。 (訳注: 日本語化されたK3Bの場合、メニューのツール > CD > CDイメージを書き込むを選択してください。 次に'書き込むイメージ'エリアにISOファイルを選びます。最後に開始ボタンを押します。)

インストールCDからのブート

インストールCDが焼きあがってしまったら、さぁそれをブートしましょう。 CDドライブから全てのCDを取り出し、システムをリブートしてBIOSに入ります。 入る方法は、BIOSの種類毎に異なり、通常はDELかF1かESCキーを押します。 ハードディスクより前にCD­ROMからブートが試行されるように、BIOSでブート順を変更してください。 この設定は、だいたい"CMOS Setup"で見つかります。 こうしないと、CD­ROMは無視されてハードディスクからリブートされてしまうでしょう。

では、CD­ROMドライブにインストールCDを入れて(そんなの当たり前だけど)、リブートしてください。 ブートプロンプトが現れるはずです。 このスクリーンでは、デフォルトのブートオプションでブートプロセスを開始するためにEnterキーを押すか、ブートオプションを続けてカーネルを指定することによって、カスタムブートオプションでインストールCDをブートします。

カーネルを指定するって?はい、そうです。私たちは何種類かのカーネルをインストールCDに収めています。 デフォルトはgentooです。 他には、特定のハードウェア向けのものや、フレームバッファを無効にした­nofb版があります。

利用可能なカーネルの概要を以下に示します。

カーネル 説明gentoo デフォルトのK8 CPUとNUMAサポートありのカーネル

カーネルオプションも指定できます。それらは、好きなように有効(無効)にできるオプション設定です。 以下のリストはブートスクリーンでF2キーを押したときに表示されるものと同じものです。 (訳注: ブートスクリーンでF2キーを押すと、英語で表示されますが、ここでは、日本語訳を示してあります。)

コード表示 3.3: カーネルに渡すことができるオプション

­ agpgart agpgartモジュールをロードします(グラフィックの問題、ロックアップなどがあるなら使用してください)­ acpi=on ACPIファームウェアサポートをロードします­ ide=nodma うまく作動しないIDEデバイスのためにDMAを強制的に無効にします­ doscsi SCSIデバイスをスキャンします(動かなくなるイーサネットカードもあります)­ dopcmcia PCMCIA接続のCD­ROMドライブ用にpcmciaサービスを開始します­ nofirewire initrdでfirewireモジュールを無効にします(firewire(IEEE1394)接続のCD­ROMドライブなどを使用する場合向け)­ nokeymap 非USキーボード配列のキーマップ選択を無効にします­ docache 実行時に必要なCDの一部をメモリ上に全てキャッシュし、umount /mnt/cdromをして、別のCD­ROMをマウントできるようにします­ nodetect hwsetup/kudzuとhotplugを実行しないようになります­ nousb initrdでのusbモジュールのロードとhotplugを無効にします­ nodhcp ネットワークカードが検出されてもDHCPを自動起動しません­ nohotplug hotplugサービスをロードしません­ noapic APICを無効にします(ネットワークカード、SCSIカードのようなハードウェアの問題があるなら、試してください)­ noevms EVMS2モジュールのロードをしません­ nolvm2 LVM2モジュールのロードをしません­ hdx=stroke (smp/smp­nofbカーネルのみに有効)BIOSが大きなハードディスクを扱えなくてもハードディスク全部をパーティションで区切ることができます­ noload=module1,[module2,[...]] 特定のカーネルモジュールのロードをしないようにします

では、CDをブートしましょう。(デフォルトのgentooカーネルでは嬉しくないなら)カーネルとブートオプションを選択してください。 例として、カーネルパラメータにdopcmciaを指定してgentooカーネルをブートする方法を示します。

コード表示 3.4: インストールCDのブート

Page 6: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

コード表示 3.4: インストールCDのブート

boot: gentoo dopcmcia

その後、別のブートスクリーンやプログレスバーに出迎えられます。 非USキーボードが接続されているシステムにGentooをインストールしているなら、詳細モードに切り替えるために、すぐにAlt­F1キーを押して、プロンプト上の指示に従ってください。10秒以内に何も選択しなければ、デフォルト(USキーボード)が選択されたこととされ、ブートプロセスが続行します。ブートプロセスが完了すると、スーパーユーザの"root"ユーザとして"Live" Gentoo Linuxに自動的にログインされます。コンソール上にrootユーザのプロンプト("#")が表示されるはずです。そしてAlt­F2やAlt­F3やAlt­F4を押すことによって別のコンソールに切り替えることもできます。Alt­F1で最初のコンソールに戻ります。

では、追加のハードウェア設定に進んでください。

追加のハードウェア設定

インストールCDがブートするときに、全てのハードウェアデバイスを検出し、そのハードウェアをサポートする適切なカーネルモジュールをロードしようとします。 それは、大抵の場合、とてもうまく機能します。しかし、ときには必要とするカーネルモジュールを自動でロードしないかもしれません。 PCI自動検出機能がシステムのハードウェアの一部を見逃してしまったら、手動で適切なカーネルモジュールをロードしなければなりません。

次の例では(ネットワークインターフェースのある種類をサポートする)8139tooモジュールをロードしてみています。

コード表示 3.5: カーネルモジュールのロード

# modprobe 8139too

PCMCIAをサポートする必要があるなら、以下のようにpcmcia initスクリプトを起動してください。

コード表示 3.6: PCMCIA initスクリプトの起動

# /etc/init.d/pcmcia start

自由選択: ハードディスク性能の調整

あなたが上級者なら、IDEハードディスクの性能をhdparmコマンドを使用して調整したいかもしれません。 以下のように­tTオプションを付けてディスクの性能をテストできます。(より正確な結果を得るためにそれを数回実行します)

コード表示 3.7: ディスク性能のテスト

# hdparm ­tT /dev/hda

調整するには、ディスクに/dev/hda(あなたのディスクで置き換えてください)を使用した以下の例(もしくは、あなた自身の経験)を使用します。

コード表示 3.8: ハードディスク性能の調整

DMAを有効にする: # hdparm ­d 1 /dev/hdaDMA有効かつ安全な性能強化オプション: # hdparm ­d 1 ­A 1 ­m 16 ­u 1 ­a 64 /dev/hda

自由選択: ユーザアカウント

インストール用の環境にあなた以外の人にアクセス権を与える予定があるか、(セキュリティ上の理由により)root権限なしでirssiIRCクライアントを使ってチャットしたいなら、必要なユーザアカウントを作成し、rootパスワードを変更する必要があります。

rootパスワードを変更するには、以下のようにpasswdユーティリティを使用してください。

コード表示 3.9: rootパスワードの変更

# passwdNew password: (新しいパスワードを入力)Re­enter password: (パスワードの再入力)

ユーザアカウントを作成するには、最初にユーザを作成して、次にパスワードを設定します。 この作業にはuseraddコマンドとpasswdコマンドを使用します。 次の例では、"john"というユーザを作成します。

コード表示 3.10: ユーザアカウントの作成

# useradd ­m ­G users john# passwd johnNew password: (johnのパスワードを入力)Re­enter password: (johnのパスワードを再入力)

以下のようにして、suコマンドを使用してrootユーザから新しく作成したユーザにユーザIDを変更できます。

コード表示 3.11: ユーザIDを変更

# su ­ john

自由選択: インストール中にドキュメントを表示する

インストールしている間にGentooハンドブック(CDからかオンラインからかのどちらか)を表示したい場合、ユーザアカウントを作成してあるかを確認してください。 (自由選択: ユーザアカウントを参照)その後、新しい端末に移るためにAlt­F2を押して、そこでログインしてください。

CDにある文書を表示したいなら、以下のようにlinksコマンドをすぐに実行できます。

コード表示 3.12: CD上のドキュメントの表示

# links /mnt/cdrom/docs/handbook/html/index.html

しかし、オンラインのGentooハンドブックは、CDで提供されるものよりも新しいので、そちらを使用する方が好まれます。 ネットワーク設定の章を完全に終了した後なら(そうしないと、文書を表示するためにインターネットに接続できないでしょう)、以下のように同様にlinksを使用して表示できます。

コード表示 3.13: オンラインドキュメントの表示

Page 7: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

コード表示 3.13: オンラインドキュメントの表示

# links http://www.gentoo.org/doc/en/handbook/handbook­amd64.xml

Alt­F1を押すことで、もとの端末に戻ることができます。

自由選択: SSHデーモンの起動

Gentooをインストールしている間に、他のユーザに(おそらくそのユーザは、Gentooをインストールする手伝いをするか、あなたのためにそれと同様のことをするという理由で)コンピュータへアクセスすることを許可したいなら、ユーザアカウントを作成し、(そのユーザを完全に信用できる場合だけ)おそらくrootパスワードを与える必要もあります。

SSHデーモンを起動するには、以下のコマンドを実行してください。

コード表示 3.14: SSHデーモンの起動

# /etc/init.d/sshd start

sshdを使用できるようにするためには、まずネットワークをセットアップする必要があります。 ネットワーク設定の章に進んでください。

3. ネットワーク設定

3.a. 自動的なネットワークの検知

動いているかも?

もしあなたのシステムがDHCPサーバを備えたEthernetネットワークに接続されているなら、おそらく、既にネットワーク設定は自動的に完了しているでしょう。 その場合には、LiveCD内のネットーワークが必要な各種コマンド( ssh、scp、 ping、 irssi、 wget、links など)を使うことができるでしょう。

また、ネットワークが設定されている場合には、/sbin/ifconfigコマンドで、 loインターフェースと並んで、たとえばeth0のようにリストされるはずです。

コード表示 1.1: 動作中のネットワークのための/sbin/ifconfigコマンド

# /sbin/ifconfig(...)eth0 Link encap:Ethernet HWaddr 00:50:BA:8F:61:7A inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0 inet6 addr: fe80::50:ba8f:617a/10 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:1498792 errors:0 dropped:0 overruns:0 frame:0 TX packets:1284980 errors:0 dropped:0 overruns:0 carrier:0 collisions:1984 txqueuelen:100 RX bytes:485691215 (463.1 Mb) TX bytes:123951388 (118.2 Mb) Interrupt:11 Base address:0xe800

自由選択: proxyの設定

インターネット接続にproxyを使用している場合には、 インストール中にproxy情報について設定する必要があるかもしれません。 proxyの設定はとても簡単です。 proxyサーバーの情報を含むように値を設定するだけです。

多くの場合、proxyサーバーのホスト名を変数として定義するだけです。 例として、proxy.gentoo.orgというサーバーにport 8080で接続するとしましょう。

コード表示 1.2: proxyサーバーの定義

(proxyがHTTPの通信をフィルタする場合)# export http_proxy="http://proxy.gentoo.org:8080"(proxyがFTPの通信をフィルタする場合)# export ftp_proxy="ftp://proxy.gentoo.org:8080"(proxyがRSYNCの通信をフィルタする場合)# export RSYNC_PROXY="proxy.gentoo.org:8080"

proxyがユーザ名やパスワードを必要とするなら、次の文法で値を定義する必要があります。

コード表示 1.3: proxy変数にユーザ名/パスワードを追加

http://username:[email protected]:8080

ネットワークのテスト

パケットがインターネットに届いているか、 DNSで名前が正しく解決できるか、といったことを確認するために、 プロバイダのDNSサーバー(/etc/resolv.confに書かれている) やWebサイトにpingをしましょう。

コード表示 1.4: さらにネットワークのテスト

# ping ­c 3 www.gentoo.org

この時点でネットワークを使えているならば、残りのセクションを飛ばしてディスクの準備から続けることができます。 もし使えていないなら、この次へ進んでください。

3.b. 自動でのネットワーク設定

ネットワークが動いていない場合には、 いくつかのインストールメディアではnet­setup(通常のネットワーク用)や、 pppoe­setup(ADSLユーザー用)、pptp (PPTPユーザー用­x86、amd64、 alpha、ppc、そしてppc64で利用可能)が使用できます。

もしインストールメディアにそのツールが含まれていなかったり、 ネットワークがそれでも動かなかったら、 手動でのネットワークの設定 から続けてくだ

さい。

Page 8: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

さい。

通常のEthernetユーザーは一般的な選択: net­setupの使用へADSLユーザーはもう一つの選択: PPPの使用へPPTPユーザーはもう一つの選択: PPTPの使用へ

一般的な選択: net­setupの使用

もし自動でネットワークが設定されなかった場合に、 一番単純に設定を行なう方法はnet­setupスクリプトを実行することです。

コード表示 2.1: net­setupスクリプトの起動

# net­setup eth0

net­setupはネットワーク環境に対するいくつかの質問をします。 すべての質問が終わったときに、ネットワーク接続ができているはずです。 確認のために上に書いたネットワークのテストを行なってください。 もしそのテストがいい結果なら、おめでとう! Gentooをインストールする準備ができました。 残りのセクションを飛ばして ディスクの準備 へ行ってください。

まだネットワークが接続されていないのなら、手動でのネットワークの設定から続けてください。

もう一つの選択: PPPの使用

インターネットに接続するためにPPPoEが必要な環境のために、 インストールCD(どのバージョンでも)には、その接続を簡単にするためのppp が含まれています。 それに付属しているpppoe­setupスクリプトを接続を設定するために使用してください。 そして、 ADSLモデムに接続されたEthernetデバイス用に、ユーザ名、パスワード、 DNSサーバーのIPアドレス、基本的なファイアウォールが必要か否かを入力します。

コード表示 2.2: pppを使用する

# pppoe­setup# pppoe­start

もし何かがうまくいかなかったら、 ユーザ名とパスワードを正しく入力したかどうかを、 /etc/ppp/pap­secretsまたは /etc/ppp/chap­secretsを見て再確認してください。 また、正しいEthernetデバイスを使用していることも確認しください。 もし、Ethernetデバイスが存在しない場合には、 適切なネットワークモジュールを読み込む必要があります。 この場合には、適切なモジュールを読み込む方法を説明している 手動でのネットワークの設定 から続けてください。

ネットワークが動いたら、ディスクの準備へ行ってください。

もう一つの選択: PPTPの使用

PPTPサポートが必要なら、pptpclientというインストールCDに入っているツールを使用することができます。 しかし、その前に設定が正しいか確認する必要があります。 /etc/ppp/pap­secretsまたは/etc/ppp/chap­secretsを正しいusername/passwordになるように記述します。

コード表示 2.3: /etc/ppp/chap­secretsの編集

# nano ­w /etc/ppp/chap­secrets

それから/etc/ppp/options.pptpを必要なら編集します。

コード表示 2.4: /etc/ppp/options.pptpの編集

# nano ­w /etc/ppp/options.pptp

これらが全部済んだら、ただpptpを実行し(コマンドラインオプションとoptions.pptpの両方は設定できません)サーバーへ接続します。

コード表示 2.5: dial­inサーバーへ接続

# pptp <server ip>

次は、ディスクの準備へ行ってください。

3.c. 手動でのネットワークの設定

適切なネットワークモジュールを読み込む

インストールCDは、ブートするときにすべてのハードウェアデバイスを検出、 ハードウェアをサポートするための適切なカーネルモジュール(ドライバー)を読み込もうとします。 大部分のケースでは、これはとても良く機能します。 ただ、いくつかのケースでは、必要なカーネルモジュールが自動的に読み込まれません。

net­setupやpppoe­setupが失敗するというのは、 ネットワークカードが見つからなかった可能性があります。 この場合には、手動で適切なカーネルモジュールを読み込まないといけません。

ネットワーク用に提供しているカーネルモジュールを見るにはls を使用します。

コード表示 3.1: 提供されているモジュールの検索

# ls /lib/modules/`uname ­r`/kernel/drivers/net

使用しているネットワークカードが見つかったら、 modprobeを使ってそのカーネルモジュールを読み込みます。

コード表示 3.2: modprobeを使用してカーネルモジュールを読み込む

(この例では、pcnet32モジュールを読み込みます)# modprobe pcnet32

今ネットワークカードが検出されたかどうかチェックするために、 ifconfigを使用してください。 検出されたネットワークカードは次のように表示されるでしょう。

Page 9: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

でしょう。

コード表示 3.3: ネットワークが機能しているかテスト 成功した場合

# ifconfig eth0eth0 Link encap:Ethernet HWaddr FE:FD:00:00:00:00 BROADCAST NOARP MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

しかし、次のようなエラーメッセージが出たなら、 そのネットワークカードは検出されていません。

コード表示 3.4: ネットワークが機能しているかテスト 失敗した場合

# ifconfig eth0eth0: error fetching interface information: Device not found

もし、あなたのシステムに複数のネットワークカードが存在する場合には、 その名前はeth0、eth1など、となります。 動かしたいネットワークカードを確認してください。 そして、このドキュメントを通してその名前を使用してください。 このドキュメントでは、ネットワークカードはeth0を想定しています。

ネットワークが検出された場合には、 net­setupまたはpppoe­setupをやり直してください(今は動くはずです)。 また、パワーユーザーの方々のために、マニュアルでのネットワークの設定の方法を説明します。

ネットワークセットアップのベースになる次のセクションを一つ選択してください。

DHCPを使用するは、自動的なIPの割り当て方法です。無線LANアクセスの準備は、無線LANカードを持っている場合の説明です。ネットワーク用語を理解するは、 ネットワークについて知っておくべき情報を説明しています。ifconfigとrouteの設定は、ネットワークを手動で設定する方法の説明です。

DHCPを使用する

DHCP (Dynamic Host Configuration Protocol)を使用すると、 自動的にネットワーク情報 (IPアドレス、ネットマスク、ブロードキャストアドレス、ゲートウェイ、 ネームサーバーなど)を受けとることが可能になります。 これはDHCPサーバーがネットワーク内に存在する場合にのみ動きます (または、プロバイダがDHCPサービスを提供している場合)。 自動的にこのネットワークインタフェース情報を受け取るためには、 dhcpcdを使用します。

コード表示 3.5: dhcpcdを使用する

# dhcpcd eth0ネットワーク管理者によっては、hostnameとdomainnameはDHCPサーバーが提供するものを使うように、と要求するかもしれません。このような場合には、下のコマンドを使ってください。# dhcpcd ­HD eth0

もしこれが動いたら(Googleのように、 いくつかのインターネットサーバーにpingしてみてくてください)、 先に進む用意ができたことになります。 残りのセクションを飛ばして、ディスクの準備から続けてください。

無線LANアクセスの準備

注意: iwconfigコマンドが入っているはx86、AMD64、PPC用のインストールCDだけです。 それ以外の場合にも、linux­wlan­ng projectの指示に従うことで動かすことができるでしょう。

もし無線LAN(802.11)用のカードを使用しているのなら、 他のことをする前に、まず無線LANの設定をする必要があります。 現在の無線LANの設定を見るために、iwconfigを使います。 iwconfigを実行すると、次のような表示されるかもしれません。

コード表示 3.6: 現在の無線LAN設定の表示

# iwconfig eth0eth0 IEEE 802.11­DS ESSID:"GentooNode" Mode:Managed Frequency:2.442GHz Access Point: 00:09:5B:11:CC:F2 Bit Rate:11Mb/s Tx­Power=20 dBm Sensitivity=0/65535 Retry limit:16 RTS thr:off Fragment thr:off Power Management:off Link Quality:25/10 Signal level:­51 dBm Noise level:­102 dBm Rx invalid nwid:5901 Rx invalid crypt:0 Rx invalid frag:0 Tx excessive retries:237 Invalid misc:350282 Missed beacon:84

注意: デバイス名がeth0の代わりにwlan0やra0となるワイヤレスのカードがあります。 iwconfigコマンドをコマンドラインパラメターなしで実行し、 正しいデバイス名を取得してください。

大部分のユーザーにとって、重要な設定の変更はESSID(無線LANネットワーク名と呼ばれている)またはWEPキーの2つだけです。 上記リストに載っているESSIDとアクセスポイントアドレスがあなたのアクセスポイントになっていて、WEPを使っていない場合には、すでに無線LANは動いています。 もし、ESSIDを変更したい場合や、WEPキーを加えたい場合には、次のコマンドを実行します。

注意: 無線LANネットワークにWPAまたはWPA2が設定されている場合は、wpa_supplicantを使う必要があるでしょう。 GentooLinuxでの無線LANの構成に関するより詳しい情報は、 Gentooハンドブックのワイヤレスネットワーク の章をみてください。

コード表示 3.7: ESSID/WEPキーの変更

(ネットワーク名を"GentooNode"とセットしています)

Page 10: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

(ネットワーク名を"GentooNode"とセットしています)# iwconfig eth0 essid GentooNode

(16進数でWEPキーを設定します)# iwconfig eth0 key 1234123412341234abcd

(プレフィクスとして"s:"を付け、ASCII文字を設定します)# iwconfig eth0 key s:some­password

iwconfigを使用して、再度ネットワークの設定を確認します。 一度無線LANが動いてしまえば、次章(ネットワーク用語を理解する) で記述されているIPレベルのネットワーク設定をすることができます。 また、前述したnet­setupを使用することもできます。

ネットワーク用語を理解する

注意: もし、IPアドレス、ブロードキャストアドレス、ネットマスク、 ネームサーバーといったものを知っているのならば、 このサブセクションを飛ばし、ifconfigとrouteの設定 から続けてください。

上記のすべての方法が失敗する場合には、ネットワークを手動で設定する必要があります。 これは全然難しくありません。 しかし、あなたが満足のいくネットワーク設定ができるために、ある程度のネットワークの知識が必要です。 これを読み終わった後には、ゲートウェイとは何か、 ネットマスクは何のためにあるのか、 ブロードキャストアドレスはどうやって作るのか、 なぜネームサーバーが必要なのかがわかります。

ネットワークの中では、各ホストはIPアドレス(Internet Protocolアドレス)で識別されます。 アドレスは0から255までの4つの数字の組合せです。 これはわかりやすくするためで、 実際には、IPアドレスは32ビット(0と1の列)です。 この例を見てください。

コード表示 3.8: IPアドレスの例

IP Address (numbers): 192.168.0.2IP Address (bits): 11000000 10101000 00000000 00000010 ­­­­­­­­ ­­­­­­­­ ­­­­­­­­ ­­­­­­­­ 192 168 0 2

IPアドレスはアクセス可能なネットワークすべての中でユニークです(つまり、接続可能なすべてのホストは異なるIPアドレスを持っているはずです)。 内部のホストと外部のホストを区別するために、IPアドレスは2つの部分、 ネットワーク部と、ホスト部に分割されています。

その分割は、先頭が1の連続で、それに続いて0の連続になる値を持つnetmaskによって行なわれます。 IPアドレスの1の部分をネットワーク部、0の部分をホスト部とします。 通常に、ネットマスクはIPアドレスと同じように記述されます。

コード表示 3.9: ネットワーク部/ホスト部の分割例

IP­address: 192 168 0 2 11000000 10101000 00000000 00000010Netmask: 11111111 11111111 11111111 00000000 255 255 255 0 +­­­­­­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­+ Network Host

言い換えると、192.168.0.14はこのサンプルネットワーク内に存在するホストですが、192.168.1.2は違います。

ブロードキャストアドレスはネットワーク部は同じネットワークアドレスを使用し、 ホスト部はすべて1のIPアドレスです。 ネットワーク上のすべてのホストがこのIPアドレスに反応します。 これはブロードキャストパケットのためのものです。

コード表示 3.10: ブロードキャストアドレス

IP­address: 192 168 0 2 11000000 10101000 00000000 00000010Broadcast: 11000000 10101000 00000000 11111111 192 168 0 255 +­­­­­­­­­­­­­­­­­­­­­­­­­­+­­­­­­­­+ Network Host

インターネットに接続するためには、 どのホストでインターネット接続を行なうのか知っている必要があります。 このホストはゲートウェイと呼ばれています。 このホストは普通のホストなので、普通のIPアドレスを持っています。 (例えば192.168.0.1)

すべてのホストがそのホスト自身のIPアドレスを持っていると前述しました。 各ホストに名前で(IPアドレスの代わりに)アクセスすることができるように、名前(たとえばdev.gentoo.gr.jp)からIPアドレス(たとえば 64.5.62.82)に変換するサービスが必要です。 そういったサービスをネームサーバーと呼んでいます。そのようなサービスを使用するためには、ネームサーバーを/etc/resolv.conf、定義する必要があります。

場合によっては、ゲートウェイがネームサーバーを兼ねていることがあります。 そうでなければ、プロバイダから提供されているネームサーバーを入力する必要があります。

まとめると、この先を続ける前に次の情報が必要となるでしょう。

ネットワークアイテム 例IPアドレス 192.168.0.2ネットマスク 255.255.255.0ブロードキャスト 192.168.0.255ゲートウェイ 192.168.0.1ネームサーバー 195.130.130.5, 195.130.130.133

ifconfigとrouteの設定

ネットワークの設定は3段階から成ります。 最初に、ifconfigを使用して自分自身のIPアドレスを割当てます。 次に、routeを使用しゲートウェイへのルーティングを設定します。 そして最後に、/etc/resolv.confにネームサーバーのIPアドレスを記述します。

IPアドレスを設定するために、IPアドレス、ブロードキャストアドレス、 ネットマスクが必要です。 そして、$IP_ADDRをIPアドレスに、$BROADCASTをブロードキャストアドレスに、 $NETMASKをネットマスクに置換して、次のコマンドを実行します。

コード表示 3.11: ifconfigの使用

Page 11: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

コード表示 3.11: ifconfigの使用

# ifconfig eth0 $IP_ADDR broadcast $BROADCAST netmask $NETMASK up

さて、routeを使用してルーティングの設定です。 $GATEWAYをゲートウェイアドレスに置換します。

コード表示 3.12: routeの使用

# route add default gw $GATEWAY

そして、好きなエディタで(この例ではnanoを使います) /etc/resolv.confを開きます。

コード表示 3.13: /etc/resolv.confの作成

# nano ­w /etc/resolv.conf

次のテンプレートを使ってネームサーバーを記述します。 $NAMESERVER1と$NAMESERVER2を適切なネームサーバーアドレスに置換するのを忘れないでください。

コード表示 3.14: /etc/resolv.confテンプレート

nameserver $NAMESERVER1nameserver $NAMESERVER2

これですべてです。 インターネットサーバーのホスト(例えばGoogle)へpingをして、ネットワークのテストをしてください。 もしそれがうまくいったら、おめでとう。 Gentooをインストールする準備ができました。 ディスクの準備へ進んでください。

4. ディスクの準備

2.a. ブロックデバイス入門

ブロックデバイス

Linuxファイルシステム、パーティション、ブロックデバイスを含めて、Gentoo LinuxとLinux全般でのディスクに適している側面を詳しく見て行きましょう。 そして、ディスクとパーティションの一部始終を理解してもらった上で、Gentoo Linuxのインストールの為にパーティションとファイルシステムのセットアップの手順を案内します。

初めに、ブロックデバイスを紹介します。おそらく最も有名なブロックデバイスはLinux上では1番目のIDEドライブ、すなわち/dev/hdaを指しているものでしょう。もし、あなたのシステムがSCSIドライブを使っているなら, 1番目のハードディスクは/dev/sdaになるでしょう。

上記のブロックデバイスはディスクへの抽象的インターフェイスを表しています。 ユーザープログラムはドライブがIDEやSCSIもしくは他のどんなものかどうかを気にすること無くディスクにアクセスできます。 プログラムは簡単にディスク上の記憶領域をランダムアクセス可能な512バイト毎の連続した束としてアドレッシングできます。

パーティションとスライス

Linuxシステムを格納するのにディスクの全体を使用することは理論上可能ですが、実際にはほとんどそうはされません。 代わりにディスク全体のブロックデバイスはもっと扱いやすいブロックデバイスにより小さく分割されます。 amd64システムではこれら分割されたものをパーティションと呼びます。

パーティション

パーティションは以下の3つのタイプに分けられます。 基本、 拡張そして論理です。

基本パーティションはMBR(マスターブートレコード)にその情報が格納されているパーティションです。 MBRはとても小さい(512バイト)ので、4つの基本パーティションだけが定義できます。 (例えば、/dev/hda1から/dev/hda4)です。

拡張パーティションはより多くのパーティションが含まれた特殊な基本パーティションです。 (これは拡張パーティションは4つの基本パーティションの1つで無ければならないということです)。 こういったパーティションは元々あった訳ではありません。 しかし4つのパーティションでは少なすぎるので、下位互換性を損なうこと無く構成仕様を拡張する為に生まれたものです。

論理パーティションは拡張パーティション内のパーティションです。 これらの定義はMBRの中ではなく、拡張パーティション内で宣言されています。

4.b. パーティション構成を計画する

通常のパーティション構成

もしシステムのパーティション構成を編集するのに興味が無ければ、このハンドブックを通して使っているパーティション構成を使用できます。

パーティション ファイルシステム サイズ 種別/dev/hda1 ext2 32M ブートパーティション/dev/hda2 (swap) 512M スワップパーティション/dev/hda3 ext3 残りのディスク領域 ルートパーティション

もしパーティション(もしくは論理ボリューム)がどれぐらいのサイズにすればいいのか、どれだけの数のパーティション(もしくはボリューム)かにすべきかを知りたいのならば読み進んでください。そうでなければ、今からパーティション作成にfdiskを使うを読みながら、ディスクのパーティション作成作業を進めてください。

パーティション数とその大きさ

パーティションの数は環境に大きく依存します。 例えば、多数のユーザーがいるのならセキュリテイを強めバックアップを容易にする為に多分/homeを別にしたいでしょう。 もしメールサーバーとして稼働させる為にGentooをインストールしようとしているのなら、全てのメールは /var内に保存されるので/varは別にすべきでしょう。 ファイルシステムの良い選択はパフォーマンスを最大限にするでしょう。ゲームサーバーではほとんどのゲームサーバーパッケージが/optにインストールされるので、そこは別にされます。 理由は/homeをセキュリティとバックアップの為に別にするのと同じようなものです。

/usrは、確実に大きくしたいはずです。 主なアプリケーションを有しているだけでなく、保存される多数のソースを除いたPortageツリー、一つだけでも

Page 12: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

/usrは、確実に大きくしたいはずです。 主なアプリケーションを有しているだけでなく、保存される多数のソースを除いたPortageツリー、一つだけでも500Mbyteほどあるからです。

こういったように、どういうシステムにしたいのかにかなり依存します。 分割されたパーティションまたはボリュームには以下の利点があります。

それぞれのパーティションまたはボリュームに最適なパフォーマンスを上げるファイルシステムを選択できます。パーティションを分けておくと、あるゾンビプロセスがパーティションまたはボリュームにデータを書き込み続けてシステム全体の空き容量を使い果たすのを防ぐことができます。必要ならば、並行した複数のチェックを行えるのでファイルシステムのチェック時間を減らせます。 (この利点は複数のパーティションでよりも複数のディスクでより有効ですが)。セキュリティは読込専用、nosuid(setuidビットは無視されます)、noexec(実行ビットは無視されます)等でいくつかのパーティションをマウントすることで増大します。

しかし、複数のパーティションには一つ大きな欠点があります。 正しく設定しないと、空き容量がかなりあるパーティションと空き容量の無いパーティションのあるシステムになってしまうでしょう。 また、SCSIとSATAでは15個迄というパーティション数の制限があります。

パーティション設定例として、ラップトップのデモ機(ウェブサーバー、メールサーバー、gnome等を含む)として使われている20GBのディスクを見ていただききましょう。

コード表示 2.1: ファイルシステム使用例

$ df ­hFilesystem Type Size Used Avail Use% Mounted on/dev/hda5 ext3 509M 132M 351M 28% //dev/hda2 ext3 5.0G 3.0G 1.8G 63% /home/dev/hda7 ext3 7.9G 6.2G 1.3G 83% /usr/dev/hda8 ext3 1011M 483M 477M 51% /opt/dev/hda9 ext3 2.0G 607M 1.3G 32% /var/dev/hda1 ext2 51M 17M 31M 36% /boot/dev/hda6 swap 516M 12M 504M 2% <not mounted>(将来使用のための未パーティション領域: 2 GB)

/usrはここでかなりの量(83%使用)を占めていますが、一旦全てのソフトがインストールされると /usrはそんなに増えて行きません。 しかしながら、/varに2­3GBものディスク容量を割り当てるのは多すぎると思うかもしれません、ただPortageはデフォルトでは、このパーティションを使用してパッケージのコンパイルを行うことを覚えておいてください。 もし、あなたが/varを1GB程度の適度なサイズに抑えておきたい場合、あなたはOpenOfficeのような大きなパッケージをコンパイルするために必要な十分に大きなパーティションを差し示すように、あなたの/etc/make.conf内の、PORTAGE_TMPDIR変数を変更する必要があります。

4.c. パーティション作成にfdiskを使う

以下の部分では先に紹介した例のパーティション設定の作成方法を説明します。

パーティション 種別/dev/hda1 ブートパーティション/dev/hda2 スワップパーティション/dev/hda3 ルートパーティション

パーティションの割当てを自分の望むように変更してください。

現在のパーティションの割当てを見る

fdiskはディスクをパーティションに分割するのに高機能かつ普及しているツールです。 さあfdiskを実行しましょう(例では/dev/hdaを使っています)。

コード表示 3.1: fdiskを起動する

# fdisk /dev/hda

fdiskを起動すると、下記の様なプロンプトが出ます。

コード表示 3.2: fdiskプロンプト

Command (m for help):

現在のディスクのパーティション情報を表示するにはpを入力します。

コード表示 3.3: パーティション情報例

Command (m for help): p

Disk /dev/hda: 240 heads, 63 sectors, 2184 cylindersUnits = cylinders of 15120 * 512 bytes

Device Boot Start End Blocks Id System/dev/hda1 1 14 105808+ 83 Linux/dev/hda2 15 49 264600 82 Linux swap/dev/hda3 50 70 158760 83 Linux/dev/hda4 71 2184 15981840 5 Extended/dev/hda5 71 209 1050808+ 83 Linux/dev/hda6 210 348 1050808+ 83 Linux/dev/hda7 349 626 2101648+ 83 Linux/dev/hda8 627 904 2101648+ 83 Linux/dev/hda9 905 2184 9676768+ 83 Linux

Command (m for help):

このディスクの例では7つのLinuxファイルシステム("Linux"と表示されている)とスワップパーティション("Linux swap"と表示)で構成するように設定されて

います。

Page 13: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

います。

全てのパーティションを削除する

最初に現在の全てのパーティションをディスクから削除します。dを入力するとパーティションを削除します。 例えば、現在の/dev/hda1を削除するには、以下のようにします。

コード表示 3.4: パーティションを削除する

Command (m for help): dPartition number (1­4): 1

パーティションの削除準備ができました。これでpと入力してもパーティションは表示されませんが、変更が保存されるまで実際には削除されません。 もし間違えてしまって変更を保存せずに取消たいときはすぐにqと入力し、エンターキーを押してください。これでパーティションは削除されません。

さあ、これでシステム上の全パーティションを削除したい!と思っているでしょう? パーティションを表示するのにpを、 削除するのにdとパーティション番号を繰り返し入力してください。 最後にパーティションテーブルに何も無くなれば終了です。

コード表示 3.5: 空のパーティションテーブル

Disk /dev/hda: 30.0 GB, 30005821440 bytes240 heads, 63 sectors/track, 3876 cylindersUnits = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System

Command (m for help):

さて今はメモリー上のパーティション構成は空になりました。パーティションを作成する準備が整いました。 先程検討したように、通常のパーティション構成を使うことにしましょう。 もちろん同じパーティション構成にしたくなければ、厳密に案内にならわないでください。

ブートパーティションを作成する

最初に小さなブートパーティションを作成します。新しいパーティションを作成するにはnと入力します。 そして基本パーティションを選択するのにpと入力するのに続き、1番目の基本パーティションを選択するのに1と入力します。 最初のシリンダーが表示されたら、そのままエンターキーを押してください。最後のシリンダーが表示されたら、32Mバイトサイズののパーティションを作成するのに+32Mと入力してください。

コード表示 3.6: ブートパーティションを作成する

Command (m for help): nCommand action e extended p primary partition (1­4)pPartition number (1­4): 1First cylinder (1­3876, default 1): (エンターキーを押す)Using default value 1Last cylinder or +size or +sizeM or +sizeK (1­3876, default 3876): +32M

さて、pと入力すれば以下のパーティションテーブル表示が見られるはずです。

コード表示 3.7: 作成されたブートパーティション

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes240 heads, 63 sectors/track, 3876 cylindersUnits = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System/dev/hda1 1 14 105808+ 83 Linux

このパーティションをブート可能にする必要があります。このパーティションにブート可能フラグを付加するにはaと入力します。 もう一度pを入力すると、"Boot"欄に*が付いているのがわかるでしょう。

スワップパーティションを作成する

さあスワップパーティションを作成しましょう。 この作業のためには、新規パーティションを作成するのにn、基本パーティションを選択するのにpを入力します. そして2番目の基本パーティション、この例では/dev/hda2を作成するのに2と入力します。 最初のシリンダーが表示されたら、そのままエンターキーを押してください。 最後のシリンダーが表示されたら、512Mバイトサイズののパーティションを作成するのに+512Mと入力してください。 この作業の後、パーティションタイプを設定するのにtと入力します。 先程作成したパーティションを選択するのに2と入力して、このパーティションタイプを"LinuxSwap"にする為に82と入力します。 これらの手順が完了後、pを入力すれば下記のようなパーティションテーブルが表示されるはずです。

コード表示 3.8: スワップパーティション作成後のパーティションテーブル

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes240 heads, 63 sectors/track, 3876 cylindersUnits = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System/dev/hda1 * 1 14 105808+ 83 Linux/dev/hda2 15 81 506520 82 Linux swap

ルートパーティションを作成する

最後にルートパーティションを作成しましょう。 この作業のためには、新規パーティションを作成するのにn、基本パーティションを選択するのにpを入力し

ます. そして3番目の基本パーティション、この例では/dev/hda3を作成するのに3と入力します。 最初のシリンダーが表示されたら、そのままエンターキー

Page 14: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

ます. そして3番目の基本パーティション、この例では/dev/hda3を作成するのに3と入力します。 最初のシリンダーが表示されたら、そのままエンターキーを押してください。 最後のシリンダーが表示されたら、ディスクの残りの空き容量を確保する為にエンターキーを押します。 これらの手順が完了後、pを入力すれば下記のようなパーティションテーブルが表示されるはずです。

コード表示 3.9: ルートパーティション作成後のパーティションテーブル

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes240 heads, 63 sectors/track, 3876 cylindersUnits = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System/dev/hda1 * 1 14 105808+ 83 Linux/dev/hda2 15 81 506520 82 Linux swap/dev/hda3 82 3876 28690200 83 Linux

パーティションの割当てを保存する

パーティションの割当てを保存して、fdiskを終了するにはwを入力します。

コード表示 3.10: 保存してfdiskを終了する

Command (m for help): w

これでパーティションが作成されましたので、ファイルシステムの作成に進むことができます。

4.d. ファイルシステムを作成する

はじめに

さてパーティションが作成されましたので、それぞれにファイルシステムを作成するときが来ました。 もしファイルシステムを選ぶことに興味がなくて、このハンドブックのデフォルトのものを使うことで満足ならば、パーティションにファイルシステムを適用するに進んでください。 そうでなければ利用可能なファイルシステムに関して知るために読み進めてください...。

ファイルシステムとは

Linuxカーネルでは様々なファイルシステムをサポートしています。 いくつかのファイルシステムはamd64アーキテクチャで安定していますが、不安定なファイルシステムもあります。 ext2、ext3は安定しています。 jfsとreiserfsは動作するものの、さらに評価が必要です。 もし人柱希望であれば、サポートされていないファイルシステムに挑戦してみるのも良いかも知れません。

ext2は実証済みで真のLinuxファイルシステムですがメタデータジャーナリングを持ちません。 これは起動時の定期のext2ファイルシステムのチェックにかなりの時間が掛かることもあるということです。 現在、整合性のチェックをとても早く終わらせることのできる次世代のジャーナリングファイルシステムの選択肢があります。 そのために一般的には非ジャーナリングファイルシステムより好まれています。 ジャーナリングファイルシステムはファイルシステムの不整合状態の発生やシステム起動時の大幅な遅延を防ぎます。

ext3はfull data及びordered dataジャーナリングの様に他の優れたジャーナリングモードに加えて素早い回復のためのメタデータジャーナルを提供するext2ファイルシステムのジャーナル化バージョンです。ext3はとても信頼できる良いファイルシステムです。 ほとんど全ての状況下で高いパフォーマンスを上げることができるハッシュ化されたb­treeインデックスの追加オプションがあります。 Indexingを有効化するには、mke2fsコマンドに、­O dir_indexを追加してください。 要するにext3は素晴らしいファイルシステムということです。

ReiserFSは全般的にとても良い性能であり、小さいファイル(4k以下のファイル)を扱うときはext2やext3よりもとてもときには10­15倍の高い性能を発揮するB*­ツリーベースのファイルシステムです。 またReiserFSはとても良くできていて、メタデータジャーナリングを持ちます。 カーネル2.4.18以降では、ReiserFSは一般的な目的と大規模ファイルシステムの作成、たくさんの小さいファイルの利用、とても大きいファイルや大多数のファイルが含まれるディレクトリなどを扱う極端なケースにも堅実で使用に適しています。

XFSは強健な特徴を持ち、拡張性に最適化されたメタデータジャーナリングを持つファイルシステムです。 Linuxでのこのファイルシステムの使用はSCSI/ファイバーチャンネル記憶装置と無停電電源供給をもつ高機能なシステム以外はお勧めしません。 XFSは積極的にRAM上に処理中のデータをキャッシュするので、 不適切な設計のプログラム(ディスクにファイルを書き込むときに適切な注意を取らないもの。 そういったものは非常に少ないですが)では、不意にシステムがダウンしたとき、かなりのデータを失う可能性があります。

JFSはIBMの高性能なジャーナリングファイルシステムです。 最近あともう少しで製品という所まで来てますが現時点では一般的な安定性において肯定的か否定的かを述べるのに十分な実績がありません。

パーティションにファイルシステムを適用する

パーティションやボリュームにファイルシステムを作成するには、それぞれのファイルシステムに合った利用可能なツールがあります。

ファイルシステム 作成コマンドext2 mke2fs

ext3 mke2fs ­j

reiserfs mkreiserfs

xfs mkfs.xfs

jfs mkfs.jfs

例えば、 ブートパーティション(この例では/dev/hda1)をext2に、ルートパーティション(この例では/dev/hda3)をext3(今回の例として)にするには、以下の様にします。

コード表示 4.1: パーティションにファイルシステムを適用する

# mke2fs /dev/hda1# mke2fs ­j /dev/hda3

さあ新しく作成されたパーティションにファイルシステムを作成しましょう。

スワップパーティションを有効にする

Page 15: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

スワップパーティションを有効にする

mkswapはスワップパーティションを初期化するのに使うコマンドです。

コード表示 4.2: スワップパーティションを初期化する

# mkswap /dev/hda2

スワップパーティションを有効にするにはswaponを使用します。

コード表示 4.3: スワップパーティションを有効にする

# swapon /dev/hda2

上記のコマンドでスワップを作成して有効にしましょう。

4.e. マウント

さてパーティションが初期化されてファイルシステムが収まったので、それらのパーティションをマウントするときが来ました。 mountというコマンドを使います。 作成したそれぞれのパーティション用にマウントに必要なディレクトリを作成するのを忘れないでください。 例ではルートとブートパーティションをマウントします。

コード表示 5.1: パーティションをマウントする

# mount /dev/hda3 /mnt/gentoo# mkdir /mnt/gentoo/boot# mount /dev/hda1 /mnt/gentoo/boot

注意: もし/tmpを別のパーティションとして置きたいのであれば、マウント後にパーミッションを変更するのを忘れないでください。: chmod 1777 /mnt/gentoo/tmp。これは/var/tmpも同様です。

procファイルシステム(カーネルとの仮想インターフェイス)も/procにマウントする必要があります。 しかし、最初にパーティション上に色々なファイルを置く必要があります。

Gentooインストールファイルをインストールするに進みましょう。

5. Gentooインストールファイルをインストールする

5.a. stage tarballのインストール

日時を正確に設定する

先に進める前に、日時をチェックして、更新しておく必要があります。 狂った時計は後でおかしな結果が起きる元になります。

現在の日時を確認するには、dateを実行してください。

コード表示 1.1: 日時を確認する

# dateFri Mar 29 16:21:18 UTC 2005

もし表示された日時が間違っていたら、date MMDDhhmmYYYYを使って更新してください。 構文としては、(Month(月)、Day(日)、hour(時)、minute(分)、Year(年)を表しています)。現在のところ、UTC時間を使用すべきです。自分のタイムゾーンに、後で設定することができます。例えば、2005年3月29日 16:21を設定したい場合には以下のように実行します。

コード表示 1.2: UTC日時の設定

# date 032916212005

stageの選択

次のステップとして、stage3tarballをシステムにインストールする必要があります。 必要なtarballをインターネットからダウンロードするか、一般的なGentoo UniversalCDから起動しているなら、ディスクからコピーすることができます。 多くの場合、どのstageファイルをダウンロードすればいいのかを判断するのには、uname ­mコマンドの結果が役に立つでしょう。

Minimal CDや LiveDVD はstage3アーカイブを含みません。

5.b. 一般的な選択: インターネットからダウンロードしたstageを使う

stagetarballのダウンロード

Gentooをインストールしようとしているファイルシステムのマウントポイントに移動してください。 (大概は、次の場所です。/mnt/gentoo)

コード表示 2.1: インストール先のマウントポイントに移動

# cd /mnt/gentoo

インストールに使用している媒体によりますが、stageをダウンロードするツールが2、3用意されています。 もしlinksが使用可能なら、すぐにでもtheGentoo mirrorlistにアクセスして、最寄のミラーを選択することができます。 links http://www.gentoo.org/main/en/mirrors.xmlと入力してエンターを押してください。

もしlinksが使えない場合には、lynxを一時的に使用できるでしょう。 proxyを使う必要がある場合には、http_proxyとftp_proxyを設定してください。

コード表示 2.2: lynxでのproxy情報の設定

# export http_proxy="http://proxy.server.com:port"

Page 16: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# export http_proxy="http://proxy.server.com:port"# export ftp_proxy="http://proxy.server.com:port"

ここから先はlinksが使用できると仮定して説明してきます。

お近くのミラーを選んでください。通常はHTTPのミラーで十分ですが、他のプロトコルのミラーもあります。 $release­dirディレクトリにアクセスしてください。あなたのアーキテクチャ(もしかしたら、それらは個別のサブアーキテクチャ名のディレクトリ配下に置かれているかもしれません) ひとつを選んで、Dをおしてダウンロードしましょう。ダウンロードが完了したら、Qを押してブラウザを終了させます。

コード表示 2.3: linksでミラーリストを見る

# links http://www.gentoo.org/main/en/mirrors.xml(linkでproxyが必要な場合)# links ­http­proxy proxy.server.com:8080 http://www.gentoo.org/main/en/mirrors.xml

stage3のtarballをダウンロードするようにして下さい。今後stage1またはstage2を用いたインストールはサポートされません。

ダウンロードしたstage tarballの正当性を評価したいなら、 md5sumを使って、その出力とミラーで配布されているMD5チェックサムを比較してください。

コード表示 2.4: stage tarballの正当性のチェック

# md5sum ­c $stage3.DIGESTS$stage3: OK

stage tarballの展開

さぁ、それではダウンロードしたstageをシステムに展開しましょう。 もっとも簡単な方法として、tarを使います。

コード表示 2.5: stageの展開

# tar xvjpf stage3­*.tar.bz2

上記と同様のオプション(xvjpf)を必ず使うようにしてください。xはアーカイブの展開、 vは展開中に何が起こっているのかを表示(これは、任意です)、jはbzip2の解凍、 pはパーミッションの保存、そしてfは、標準入力からではなく、ファイルから展開することを表しています。

これでstageはインストールされました。Portageのインストールへ進みましょう。

5.c. Portageのインストール

Portageスナップショットの展開

ここでPortageスナップショット(これは、どのようなソフトウェアをインストールできるか、またどのようなprofileがあるのか、と言った情報が入った複数のファイルのことです)をインストールする必要があります。

Portageスナップショットをダウンロードし、インストール

あなたのファイルシステムにマウントした場所へ行ってください(多くの場合/mnt/gentoo)。

コード表示 3.1: マウントポイントへ移動

# cd /mnt/gentoo

links(またはlynx)を起動し、 Gentoo mirror listへ行ってください。 そしてあなたのいる場所に近いミラーを選択してから、snapshots/ディレクトリを開いてください。 そこで、最新のPortageスナップショット(portage­latest.tar.bz2)を選択して、Dキーを押してダウンロードしてください。

コード表示 3.2: Gentooミラーリストの参照

# links http://www.gentoo.org/main/en/mirrors.xml

次に、Qキーを押してブラウザを終了させます。 これで、Portageスナップショットが/mnt/gentooに保存されているでしょう。

ダウンロードしたスナップショットの完全性を確認したい時は、md5sumを使用し、 その出力と、ミラーから提供されているMD5チェックサムとを比較します。

コード表示 3.3: Portageスナップショットの完全性の確認

# md5sum ­c portage­latest.tar.bz2.md5sumportage­latest.tar.bz2: OK

次にこのPortageスナップショットをあなたのファイルシステム上で展開します。 次のコマンドを実行する際には、最後のオプションが小文字のcではなくて、 大文字のCであることに注意してください。

コード表示 3.4: Portageスナップショットの展開

# tar xvjf /mnt/gentoo/portage­latest.tar.bz2 ­C /mnt/gentoo/usr

5.d. コンパイルオプションの設定

はじめに

Gentooを最適化するために、Portageの振る舞いに影響を与えるいくつかの変数を設定することができます。 これらの変数は、すべて(exportを使用して)環境変数として設定することも可能ですが、 環境変数は永続的なものではありません。設定を保存しておくために、Portageの設定ファイル/etc/make.confがあります。 これが今から編集するファイルです。

注意: 設定可能なすべての変数は、/mnt/gentoo/usr/share/portage/config/make.conf.exampleにコメント付きで列挙されています。 Gentooのインストールを成

功させるには、次に挙げられている変数を設定するだけでよいです。

Page 17: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

あとで話題にする最適化のための変数を編集するために、 好みのエディタを立ち上げてください(このガイドではnanoを使います)。

コード表示 4.1: /etc/make.confを開く

# nano ­w /mnt/gentoo/etc/make.conf

おそらく気づいていると思いますが、make.conf.exampleファイルは、 他の設定ファイル同様の構造をしています(訳注:bashスクリプトと同じ作法です)。 "#"で始まる行はコメントで、その他の行には、VARIABLE="content"という構文で変数を定義します。 いくつかの変数については、次の節で話題にします。

CFLAGSとCXXFLAGS

CFLAGSとCXXFLAGS変数には、それぞれ、CおよびC++コンパイラであるgccに対する最適化のためのフラグを定義します。 ここでは、一般的なものを定義しますが、それぞれのプログラムごとに最適なフラグを使うことで、 最高のパフォーマンスを出すことが可能となります。 これは、それぞれのプログラムが異なっていることによります(訳注:プログラムごと、 アーキテクチャごとにパフォーマンスへの考慮や設計が異なり、フラグによってどれだけ最適化されるかということは、プログラムによって異なると言うこと。)

make.confには、一般的にはシステム全体の動作を損なわない範囲で最善の最適化フラグを定義すべきです。 この変数に、実験的な設定をしないでください。 過剰な最適化はプログラムの動作をおかしくします(クラッシュや誤動作の元です)。

すべての最適化オプションを説明はしません。 そのすべてを知りたいなら、GNU Online Manual(s)やgccのinfo(info gcc ­­ このコマンドは既に稼動しているLinuxシステムでのみ動作します)を読んでください。 make.conf.exampleファイルにもたくさんの例や情報が含まれています。 こちらも忘れずに読んでください。

始めに­march=か­mtune=フラグを設定してください。 これには、ターゲットとするアーキテクチャの名前を指定します。 どんなオプションを設定できるかは、make.conf.exampleファイルに(コメントとして)書かれています。

次に、­Oフラグ(これは、大文字のOで、ゼロではありません)を設定します。 これは、gccの最適化クラスのフラグです。 s(サイズの最適化)、0(最適化なし)、そして、スピードの最適化フラグ1、2、さらに3までが指定できます(各クラスは、この順番により強い最適化を行います。より強い最適化をするクラスは、弱い最適化クラスと同様の効果を持ちつつ、追加の最適化を行います)。 ­O2 が推奨されたデフォルト指定です。­O3をシステム全体で使用した場合には、問題が発生することが分かっていますので、­O2にとどめておくことをお勧めします。

他の人気がある最適化フラグとして­pipe(コンパイル時の様々な段階間の情報のやり取りに、テンポラリファイルではなくパイプを使うようにします)があります。 これは生成されるコードには影響しませんが、より多くのメモリが使われます。メモリが少ないシステムでは、gccが終了してしまうかもしれません。 そういった場合には、このフラグを使わないでください。

­fomit­frame­pointer(必要ない関数に対するレジスタ内のフレームポインタを保持しません)を使うと、 アプリケーションのデバッグが非常に困難になります。

CFLAGSとCXXFLAGSを定義するとき、 それぞれの最適化オプションは同じものを使うべきです。 展開したstage3アーカイブに含まれるデフォルトの設定は十分に最適化されています。 下記の例は、あくまで例です。

注意: 様々なコンパイルオプションがどのようにシステムに影響を及ぼしうるかしるために、link="/doc/en/gcc­optimization.xml">Compilation Optimization Guide(未訳)を見てみるのもよいでしょう。

MAKEOPTS

MAKEOPTSには、パッケージをインストールするときに、 いくつ平行してコンパイルを走らせるかを定義します。 あなたのシステムのCPU数(またはCPUコア数)に1を加えた数を指定するのが賢明ですが、これは目安であり常にそれが最善であるというわけではありません。

コード表示 4.2: 一般的な、CPUが1個のシステムに対するMAKEOPTSの設定

MAKEOPTS="­j2"

さぁ準備ができました。次へ進みましょう!

/mnt/gentoo/etc/make.confをあなたの好みに応じて編集し、保存してください。 (nanoユーザは、Ctrl­Xを押します) それでは、Gentooベースシステムのインストールへ進んでください。

6. Gentooベースシステムのインストール

6.a. chrootする

自由選択: ミラーサイトの選択

すばやくソースコードをダウンロードするために、一番回線速度が速いミラーサイトを選択することをお勧めします。 Portageは、GENTOO_MIRRORS変数をmake.confファイルから参照し、その変数に羅列されいているミラーサイトを使用します。 Gentooサイトのmirror list (日本語訳)を参照し、(高確率で一番速いサイトとしての)一番近い一つのミラーサイト(もしくは複数のミラーサイト)を探すことができます。 しかし、お望みのミラーサイトを選択するのに使いやすいインターフェースを備えるmirrorselectというすばらしいツールを提供しています。 選択したいミラーまでカーソルを動かしスペースキーを押して一つまたはそれ以上のミラーを選択してください。

コード表示 1.1: GENTOO_MIRRORS変数用にmirrorselectを使用する

# mirrorselect ­i ­o >> /mnt/gentoo/etc/make.conf

make.confでの2番目に重要な設定は、SYNC変数の設定です。 この変数には、Portageツリーを更新するときに使用したいrsyncサーバを設定します。(Portageツリーとは、Portageがソフトウェアをダウンロードしてインストールのに必要な情報の全てが書かれているebuildや、スクリプトの集まりです。)自分でSYNCサーバを手作業で指定できますが、mirrorselectはその作業を以下のように簡単にします。

コード表示 1.2: mirrorselectを使ってrsyncミラーを選択する

# mirrorselect ­i ­r ­o >> /mnt/gentoo/etc/make.conf

Page 18: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# mirrorselect ­i ­r ­o >> /mnt/gentoo/etc/make.conf

mirrorselectを実行した後、/mnt/gentoo/etc/make.conf内の設定が重複していないかを確認したほうがよいでしょう。

注意: make.confにSYNCのサーバを自分で設定したいのであれば、community mirrors listを参考にして自分に近いミラーを選択するのがよいでしょう。 単一のホストからなるミラーではなく、rsync.us.gentoo.orgのような輪番のものを選ぶことを推奨します。 そうすると負荷を分散し、あるサーバがオフラインになった場合でもフェイルセーフになります。

DNS情報をコピーする

新しい環境に入る前にしなければならないことが、まだ一つ残っています。 それは、新しい環境でもネットワーク環境が確実に動くようにするために、/etc/resolv.confにあるDNS情報を、新しい環境にコピーすることです。 /etc/resolv.confにはあなたのネットワーク環境における ネームサーバーの情報が含まれています。

コード表示 1.3: DNS情報をコピーする

("­L"オプションは、シンボリックリンクをコピーしないようにするために必要です)# cp ­L /etc/resolv.conf /mnt/gentoo/etc/

/procと/devファイルシステムのマウント

これからすぐ、Linuxのルートを新しい場所へと変更します。 新しい環境がうまく動作することを確かめるために、いくつかのファイルシステムを新しい場所から見えるようにしておく必要があります。

chroot後の環境でもカーネルが提供する情報を参照できるようにするために、 /mnt/gentoo/procに/procファイルシステムをマウントしてください。 それから、/devファイルシステムをbindマウントします。

コード表示 1.4: /procと/devのマウント

# mount ­t proc none /mnt/gentoo/proc# mount ­­rbind /dev /mnt/gentoo/dev

新しい環境に入る

さて、全てのパーティションは初期化され、ベース環境はインストールされました。 ついに、あなたはchrootにより新たにインストールされた環境に入ります。 これは、現在のインストーラの環境(インストールCDやその他のインストールメディア)から、 あなたのインストールした環境(すなわち初期化されたパーティション)に移行することを意味します。

このchrootの過程は3段階のステップからなります。 まず最初に、chrootによって、ルートディレクトリを(インストールメディア上の)/ から、(あなたのパーティション上にある)/mnt/gentooに変更します。次に、システムファイルの環境変数を更新するコマンドenv­updateを使って、新しい環境をつくります。最後に、sourceコマンドでこれらの変数をメモリ上に読み込みます。

コード表示 1.5: 新しい環境にchrootする

# chroot /mnt/gentoo /bin/bash# env­update>> Regenerating /etc/ld.so.cache...# source /etc/profile# export PS1="(chroot) $PS1"

おめでとうございます!あなたは自分のGentoo Linux環境に入ることができました。 もちろん、まだいくつかのセクションが残っており、完了までは程遠いのですが:­)

6.b. Portageシステムの設定

Portageツリーの更新

ここで、Portageツリーを最新状態に更新すべきです。 emerge ­­syncが、これを行います。

コード表示 2.1: Portageツリーの更新

# emerge ­­sync(一部のフレームバッファやシリアルコンソールなどの低速な端末を使用している場合、この工程にかかる時間を短くするために、­­quietオプションを以下のように追加してもよいです。)# emerge ­­sync ­­quiet

rsync通信を遮断してしまうファイアウォールの環境内にいる場合は、代わりにemerge­webrsyncを使用します。それは、portageのスナップショットをダウンロードしてインストールします。

Portageの新しいバージョンが利用可能で、新しいものに更新すべきであることを警告されたら、emerge ­­oneshot portageを使用してすぐに更新すべきです。

適切なprofileの選択

まず、所定の位置にあるちょっとした定義について説明します。

profileは、すべてのGentooシステムにとって根幹を成すものです。 USE、CFLAGSやその他の重要な変数の初期設定値を指定しているだけでなく、 システムの状態を特定範囲内のパッケージバージョンに留めておく役目もあります。 これは、Gentoo開発者によってすべて整備されています。

以前は、ユーザがそういったprofileを触ることはありませんでした。 しかし、場合によってはprofileの変更が必要と判断される事もあるかもしれません。

以下のコマンドで、現在使用中のprofileが何であるかを確認することができます。

コード表示 2.2: システムprofileの検証

# eselect profile list

Page 19: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# eselect profile listAvailable profile symlink targets: [1] $profile * [2] $profile/desktop [3] $profile/server

デフォルトのprofileでは、Linux 2.6系システムのものが提供されています。 これは推奨の設定ですが、別のprofileを使うという選択肢もあります。

アーキテクチャによっては、desktopとserver subprofileを利用できる場合があります。 eselect profile list>を実行することで、利用可能なプロファイルがすべて表示されます。

アーキテクチャで利用可能なprofileを確認したら、お好みで別のprofileを使用することもできます。

コード表示 2.3: profileの変更

eselect profile set 2

注意: developer subprofileは特にGentoo Linuxの開発作業のためにものです。 一般的な開発環境の設定を助けるものではありません。

USE変数の設定

USEはGentooがユーザに提供する最もパワフルな変数の一つです。 プログラムの中には、特定のフラグを設定することによって、副次的なサポートを有効にしたり無効にしたりできるものがあります。 たとえばGTKサポートもしくはQtサポートを有効にしてコンパイルすることができるプログラムがあります。他には、SSLサポートを有効にするか無効にするか、 X11サポート(X­server)の替わりにフレームバッファサポート(svgalib) を有効にするか、などがあります。

多くのディストリビューションは、パッケージをありったけのサポートを有効にしてコンパイルしているため、依存関係が膨大になってしまっていることは言うまでもなく、 プログラムのサイズや起動時間までも増大させてしまっています。 Gentooならば、パッケージをコンパイルするときにつけるべきオプションを 自分で定義することができます。これにはUSEフラグが一役買っています。

USE変数には、コンパイルオプションに対応するキーワードを定義します。 たとえば、sslはプログラムに備わるSSLサポートをコンパイルします。 ­XはXサーバのサポートを削除します。(キーワードの前にマイナス記号をつけます。)gnome gtk ­kde ­qt4は、 GNOME(とGTK)サポートを有効にし、KDE(とQt)サポートを無効にしてプログラムをコンパイルします。システムを完全にGNOME向けに調整します。

初期のUSE設定は、使用しているprofileのmake.defaultsファイルにあります。 make.defaultsは、/etc/make.profileシンボリックリンクが指すディレクトリと、同じくすべてのその親ディレクトリで見つかります。 初期のUSE設定は、それらmake.defaultsファイルのすべてのUSE設定を組み合わせたものになります。 /etc/make.confに記述した内容は、これらの初期設定に反映されます。 もしUSE設定に何かを追加した場合、それは初期設定リストに追加されます。 もし何かを(マイナス記号を頭につけることで)USE設定から取り除いた場合、 それは(リストにあれば)初期設定リストから取り除かれます。 決して、/etc/make.profileディレクトリ以下の内容を変更しないでください。Portageをアップデートするときに、上書きされてしまいます!

Gentooハンドブックの第二部にあるUSEフラグに、USEについての詳細な解説があります。また、システムにある/usr/portage/profiles/use.descに、使用可能なUSEフラグについての詳細な解説があります。

コード表示 2.4: 使用可能なUSEフラグの参照

# less /usr/portage/profiles/use.desc(矢印キーを使用してスクロールし、'q'キーで終了します)

DVD、ALSA、CD­Rサポートを含むKDEベースのシステムのためのUSEフラグの例を以下に示します。

コード表示 2.5: /etc/make.confを開く

# nano ­w /etc/make.conf

コード表示 2.6: USEフラグの設定

USE="­gtk ­gnome qt4 kde dvd alsa cdr"

自由選択: glibcのロケール

あなたは、おそらくシステムで一つないし二つのロケールだけしか使用しないでしょう。 /etc/locale.genで必要なロケールを指定できます。

コード表示 2.7: /etc/locale.genを開く

# nano ­w /etc/locale.gen

以下のロケール指定は、関連する文字符号(UTF­8のような)を含む、英語(アメリカ)とドイツ語(ドイツ)ロケールを生成する例です(訳注: 日本語訳には日本語に関するロケールも追加しています)。

コード表示 2.8: ロケールの指定

en_US ISO­8859­1en_US.UTF­8 UTF­8de_DE ISO­8859­1de_DE@euro ISO­8859­15ja_JP.EUC­JP/EUC­JPja_JP.UTF­8/UTF­8ja_JP/EUC­JP

次のステップでは、locale­genを実行します。これにより、 /etc/locale.genファイルで指定した全てのロケールが生成されます。

では、カーネル設定へ進んでください。

7. カーネル設定

7.a. タイムゾーン

最初にタイムゾーンを選択する必要があります。そうするとシステムがどの地域に置かれているかがわかります。 自分のタイムゾーン

Page 20: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

を/usr/share/zoneinfoから探して、/etc/localtimeにコピーしてください。 /usr/share/zoneinfo/Etc/GMT*タイムゾーンは、名前から予測されるゾーンを指し示してはいません。 GMT­8は、事実GMT+8です。

コード表示 1.1: タイムゾーン情報を設定する

# ls /usr/share/zoneinfo(GMTを使うとして)# cp /usr/share/zoneinfo/GMT /etc/localtime(訳注:JST(日本時間)を使う例)# cp /usr/share/zoneinfo/Japan /etc/localtime

7.b. ソースをインストールする

カーネルを選択する

全ディストリビューションの構成の核をなすのは、Linuxカーネルです。 カーネルはユーザープログラムとシステムハードウェアの間の階層です。 Gentooではユーザーに選択できる色々なカーネルソースを提供しています。 説明付の全リストはGentoo Kernel Guide(日本語訳)で見られます。

AMD64ベースのシステムでは、gentoo­sources(amd64特有の安定化、パフォーマンス、ハードウェアサポートパッチがあるカーネル 2.6ソース)があります。

カーネルソースを選んで、emergeを使ってインストールしてください。 この時点での、x11­orgや他の依存パッケージのインストールをさけるため、USE="­doc"は必要です。 USE="symlink"は、新規のインストールには必要ありません。 しかし、/usr/src/linuxのきちんとした生成を確実にします。

コード表示 2.1: カーネルソースをインストールする

# USE="­doc symlink" emerge gentoo­sources

/usr/srcの中を見ると、選択したカーネルソースを指すlinuxと呼ばれるシンボリックリンクが見られるでしょう。 この場合は、カーネルソースはgentoo­sources­2.6.12­r10を指し示しています。 あなたのバージョンは異なることを覚えておいてください。

コード表示 2.2: カーネルソースへのシンボリックリンクを見る

# ls ­l /usr/src/linux lrwxrwxrwx 1 root root 12 Oct 13 11:04 /usr/src/linux ­> linux­2.6.12­gentoo­r10

さあカーネルソースを設定して、コンパイルするときが来ました。この作業にはgenkernelが使えます。 このツールはインストールCDで使われている一般的なカーネルを構築します。最初に"手動設定"を説明します。 これがあなたの環境を最適化する一番良い方法ですから。

もし自分のカーネルを手動で設定したいなら、すぐに一般的な選択: 手動設定へ進んでください。 もしgenkernelを使いたいなら、代わりにもう一つの選択:genkernelを使うを読んでください。

7.c. 一般的な選択: 手動設定

はじめに

カーネルの手動設定はLinuxユーザがこれまでに実行しなければならない手続きの中で最も難しい手続きとしばしば見なされています。 何もそれほど真実ではありません。2、3のカーネル設定の後では、難しかったことすら思い出せないでしょう。;)

しかし、一つだけは本当です。手動でカーネルの設定を始めるときに自分のシステムを判ってなければなりません。 ほとんどの情報はlspciを含むpciutilsをemergeすること(emerge pciutils)によって集めることが出来ます。 これでchrootされた環境で、lspciを使用することが出来ます。 lspciがはき出すpcilibの警告(たとえば pcilib: cannot open /sys/bus/pci/devices)は、安全に無視することが出来ます。 別にnon­chrootedでlspciを走らせることもできます。 結果は同じです。 インストールCDではどんなカーネルモジュールを使っているかを見るためにlsmodを実行することもできます(これはどんな機能が利用可能かの良いヒントを与えてくれるかも知れません)。

それではカーネルソースのディレクトリに行って、make menuconfigを実行しましょう。これでncursesベースの設定メニューが立ち上がります。

コード表示 3.1: menuconfigを実行する

# cd /usr/src/linux# make menuconfig

いくつかの設定項目が出てきます。 最初に有効にしなければならないいくつかのオプションをリストアップしましょう (そうしなければGentooは機能しないか、特別な調整無しではうまく機能しないでしょう)。

必要なオプションを有効にする

まず最初に開発中や試験的なコード/ドライバーの使用を有効にします。必ず有効にしてください。 そうしないといくつかのとても重要なコード/ドライバーが表示されません。

コード表示 3.2: 試験的なコード/ドライバを選択する

Code maturity level options ­­­> [*] Prompt for development and/or incomplete code/drivers

さて、General Setupを選択し、udev使用のためのホットプラグ可能デバイスのサポートを有効にします。 これはAMD64はカーネル2.6のみがサポートしているからです。

コード表示 3.3: 一般的なサポート

General setup ­­­> [*] Support for hot­pluggable devices

次に正確なプロセッサの種類を選択しましょう。

Page 21: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

コード表示 3.4: プロセッサの種類と機能の選択

Processor type and features ­­­> Processor family (AMD­Opteron/Athlon64) ­­­> ( ) AMD­Opteron/Athlon64 ( ) Intel EM64T ( ) Generic­x86­64"

次にFile Systemsに行き、使用するファイルシステムの項目を選択してください。 それらをモジュールとしてコンパイルしないでください。 さもないとGentooシステムはパーティションをマウントすることができないでしょう。 Virtual memory、 /proc file systemも選択してください。

コード表示 3.5: 必要なファイルシステムを選択する

File systems ­­­> Pseudo Filesystems ­­­> [*] /proc file system support [*] Virtual memory file system support (former shm fs)

(下記のオプションで、システムに必要なものを1つ以上選択 訳注:ルートパーティションで選択したファイルシステムは必ず有効にする必要があります) <*> Reiserfs support <*> Ext3 journalling file system support <*> JFS filesystem support <*> Second extended fs support <*> XFS filesystem support

もしインターネット接続にPPPoEを使っていたり、モデムでダイアルアップしているなら、カーネル内の以下のオプションが必要になります。

コード表示 3.6: PPPoEに必要なドライバーを選択する

Device Drivers ­­­> Networking Support ­­­> <*> PPP (point­to­point protocol) support <*> PPP support for async serial ports <*> PPP support for sync tty ports

2つの圧縮オプションは差し支えは無いけれども、絶対に必要でもありません。 PPP over Ethernetオプションもそうです。 これはカーネルモードのPPPoEをするために設定されたときだけにrp­pppoeに使用されるものです。

もしPPPoEを使用する必要があるなら、カーネルにイーサネットカード用のサポートを含めることを忘れないでください。

もしマルチCPUのOpteronやマルチコア(たとえばAMD64 X2)システムがあるなら、"Symmetric multi­processing support"を有効にしなければなりません。

コード表示 3.7: SMPサポートを有効にする

Processor type and features ­­­> [*] Symmetric multi­processing support

もしUSBの入力デバイス(キーボードやマウスなど)を使用するなら、以下も有効にするのを忘れないでください。

コード表示 3.8: 入力デバイスのUSB Supportを有効にする

Device Drivers ­­­> USB Support ­­­> <*> USB Human Interface Device (full HID) support [*] HID input layer support

カーネルの設定が終れば、コンパイルとインストールに進んでください。

コンパイルとインストール

これでカーネルの設定がされたので、コンパイルとインストールするときが来ました。 設定を終了して、コンパイルの過程を始めてください。

コード表示 3.9: カーネルをコンパイルする

# make && make modules_install

カーネルのコンパイルが終れば、カーネルイメージを/bootにコピーしてください。 あなたが適切だと思うお好みの名前を、あなたのカーネルに使用してください。 そして、ブートローダを設定するときに、その名前が後で必要になりますから覚えておいてください。 <kernel­version>を、あなたのカーネルの名前とバージョンに置き換えるの覚えておいてください。

コード表示 3.10: カーネルをインストールする

# cp arch/x86_64/boot/bzImage /boot/kernel­2.6.12­gentoo­r10

それではカーネルモジュールの設定に進みましょう。

7.d. もう一つの選択: genkernelを使う

もしこのセクションを読んでいるなら、自分のカーネル設定にgenkernelスクリプトを使うのを選んだということです。

さてカーネルのソースツリーはインストールされました。 自動的にカーネルを構築するのにgenkernelスクリプトを使ってカーネルをコンパイルするときがやって来ました。 genkernelはインストールCDのカーネルが設定されるのとほとんど同じ方法でカーネル設定するように動作します。 カーネルを構築するのにgenkernelを使うときは、通常はシステムはインストールCDがするように起動時にすべてのハードウェアを検出します。 genkernelではどんな手動のカーネル設定も要求されないので、カーネルをコンパイルするのが苦手だなあという人には理想的な解決策です。

それではgenkernelの使い方を見てみましょう。始めにgenkernelのebuildをemergeします。

コード表示 4.1: genkernelをemergeする

Page 22: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# emerge genkernel

さあgenkernel allを実行して、カーネルソースをコンパイルしましょう。 しかしgenkernelはほとんどすべてのハードウェアサポートを含むカーネルをコンパイルするので、コンパイルが終了するまでにはかなりの時間を要することを覚えておいてください。

もし、ブートパーティションのファイルシステムにext2かext3以外(訳注:ReiserFS、JFS、XFSなど)を使用する場合は、genkernel ­­menuconfig allを使って手動でカーネルを設定し、カーネルの中にそのファイルシステムを組み込む必要があることに気を付けてください(つまり、モジュールとしてでは無く)。

コード表示 4.2: genkernelを実行する

# genkernel all

一旦genkernelが完了すると、カーネル、すべてのモジュールそしてイニシャルルートディスク(initrd)が作成されます。 このハンドブックで後程ブートローダを設定するときにカーネルとinitrdを使います。 ブートローダの設定ファイルを書くときに必要になるので、カーネルとinitrdの名前を書き留めておきましょう。 "実際"のシステムが稼働し始める前に、(インストールCDでのように)initrdは起動後すぐにハードウェアの自動検出を始めます。

コード表示 4.3: 作成されたカーネルイメージとinitrdの名前を確認する

# ls /boot/kernel* /boot/initramfs*

さあ、システムがよりインストールCDのようにするために、もう1つのステップを実行しましょう。 coldplugをemergeしましょう。initrdはシステムを起動するのに必要なハードウェアを検出しますが、coldplugは他のすべてのハードウェアを検出します。 coldplugをemergeして有効にするには、以下のように入力してください。

コード表示 4.4: coldplugをemergeして有効にする

# emerge coldplug# rc­update add coldplug boot

7.e. カーネルモジュールの設定

モジュールの設定

自動的にロードさせたいモジュールを/etc/modules.autoload.d/kernel­2.6に記入してください。 もし望むなら、モジュールに追加オプションを加えることもできます。

すべての利用可能なモジュールを見るには、次のfindコマンドを実行してください。 "<kernel version>"に今コンパイルしたカーネルのバージョンを入れてください。

コード表示 5.1: すべての利用可能なモジュールを見る

# find /lib/modules/<kernel version>/ ­type f ­iname '*.o' ­or ­iname '*.ko'

例えば、3c59x.oモジュールを自動でロードするなら、kernel­2.6ファイルを開いて、モジュール名をそこに記入してください。

コード表示 5.2: /etc/modules.autoload.d/kernel­2.6を編集する

# nano ­w /etc/modules.autoload.d/kernel­2.6

コード表示 5.3: /etc/modules.autoload.d/kernel­2.6

3c59x

システムの設定に進んで、インストールを続けてください。

8. システム設定

8.a. ファイルシステム情報

fstabって何

Linuxにおいて、システムに使用されている全パーティションは/etc/fstabに記述されていなければなりません。このファイルにはそれぞれのパーティションのマウントポイント(ファイルシステムの構築のときに出てきた)、どのように、どんな特別なオプションでマウントされるか(自動的にマウントするか否か、ユーザーがマウントできるかどうか等)の情報が含まれます。

/etc/fstabの作成

/etc/fstabは特別な構文を使います。各々のラインは6つのフィールドから成り、空白(スペース、タブもしくはその両方)で分けられています。各々のフィールドにはそれぞれの意味があります。

1番目のフィールドにはパーティションが記述されています。(デバイスファイルのパス)

2番目のフィールドにはパーティションがマウントされるべきマウントポイントが記述されています。3番目のフィールドにはパーティションに使用されているファイルシステムが記述されています。4番目のフィールドにはパーティションをマウントするときに適用したいマウントオプションが記述されています。各々のファイルシステムにはそれぞれ独自のマウントオプションがあるので、全てのオプションを見るには頑張ってマウントのマニュアルを読んでください。(man mount)。複数のマウントオプションはコンマで分けられます。5番目のフィールドはdumpに使用され、そのパーティションがdumpされる必要があるかどうかを記述します。通常ここは0(ゼロ)のままで良いです。6番目のフィールドはfsckに使用され、システムが正常にシャットダウンしなかったときにどの順序でファイルシステムがチェックされるべきかを記述します。ルートパーティションは1に残りのパーティションは2にすべきでしょう。(もしくはもしファイルシステムのチェックが必要の無い場合は0にしてください)。

重要: Gentooが提供している元々の/etc/fstab有効なfstabではありません。 自分のシステムの/etc/fstabを作成しなければなりません。

Page 23: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

重要: Gentooが提供している元々の/etc/fstab有効なfstabではありません。 自分のシステムの/etc/fstabを作成しなければなりません。

コード表示 1.1: /etc/fstabを開く

# nano ­w /etc/fstab

パーティション分割の構成に合ったルールを追加し、CD­ROMドライブのためのルールを付け加えてください。 そして、その他のパーティションやドライブがあれば、当然それらも忘れないでください。

ここで/etc/fstabを作るために、以下の例を使います。

autoはmountにファイルシステムを推測させ(多数のファイルシステムの内の1つで作成され得るリムーバルメディアに推奨されます)、userは非rootユーザーがCDをマウントできるようにします。

パフォーマンスを改善するのに多くのユーザーはマウントオプションとして noatimeオプションを付け加えたいと考えることがあります。 アクセス時間が記録されないので、その結果はより高速なシステムになります(一般的にその記録はほとんど必要ありません)。

/etc/fstabを再チェックして、保存・終了して次に進んでください。

8.b. ネットワーク情報

ホスト名、ドメイン名等

ユーザーが決めなければならない選択の一つは自分のPCの名前です。至極簡単に思えますが多くのユーザーは自分のLinux­pcに適当な名前を見付けるのに苦労してます。事を早く進めるために、選んだ名前は後で変更できることを知っておいてください。判りやすいように、ここでは単にマシンをtux、ドメイン名をhomenetworkと呼ぶことにします。

コード表示 2.1: ホスト名を設定

# nano ­w /etc/conf.d/hostname (hostname変数に自分のホスト名を設定してください)hostname="tux"

次に、もしドメイン名が必要なら、/etc/conf.d/netに設定します。 ISPやネットワーク管理者からそう言われているか、DHCPサーバは持っておらずDNSサーバを持っているときのみドメインが必要になります。 もしネットワークにつなげるときDHCPの設定を行っていれば、DNSやドメイン名に悩む必要はありません。

コード表示 2.2: domain名を設定

# nano ­w /etc/conf.d/net (dns_domain変数に自分のドメイン名を設定してください)dns_domain_lo="homenetwork"

注意: ドメイン名を設定しないことを選択した場合、/etc/issueを編集することで、ログイン画面の"This is hostname.(none)"というメッセージを取り除くことができます。 そのファイルから文字列.\Oを削除するだけです。

もしNISドメインがあれば(これについてわからなければ、それが無いということです)、それも定義しなければなりません。

コード表示 2.3: NISドメイン名を設定

# nano ­w /etc/conf.d/net (nis_domain変数に自分のNISドメイン名を設定してください)nis_domain_lo="my­nisdomain"

注意: DNSとNISの設定に関する情報がもっと欲しい場合は、/etc/conf.d/net.exampleに示されている例を読んでください。 DNS/NISの設定管理を楽にするため、openresolvをemergeしてもよいでしょう。

ネットワークを設定する

「ねえ、もうそれは済んでるんだけど」って気持ちになる前に、Gentooのインストールの初めに設定したネットワークは単にインストール用のものだったことを思い出してください。今ここで自分のGentooシステムに永続的なネットワーク設定をしていきましょう。

注意: bonding、ブリッジ、802.1Q VLANや無線ネットワークなどの高度な話題を含むもっと詳しい情報はGentooネットワーク設定セクションで扱っています。

全てのネットワーク情報は/etc/conf.d/netに集められます。このファイルでは単純な構文が使われているのですが、もしネットワークを手動で設定する方法を知らなれば一見しただけではわからないでしょう。でも恐がらなくてもいいですよ。全て説明しますから。様々な設定を扱った十分にコメントされた例がある/etc/conf.d/net.exampleを利用できます。

DHCPは標準で使用されています。 DHCPを動作させるためには、DHCPクライアントをインストールする必要があります。 これについては必要なシステムツールをインストールするに記述されています。 忘れずにDHCPクライアントのインストールしてください。

もし特定のDHCPのオプションが必要だったり、絶対にDHCPを使いたくなかったりして自分のネットワーク接続の設定が必要ならば、好みのエディターで/etc/conf.d/netを開いてください(この例ではnanoが使われています)。

コード表示 2.4: 編集のために/etc/conf.d/netを開く

# nano ­w /etc/conf.d/net

下記のファイルを見て下さい。

コード表示 2.5: Default /etc/conf.d/net

# This blank configuration will automatically use DHCP for any net.*# scripts in /etc/init.d. To create a more complete configuration,

Page 24: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# scripts in /etc/init.d. To create a more complete configuration,# please review /etc/conf.d/net.example and save your configuration# in /etc/conf.d/net (this file :]!).

自身のIPアドレス、ネットマスク、ゲートウェイを入れるには、config_eth0とroutes_eth0の両方を設定する必要があります。

コード表示 2.6: eth0のIP情報を手動で設定する

config_eth0="192.168.0.2 netmask 255.255.255.0 brd 192.168.0.255"routes_eth0="default via 192.168.0.1"

DHCPを使用するなら、config_eth0を設定してください。

コード表示 2.7: eth0のIPを自動で取得する

config_eth0="dhcp"

全ての有効なオプション項目は/etc/conf.d/net.exampleを読んでください。 あなたの DHCP クライアントのmanページも読み、特別なDHCPオプションが必要かどうか確認してください。

もしいくつかのネットワークインターフェイスがあるなら、config_eth1、config_eth2のように上記ステップを繰り返してください。

さあ設定を保存・終了して次に進みましょう。

ブート時に自動でネットワークを始動させる

ブート時にネットワークインターフェースを有効にさせるには、それぞれのスクリプトをdefaultのランレベルに追加する必要があります。

コード表示 2.8: defaultのランレベルにnet.eth0を追加

# cd /etc/init.d# ln ­s net.lo net.eth0# rc­update add net.eth0 default

もしいくつかのネットワークインターフェイスがあるなら、適当なnet.eth1、net.eth2等の為に起動スクリプトを作成する必要があります。net.eth0の時と同様に作成してください。

ネットワーク情報を書き留める

さてネットワークの情報に関してLinuxシステムに知らせる必要があります。これは/etc/hostsに定義され、自分のネームサーバーでは解決されないホストの為のホスト名とIPアドレスの解決に役立ちます。 これを自分のシステムに定義する必要があります。 自分自身で内部ネットワーク向けのDNSを設定したくない場合は、 ネットワークに存在する、他のシステムも定義してもよいでしょう。

コード表示 2.9: /etc/hostsを開く

# nano ­w /etc/hosts

コード表示 2.10: ネットワーク情報を書き込む

(これは現在のシステムを定義しています)127.0.0.1 tux.homenetwork tux localhost

(自分のネットワークで、以下のように定義した固定IPを持つ必要がある、別のシステムを定義します)192.168.0.5 jenny.homenetwork jenny192.168.0.6 benny.homenetwork benny

保存・終了して次へ進みましょう。

8.c. システム情報

rootのパスワード

最初にrootのパスワードを入力して設定します。

コード表示 3.1: rootのパスワードを設定

# passwd

システム情報

Gentooでは/etc/rc.confを一般的なシステム全般の設定として使用します。/etc/rc.confを開いて、その中のコメントを読んで楽しんでください。:)

コード表示 3.2: /etc/rc.confを開く

# nano ­w /etc/rc.conf

/etc/rc.confの設定が終われば、保存・終了してください。

見て判るように、このファイルには必要な設定の値を決めるのに役立つ良いコメントがされてます。 ユニコードを使って自分のシステムを設定し、標準のエディターとディスプレイマネージャー(gdmやkdmのような)を決める事ができます。

Gentooではキーボード設定を扱うのには/etc/conf.d/keymapsを使います。自分のキーボードを設定するにはこのファイルを編集してください。

コード表示 3.3: /etc/conf.d/keymapsを開く

# nano ­w /etc/conf.d/keymaps

keymapの設定には特に注意してください。もし間違ったkeymapを選ぶとキーボードをタイプするときにとんでもなく変な結果になるでしょう。

Page 25: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

/etc/conf.d/keymapsの設定が終われば、保存・終了してください。

Gentooではクロックオプションの設定には/etc/conf.d/hwclockを使います。必要に応じてこのファイルを編集してください。

コード表示 3.4: /etc/conf.d/hwclockを開く

# nano ­w /etc/conf.d/hwclock

ハードウェアクロックにUTCを使っていないのなら、CLOCK="local"をこのファイルに追加する必要があります。 さもなければ、いくらか時間がずれてしまうでしょう。

さらにsys­libs/timezone­dataパッケージを更新すると、自動的に/etc/localtimeがアップデートされるよう、先に/etc/localtimeへコピーしたタイムゾーンを定義すべきです。 例えば、もしタイムゾーンにGMTを使用しているとするなら、TIMEZONE="GMT"を追加します。

/etc/conf.d/hwclockの設定が終われば、保存・終了してください。

IBM PPC64のシステム上にGentooをインストールしていなければ 、必要なシステムツールをインストールするに進んでください。

9. 必要なシステムツールをインストールする

9.a. システムログツール

いくつかのパッケージは同じ機能を提供してるので、いくつかのツールはstage3アーカイブから無くなっています。今はどれをインストールしたいかを選ぶのは自分次第です。

最初に決める必要のあるツールは、システムにロギング機能を提供するものです。UnixとLinuxにはログ性能の素晴らしい歴史があります。­­ もし望むならログファイルにシステムで起こった全てを記録できます。これはシステムログツールを通して行われます。

Gentooでは選択可能ないくつかのシステムログツールを提供しています。伝統的なシステムロギングデーモンのsysklogdがあります。syslog­ngは高機能なシステムログツールです。そしてmetalogは詳細な設定ができるシステムログツールです。他の選択もPortageを通じて可能でしょう。有効パッケージの数は日毎に増えていますから。

もしsysklogdかsyslog­ngを使おうと思っているなら、これらのシステムログツールにはログファイルをローテーションする機構が無いので、後でlogrotateをインストールしましょう。

選択したシステムログツールをインストールするには、それをemergeして、rc­updateを使って通常にランレベルにスクリプトを追加してください。次の例ではsyslog­ngをインストールします。もちろん自分で選択したシステムログツールに置き換えても構いません。

コード表示 1.1: システムログツールをインストールする

# emerge syslog­ng# rc­update add syslog­ng default

9.b. 自由選択:Cronデーモン

次はcronデーモンです。これは任意で、システムに必須ではありませんが、インストールするのは賢明なことです。しかしcronデーモンとは何でしょうか。cronデーモンは予定されたコマンドを実行します。定期的にあるコマンドを実行する必要があるならとても重宝します。(例えば日毎、週毎、月毎)。

Gentooでは3つのcronデーモンを提供しています。: dcron、fcronそしてvixie­cronです。その内の1つをインストールするのはシステムログツールをインストールするのに似ています。しかし、dcronとfcronでは特別な設定コマンドが必要とされます。すなわちcrontab /etc/crontabです。もし何を選んだら良いかわからなかったら、vixie­cronを使ってください。

ネットワーク無しのインストールではvixie­cronしか選択できません。もし他のcronデーモンが良ければ、後でインストールできるのでお待ちください。

コード表示 2.1: cronデーモンをインストールする

# emerge vixie­cron# rc­update add vixie­cron default(dcronかfcronを選んだときのみ) # crontab /etc/crontab

9.c. 自由選択: ファイルのインデックス

locateを使用して素早くファイルの検索をするために、システム中のファイルのインデックスを作成する場合には、sys­apps/mlocateをインストールする必要があります。

コード表示 3.1: mlocateをインストールする

# emerge mlocate

9.d. ファイルシステムツール

使っているファイルシステムが何かに依りますが、必須のファイルシステムツールをインストールする必要があります。(ファイルシステムの整合性をチェックしたり、追加のファイルシステムを作成する等のために)。 ext2/ext3ファイルシステムを管理するためのツール(e2fsprogs)はシステムの一部としてインストール済みであることに注意してください。

次の表はどのファイルシステムを使っているかでどのツールをインストールする必要があるかを表しています。

ファイルシステム ツール インストールコマンドXFS xfsprogs emerge xfsprogs

ReiserFS reiserfsprogs emerge reiserfsprogs

JFS jfsutils emerge jfsutils

もしEVMSユーザーなら、evmsもインストールする必要があります。

Page 26: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

コード表示 4.1: EVMSユーティリティーをインストールする

# USE="­gtk" emerge evms

USE="­gtk"で依存関係のインストールを避ける事ができます。もしevmsのグラフィカルツールを有効にしたいなら、後でevmsを再コンパイルできます。

自由選択: IBM ハードウェア用 RAID ユーティリティ

もしPOWER5ベースのシステム上でSCSI RAIDを使っているなら、RAIDディスクアレイを扱えて、アレイ上の状況を取得したり、色々な機能の中のマイクロコードを更新できるiprutilsのインストールを考慮すべきです。

コード表示 4.2: iprutils のインストール

# emerge iprutils

9.e. ネットワークツール

もし他の追加のネットワーク関連ツール(pppやdhcpクライアント等)を必要としなければ、ブートローダを設定するに進んでください。

自由選択:DHCPクライアントをインストールする

もしGentooが自動的にネットワークインターフェイスにIPアドレスを取得するようにしたいのなら、dhcpcd(もしくは他のDHCPクライアント ­­ 使用可能なDHCPクライアントのリストはネットワークモジュールを言らください)をシステムにインストールする必要があります。 今しなければ、インストール後にインターネットに接続できないでしょう。

コード表示 5.1: dhcpcdをインストールする

# emerge dhcpcd

自由選択:PPPoEクライアントをインストールする

もしインターネットに接続するのにpppが必要なら、インストールしなければなりません。

コード表示 5.2: pppをインストールする

# emerge ppp

さあブートローダを設定するに進みましょう。

10. ブートローダを設定する

10.a. ブートローダの選択

はじめに

さて、カーネルを設定し、コンパイルし、そして必要なシステムの設定ファイルも適切に編集したので、 システムを起動するときに、カーネルを立ち上げるプログラムをインストールするときが来ました。 そのようなプログラムは、ブートローダと呼ばれています。

自由選択: フレームバッファ

もし、カーネルの設定でフレームバッファサポートを有効にしている場合(あるいは、genkernelのデフォルトのカーネル設定を使用している場合)、フレームバッファを必要とするなら、vgaもしくはvideo文をブートローダの設定ファイルに追加しなければなりません。

64­bitシステムは、vesafbドライバを使わなければならないため、vga文を設定する必要があります。 vgaパラメータはvesafbのフレームバッファ画面の解像度と色深度を設定します。 /usr/src/linux/Documentation/fb/vesafb.txtにあるとおり(カーネルソースパッケージとともにインストールされますが)設定したい解像度と色深度に対応したVESA番号を使用します。

次の表は、vgaに設定する必要がある使用可能な解像度と色深度に対応した値です。

640x480 800x600 1024x768 1280x1024256 0x301 0x303 0x305 0x307

32k 0x310 0x313 0x316 0x319

64k 0x311 0x314 0x317 0x31A

16M 0x312 0x315 0x318 0x31B

video文はフレームバッファディスプレイオプションを設定します。 あなたが有効にしたい設定文の後に、追加します(2.6カーネルにはvesafb、2.4カーネルにはvesaになります)。 全ての変数は、/usr/src/linux/Documentation/fb/vesafb.txtに一覧として載っていますが、もっとも使われる3つのオプションに関して説明します。

コントロール 説明ywrap グラフィックカードがメモリを折り返して使用すると仮定します(例: メモリの最後まで来たら、次は先頭から始めます)。mtrr:n MTRRレジスタを設定します。nには、 0 ­ disabled 1 ­ uncachable 2 ­ write­back 3 ­ write­combining 4 ­ write­through が設定できます。

これら2つの文はvga=0x318 video=vesafb:mtrr:3,ywrapかvideo=vesafb:mtrr:3,ywrap,1024x768­32@85のようになります。 必要なときすぐに使えるように、値を記憶して(あるいはメモして)おいてください。

AMD64では、LILOは動作しないため、GentooではGRUBの使用のみをサポートします。 では、インストールを続けましょう。

8.b. GRUBを使用する

GRUB特有の言葉を理解する

Page 27: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

GRUBを理解する上で最も重要なことは、GRUBがハードディスクやパーティションの参照の仕方に慣れることです。 あなたのLinuxパーティションが/dev/hda1であったとすると、GRUBでは、(hd0,0)となります。 hd0,0に付いている括弧を忘れないように。これは付ける必要があります。

ハードディスクドライブは、"a"ではなく0から、パーティションは1ではなく0からカウントされます。 ハードディスクだけではなく、CD­ROMやCD­R/RW等のatapi­ideデバイスもhdデバイスになることにも注意してください。 また、SCSIドライブに対しても同様の数え方をします。 (BIOSで、SCSIデバイスから起動する設定になっている場合を除いて、 通常、SCSIに対してはIDEドライブより大きな数字が割り当てられます。) BIOSの設定にて、違うハードディスクから立ち上げるとき(primary slaveとしましょう)、そのハードディスクはhd0になります。

ハードディスクが/dev/hda、CD­ROMが/dev/hdb、 CD­R/RWが/dev/hdc、2台目のハードディスクが/dev/hddにあり、 SCSIハードディスクは無いものとします。 /dev/hdd7は、GRUBでは(hd1,6)になります。 これはなんだかトリッキーな感じがしますし、実際、トリッキーなのですが、わたしたちが試したところそのようになりました。 GRUBには、タブ補完機能が備わっていて、このようにハードディスクやパーティションがたくさんある場合や、GRUBのナンバリング方法をちょっと忘れたときに便利です。

GRUBの雰囲気がつかめたところで、GRUBをインストールしましょう。

GRUBのインストール

GRUBをインストールするには、まずemergeしましょう。

コード表示 2.1: GRUBのインストール

# emerge grub

これでGRUBはインストールされましたが、あなたが新たに作成したカーネルをGRUBが自動的に起動するためには、 設定ファイルを書き、GRUBをMBRに書き込む必要があります。 nano(あるいは、他のエディタでも可能ですが)で/boot/grub/grub.confを作成してください。

コード表示 2.2: /boot/grub/grub.confの作成

# nano ­w /boot/grub/grub.conf

それではgrub.confファイルを仕上げてしまいましょう。 後述のように、kernel­2.6.12­gentoo­r10のカーネルイメージで、このガイドで使用しているパーティションの場合のgrub.confの例を2つ示します。 最初のgrub.confに対してのみたくさんコメントを付けています。

最初のgrub.confは、カーネル構築にgenkernelを使用していないユーザ向けの例です。2番目のgrub.confは、カーネル構築にgenkernelを使用したユーザ向けの例です。

注意: もしルートのファイルシステムがJFSなら、kernelラインに"ro"を絶対につける必要があります。 これはJFSが読み書き可でマウントする前に、ログを再読込する必要があるからです。

コード表示 2.3: genkernelを使わないユーザ用grub.conf

# どれをデフォルトでブートするかを指定する。リストの内、0は最初、1は2番目のものを表す。default 0# デフォルトを起動する前に何秒間待つかを指定します。timeout 30# 最高にカッコいいスプラッシュイメージ :)# グラフィックカードが無い場合はコメントアウトしてくださいsplashimage=(hd0,0)/boot/grub/splash.xpm.gz

title=Gentoo Linux 2.6.12# カーネルイメージ(あるいは、OS)があるパーティションの指定root (hd0,0)kernel /boot/kernel­2.6.12­gentoo­r10 root=/dev/hda3

# 次の4行は、Windowsとデュアルブートしたい場合に追加します。# この例では、Windowsは/dev/hda6にインストールされているものとします。title=Windows XProotnoverify (hd0,5)makeactivechainloader +1

コード表示 2.4: genkernelユーザ用grub.conf

default 0timeout 30splashimage=(hd0,0)/boot/grub/splash.xpm.gz

title=Gentoo Linux 2.6.12root (hd0,0)kernel /boot/kernel­2.6.12­gentoo­r10 root=/dev/ram0 init=/linuxrc ramdisk=8192 real_root=/dev/hda3 udevinitrd /boot/initramfs­genkernel­amd64­2.6.12­gentoo­r10

# dual­bootしたい場合のみtitle=Windows XProotnoverify (hd0,5)makeactivechainloader +1

注意: ここで記載されている、kernelラインの最後にあるudevは、もし最初にあなたがudevを使用した場合(default設定ではそうです)、いくつかのバージョンのgenkernelで発生するバグを回避するためです。

もし、違うパーティション構成や、違うカーネルイメージ名を使用しているなら、適宜それにあわせてください。 (hd0,0)のようなGRUBに指定するデバイスは、ルートではなく、マウントポイントに関係します。 言い換えると、(hd0,0)/grub/splash.xpm.gzは、実際には、/boot/grub/splash.xpm.gzとなります。 これは、(hd0,0)が/bootであることによります。

加えて、もし違うパーティションスキームを選択した/bootを別のパーティションに置かなかった場合、上記サンプルコード内での/boot prefixの使用は必須です。 もし、われわれのパーティションスキームプランを選択した場合、boot symlinkが有効であるため、/boot prefixは必要とされません。 簡潔に、上のサンプルでは/bootパーティションを定義するしないにかかわらず動作するはずです。

Page 28: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

注意: 訳注:後の方で説明がありますが、カーネルを構築後make installでカーネルをインストールする場合には、上記例でのkernel /kernel­2.6.12­gentoo­r10の部分をkernel /vmlinuzと記述してください。

もし、他にカーネルに渡したいオプションがあるなら、 単純にそれをkernelコマンドの最後に追加してください。 既に、root=/dev/hda3やreal_root=/dev/hda3といったオプションを渡していますが、 他のオプションも同様にカーネルに渡すことができます。 例えば、以前話題に出したフレームバッファ用のvideoオプションを渡すことができます。

genkernelを使用している場合、その起動オプションはインストールCDで使われているものと同じになります。 例えば、SCSIデバイスを持っている場合、カーネルオプションとしてdoscsiを追加します。

それでは、grub.confファイルを保存してエディタを終了してください。 システム起動時にGRUBが自動的に実行されるようにするためには、MBR(Master Boot Record、マスターブートレコード)にGRUBをインストールする必要があります。

GRUBの開発者はgrub­installを使用することを奨めています。 しかし、なんらかの理由でgrub­installが正常動作しない場合、 GRUBを手動でインストールする方法もあります。

一般的な選択: grub­installを使用してGRUBをインストールするまたは、もう一つの選択: GRUBを手動でインストールするへ進みしょう。

一般的な選択: grub­installを使用してGRUBをインストールする

GRUBをインストールするためには、grub­installコマンドを実行する必要があります。 しかし、chroot環境にいるためgrub­installは簡単には使えません。 はじめに、すべてのマウント済みファイルシステムの一覧である/etc/mtabを作成する必要があります。 幸運なことにこれを簡単にやる方法があります。 単に、/proc/mountsを/etc/mtabへ次のように上書きコピーします。 ただし、別のパティションを作成していない場合は、rootfsラインを除きます。 次のコマンドは両方の場合に有効です。

コード表示 2.5: /etc/mtabを作成する

# grep ­v rootfs /proc/mounts > /etc/mtab

これでgrub­installを使用してGRUBをインストールすることができます。

コード表示 2.6: grub­installを起動する

# grub­install /dev/hda

もしGRUBに関してさらに疑問があるなら、GRUB FAQあるいはGRUB Manualを参照してください。

それでは、システムの再起動へ進みましょう。

もうひとつの選択肢: GRUBを手動でインストールする

GRUBの設定を始めるために、grubと打ち込んでください。 grub>というGRUBコマンドラインプロンプトが現れたでしょう。 ここで、ハードディスクのブートレコードにGRUBをインストールするためには、正しいコマンドを打ち込む必要があります。

コード表示 2.7: GRUBシェルの開始

# grub

注意: もしあなたのシステムにフロッピードライブがないなら、 GRUBが存在しないフロッピードライブを捜査しないように、 ­­no­floppyオプションを上記コマンドに追加してください。

次の例では、GRUBが/bootパーティションの/dev/hda1から情報を読むように、 そして、コンピュータの電源を入れた後、最初にGRUBプロンプトが出現するように、 ハードディスクのMBR(master boot record、マスターブートレコード)にGRUBをインストールしています。 もちろん、例に従って設定する必要はなく、必要に応じて変更してください。

GRUBのタブ補完機能は、GRUBシェルの中で使用できます。 例えば、"root ("と打ち込んで、続いてTABキーを押した場合、 hd0のようなデバイスの一覧を見ることができるでしょう。 "root (hd0,"に続いてTABキーを押した場合は、hd0,0のような撰択可能なパーティションの一覧を取得できます。

TAB補完を使うことによって、GRUBの設定はそれほど大変ではなくなるでしょう。 それでは、GRUBの設定をしましょう。

コード表示 2.8: GRUBをMBRにインストールする

grub> root (hd0,0) (/bootパーティションの場所を指定します)grub> setup (hd0) (MBRにGRUBをインストールします)grub> quit (GRUBシェルを終了します)

注意: GRUBをMBRではなく、特定のパーティションにインストールしたいなら、 setupコマンドの部分を編集して、それが正しいパーティションを指すようにします。 例えば、GRUBを/dev/hda3にインストールしたい場合、setup (hd0,2)というコマンドになります。 しかしながら、こういうことをしたいユーザはあまりいません。

もしGRUBに関してさらに疑問があるなら、GRUB FAQあるいはGRUB Manualを参照してください。

それでは、システムの再起動へ進みましょう。

10.c. システムの再起動

chroot環境を抜けて、マウントしたすべてのパーティションをアンマウントしてください。 そして、待ちに待った次のコマンドを入力しましょう: reboot

コード表示 3.1: すべてのパーティションをアンマウントし再起動する

# exit# cd# umount /mnt/gentoo/boot /mnt/gentoo/dev /mnt/gentoo/proc /mnt/gentoo# reboot

もちろん、起動CDを抜くことを忘れずに。さもなければ、新しいGentooシステムではなく、CDからまた起動してしまいます。

Page 29: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

再起動したら、Gentooインストールの終わりへ進んでインストールを完了させましょう。

11. Gentooインストールの締めくくり

11.a. ユーザ管理

日常作業で使用するためのユーザを追加

Unix/Linux システム上で、rootユーザで作業するのは危険であり、できるだけ避けるべきです。 したがって、日常作業で使用するためのユーザを追加することが強く推奨されます。

グループはユーザがどのような行動を取ることができるかを定義したメンバーのことです。 以下の表に、利用すると考えられるいくつかの重要なグループを示します。

グループ 詳細audio オーディオデバイスへのアクセスが可能cdrom 光学デバイスへの直接アクセスが可能floppy フロッピーデバイスへの直接アクセスが可能games ゲームで遊ぶことが可能portage 一般ユーザでemerge ­­pretendを使用可能usb USBデバイスへのアクセスが可能plugdev カメラやUSBメモリスティックといった接続デバイスをマウント可能video ビデオキャプチャーデバイスへのアクセスとハードウェアアクセラレーションが可能wheel suの使用が可能

例えば、wheel、usersそしてaudioグループに所属するjohnというユーザを作るときには、まずrootでログインして(rootだけがユーザを作ることができます)useraddを実行します。

コード表示 1.1: 日常作業で使用するためのユーザを作成

Login: rootPassword: (rootのパスワード)

# useradd ­m ­G users,wheel,audio ­s /bin/bash john# passwd johnPassword: (johnのパスワードを入力)Re­enter password: (確認のため再度パスワードを入力)

もしこのユーザがrootとして作業する必要があれば、一時的にroot権限を持つためにsu ­を使うことができます。 また、sudoパッケージを使うこともできます。これは正しく設定されていればとても安全な方法です。

11.b. ディスクの片付け

tarball の削除

Gentooのインストールは終了し、再起動も行いました。 何も問題がなければダウンロードしたステージ3 tarballと Portage スナップショットをハードディスクから削除してかまいません。/ にダウンロードしたことを思い出してください。

コード表示 2.1: ステージ3 tarball の削除

# rm /stage3­*.tar.bz2*

コード表示 2.2: Portage スナップショットの削除

# rm /portage­latest.tar.bz2*

12. これからどうすればいいの?

12.a. ドキュメント

おめでとうございます!これであなたのGentooシステムは動くようになりました。 でも、次は何をすればいいのでしょう?何を選べばいいのでしょう? まず何を探ればいいのでしょう? Gentooにはたくさんの可能性と、たくさんの文書化された(そしてあまり文書化されていない)特徴があります。

Gentooハンドブックの次の部「Gentooを使いこなす」はぜひとも読んでください。 ソフトウェアを最新の状態に保つ方法、さらに多くのソフトウェアをインストールする方法、USEフラグとは何か、Gentooのinitシステムの動作について、などが書かれています。

もしあなたのシステムをデスクトップ用途に最適化したいか、完全にデスクトップシステムとして動作するように設定する方法が知りたいなら、広範囲にわたるデスクトップ構築ガイド(日本語訳)を読んでください。それに加えて、自分のシステムを使いやすくするために、 Gentoo Linuxローカライズガイド(日本語訳)を使いたいかもしれません。

Gentoo Security Handbook(訳注:古いドキュメントがGentoo Linux セキュリティ・ガイドにあります)には、読んでおく価値のある膨大なドキュメントがあります。

すべての参照可能なドキュメントの一覧は、Gentooドキュメント(日本語訳)のページを見てください。

12.b. ネット上のGentoo

当然のことながら、Gentoo Forums (訳注: ほとんどが英語です)やたくさんあるGentoo IRCのチャネルはいつでも大歓迎です。

さらに、Gentooにはユーザ向けに公開されたメーリングリスト (訳注: 英語メーリングリストの情報です)がいくつかあります。 加入方法については、メーリングリストのページを見てください。

注意: 訳注: 日本語での情報交換はGentooJP Wiki、GentooJPのIRCチャネル、GentooJPのメーリングリストなどで行われています。

Page 30: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

この辺りで終わりにしておきます。続きのインストールを楽しんでください :)

B. Gentooを使いこなす

1. Portageについて

1.a. Portageへようこそ

PortageはもしかするとGentooのソフトウェア管理における最も注目すべき革新なものかもしれません。 その高い柔軟性と非常に多くの機能で、たびたびLinuxで利用できる最高のソフトウェア管理ツールとされています。

Portageは全てPythonとBashによって書かれており、 両方ともスクリプト言語であるため、ユーザーにとって全体的に見通しのよいものになっています。

ほとんどのユーザーがemergeツールを通してPortageを利用しています。 この章はemergeのmanページで得られる情報の複製を意図したものではありません。 emergeのオプションについての完全な概要を得るためには、manページを調べてください。

コード表示 1.1: emergeのmanページを読む

$ man emerge

1.b. Portageツリー

ebuild

パッケージについて話す場合、たいていは、私たちGentooユーザーがPortageツリーを通して利用可能なソフトウェアのタイトルを意味しています。Portageツリーはebuildという、Portageがソフトウェアを維持管理する(インストール、検索など)ために必要な全ての情報を含んだファイルのコレクションです。 デフォルトでは、これらebuildは/usr/portageに置かれています。

Porgageにソフトウェアタイトルに関して、何か実行するよう指示するときはいつでも、システムにあるebuildがベースに使われます。 故に、Portageに新しいソフトウェアやセキュリティアップデートなどが知らされるように、定期的にebuildを更新することが重要です。

Portageツリーの更新

Portageツリーは一般にrsyncという高速ファイル転送ユーティリティで更新されます。 更新はrsyncのフロントエンドを提供するemergeコマンドを使うという、とても簡単なものです。

コード表示 2.1: Portageツリーの更新

# emerge ­­sync

もしファイアーウォールの制限などによりrsyncが実行できないときには、毎日作成されるPortageツリーのスナップショットを利用することによってPortageを更新することができます。 emerge­webrsyncツールは自動的に最新のスナップショットを取得し、システムにインストールしてくれます。

コード表示 2.2: emerge­webrsyncを実行

# emerge­webrsync

1.c. ソフトウェアのメンテナンス

ソフトウェアの検索

Portageツリーからソフトウェアタイトルを検索するには、emergeに内蔵された検索能力を利用することができます。 デフォルトでは、emerge ­­searchは検索単語に(完全もしくは部分)一致したパッケージ名を返します。

例えば、"pdf"を名前に持つパッケージを検索するにはこうします。

コード表示 3.1: pdfと名付けられたパッケージを検索

$ emerge ­­search pdf

もし詳細を検索したいのなら­­searchdesc(もしくは ­S)スイッチを使うことができます。

コード表示 3.2: pdfに関連したパッケージを検索

$ emerge ­­searchdesc pdf

出力を見れば、それがたくさんの情報を提供していることに気付くでしょう。 その内容が意味するところがわかるように、各フィールドにははっきりとラベル付けがされています。

コード表示 3.3: 'emerge ­­search'の結果の例

* net­print/cups­pdf Latest version available: 1.5.2 Latest version installed: [ Not Installed ] Size of downloaded files: 15 kB Homepage: http://cip.physik.uni­wuerzburg.de/~vrbehr/cups­pdf/ Description: Provides a virtual printer for CUPS to produce PDF files. License: GPL­2

ソフトウェアのインストール

一度好みのソフトウェアを見つけたら、emergeで簡単にインストールすることができます。ただパッケージの名前を追加するだけです。 例えば、gnumericをインストールするにはこうします。

Page 31: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

コード表示 3.4: gnumericのインストール

# emerge gnumeric

たくさんのアプリケーションがお互いに依存し合っているため、あるソフトウェアを確実にインストールしようとすると、 結果的にいくつかの依存関係もインストールすることになるでしょう。 ご心配なく、Portageは依存関係をうまく扱ってくれます。 もしパッケージをインストールしたいときにPortageが何をインストールしようとしているか確かめたいときには、 ­­pretendスイッチを追加します。例えばこのようにします。

コード表示 3.5: gnumericをインストールするふりをする

# emerge ­­pretend gnumeric

Portageにパッケージをインストールするよう要求したときは、必要なソースコードをインターネットからダウンロードし、 デフォルトでは/usr/portage/distfilesに保持します。 この後、解凍し、パッケージをコンパイルしてインストールします。 Portageにソースをダウンロードするだけでインストールは行って欲しくないときには、emergeコマンドに­­fetchonlyコマンドを追加します。

コード表示 3.6: gnumericのソースコードをダウンロード

# emerge ­­fetchonly gnumeric

インストール済みパッケージのドキュメントを検索

多くのパッケージはドキュメントと共にインストールされます。 docUSEフラグがパッケージのドキュメントをインストールするかしないかを定義する場合もあります。 現在のdocUSEフラグを確認するにはemerge ­vp <package name>コマンドを使用します。

コード表示 3.7: 現在のdoc USEフラグを確認

(もちろんalsa­libはただの例です)# emerge ­vp alsa­lib[ebuild N ] media­libs/alsa­lib­1.0.14_rc1 ­debug +doc 698 kB

docUSEフラグを有効にするのに一番良い方法は、/etc/portage/package.useによってパッケージごとに行うやり方です。 そのため、興味のあるパッケージの分だけドキュメントを取得できるようになります。 このフラグを全体に有効にしてしまうと、循環依存の問題を起こす原因となることが知られています。 詳しくは、USEフラグの章を読んでください。

パッケージがインストールされると、ドキュメントは一般的には/usr/share/docディレクトリの下のパッケージ名のディレクトリの中に置かれます。app­portage/gentoolkitパッケージ(日本語訳)の一部であるequeryツールを利用すると、全てのインストールされたファイルの一覧を表示できます。

コード表示 3.8: パッケージドキュメントの位置

# ls ­l /usr/share/doc/alsa­lib­1.0.14_rc1total 28­rw­r­­r­­ 1 root root 669 May 17 21:54 ChangeLog.gz­rw­r­­r­­ 1 root root 9373 May 17 21:54 COPYING.gzdrwxr­xr­x 2 root root 8560 May 17 21:54 html­rw­r­­r­­ 1 root root 196 May 17 21:54 TODO.gz

(このほかにも、equeryを使用してファイルの位置を表示する方法もあります)# equery files alsa­lib | lessmedia­libs/alsa­lib­1.0.14_rc1* Contents of media­libs/alsa­lib­1.0.14_rc1:/usr/usr/bin/usr/bin/alsalisp(省略)

ソフトウェアの削除

システムからパッケージを削除したいときは、emerge ­­unmergeを利用します。 これはPortageにパッケージによってインストールされた設定ファイルをのぞく全てのファイルを削除するよう命令します。 設定ファイルを残しておくと、もう一度インストールしようと決めたときに作業を続けることが可能です。

しかし、大きな警告があります:Portageは削除したいパッケージが他から必要とされているかを確認しません。 とにかく、unmergeするとシステムを破壊する様な重要なパッケージを削除するときには気をつけろと言うことです。

コード表示 3.9: gnumericをシステムから削除

# emerge ­­unmerge gnumeric

システムからパッケージを削除するときには、インストール時に依存関係により自動的にインストールされたソフトウェアは残されます。 Portageにある削除可能な依存関係を削除するには、emergeの­­depclean機能を利用します。 これについては後で話します。

システムの更新

システムを完全な形に保つ(もちろん最新のセキュリティアップデートをインストールすることも)には、システムを定期的に更新する必要があります。Portageはツリーの中のebuildsのみ確認するので、最初にPortageツリーを更新しなければなりません。 Portageツリーが更新されたら、emerge ­­update worldでシステムを更新できます。 次の例では­­askスイッチを使用しています。 これは、更新するパッケージの一覧をPortageに表示させ、続行するかを尋ねます。

コード表示 3.10: システムを更新する

# emerge ­­update ­­ask world

Portageはインストールされているアプリケーションの新しいバージョンを検索します。 しかし、これは明示的にインストールされたものしか確かめません(そうしたアプリケーションは/var/lib/portage/worldにリストされています)。 つまり、それらの依存関係は確認しないということです。 システムの個々のパッケージすべてを更新したいときには­­deep引数を与えてやります。

Page 32: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

コード表示 3.11: システムの全てを更新する

# emerge ­­update ­­deep world

明示的にインストールしていない(だが他のプログラムの依存によりインストールされた)パッケージのセキュリティアップデートがあるかもしれないので、このコマンドを時々実行することが推奨されています。

もし最近USEフラグを変更したのなら、­­newuseを追加したくなるでしょう。 そうするとPortageは新しいパッケージのインストールか既にあるものの再コンパイルが必要かを確認します。

コード表示 3.12: 完全な更新の実行

# emerge ­­update ­­deep ­­newuse world

メタパッケージ

Portageツリーのいくらかのパッケージは実際には何も含まれていませんが、複数のパッケージをインストールするのに利用されるものがあります。 例えば、kde­metaパッケージは、依存関係にある様々なKDE関連のパッケージを制御することで、システムに完全なKDE環境をインストールします。

このようなパッケージをシステムから削除したいときには、emerge ­­unmergeをパッケージに対して実行しても依存関係が残ってしまうのでたいした効果は得られないでしょう。

Portageは残された依存関係を削除する機能性を持っていますが、動的に依存関係を変更するソフトウェアが存在するので、 USEフラグに変更を加えたときも含めてまずシステムを完全に更新する必要があります。 その後残された依存関係を削除するためにemerge ­­depcleanを実行してください。 これが完了したら、今削除されたソフトウェアを動的にリンクしているが、もはやそれを必要としないアプリケーションを再ビルドします。

これら全ては以下の3つのコマンドで処理できます。

コード表示 3.13: 残された依存関係を削除する

# emerge ­­update ­­deep ­­newuse world# emerge ­­depclean# revdep­rebuild

revdep­rebuildはgentoolkitによって提供されます;まず最初にemergeすることを忘れないでください。

コード表示 3.14: gentoolkitパッケージのインストール

# emerge gentoolkit

1.d. ライセンス

Portage バージョン2.1.7から、ソフトウェアのライセンスをもとにして、ソフトウェアのインストール可否を制御できます。 Portageツリーにある全てパッケージで、ebuildにLICENSE項目が含まれています。 emerge ­­search packagenameを実行すれば、パッケージのライセンスがわかります。

デフォルトでは、使用許諾契約書(EULA)に同意しなければならないものを除いて、Portageは全てのライセンスを許可します。

許可するライセンスをコントロールするのは、ACCEPT_LICENSEです。これは、/etc/make.confのなかで定義されます。

コード表示 4.1: /etc/makc.conf でのデフォルト ACCEPT_LICENSE

ACCEPT_LICENSE="* ­@EULA"

この設定により、インストール中に使用許諾契約書に同意する行為が発生するようなパッケージは、インストールされず、 使用許諾契約書がないパッケージがインストールされます。

ACCEPT_LICENSEはシステム全体では/etc/make.confで定義可能です。 また、パッケージごとに/etc/portage/package.licenseでも指定可能です。

たとえば、app­crypt/truecryptに対して、truecrypt­2.7ライセンスを許可する場合、 次の内容を/etc/portage/package.licenseに追加してください。

コード表示 4.2: package.licenseでtruecryptライセンスを指定する

app­crypt/truecrypt truecrypt­2.7

これによって、truecrypt­2.7ライセンスになっているtruecryptがインストール可能になりますが、truecrypt­2.8はインストールされません。

重要: 各ライセンスは/usr/portage/licensesに置かれ、ライセンスグループは/usr/portage/profiles/license_groupsに書かれています。 license_groupsの各行で、大文字から始まる項目はライセンスグループの名前で、その後に個々のライセンスが並びます。

ACCEPT_LICENSEで定義されたライセンスグループは、@記号が前につきます。 次の例ではシステム全体で、他の個々のライセンスと同様に、GPL互換ライセンスグループを許可しています。

コード表示 4.3: /etc/make.conf での ACCEPT_LICENSE

ACCEPT_LICENSE="@GPL­COMPATIBLE @OSI­APPROVED @EULA atheros­hal BitstreamVera"

もし、フリーソフトウエアとドキュメントだけのシステムにしたい場合は、次のようにすればよいでしょう。

コード表示 4.4: フリーのライセンスだけを使用する

ACCEPT_LICENSE="­* @FREE"

この場合の"free"とは、ほぼFSF と OSIで定義されたものです。 これらの定義に合致しないライセンスを持つパッケージはインストールされません。1.e. Portageが不満を言ったら

Page 33: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

SLOT、Virtual、ブランチ、アーキテクチャ、そしてProfilesについて

既に述べたように、Portageはとても強力で他のソフトウェア管理ツールに無い多くの機能をサポートしています。 このことを理解するために、あまり細かくなり過ぎるのを避けて、もう少しPortageの特徴について説明します。

Portageでは、一つのパッケージで複数のバージョンをシステム上に共存させることができます。 他のディストリビューションがそれらの名前にバージョンを付けている(freetypeとfreetype2の様に)のに対し、 PortageはSLOTと呼ばれる技術を使っています。 ebuildはそのバージョンの確かなSLOTを宣言します。異なったSLOTのebuildはシステムに共存できます。 例えば、freetypeパッケージはSLOT="1"とSLOT="2"のebuildを持っています。

同じ機能を提供しますが異なった実装のパッケージもまた存在します。 例えば、metalogd、sysklogd、syslog­ngは全てシステムロガーです。 「システムロガー」の機能を必要とするアプリケーションは、例えばmetalogdに依存することはできません。他のシステムロガーも同様に問題のない選択だからです。 Portageはvirtualsを考慮に入れます:他のアプリケーションがvirtual/syslogに依存できるように、それぞれのシステムロガーはvirtual/syslogを規定します。

Portageツリーのソフトウェアは異なったブランチに所属することができます。 デフォルトではシステムはGentooがstableだと思うもののみ受け付けます。ほとんどのコミットされた新しいソフトウェアのタイトルは、stableにされる前にもっとテストが必要だという意味のテストブランチに追加されます。 これらのソフトウェアのebuildをPortageツリーで見かけても、Portageはstableブランチに置かれるまでは更新しようとしないでしょう。

いくらかのソフトウェアは少しのアーキテクチャのみで利用可能です。 すなわちそのソフトウェアは他のアーキテクチャでは動作しないか、もっとテストが必要か、 Portageツリーにソフトウェアをコミットした開発者が異なったアーキテクチャで動作するかどうか確認できないかです。

各々のGentooのインストールはあるプロファイルと一緒になっています。 それには、他の情報と一緒に、システムが正常に動作するために必要なパッケージのリストが含まれています。

ブロックされたパッケージ

コード表示 5.1: ブロックされたパッケージに対するPortageの警告(­­pretendを利用)

[blocks B ] mail­mta/ssmtp (is blocking mail­mta/postfix­2.2.2­r1)

コード表示 5.2: ブロックされたパッケージに対するPortageの警告(­­pretendを利用しない)

!!! Error: the mail­mta/postfix package conflicts with another package.!!! both can't be installed on the same system together.!!! Please use 'emerge ­­pretend' to determine blockers.

ebuildはPortageの依存関係に関する特別なフィールドを含んでいます。 依存関係には2つの種類があります: DEPENDによって宣言されたビルド依存と、RDEPENDよって宣言された実行時依存です。 これらの依存関係で明示的に互換性のないパッケージまたはvirtualが指定されている場合、インストールがブロックされます。

Portageの最近のバージョンでは、些細なブロックについてはユーザーへの注意を促すことなく対処することができますが、 場合によっては、次に説明する方法で自身で修正しなければなりません。

ブロックを解決するには、パッケージのインストールを行わないか、衝突しているパッケージを先にunmergeするかのどちらかを選べます。 上記の例では、postfixのインストールを諦めるか、先にssmtpを削除するかのどちらかです。

<media­video/mplayer­1.0_rc1­r2.のように特定のパッケージ識別子(atom)を伴いブロックされていることがあるかもしれません。 この場合、ブロックしているパッケージをより新しいバージョンに更新すれば、ブロックを取り除くことができかもしれません。

既にインストールされた2つのパッケージがお互いをブロックし合っていることもあります。 このまれな場合は、何故それらをインストールする必要があるのかを知るべきです。 ほとんどの場合、1つのパッケージのみで事足ります。 そうでなければ、Gentooのバグトラックシステムにバグを報告してください。

マスクされたパッケージ

コード表示 5.3: マスクされたパッケージに対するPortageの警告

!!! all ebuilds that could satisfy "bootsplash" have been masked.

コード表示 5.4: マスクされたパッケージに対するPortageの警告に関する理由

!!! possible candidates are:

­ gnome­base/gnome­2.8.0_pre1 (masked by: ~x86 keyword)­ lm­sensors/lm­sensors­2.8.7 (masked by: ­sparc keyword)­ sys­libs/glibc­2.3.4.20040808 (masked by: ­* keyword)­ dev­util/cvsd­1.0.2 (masked by: missing keyword)­ games­fps/unreal­tournament­451 (masked by: package.mask)­ sys­libs/glibc­2.3.2­r11 (masked by: profile)­ net­im/skype­2.1.0.81 (masked by: skype­eula license(s))

システムで利用できないパッケージをインストールしようとしたときに、このマスクエラーを受け取るでしょう。 あなたはシステムで利用できる他のアプリケーションのインストールを試みるか、パッケージが利用可能になるまで待つかをするべきです。 パッケージがマスクされているのにはいつも理由があります。

~arch keyword はstableブランチに置くには十分なテストが行われていないことを意味します。 何日か何週間か待ってもう一度試してみてください。­arch keywordか­* keywordはあなたのアーキテクチャでは動作しないことを意味します。 もしパッケージが動作すると信じているならbugzillaにバグを提出してください。missing keywordはあなたのアーキテクチャでは未だテストされていないことを意味します。 アーキテクチャのポーティングチームにテストするよう頼むか、彼らのために自分でテストして気付いたことをbugzillaまで報告してください。package.maskはパッケージが壊れている、unstableもしくは非推奨であるということが判明していて、故意に利用禁止とマークされていることを意味します。profileはあなたのプロファイルには適当ではないことを意味します。 インストールするとシステムを破壊するおそれがあるか、もしくは単にあなたのプロファイルと互換性がないかのどちらかです。

Page 34: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

プロファイルと互換性がないかのどちらかです。licenseはパッケージのライセンスがACCEPT_LICENSEと合致しないことを意味します。/etc/make.confか/etc/portage/package.licenseに定義することで、 明示的にそのライセンスかライセンスグループを許可しなければいけません。 詳しくは、ライセンスを参照してください。

依存関係の喪失

コード表示 5.5: 依存関係の喪失に対するPortageの警告

emerge: there are no ebuilds to satisfy ">=sys­devel/gcc­3.4.2­r4".

!!! Problem with ebuild sys­devel/gcc­3.4.2­r2!!! Possibly a DEPEND/*DEPEND problem.

インストールしようとしているアプリケーションはシステムで利用できない他のパッケージに依存しています。 bugzillaに既に報告されているか確認して、まだであれば報告してください。 ブランチを混ぜていない限りこれが起こることはありませんので、それはバグであると言えます。

曖昧なebuild名

コード表示 5.6: 曖昧なebuild名に対するPortageの警告

[ Results for search key : listen ][ Applications found : 2 ]

* dev­tinyos/listen [ Masked ] Latest version available: 1.1.15 Latest version installed: [ Not Installed ] Size of files: 10,032 kB Homepage: http://www.tinyos.net/ Description: Raw listen for TinyOS License: BSD

* media­sound/listen [ Masked ] Latest version available: 0.6.3 Latest version installed: [ Not Installed ] Size of: 859 kB Homepage: http://www.listen­project.org Description: A Music player and management for GNOME License: GPL­2

!!! The short ebuild name "listen" is ambiguous. Please specify!!! one of the above fully­qualified ebuild names instead.

インストールしようとしているアプリケーション名が2つ以上と一致しています。 正しいカテゴリー名を追加する必要があります。 Portageは可能性のある一致した選択肢を知らせるでしょう。

循環依存

コード表示 5.7: 循環依存に対するPortageの警告

!!! Error: circular dependencies:

ebuild / net­print/cups­1.1.15­r2 depends on ebuild / app­text/ghostscript­7.05.3­r1ebuild / app­text/ghostscript­7.05.3­r1 depends on ebuild / net­print/cups­1.1.15­r2

2つ(もしくはそれ以上)のインストールしたいパッケージがお互いに依存し合っているためにインストールすることができません。 これはほとんどはPortageツリーのバグです。 bugzillaに既に報告されているか確認して、まだであれば報告してください。

取得失敗

コード表示 5.8: 取得失敗に対するPortageのエラー

!!! Fetch failed for sys­libs/ncurses­5.4­r5, continuing...(...)!!! Some fetch errors were encountered. Please see above for details.

Portageがアプリケーションのソースのダウンロードに失敗し、他のアプリケーションのインストールを続けようとしています。 この失敗はミラーが正しく同期されていないか、ebuildが正しくない場所を示しているからかもしれません。 ソースを置いているサーバーが何らかの理由でダウンしているのかもしれません。

この問題がいつまでも続くようであれば1時間後にもう一度試してください。

システムプロファイルの保護

コード表示 5.9: プロファイルによって保護されたパッケージに対するPortageの警告

!!! Trying to unmerge package(s) in system profile. 'sys­apps/portage'!!! This could be damaging to your system.

あなたはシステムのコアの一部であるパッケージを削除しようとしました。 それはプロファイルに必要であると載っているのでシステムから削除できません。

ダイジェスト検証の失敗

ときどき、あるパッケージをemergeしようとして、次のようなメッセージと共に失敗することがあるかもしれません。

コード表示 5.10: ダイジェスト検証の失敗

>>> checking ebuild checksums!!! Digest verification failed:

Page 35: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

!!! Digest verification failed:

これはPortageツリーにどこかおかしい所がある兆候です。 よく、開発者がパッケージをツリーにコミットするとき失敗したことが原因で起こります。

Digestの検証に失敗するとき、そのパッケージをあなた自身で再度ダイジェスト作成しようとしてはいけません。 この問題はebuild foo manifestでは修正されない上に、ほぼ間違いなく悪化します。

かわりに、1時間か2時間ツリーが安定するのを待っていてください。 おそらくエラーはすぐに検知されると思いますが、修正がPortageツリーに流れるのに少し時間がかかります。 待っている間、Bugzillaをチェックし、誰かがこの問題をすでに報告しているか調べてください。 もし報告している人がいなければ、すぐ壊れているパッケージのバグ報告をしてください。

いったんバグが修正されたことを確認したら、再び同期し修正されたダイジェストを取得する必要があるでしょう。

重要: これは何度もツリーの同期をしてもよいという意味ではありません! rsycnポリシーの中で述べられているように(emerge ­­syncを走らせたとき)、 あまり頻繁に同期するユーザは接続を禁止されることになります! 実際には次の定期的な同期まで待ち、そしてrsyncサーバに負荷をかけないようにしてください。

2. USEフラグ

2.a. USEフラグとは

USEフラグの背景

Gentooをインストールするとき(または他のディストリビューション、 OSをインストールする場合も含めて)利用する環境により異なる選択をすることなります。 サーバー向けのセットアップはワークステーションのそれとはちがいます。 ゲーム用マシンと3Dレンダリングワークステーションも違いがあります。

このことは、インストールするパッケージの選択だけでなく、 パッケージがサポートする機能にも当てはまります。 もし、OpenGLが必要ないのであれば、面倒な思いをしながらOpenGLをインストールしたり、 他のほとんどのパッケージでOpenGLサポートをつけてビルドする必要はないのです。 もしKDEを使いたくない場合、KDEサポートがなくてもちゃんと動くパッケージ にわざわざKDEサポートつけてパッケージをコンパイル必要はありますか?

ユーザーが何をインストール/有効にして、何をそうしないのか決めやすいよう 簡単にユーザーの環境を指定する方法が必要となりました。 この方法によりユーザーは本当に必要なものを決めることになり、 またパッケージ管理システムであるPortageの判定処理が軽減されるのです。

USEフラグの定義

USEフラグについて話をはじめましょう。 フラグはあるコンセプトのサポートと依存関係をあらわしたものです。 もしあるUSEフラグを定義すると、Portageに選んだキーワードに対応するよう伝えられます。 もちろん、これによりパッケージに対する依存情報も変更されます。

一つkdeというキーワードの例を挙げてみましょう。 USE変数のなかにこのキーワードが設定されていなければ、 オプションでKDEサポートをもつパッケージはKDEサポートなしでコンパイルされます。 オプションでKDEへの依存関係があるパッケージの場合、 (依存関係のため)KDEライブラリーなしでインストールされます。 もし、kdeキーワードを指定している場合、 こうしたパッケージはKDEサポート付でインストールされ、 依存関係に従ってKDEライブラリーもインストールされます。

正しくキーワードを設定することで、必要に応じたシステムが得られるのです。

どんなUSEフラグがあるのか

USEフラグには二つのタイプがあります。グローバルとローカルUSEフラグです。

グローバルUSEフラグはいくつかのパッケージで使われ、 システム全体に影響するものです。これが普通USEフラグと呼ばれるものです。ローカルUSEフラグは単独パッケージが対象で、そのパッケージ特有の判断に使います。

使用可能なグローバルUSEフラグのリストは オンライン か /usr/poratge/profiles/use.desc にあります。

使用可能なローカルUSEフラグは /usr/portage/profiles/use.local.desc にあります。

2.b. USEフラグを使いこなす

永続的なUSEフラグ宣言

USEフラグの重要性を認識してもらった、というところで、 USEフラグを宣言する方法についてお伝えしましょう。

すでに触れたように、すべてのUSEフラグはUSE変数のなかで宣言されています。 ユーザーがUSEフラグを調べたり、選んだりしやすいよう、 デフォルトのUSEセッティングが提供されています。 このセッティングはGentooユーザーが一般的に使用すると考えられるUSEフラグを集めたものです。 このデフォルトのセッティングはプロファイルの一部make.defaultsのファイルで宣言されています。

システムが参照しているプロファイルは/etc/make.profileのシンボリックリンクで指し示されます。 それぞれのプロファイルは別のより大きなプロファイルのもとに機能し、 結果としてすべてのプロファイルが足しあわされたものになります。 トッププロファイルはbaseプロファイル(/usr/portage/profiles/base)になります。

10.0プロファイルのデフォルトのセッティングを見てみましょう。

コード表示 2.1: 10.0プロファイルにたいして足し合わされたmake.defaults USE変数

(この例はbase, default/linux, default/linux/x86, default/linux/x86/10.0/が集まったものです)USE="a52 aac acpi alsa branding cairo cdr dbus dts dvd dvdr emboss encode exiffam firefox flac gif gpm gtk hal jpeg lcms ldap libnotify mad mikmod mng mp3mp4 mpeg ogg opengl pango pdf png ppds qt3support qt4 sdl spellstartup­notification svg tiff truetype vorbis unicode usb X xcb x264 xmlxulrunner xv xvid"

今見たように、この変数はすでにかなり多くのキーワードが含まれています。 しかし、あなたが必要とするUSE変数にあわせるため make.defaults にあるどのファイルも変更していはいけません。 このファイルの変更はPoratgeアップデートの際に元に戻ってしまいます!

Page 36: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

どのファイルも変更していはいけません。 このファイルの変更はPoratgeアップデートの際に元に戻ってしまいます!

このデフォルトセッティングを変えるためには、 USE変数にキーワードを追加か削除をしなくてはなりません。 これはUSE変数を/etc/make.confに設定することでシステム全体に行われます。 この変数に必要な追加USEフラグを加えるか、必要のないUSEフラグを外せばよいだけです。 USEフラグを外すためにはキーワードの前に"­"(マイナス記号)をつけてください。

たとえば、KDEとQTサポートを外してLDAPサポートをつけるには、 次のようにUSEをetc/make.confに宣言します。

コード表示 2.2: /etc/make.conf でのUSE設定例

USE="­kde ­qt4 ldap"

個々のパッケージに対するUSEフラグ宣言

一つか二つほどのアプリケーションに対しあるUSEフラグを宣言したいが システム全体には適用したくない、という場合です。 これには(存在しなければ)/etc/portage ディレクトリを作成します。そして /etc/portage/package.use を編集します。 これは普通一つのファイルですが、ディレクトリにすることもできます。 さらなる情報はman portageを見てください。 以下の例ではpackage.useが一つのファイルだと仮定しています。

たとえばberkdbはパッケージ全体的に適用したくないが、 mysqlだけには適用したい場合、次のように書き加えます。

コード表示 2.3: /etc/portage/package.use 例

dev­db/mysql berkdb

明示的にUSEフラグを無効にすることもできます。 たとえばPHPに対してjavaを無効にしたい場合です。

コード表示 2.4: /etc/portage/package.use 2番目の例

dev­php/php ­java

一時的なUSEフラグ宣言

あるUSEの設定を一回だけ使いたいといったことが時にはあります。 /etc/make.confを二度(変更して元に戻す)編集する代わりに、 USE変数を環境変数として宣言することもできます。 ただし、再emergeしたりアップデートする場合(明示的に行うときとシステムアップデート両方の場合)、 は変更は破棄されてしまうのでご注意ください。

seamonkeyをインストールする際にUSEの設定から一時的にjavaを除く例です。

コード表示 2.5: 環境変数としてUSEを使う

# USE="­java" emerge seamonkey

優先順位

当然のことながら、USEの設定では どの設定が優先するのかという順位付けがあります。 また、javaが優先順位の関係で有効になってしまっているのを 確かめるためだけにUSE="­java"の設定もしたくないでしょう。 USE設定の優先順位は、下のような順番になっています (最初のものが低い優先度です)。

1. プロファイルの中のmake.defaultsで宣言されているデフォルUSE設定2. /etc/make.conf でのユーザー設定3. /etc/portage/package.use でのユーザー設定4. ユーザーによる環境変数としてのUSE設定

最終的なPortageのUSE設定を確認するためにはemerge infoを実行してください。 これにより(USE設定を含んだ)Portageに関連するすべての変数のリストが表示されます。

コード表示 2.6: emerge ­­info の実行

# emerge info

システム全体を新しいUSEフラグに対応させるには

もしUSEフラグを新しくしシステム全体を新しいフラグに対応させたい場合、 emergeの­­newuseオプションを使用してください。

コード表示 2.7: システム全体を再構築する

# emerge ­­update ­­deep ­­newuse world

次に新しいUSEフラグにより不要になった、「古い」条件付き依存関係をPortageのdepclean により削除してください。

警告: emerge ­­depcleanは危険な動作をします。注意深く行わなければいけません。 「不要」なパッケージのリストは二重にチェックし予期しないパッケージ削除がないようにしてください。 次の例では削除を避けリストだけ表示されるよう­pスイッチを追加しています。

コード表示 2.8: 不要パッケージの削除

# emerge ­p ­­depclean

depcleanが終了したならば、削除された可能性のあるパッケージから提供されている シェアードオブジェクトとの動的リンク再構築するためにrevdep­rebuildを実行してください。 revdep­rebuildはgentoolkitパッケージの一部として提供されています。 まず、このパッケージをemergeすることを忘れないでください。

コード表示 2.9: revdep­rebuildの実行

# revdep­rebuild

すべておわると、システムは新しいUSEフラグの設定になっています。2.c. パッケージ固有のUSEフラグ

Page 37: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

使用可能なUSEフラグの表示

seamonkeyを例にとってみましょう。 どんなUSEフラグが利用できるのか、 調べるためにはemergeに­­pretendと­­verboseオプションをつけてください。

コード表示 3.1: USEフラグの表示

# emerge ­­pretend ­­verbose seamonkeyThese are the packages that I would merge, in order:

Calculating dependencies ...done![ebuild R ] www­client/seamonkey­1.0.7 USE="crypt gnome java­debug ­ipv6 ­ldap ­mozcalendar ­mozdevelop ­moznocompose ­moznoirc­moznomail ­moznopango ­moznoroaming ­postgres ­xinerama ­xprint" 0 kB

こうしたことができるのはemregeだけではありません。 equeryと呼ばれる専用のツールがあります。 これはgentoolkitパッケージの一部です。 まずはgentoolkitをインストールしてください。

コード表示 3.2: gentoolkitのインストール

# emerge gentoolkit

USEフラグをみるためにequeryをuses付で実行します。 gunumericの例です。

コード表示 3.3: equeryで使用されているUSEフラグを見る方法

# equery ­­nocolor uses =gnumeric­1.6.3 ­a[ Searching for packages matching =gnumeric­1.6.3... ][ Colour Code : set unset ][ Legend : Left column (U) ­ USE flags from make.conf ][ : Right column (I) ­ USE flags packages was installed with ][ Found these USE variables for app­office/gnumeric­1.6.3 ] U I ­ ­ debug : Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see http://www.gentoo.org/proj/en/qa/backtraces.xml . + + gnome : Adds GNOME support + + python : Adds support/bindings for the Python language ­ ­ static : !!do not set this during bootstrap!! Causes binaries to be statically linked instead of dynamically

3. Portageの機能

3.a. Portageの機能

PortageはあなたのGentoo環境をより良くしてくれるいくつかの追加の機能があります。 これらの機能の多くはパフォーマンス、信頼性、セキュリティなどを改良してくれるソフトウェアツールに頼っています。

Portageの機能を有効にしたり無効にするには、スペースで区切られた様々な機能のキーワードを含む/etc/make.confのFEATURES変数を編集する必要があります。 いくつかのケースでは機能が依存している追加のツールをインストールする必要があります。

Portageがサポートしている機能が全てここで紹介されているわけではありません。 全てを知るには、make.confのmanページを調べてください。

コード表示 1.1: make.confのmanページを調べる

$ man make.conf

デフォルトでFEATURESに何が設定されているかを知るには、emerge ­­infoを実行してFEATURES変数を検索するかgrepを利用します。

コード表示 1.2: 既に設定されているFEATURESを知る

$ emerge ­­info | grep FEATURES

3.b. 分散コンパイル

distccを使う

distccはネットワーク上のそれぞれのマシン(同一である必要はない)にコンパイル作業を分散させるプログラムです。 distccクライアントは利用可能な(distccdが実行されている)distccサーバに必要な情報の全てを送信するので、 それらサーバはクライアントのためにソースコードの断片をコンパイルすることができます。 この結果、コンパイルの時間が高速化されます。

distccに関するより多くの情報(そしてどのようにしてGentooで動作するのか)についてはGentoo Distcc Documentation(日本語訳)を見てください。

distccのインストール

distccはコンピュータが送信したコンパイルタスクを監視するグラフィカルモニターを提供します。 もしGnomeを使っているのならUSEフラグに'gnome'を追加してください。 しかし、Gnomeを使っていないがモニターを利用したいときはUSEフラグに'gtk'を追加してください。

コード表示 2.1: distccのインストール

# emerge distcc

Portageのサポートを有効化する

/etc/make.conf内のFEATURES変数にdistccを追加してください。 次に、MAKEOPTS変数をあなたの好みに編集してください。 よく知られたガイドラインには"­jX"と埋めうるように指示されています。 Xはdistccdを実行している(現在のホストも含める)CPUの数+1ですが、他の数字の方が良い結果が得ら

Page 38: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

れるかもしれません。

ではdistcc­configを実行して利用可能なdistccサーバのリストを入力しましょう。 簡単な例ではdistccサーバが192.168.1.102(現在のホスト)、192.168.1.103、192.168.1.104(2つのリモートホスト)で利用可能であると仮定します。

コード表示 2.2: distccが3つのサーバを使うように設定

# distcc­config ­­set­hosts "192.168.1.102 192.168.1.103 192.168.1.104"

忘れずにdistccdデーモンを実行してください。

コード表示 2.3: distccdデーモンを起動

# rc­update add distccd default# /etc/init.d/distccd start

3.c. キャッシングコンパイル

ccacheについて

ccacheは高速なコンパイラーキャッシュです。 プログラムをコンパイルすると、中間結果をキャッシュするので、同じプログラムを再コンパイルしたときはいつでも、コンパイル時間は大いに減少します。 ccacheを初めて用いた場合は、通常のコンパイル時に比べて遥かに遅くなりますが、次回以降の再コンパイルは速やかに済みます。 ccacheは同一のアプリケーションを何度もコンパイルする際のみ役立つので、主にソフトウェア開発者に対してだけ有益となります。

ccacheに関する特徴に興味があるなら、ccacheのホームページを訪れてください。

警告: ccacheは数々のコンパイルの失敗を引き起こすことで知られています。ときにはstaleコードオブジェクト、または壊れたファイルを生成し、 その結果パッケージのemergeは失敗してしまいます。 もしこの問題が起こった場合(もし"File recognized: File truncated"といったエラーに遭遇したら)、 バグ報告の前にccacheを無効にして(/etc/make.conf内でFEATURES="­ccache"と設定)、 アプリケーションを再度コンパイルしてみてください。もし開発をしていないのであれば、ccacheは有効にしないでください。

ccacheのインストール

ccacheをインストールするには、emerge ccacheを実行してください。

コード表示 3.1: ccacheのインストール

# emerge ccache

Portageのサポートを有効化する

/etc/make.confを開いてFEATURES変数にccacheを追加します。 次にCCACHE_SIZEという変数を追加して"2G"と設定します。

コード表示 3.2: /etc/make.confのCCACHE_SIZEを編集

CCACHE_SIZE="2G"

ccacheが動作しているかを確認するには、ccacheに統計を提供するよう問い合わせてください。 Portageは異なったccacheホームディレクトリを使用しているので、CCACHE_DIRも設定する必要があります。

コード表示 3.3: ccacheの統計を見る

# CCACHE_DIR="/var/tmp/ccache" ccache ­s

/var/tmp/ccacheはPortageのデフォルトのccacheホームディレクトリです。 設定を変更したいのなら、/etc/make.confでCCACHE_DIR変数を設定することができます。

ですが、ccacheを実行すれば、それはデフォルトの位置である$HOME/.ccacheを使用するでしょう。 そのため、Portageのccache統計を見るときにはCCACHE_DIR変数を設定する必要があったのです。

ccacheをPortageのCのコンパイル以外に使用する

もしPortageでないコンパイルにccacheを使いたいのなら、PATH変数の最初(/usr/binより前)に/usr/lib/ccache/binを追加してください。 これは、ユーザのホームディレクトリの.bash_profileを編集することで完了します。 .bash_profileはPATH変数を定義する方法のひとつです。

コード表示 3.4: .bash_profileを編集

PATH="/usr/lib/ccache/bin:/opt/bin:$PATH"

3.d. バイナリパッケージのサポート

予めビルドされたパッケージを作成する

Portageは予めビルドされたパッケージのインストールをサポートしています。 Gentoo自体は(GRPスナップショットを除いて)ビルドされたパッケージを提供しませんが、Portageはビルドされたパッケージを完全に認識することができます。

パッケージが既にインストールされているならquickpkgを使うことができますし、そうでなければemergeに­­buildpkgもしくは­­buildpkgonlyオプションを付けることでビルドされたパッケージを作成することができます。

Portageにインストールするパッケージごとにビルドされたパッケージを作成して欲しいのなら、FEATURES変数にbuildpkgを追加します。

ビルド済みのパッケージ集を作成するためのより拡張されたサポートが、catalystによって取得できます。 catalystについての詳しい説明はCatalystFrequently Asked Questionsを見てください。

予めビルドされたパッケージのインストール

Page 39: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

予めビルドされたパッケージのインストール

Gentooは提供してくれませんが、ビルドされたパッケージを置いておく中央レポジトリを作ることができます。 このレポジトリを使いたいのなら、Portageが認識できるようPORTAGE_BINHOST変数にその場所を指定しなければなりません。 例えば、ビルドされたパッケージがftp://buildhost/gentooにあるならこうします。

コード表示 4.1: /etc/make.confにPORTAGE_BINHOSTを設定

PORTAGE_BINHOST="ftp://buildhost/gentoo"

ビルドされたパッケージをインストールしたいときには、emergeコマンドに­­getbinpkgオプションを­­usepkgと並べて記述します。 前者が前もって定義したサーバからビルドされたパッケージをダウンロードするようにemergeに伝えているのに対し、 後者はソースをダウンロードしてコンパイルする前にビルドされたパッケージのインストールを試すように言っています。

例えば、gnumericをビルドされたパッケージからインストールするにはこうします。

コード表示 4.2: ビルドされたgnumericパッケージをインストール

# emerge ­­usepkg ­­getbinpkg gnumeric

emergeの予めビルドされたパッケージに関するより多くの情報はemergeのmanページにあります。

コード表示 4.3: emergeのmanページを読む

$ man emerge

3.e. ファイルの取得

並行取得

複数のパッケージを連続してemergeするとき、Portageは、あるパッケージをコンパイルしている間に次のパッケージのソースファイルを取得してくることで、コンパイル時間を短縮することができます。 この機能を使うためには、FEATURESに"parallel­fetch"を追加してください。

Userfetch

Portageをrootで走らせるとき、FEATURES="userfetch"としておくと、パッケージのソースを取得しにいっている間、rootの権限を下げることができます。これは小さなセキュリティの改善です。

4. initスクリプト

4.a. ランレベル

システムの起動

システムを起動したとき、多くのテキストが画面上を流れることに気がつくでしょう。 よく注意して見ると、このテキストは、システムをリブートするたびに、常に同じであることがわかるでしょう。これらすべてのアクションの進行は、ブートシーケンスと呼ばれ、(ほぼ)静的に定義されます。

最初に、ブートローダが、ブートローダの設定で指定されたカーネルイメージをメモリにロードし、その後、カーネルを実行するようにCPUに命じます。カーネルがロードされ、実行されるときに、カーネルは、カーネル固有の構造とタスク全てを初期化し、initプロセスを起動します。

その後、initプロセスは、(/etc/fstabで指定された)すべてのファイルシステムがマウントされて使用できる準備が整うことを確認します。 次に、/etc/init.dディレクトリにあるいくつかのスクリプトを実行します。それらのスクリプトは、うまくシステムが起動されるように必要なサービスを開始します。

最後に、すべてのスクリプトが実行されたら、initプロセスは、agettyという特別なプロセスを端末(ターミナル)にくっつけて、端末(ほとんどが、Alt­F1、Alt­F2などの下に隠される仮想コンソール)を有効にします。 次に、agettyプロセスは、loginプロセスを実行することで、これらの端末を通してユーザがログインできるようにします。

initスクリプト

ここで、initプロセスは、/etc/init.dディレクトリにあるスクリプトをでたらめに実行するわけではありません。ましてや、/etc/init.dディレクトリにあるスクリプト全てを実行するわけでもありません。 /etc/runlevelsディレクトリを調べて、どのスクリプトを実行するべきかを決めます。

最初に、initプロセスは、/etc/runlevels/bootディレクトリにシンボリックリンクがある/etc/init.dの全てのスクリプトを実行します。通常は、アルファベット順にスクリプトを開始しますが、いくつかのスクリプトは、起動される前に別のスクリプトが実行されなければならないことをシステムに伝える依存情報を持っています。

/etc/runlevels/bootから参照されるすべてのスクリプトが実行されたら、initプロセスは、/etc/runlevels/defaultにシンボリックリンクがあるスクリプトの実行を続けます。 やはり、スクリプトが依存情報を持たない場合は、どのスクリプトを最初に実行するべきかを決めるためにアルファベット順を使用しますが、うまく動作するスタートアップシーケンスを提供するために順番が変更される場合があります。

initプロセスはどのように動作するか

もちろん、initプロセス自身が勝手に全てを決定するわけではありません。 どんなアクションを取ることが必要かを指定する設定ファイルが必要です。 この設定ファイルは、/etc/inittabです。

最初に説明したブートシーケンスを覚えているなら、initプロセスの最初のアクションは、すべてのファイルシステムをマウントすることであることを覚えているでしょう。これは、/etc/inittabに以下のような行で指定されています。

コード表示 1.1: /etc/inittabのシステム初期化を指示する行

si::sysinit:/sbin/rc sysinit

この行は、initプロセスに、システムを初期化するために/sbin/rc sysinitを実行しなければならないことを伝えています。/sbin/rcスクリプトが初

Page 40: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

この行は、initプロセスに、システムを初期化するために/sbin/rc sysinitを実行しなければならないことを伝えています。/sbin/rcスクリプトが初期化を担当するので、initはあまり何もしないじゃないかと思うかもしれません。そうです、別のプロセスにシステムの初期化処理を委譲しています。

次に、initプロセスは、/etc/runlevels/bootにシンボリックリンクがあるスクリプトすべてを実行します。これは、以下の行で指定されます。

コード表示 1.2: システム初期化の続き

rc::bootwait:/sbin/rc boot

ここでもrcスクリプトが必要な処理を実行します。rcに与えられているオプション(boot)は、/etc/runlevelsのサブディレクトリと同じものが使用されていることを覚えておいてください。

ここで、initプロセスは、どのランレベルで実行されるべきかを知るために設定ファイルを調べます。これを決めるために、/etc/inittabの以下の行を読みます。

コード表示 1.3: initdefault行

id:3:initdefault:

この場合(Gentooユーザの大多数が使用する)、ランレベルidは3です。 この情報を使って、initはランレベル3を開始するために、何を実行しなければならないかを調べます。

コード表示 1.4: ランレベルの定義

l0:0:wait:/sbin/rc shutdownl1:S1:wait:/sbin/rc singlel2:2:wait:/sbin/rc nonetworkl3:3:wait:/sbin/rc defaultl4:4:wait:/sbin/rc defaultl5:5:wait:/sbin/rc defaultl6:6:wait:/sbin/rc reboot

レベル3を指定する行は、やはり、サービスを起動するためにrcスクリプトを使用します(ここでは、defaultの引数を渡す)。 ここでも、rcの引数が、/etc/runlevelsのサブディレクトリと同じであることを覚えておいてください。

rcが完了したら、initプロセスは、以下のように、どの仮想コンソールを有効にすべきで、何のコマンドがそれぞれのコンソールで実行されなければならないかを決定します。

コード表示 1.5: 仮想コンソールの定義

c1:12345:respawn:/sbin/agetty 38400 tty1 linuxc2:12345:respawn:/sbin/agetty 38400 tty2 linuxc3:12345:respawn:/sbin/agetty 38400 tty3 linuxc4:12345:respawn:/sbin/agetty 38400 tty4 linuxc5:12345:respawn:/sbin/agetty 38400 tty5 linuxc6:12345:respawn:/sbin/agetty 38400 tty6 linux

ランレベルって何?

あなたは、initプロセスがどのランレベルを有効にすべきかを決めるために、番号付け体系を使用することを見ました。ランレベルは、システムの実行状態であり、ランレベルに入ったりランレベルから抜けたりするときに実行されるべきスクリプト(runlevel scriptsもしくは、initscripts)のコレクションを意味します。

Gentooでは、7つのランレベルが定義されています。そのうちの3つは、システム内部で使用されるランレベルで、あとの4つは、ユーザ定義のランレベルです。内部で使用されるランレベルは、sysinitとshutdownとrebootで、その名が示すとおりのことを適切に行います。sysinitは、システムを初期化し、shutdownは、システムを停止し、rebootは、システムのリブートを行います。

ユーザ定義のランレベルは、/etc/runlevelsに属するサブディレクトリを指します。そのサブディレクトリには、bootとdefaultとnonetworkとsingleがあります。bootランレベルは、他のすべてのランレベルが使用する、システムに必要なすべてのサービスを開始します。残りの3つのランレベルには、何のサービスを開始するかの違いがあります。 defaultは、日常の業務のために使用されます。nonetworkはネットワーク接続が必要でない場合に使用されます。singleは、システムを修復しなければならない場合に使用されます。

Initスクリプトを使いこなす

rcプロセスが起動するスクリプトは、initスクリプトと呼ばれます。 /etc/init.dディレクトリにある各スクリプトは、次の引数を伴って実行することができます。start、stop、restart、pause、zap、status、ineed、iuse、needsme、usesme、broken。

サービス(とそれに依存するすべてのサービス)を開始、停止、再スタートするために、それぞれstart、stop、restart引数が次のように使用されるでしょう。

コード表示 1.6: postfixの起動

# /etc/init.d/postfix start

注意: 指定されたサービスをneed(必要)するサービスだけが、停止されるか再スタートされます。別の依存(use(使用)であるが、need(必要)ではない)サービスは、何もされないままです。

サービスを停止したいが、それに依存するサービスは停止したくない場合、以下のようにpause引数を使用します。

コード表示 1.7: postfixを停止するが、依存するサービスは実行したままにする

# /etc/init.d/postfix pause

サービスの状態(started、stopped、paused、...)を見たいなら、以下のようにstatus引数を使用します。

コード表示 1.8: postfixの状態を見る

# /etc/init.d/postfix status

Page 41: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# /etc/init.d/postfix status

実際にはサービスが停止しているのが分かっているのに、起動中と表示される場合、以下のようにzap引数で"停止"状態に修正します。

コード表示 1.9: postfixの状態の修正

# /etc/init.d/postfix zap

サービスが持つ依存には何があるかを問い合わせるには、iuseかineedを使用します。ineedでは、対象のサービスが正しく機能するために実際に必要なサービスを見ることができます。一方、iuseは、サービスが正しく機能するために必須ではないが、サービスによって使用される可能性のあるサービスを表示します。

コード表示 1.10: postfixが依存する必要なサービスのすべてを表示する要求

# /etc/init.d/postfix ineed

同様に、どのサービスが対象のサービスを要求するか(needsme)、もしくは、使用するか(usesme)を問い合わせることができます。

コード表示 1.11: postfixを必要とするすべてのサービスを表示する要求

# /etc/init.d/postfix needsme

最後に、サービスが必要としていても存在しないものを、以下のように問い合わせることができます。

コード表示 1.12: postfixの依存しているものの中で、存在しないものを表示する要求

# /etc/init.d/postfix broken

4.b. rc­updateを使いこなす

rc­updateって何?

Gentooのinitシステムは、最初に起動される必要があるサービスが何であるかを決定するために、依存性ツリーを使用します。依存性ツリーの管理作業は、ユーザに手動でさせたいとは思わない退屈なものなので、ランレベルとinitスクリプトの管理を簡単にするツールを作成しました。

rc­updateを使用して、ランレベルにinitスクリプトを追加したり、削除したりできます。rc­updateツールは、その後、依存性ツリーを再構築するためにdepscan.shスクリプトを自動で呼び出します。

サービスの追加と削除

Gentooをインストールする間に、既に"default"ランレベルにinitスクリプトを追加しています。そのときには"default"が何のためにあるかということを知らなかったかもしれませんが、今は知っておくべきです。rc­updateスクリプトは、何を実行するかを指定する別の引数を必要とします。それは、addかdelかshowです。

initスクリプトを追加または、削除するには、rc­updateにaddまたは、del引数を渡し、initスクリプトとランレベルが後ろに続きます。例えば、以下のようにします。

コード表示 2.1: defaultランレベルからpostfixを削除する

# rc­update del postfix default

rc­update ­v showコマンドは、すべての利用可能なinitスクリプトとそれがどのランレベルで実行されるかを表示します。

コード表示 2.2: initスクリプトの情報を参照する

# rc­update ­v show

(­vなしで)rc­update showを実行し、有効なinitスクリプトとそれらのランレベルをみることができます。

4.c. サービスの設定

なぜ追加の設定が必要ですか?

initスクリプトは、極めて複雑になる可能性があります。そのため、initスクリプトをユーザーが直接編集することは、間違い起こしやすいので良くありません。しかし、そのようなサービスを設定できることは重要です。例えば、サービスに追加のオプションを足したいと思うかもしれません。

設定をinitスクリプトの外側に設ける別の理由として、変更した設定が無効になってしまうという心配をせずにinitスクリプトの上書きができるということがあります。

/etc/conf.dディレクトリ

Gentooはそのようなサービスを設定する簡単な方法を提供します。設定可能なinitスクリプトのすべてが、/etc/conf.dディレクトリにファイルを設けています。例えば、apache2のinitスクリプト(/etc/init.d/apache2)には、/etc/conf.d/apache2という設定ファイルがあります。設定ファイルには、起動されるときにApache 2サーバに与えたいオプションを含めることができます。

コード表示 3.1: /etc/conf.d/apache2に定義される変数

APACHE2_OPTS="­D PHP5"

このような設定ファイルには、サービスを非常に簡単に設定し易くする変数や変数単体(/etc/make.confのような)が記述されています。変数に関するより詳しい情報も(コメントとして)提供されます。

4.d. initスクリプトの記述記述しなければならないですか?

いいえ。Gentooは、提供されるサービスすべてに対して、すぐに使用できるinitスクリプトを提供するので、通常は、initスクリプトを記述する必要はありま

Page 42: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

いいえ。Gentooは、提供されるサービスすべてに対して、すぐに使用できるinitスクリプトを提供するので、通常は、initスクリプトを記述する必要はありません。しかし、あなたは、Portageを使用しないで、サービスをインストールしているかもしれません。その場合、おそらくinitスクリプトを作成しなければならないでしょう。

サービスによって提供されるinitスクリプトは、Gentoo用に適切に書かれていないなら、使用してはいけません。Gentooのinitスクリプトは、他のディストリビューションによって使用されるinitスクリプトとは、互換性がありません。

レイアウト

initスクリプトの基本レイアウトを、以下に示します。

コード表示 4.1: initスクリプトの基本レイアウト

#!/sbin/runscript

depend() (依存情報)

start() (サービスを起動するために必要なコマンド群)

stop() (サービスを停止するために必要なコマンド群)

restart() (サービスを再スタートするために必要なコマンド群)

initスクリプトではstart()関数が定義されていることが必須です。他のすべてのセクションは、定義してもしなくてもよいです。

依存関係

二つの依存関係が指定可能です。それは、useと、needです。 前に述べたように、need依存は、use依存より制約が強いです。 依存タイプ(needかuse)の後に、依存するサービスか、virtual依存を記述します。

virtual依存とは、あるサービスが提供する依存関係ですが、そのサービスだけが提供するものではありません。たとえば、あるinitスクリプトがシステムロガーに依存するとします。しかし、たくさんのシステムロガー(metalogd、syslog­ng、sysklogd等々)が存在しているので、その中の一つのシステムロガーだけにneed依存することはできません(また、すべてのシステムロガーをインストールして、実行することのもナンセンスです)。このような場合、すべてのシステムロガーがvirutal依存関係をprovide(提供)するようにします。

postfixサービスの依存情報を見てみましょう。

コード表示 4.2: postfixの依存情報

depend() need net use logger dns provide mta

見たとおり、postfixサービスには以下のような依存情報があります。

(virtual)依存のnet(例えば、/etc/init.d/net.eth0によってprovide(提供)されます)を要求します(virtual)依存のlogger(例えば、/etc/init.d/syslog­ngによってprovide(提供)されます)を使用します(virtual)依存のdns(例えば、/etc/init.d/namedによってprovide(提供)されます)を使用します(virtual)依存のmta(すべてのメールサービスに共通です)をprovide(提供)します

順番の制御

場合によっては、別のサービスを要求はしないが、もしシステムに存在し(注意: この条件は依存ではありません)、かつ、同一ランレベルで実行する(注意:この条件は同一ランレベルのサービスだけが対象です)別のサービスのbefore(前に)(もしくは、after(後に))開始したいサービスがあるでしょう。

例として、portmapサービスの設定を見てみましょう。

コード表示 4.3: portmapサービスのdepend()関数

depend() need net before inetd before xinetd

お勧めはしませんが、同一ランレベルのすべてのサービスにあてはまる"*"を使用することもできます。

コード表示 4.4: ランレベル内の最初のスクリプトとしてこのinitスクリプトを実行する

depend() before *

もし、サービスがローカルディスクに書き込みをしなければならないものであれば、 localmountが必要となります。 もし、/var/run にpidファイルのように何か書き込むのであれば、 bootmiscのあとに開始されなければいけません。

コード表示 4.5: Example depend() function

depend()

Page 43: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

depend() need localmount after bootmisc

標準関数

depend()関数の次に、さらにstart()関数を定義する必要があります。 この関数には、あなたのサービスを初期化するために必要なすべてのコマンドを入れます。何がなされているかをユーザに知らせるために、以下のようにebeginとeend関数を使用することが望ましいです。

コード表示 4.6: start()関数の例

start() ebegin "Starting my_service" start­stop­daemon ­­start ­­exec /path/to/my_service \ ­­pidfile /path/to/my_pidfile

eend $?

­­exec と ­­pidfile の両方がstart, stop関数のなかで必要です。 もしサービスがpidファイルを作らないならば、 できる限り­­make­pidfileを使ってください。 ただし、テストをして確認してください。 そうでなければ、pidファイルを使用しないでください。 ­­quietをstart­stop­daemonオプションに加えることもできますが、 これは、サービスがかなり冗長なメッセージを出さない限りおすすめできません。 ­­quietを使うことで、サービス開始に失敗した際のデバッグが困難になるかもしれません。

注意: ­­exec が、サービスを呼び出したり停止するシェルスクリプトではなく(これはinitスクリプトがサポートする事柄です)、実際にサービスを呼び出すようにしてください。

start()関数のより多くの例が必要なら、/etc/init.dディレクトリにある利用可能なinitスクリプトのソースコードを見てください。

定義可能な他の関数には、stop()とrestart()があります。 これらの関数を定義することは強制されません! Gentooのinitシステムは、start­stop­daemonを使用する場合には、自動的にinitシステム自身がこれらの関数を適切に処理します。

とはいうものの、stop()関数を作らなくてよい程度のものなので、 ここで、例を挙げます

コード表示 4.7: stop()関数の例

stop() ebegin "Stopping my_service" start­stop­daemon ­­stop ­­exec /path/to/my_service \ ­­pidfile /path/to/my_pidfile eend $?

もし、あなたのサービスが他のスクリプト(たとえば、bash, python または perl)を起動し、このスクリプトがその後名前が変わる(たとえばfoo.pyがfooに)ならば、­­nameをstart­stop­daemonに追加する必要があるでしょう。スクリプトの名前がどう変わるのか指定する必要があります。 この例では、サービスがfoo.pyを起動し、そしてこの名前がfooに変わります。

コード表示 4.8: fooスクリプトを起動するサービス

start() ebegin "Starting my_script" start­stop­daemon ­­start ­­exec /path/to/my_script \ ­­pidfile /path/to/my_pidfile ­­name foo eend $?

start­stop­daemonコマンドに関してより詳しい情報が必要なら、素晴らしいmanページが以下のようにして利用可能です。

コード表示 4.9: start­stop­daemonコマンドのmanページを参照する

$ man start­stop­daemon

Gentooのinitスクリプトの構文は、Bourne Again シェル(bash)準拠です。 よって、initスクリプトでは、bash構文のスクリプトを自由に使用することができますが、 POSIX仕様に準拠したスクリプトを書くようにしましょう。将来のinitスクリプトのシステムは、 /bin/shからのシンボリックリンクがbash以外のシェルを指すことを許可するかもしれません。 この場合、bash特有の特徴に依存するinitスクリプトは、設定ファイルを壊し問題になります。

特別なオプションの追加

initスクリプトに、既に説明したもの以外に追加のオプションをサポートさせたいなら、opts変数にオプションを追加して、オプションと同じ名前を持つ関数を作成しなければなりません。例えば、restartdelayというオプションをサポートするには、以下のようにします。

コード表示 4.10: restartdelayオプションのサポート

opts="$opts restartdelay"

restartdelay() stop sleep 3 # Wait 3 seconds before starting again start

サービス設定変数

/etc/conf.dの設定ファイルをサポートするのに必要なことは、何もありません。あなたのinitスクリプトが実行される場合、自動的に以下のファイルは読み込まれます。(すなわち、変数が利用可能です)

/etc/conf.d/<あなたのinitスクリプト>

/etc/conf.d/basic

Page 44: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

/etc/rc.conf

さらに、あなたのinitスクリプトが(netのような)virtual依存を提供するなら、その依存に関連するファイル(/etc/conf.d/netのような)もsourceされるでしょう。

4.e. ランレベルの動作を変更する

これをすることでどんな人が恩恵を受けますか?

多くのラップトップユーザは、"家ではnet.eth0を開始する必要があるが、外出先(ネットワークが利用可能な場所ではないので)ではnet.eth0を開始したくない。"という状況を理解できるでしょう。 Gentooではあなたのしたいようにランレベルの動作を変更できます。

例えば、別のinitスクリプトが割り当てられてブートする、2つ目の"default"ランレベルを作成できます。その後、使用したいdefaultランレベルがどれかをブート時に選択できます。

softlevelの使用

何はさておき、別の"default"ランレベルのためのランレベルディレクトリを作成してください。例として、offlineランレベルを以下のように作成します。

コード表示 5.1: ランレベルディレクトリの作成

# mkdir /etc/runlevels/offline

新しく作成したランレベルに必要なinitスクリプトを追加してください。例えば、net.eth0を除いた現在のdefaultランレベルの完全なコピーをしたいなら、以下のようにしてください。

コード表示 5.2: 必要なinitスクリプトの追加

(offlineランレベルにdefaultランレベルからすべてのサービスをコピーします)# cd /etc/runlevels/default# for service in *; do rc­update add $service offline; done(offlineランベルから不必要なサービスを削除します)# rc­update del net.eth0 offline(offlineランレベルで有効なサービスを表示します)# rc­update show offline(出力結果例、抜粋) acpid | offline domainname | offline local | offline net.eth0 |

たとえばnet.eth0をofflineランレベルから削除した場合でも、 udevは適当なサービスを検知、開始しするすべてのデバイスを起動しようとします。 そのため、開始する必要のないネットワークサービスを(udevによって開始される他デバイスに対するサービスも同様に)/etc/conf.dに付け加える必要があります。

コード表示 5.3: /etc/conf.d/rc内でサービスを開始するデバイスを無効にする

RC_COLDPLUG="yes"(つぎに、自動的に開始する必要のないサービスを指定します。)RC_PLUG_SERVICES="!net.eth0"

注意: For more information on device initiated services, please see the comments inside /etc/conf.d/rc.

ここで、ブートローダの設定を編集して、offlineランレベルのための新しいエントリを追加してください。例えば、/boot/grub/grub.confでは、以下のようになります。

コード表示 5.4: offlineランレベルのためのエントリ追加

title Gentoo Linux Offline Usage root (hd0,0) kernel (hd0,0)/kernel­2.4.25 root=/dev/hda3 softlevel=offline

ほら、もう全てが設定されました。システムをブートしてブート時に新しく追加されたエントリを選択すれば、offlineランレベルは、defaultランレベルの代わりに使用されます。

bootlevelの使用

bootlevelの使用は、まったくもってsoftlevelに類似しています。ここでのただ一つの違いは、別の"default"ランレベルを定義する代わりに、別の"boot"ランレベルを定義するということです。

5. 環境変数

11.a. 環境変数とは

環境変数とは何か

環境変数とは、さまざまなアプリケーションから使用される情報を保持した名前付きオブジェクトです。 という説明をされても、多くのユーザー(特にあまりLinuxに慣れていない人)にとっては、 意味不明だったり、使いどころがないように思われるかもしれません。でも、それは違います。 環境変数を使うことで、さまざまなアプリケーションの設定を簡単に変更することができるのです。

例(重要)

以下の表は、Linuxシステムで使用されるいろいろな環境変数とその説明です。 具体的な環境変数の値については表の後でお見せします。

変数名 説明

Page 45: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

変数名 説明PATH この変数には、システムが実行ファイルを検索する際に用いられるディレクトリがコロン区切りで格納されています。 入力した実行ファイル名(たとえばls、rc­

update、emergeなど)がこの変数で設定された場所に見つからない場合、 そのファイルを実行することはできません(ただし、 たとえば/bin/lsのようにコマンドをフルパスで入力した場合はその限りではありません)。

ROOTPATH 機能としてはPATHとほぼ同じですが、この変数の場合、 rootユーザーがコマンドを入力するときのみ調べる必要があるディレクトリだけがリストされています。LDPATH この変数には、ダイナミックリンカがライブラリを検索する際に使用するディレクトリが、 コロン区切りで格納されています。MANPATH この変数には、manコマンドがマニュアルページを検索する際に使用するディレクトリが、 コロン区切りで格納されています。INFODIR この変数には、infoコマンドがinfoページを検索する際に使用するディレクトリが、 コロン区切りで格納されています。PAGER この変数には、ファイルの内容を表示するときに使うプログラム(たとえばlessやmore)のパスが格納されています。EDITOR この変数には、ファイルの内容を編集する際に使われるプログラム(たとえばnanoやvi)のパスが格納されています。KDEDIRS この変数には、KDEに特化したファイルを収めたディレクトリが、 コロン区切りで格納されています。CONFIG_PROTECT この変数には、Portageがパッケージのアップデートを行う際に保護する必要のあるディレクトリが、 スペース区切りで格納されています。CONFIG_PROTECT_MASK この変数には、Portageがパッケージのアップデートを行う際に保護してはいけないディレクトリが、 スペース区切りで格納されています。

以下、これまでに説明したすべての変数の定義例を示します。

コード表示 1.1: 定義例

PATH="/bin:/usr/bin:/usr/local/bin:/opt/bin:/usr/games/bin"ROOTPATH="/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin"LDPATH="/lib:/usr/lib:/usr/local/lib:/usr/lib/gcc­lib/i686­pc­linux­gnu/3.2.3"MANPATH="/usr/share/man:/usr/local/share/man"INFODIR="/usr/share/info:/usr/local/share/info"PAGER="/usr/bin/less"EDITOR="/usr/bin/vim"KDEDIRS="/usr"CONFIG_PROTECT="/usr/X11R6/lib/X11/xkb /opt/tomcat/conf \ /usr/kde/3.1/share/config /usr/share/texmf/tex/generic/config/ \ /usr/share/texmf/tex/platex/config/ /usr/share/config"CONFIG_PROTECT_MASK="/etc/gconf"

5.b. グローバルな環境変数を設定する

/etc/env.dディレクトリ

各環境変数を一ヶ所で定義できるようにするため、Gentooは/etc/env.dディレクトリを導入しました。 このディレクトリの中には、たとえば00basicや05gccなど、 いろいろなファイルが入っていると思います。それぞれのファイルには、 そのファイル名が表すアプリケーションに必要な環境変数が格納されています。

たとえばgccをインストールすると、 05gccという以下のような変数を定義したファイルが、 ebuildにより生成されます。

コード表示 2.1: /etc/env.d/05gcc

PATH="/usr/i686­pc­linux­gnu/gcc­bin/3.2"ROOTPATH="/usr/i686­pc­linux­gnu/gcc­bin/3.2"MANPATH="/usr/share/gcc­data/i686­pc­linux­gnu/3.2/man"INFOPATH="/usr/share/gcc­data/i686­pc­linux­gnu/3.2/info"CC="gcc"CXX="g++"LDPATH="/usr/lib/gcc­lib/i686­pc­linux­gnu/3.2.3"

他のディストリビューションの場合は、/etc/profileなどのファイルに書かれた環境変数を変更したり新たに環境変数を定義したり、といったことを求められます。 Gentooの場合、環境変数の維持や管理がユーザーにとって(そしてPortageにとっても)簡単に行えるようになっており、 環境変数が格納される可能性のあるいくつものファイルそれぞれに、 注意を払う必要がありません。

たとえばgccが更新された場合は、 ユーザーが指一本動かすことなく、/etc/env.d/05gccも同時に更新されます。

これはPortageにとって便利であるばかりでなく、ユーザーであるあなたにとっても便利です。 場合によっては、システム全体に特定の環境変数を設定する必要に迫られることがあるでしょう。 たとえばhttp_proxyを例に取りましょうか。 /etc/profileをぐちゃぐちゃにしてしまう代わりに、 以下のように独自の定義を用意したファイル(/etc/env.d/99local)を作成すれば良いだけなのです。

コード表示 2.2: /etc/env.d/99local

http_proxy="proxy.server.com:8080"

このファイルを使って自分用の環境変数を設定するようにしておけば、 独自に設定した環境変数も一目瞭然です。

env­updateスクリプト

/etc/env.dには、PATH変数を定義した複数のファイルが存在します。 これは間違いではありません。env­updateを実行すると環境変数が更新される前にそれぞれの定義が順番に追加されます。 このためパッケージは(そしてユーザーも)既存の変数に影響を与えることなく、 自分自身の環境変数を簡単に追加できるのです。

env­updateスクリプトは/etc/env.d以下のファイルをアルファベット順に並べ、 その中で定義された変数をつなげていきます。ファイル名は、2つの数字で始まる必要があります。

コード表示 2.3: env­updateが変数を並べる順番

00basic 99kde­env 99local +­­­­­­­­­­­­­+­­­­­­­­­­­­­­­­+­­­­­­­­­­­­­+PATH="/bin:/usr/bin:/usr/kde/3.2/bin:/usr/local/bin"

環境変数の連結はいつも起こるわけではなく、以下の環境変数のみで発生します。 KDEDIRS、PATH、LDPATH、MANPATH、INFODIR、INFOPATH、ROOTPATH、 CONFIG_PROTECT、CONFIG_PROTECT_MASK、PRELINK_PATHそして PRELINK_PATH_MASK 他の全ての環境変数は、最後に指定された値が(/etc/env.d内のファイルのアルファベット順で) 使用されます。

env­updateを実行すると、 このスクリプトは全環境変数を生成し/etc/profile.envに記録します(このファイルは/etc/profileから利用されます)。また同時にLDPATHから情報を抽出し、その情報を用いて/etc/ld.so.confを生成します。 それからldconfigを呼び出し、 ダイナミックリンカが使用す

Page 46: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

また同時にLDPATHから情報を抽出し、その情報を用いて/etc/ld.so.confを生成します。 それからldconfigを呼び出し、 ダイナミックリンカが使用する/etc/ld.so.cacheを再生成します。

env­update実行後すぐにその効果を確認したい場合は、 以下のコマンドで環境を更新します。 自分でGentooをインストールした方は、 インストールガイドでも以下のコマンドが紹介されていたことを覚えているかもしれません。

コード表示 2.4: 環境を更新

# env­update && source /etc/profile

注意: 上記のコマンドは現在使用中のターミナル、新しい コンソールやそれらから起動されたプロセス上の環境変数のみを更新します。 ですので、もしX11上で作業する場合は、全ての新しく開くターミナル上で source /etc/profile を実行する必要があります。 もしくは X を再起動し、全ての新しいターミナルが新たな環境変数に基づくようにします。 もし、ログインマネージャーを使用している場合は、root になり、/etc/init.d/xdm restart を実行します。 ログインマネージャを使用していない場合は、、ログアウトし、X が新しい環境変数でプロセスを起動できるように、ログインし直す必要があります。

重要: 他の変数を定義しているときにシェル変数は使うことができません。 つまり、FOO="$BAR" (ここで $BAR は他の変数)というようにはできないということです。

5.c. ローカルな環境変数を設定する

ユーザー限定の設定

グローバルな形で環境変数を設定したくない場合もあります。 たとえば、/home/my_user/binと、 現在の作業ディレクトリ(現在あなたがいるディレクトリ)をPATH変数に設定したいけれども、 同じシステムにいる他のユーザーのPATHには追加させたくない、 という場合です。 このように環境変数をローカルに定義したい場合は、 ~/.bashrcや~/.bash_profileを編集してください。

コード表示 3.1: ローカルな利用のために~/.bashrcのPATHを拡張

(コロンの後にディレクトリを指定しない場合は、現在の作業ディレクトリとして扱われます。)PATH="$PATH:/home/my_user/bin:"

ログインするとPATHが更新されているはずです。

セッション限定の設定

時には、もっと限定された形で環境変数を使いたい場合もあります。 たとえばテンポラリディレクトリにバイナリを作成したのだけど、 フルパスを入力するのも面倒だし、 ちょっとの間そのバイナリを使うためだけのために~/.bashrcを編集したりしたくない、 というような場合です。

このような場合は、exportコマンドを使って現在のセッションのみ有効なPATH変数を設定することができます。 ログアウトしない限りPATH変数に設定した仮の定義が有効になります。

コード表示 3.2: セッション限定の環境変数を設定

# export PATH="$PATH:/home/my_user/tmp/usr/bin"

C. Portageを使いこなす

1. ファイルとディレクトリ

1.a. Portageファイル

設定指示子

Portageの初期設定は/etc/make.globalsにあります。 その初期設定を見ると、Portageの全ての設定が変数を通して制御されることがわかるでしょう。Portageがどのような変数を受け付け、それらが何を意味するのかは後述します。

多くの設定指示子がアーキテクチャ間で異なるため、Portageにはプロファイルの一部としての初期設定ファイルもあります。 プロファイルの位置は、/etc/make.profileシンボリックリンクのリンク先です。 Portageの設定は、プロファイルとその親ディレクトリにあるすべてのプロファイルにあるmake.defaultsファイルで設定されます。 プロファイルや/etc/make.profileディレクトリについては後でより詳しく説明します。

もし設定変数を変更しようとしているのなら、/etc/make.globalsやmake.defaultsを改変してはいけません。 代わりに、これらのファイルより優先される/etc/make.confを使用してください また、/usr/share/portage/config/make.conf.exampleというファイルも見つけるでしょう。 その名前が示すように、これは単なるサンプルファイルで、Portageはこのファイルを読み込みません。

Portage設定変数を環境変数で定義することもできますが、私たちはお勧めしません。

プロファイルの詳細な情報

/etc/make.profileディレクトリについては既に触れています。 そうです。正確にはディレクトリではなく、プロファイルへのシンボリックリンクで、初期設定とは別の場所に独自のプロファイルを作成して、そこをリンクが指すようにすることもできますが、初期設定では、/usr/portage/profilesの下のプロファイルを指しています。 このシンボリックリンクが指すプロファイルは、システムに適したプロファイルです。

プロファイルには、Portage用のアーキテクチャ固有の情報が含まれています。 例えば、プロファイルに一致するシステムに含まれるパッケージのリストや、動作しない(もしくはマスクされた)パッケージのリストなどといったものです。

ユーザ指定の設定

ソフトウェアのインストールに関するPortageの振舞いを変更したいときには、/etc/portageにあるファイルを編集することになります。/etc/portage内のファイルを利用することが強く推奨されており、環境変数によって上書きすることは全く推奨されていません。

/etc/portageディレクトリ内には以下のファイルを作成することができます。

package.mask はPortageに決してインストールして欲しくないパッケージのリストです。package.unmask はGentoo開発者達が全く推奨していなくてもインストールをできるようにするパッケージのリストです。

Page 47: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

package.accept_keywords はシステムやアーキテクチャに(未だ)対応していなくてもインストールできるようにするパッケージのリストです。package.use は、システム全体で使用しているUSEフラグではなく、特定のパッケージに対して使用するUSEフラグのリストです。

これらはファイルである必要はありません。 パッケージごとにひとつのファイルを持つディレクトリであっても大丈夫です。 /etc/portageディレクトリに関するより多くの情報と作成できるファイルの完全なリストはPortageのmanページで見つけることができます。

コード表示 1.1: Portageのmanページを読む

$ man portage

Portageファイルとディレクトリの場所を変更する

前に説明したように設定ファイルはどこにでも置けるわけではありません。 Portageはいつも決まった位置から設定ファイルを探すからです。 しかし、Portageには、その他多くの様々な用途向けに決まった位置があります。 ビルド用ディレクトリ、ソースコードの保管場所、Portageツリーの位置などです。

これら全ての用途向けに、よく知られた初期設定の位置がありますが、/etc/make.confを通して、好みに合わせて変更することができます。 この章の残りで、Portageが使用する特定用途の位置は何があるかと、ファイルシステム上でのその位置の変更方法を説明します。

ですが、リファレンスとして使用されるようには意図されていません。 もし100%網羅した文書が必要なら、Portageとmake.confのmanページを調べてください。

コード表示 1.2: Portageとmake.confのmanページを読む

$ man portage$ man make.conf

1.b. ファイルを保管する

Portageツリー

Portageツリーの初期設定位置は、/usr/portageです。 これはPORTDIR変数で定義されています。 もしPortageツリーを(この変数を変更することで)どこか別の位置に保管するときは、それに応じて、/etc/make.profileのシンボリックリンクを変更することを忘れないでください。

もしPORTDIR変数を変更したなら、PORTDIRの変更に関する影響を気にしなくてもいいように、以下の変数も同様に変更した方がいいでしょう。 このPORTDIRの変更によって、PortageのPKGDIR、DISTDIR、RPMDIR変数の扱い方に影響を与えます。

ビルド済みのバイナリ

Portageは初期設定ではビルド済みバイナリを利用しないにもかかわらず、ビルド済みバイナリ用の広範なサポート機能を持っています。 Portageにビルド済みパッケージで作業するよう指示したときは、/usr/portage/packagesから探そうとします。 この位置はPKGDIR変数で定義されます。

ソースコード

アプリケーションのソースコードは初期設定では/usr/portage/distfilesに保持されます。 この位置はDISTDIR変数で定義されます。

Portageデータベース

Portageはシステムの状態(どんなパッケージがインストールされているか、どのパッケージに何のファイルが含まれているか、など)を/var/db/pkgに保存します。 これらのファイルを手動で変更してはいけません。 Portageのシステムに関する情報を破壊することになるでしょう。

Portageキャッシュ

Portageキャッシュ(修正を加えた時間、仮想、依存ツリー情報の修正)は/var/cache/edbに保存されます。 この位置は本当にキャッシュであり、Portage関連のアプリケーションを実行していないのなら削除することが出来ます。

1.c. ソフトウェアのビルド

一時的なPortageファイル

Portageの一時ファイルは初期設定では/var/tmpに保持されます。 これはPORTAGE_TMPDIR変数で定義されます。

PORTAGE_TMPDIR変数を変更するなら、PORTAGE_TMPDIRの変更に関する影響を気にしなくてもいいように、次の変数も変更した方がいいでしょう。これは、PortageのBUILD_PREFIX変数の扱い方に影響を及ぼします。

ビルドに使用するディレクトリ

Portageは、各々のパッケージがemergeされるごとに専用のビルドディレクトリを/var/tmp/portage内に作ります。 この位置はBUILD_PREFIX変数で定義されます。

有効なファイルシステム名前空間

初期設定ではPortageは、すべてのファイルをルート(/)を基点するファイルシステム名前空間にインストールしますが、ROOT環境変数を設定することで変更することができます。 これは、新規のビルドイメージを作成するときに役に立ちます。(訳注: ROOT環境変数を変更して、仮の名前空間にインストールして確認してみる場合など)

1.d. ロギング機能

ebuildロギングPortageはebuildごとのログファイルを作成することができます。 しかし、この機能は、PORT_LOGDIR変数にPortage(portageユーザ)が書き込み可能な位置を設定しているときだけ有効になります。 初期設定ではこの変数は設定されていません。 もしPORT_LOGDIRが設定されていないならば、現在のロギングシステムではまったくビルドログを受け取れないでしょう。 ですが、新しいelogから何らかのログを受け取っているかもしれません。 PORT_LOGDIR

Page 48: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

ングシステムではまったくビルドログを受け取れないでしょう。 ですが、新しいelogから何らかのログを受け取っているかもしれません。 PORT_LOGDIRをきちんと定義しelogを使用する場合、以下で説明されるように、ビルドログやelogによって保存されるログを取得することができます。

Portageはelogの利用による、きめ細かなロギングの管理方法を提供します。

PORTAGE_ELOG_CLASSES: これはどんな種類のメッセージが記録されるか設定するものです。 info、warn、 error、log、qaを、スペースで区切ってどんな組み合せでも利用できます。

info: ebulidによって出力される"einfo"メッセージを記録するwarn: ebulidによって出力される"ewarn"メッセージを記録するerror: ebulidによって出力される"eerror"メッセージを記録するlog: いくつかのebulidの中で見受けられる"elog"メッセージを記録するqa: ebulidによって出力される"QA Notice"メッセージを記録する

PORTAGE_ELOG_SYSTEM: ここではログを処理するためのモジュールを選択します。 左側を空欄にすると、ロギングは行われません。save、custom、syslog、mail、save_summary、mail_summaryを、スペースで区切ってでどんな組合せでも利用できます。 elogを使用するためには、少なくともひとつのモジュールを選ばなくてはなりません。

save: これは$PORT_LOGDIRが定義されていないとき、$PORT_LOGDIR/elog、もしくは /var/log/portage/elogにパッケージごとひとつのログを保存します。custom: $PORTAGE_ELOG_COMMANDでユーザが定義したコマンドにすべてのメッセージを渡します。これについては後述します。syslog: インストールされているシステムロガーにメッセージを送ります。mail: $PORTAGE_ELOG_MAILURI(これについては後述します)でユーザが定義したメールサーバにすべてのメッセージを渡します。 elogのメール機能は>=portage­2.1.1が必要です。save_summary: saveと似ていますが、$PORT_LOGDIRが定義されていないとき、すべてのメッセージを$PORT_LOGDIR/elog/summary.logか/var/log/portage/elog/summary.logに追記します。mail_summary: mailと似ていますが、emergeが終了すると、すべてのメッセージを1通のメールにして送信します。

PORTAGE_ELOG_COMMAND: これはcustomが有効のときにのみ使用されます。 ここにはログメッセージを処理するためのコマンドを記述します。 次の2つの変数が使用できることに注意してください。 $PACKAGEはパッケージの名前とバージョンです。一方、$LOGFILEはログファイルの絶対パスです。 ここでは使用方法の一例を示します。

PORTAGE_ELOG_COMMAND="/path/to/logger ­p '\$PACKAGE' ­f '\$LOGFILE'"

PORTAGE_ELOG_MAILURI: これは、アドレス、ユーザ、パスワード、メールサーバ、ポート番号といった、mailモジュールの設定を含みます。 デフォルトの設定は"root@localhost localhost"です。これは特定のポート(デフォルトはポート25です)に対してユーザ名とパスワード認証を必要とするSMTPサーバの例です。

PORTAGE_ELOG_MAILURI="[email protected] username:[email protected]:995"

PORTAGE_ELOG_MAILFROM: ログメールの"from"アドレスを設定できます。 設定していな場合のデフォルトは"portage"です。PORTAGE_ELOG_MAILSUBJECTでログメールの件名を設定できます。 次の2つの変数を使用できることに注目してください。 $PACKAGEは、パッケージの名前とバージョンを表示します。 一方、$HOSTは、Portageが動作しているホストの完全修飾ドメイン名になります。次は使用方法の一例です。

PORTAGE_ELOG_MAILSUBJECT="package \$PACKAGE was merged on \$HOST with some messages"

重要: Portage­2.0.*でenoticeを使用している場合、elogとは互換性がないため、完全にenoticeを削除しなければなりません。

2. 変数による設定

2.a. Portage設定

前述したとおり、Portageは、/etc/make.confで定義すべき多くの変数を通して調整可能です。より詳細で完全な情報は、以下のようにしてmake.confのmanページを参照してください。

コード表示 1.1: make.confのmanページを読む

$ man make.conf

2.b. ビルドに関するオプション

configureスクリプトとコンパイラのオプション

Portageはアプリケーションをビルドする際に、コンパイラとconfigureスクリプトに以下の変数の内容を渡します。

CFLAGS & CXXFLAGS変数は、CおよびC++ソースのコンパイルのために希望するコンパイラフラグを定義します。CHOST変数は、アプリケーションのconfigureスクリプトのためのビルドホスト情報を定義します。MAKEOPTS変数は、makeコマンドに渡され、通常、コンパイル時の並列数を定義するために設定されます。makeオプションに関するより詳細な情報は、makeのmanページにあります。

USE変数は、configureやコンパイルの実行中にも使用されますが、前の章で懇切丁寧に説明されているので、ここでは説明しません。

マージオプション

Portageは、特定のソフトウェアタイトルの新しいバージョンのマージが完了したとき、もう使用されない古いバージョンをシステムから削除します。Portageは、古いバージョンをアンマージする前に、5秒間だけユーザのアクションを待ちます。この5秒は、CLEAN_DELAY変数によって定義されます。

EMERGE_DEFAULT_OPTSを設定することで、emergeが実行されるとき、常に特定のオプションを使用するようにできます。 いくつかの有用なオプションとしては、­­ask、­­verbose、­­treeなどでしょう。

2.c. ファイルの保護設定

Page 49: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

Portageの保護対象ディレクトリ

Portageは、ファイルが保護対象ディレクトリにない場合、ソフトウェアタイトルの新しいバージョンによって提供されるファイルで上書きします。これらの保護対象ディレクトリは、CONFIG_PROTECT変数によって定義され、通常は設定ファイルがあるディレクトリです。複数のディレクトリが、スペースで区切られて指定されます。

保護対象ディレクトリに書き込まれるファイルは、名前が変更され、ユーザには(推定可能な)設定ファイルの新しいバージョンがあることが警告されます。

以下のようにして、emerge ­­infoの出力結果から、現在のCONFIG_PROTECT設定を見つけることができます。

コード表示 3.1: CONFIG_PROTECT設定の確認

$ emerge ­­info | grep 'CONFIG_PROTECT='

Portageの設定ファイル保護機能に関するより詳細な情報は、emergeのmanpageのCONFIGURATION FILESの章で見ることができます。

コード表示 3.2: 設定ファイル保護機能に関するより詳細な情報の参照

$ man emerge

排他ディレクトリ

保護対象ディレクトリのサブディレクトリの一部を'保護対象から除外'するには、CONFIG_PROTECT_MASK変数を使用します。

9.d. ダウンロードオプション

サーバの位置情報

必要な情報またはデータが、システムで利用できない場合、Portageは、インターネットから取得しようとします。各種情報およびデータ取得元のサーバ位置情報は、以下の変数によって定義されます。

GENTOO_MIRRORS変数は、ソースコードがあるサーバのリストを定義します。(distfiles)

PORTAGE_BINHOST変数は、システムの構築済みパッケージがある専用サーバの位置情報を定義します。

三つ目の変数は、Portageツリーを更新するときに使用するrsyncサーバの位置情報に関係します。

SYNC変数は、PortageがPortageツリーを取得するために使用する専用サーバを定義します。

GENTOO_MIRRORS変数とSYNC変数は、mirrorselectアプリケーションを通して自動的に設定される可能性があります。mirrorselectを使用する前に、始めにemerge mirrorselectをする必要があります。より詳細な情報は、mirrorselectのオンラインヘルプを以下のようにして参照してください。

コード表示 4.1: mirrorselectに関する詳細な情報の参照

# mirrorselect ­­help

あなたの環境が、proxyサーバを使用する必要があるなら、プロキシサーバを定義するために、http_proxy変数とftp_proxy変数とRSYNC_PROXY変数を使用できます。

ソースコード取得用コマンド

Portageはソースコードを取得する必要がある場合、デフォルトでwgetコマンドを使用します。FETCHCOMMAND変数によって、このコマンドを変更することができます。

Portageは、既に一部分がダウンロード済みのソースコードを、中断したところから再開することができます。その用途のためのコマンドは、デフォルトでは、wgetコマンドを使用しますが、RESUMECOMMAND変数によって変更することができます。

FETCHCOMMAND変数やRESUMECOMMAND変数に設定したコマンドが、適切な位置にソースコードを保存していることを確認してください。変数内には、ソースコードの位置とdistfilesの位置をそれぞれ正確に示すために、\$URIと\$DISTDIRを使用すべきです。

プロトコル別のハンドラもFETCHCOMMAND_HTTP変数、FETCHCOMMAND_FTP変数、RESUMECOMMAND_HTTP変数、RESUMECOMMAND_FTP変数などで定義できます。

rsync設定

Portageツリーを更新する目的で、Portageによって使用されるrsyncコマンドを変更することはできませんが、rsyncコマンドに関連するいくつかの変数を設定することはできます。

PORTAGE_RSYNC_OPTSは、それぞれスペース区切りで、同期する時に使われるデフォルトの変数を設定します。 これらは、正確に何をしようとしているのかわからない限り、変更すべきではありません。 特定の必須オプションはPORTAGE_RSYNC_OPTSが空でも使用されることに注意してください。PORTAGE_RSYNC_EXTRA_OPTSは同期する時の追加オプションを設定するために使用されます。 各オプションはスペース区切りです。

­­timeout=<number>: これは、rsyncが通信がタイムアウトしたと見なすまでに、何秒間接続を待機させておくことができるかを定義します。この変数のデフォルトは180ですが、ダイヤルアップユーザや低速なコンピュータを使用している人は300以上に設定したほうがよいかもしれません。­­exclude­from=/etc/portage/rsync_excludes: これは、rsyncがアップデート処理を行う間、無視すべきパッケージまたはカテゴリを記入したファイルを指しています。 この場合は /etc/portage/rsync_excludesを指しています。 このファイルの構文を知りたい場合はPortageツリーの一部を使うを読んでください。­­quiet: スクリーンへの出力を減らします。

­­verbose: 完全なファイルリストを表示します。­­progress: 各ファイルに対して進行度合いを表示します。

Page 50: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

PORTAGE_RSYNC_RETRIESは、rsyncがSYNC変数で指定されたミラーへの接続試行をやめるまでに、何回接続を試みるか定義します。 この変数のデフォルトは3です。

これらのオプションのさらに詳細な情報や他のオプションについては、man rysncを読んでください。

2.e. Gentoo設定

ブランチの選択

ACCEPT_KEYWORDS変数によってデフォルトブランチを変更できます。デフォルトは、あなたのアーキテクチャの安定版ブランチです。Gentooのブランチのより詳細な情報は、次の章にあります。

Portageの機能

FEATURES変数を通してPortageの特定の機能を有効にできます。Portageの機能は、前の章(Portageの機能)で説明されています。

2.f. Portageの振舞い

リソースの管理

PORTAGE_NICENESS変数によって、Portageが実行される優先順位(nice値)を増減できます。PORTAGE_NICENESS変数の値は、デフォルトのnice値に追加されます。

nice値に関するより詳細な情報は、以下のようにして、niceコマンドのmanページを参照してください。

コード表示 6.1: nice値に関するより詳細な情報の参照

$ man nice

出力形式

デフォルトが"false"であるNOCOLOR変数は、カラー出力を止めるべきかどうかを定義します。

3. ソフトウェアのブランチを併用する

3.a. 1つのブランチを利用する

Stableブランチ

ACCEPT_KEYWORDS変数はシステムが利用するソフトウェアブランチを定義します。 デフォルトではあなたのアーキテクチャ、例えばx86のstableソフトウェアブランチとなっています。

stableブランチのみ利用することを推奨しています。 しかし、安定性にそれほどこだわらず、http://bugs.gentoo.orgへバグレポートをすることによってGentooに手を貸したいのなら、読み続けてください。

Testingブランチ

より新しいソフトウェアを利用したいなら、testingブランチを代わりに利用することを考えてください。 Portageにtestingブランチを利用させるには、アーキテクチャの前に~を追加してください。

testingブランチは、その名が示すとおりテスト中です。 もしパッケージがテスト中なら、開発者は機能はするがテストが完全でないと思っていることを意味します。 バグをいち早く発見し、開発者が知ることが出来るようにバグレポートを提出することが望ましいです。

不完全なパッケージを扱ったり(例えば依存関係の間違いや消失など)、過度の更新(多くのビルドを行うことになる)や壊れたパッケージは安定性の問題があると言うことに注意してください。 Gentooの動作や問題の解決方法を知らないのなら、安定でテスト済みのブランチを使用することが推奨されています。

例えば、x86アーキテクチャのtestingブランチを選択するには、/etc/make.confを編集してこのように設定します。

コード表示 1.1: ACCEPT_KEYWORDS変数の設定

ACCEPT_KEYWORDS="~x86"

今システムを更新すれば、たくさんのパッケージが更新されることを知るでしょう。 注意してください: testingブランチを利用してシステムを更新したら、オフィシャルブランチであるstableに戻すのはたいてい優しい方法はありません(もちろんバックアップを取っている場合は除きます)。

3.b. StableとTestingの混在

package.accept_keywords

特定のパッケージに対してtestingブランチの利用を許可するがシステムにはstableブランチを利用するようにPortageに指示することができます。 これを有効にするには、/etc/portage/package.accept_keywordsにtestingブランチを利用したいパッケージのカテゴリと名前と記述します。 同名のディレクトリを作成し、ディレクトリ下のファイルにパッケージを記述することも出来ます。 例えば、gnumericでtestingブランチを利用するにはこうします。

コード表示 2.1: gnumericの /etc/portage/package.accept_keywords 設定

app­office/gnumeric

特定のバージョンをテスト

特定のバージョンをtestingブランチから利用したいがその後はPortageに利用して欲しくないときには、package.accept_keywordsにバージョンを追加することができます。 このときには = 演算子を利用しなければなりません。 この他にも <=、<、>そして>= 演算子を利用してバージョンの範囲を入力することができます。

Page 51: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

とができます。

どの場合でも、バージョン情報を追加するなら、演算子を使わなければなりません。 バージョン情報を入力しないのなら、演算子は利用できません。

以下の例ではgnumeric­1.2.13を受け入れるようPortageに指示しています。

コード表示 2.2: 特定のテストバージョンのgnumericを有効にする

=app­office/gnumeric­1.2.13

3.c. マスクされたパッケージを利用する

package.unmask

重要: Gentoo開発者達はこれらの位置の使用をサポートしていません。 これを行うときには注意してください。 package.unmaskやpackage.maskに関するサポート要求には応えられません。 警告済みという前提で話を進めます。

パッケージがGentoo開発者によってマスクされているが、 それでもpackage.maskファイル(デフォルトでは/usr/portage/profilesにあります)に書かれている理由にかかわらず利用したいときには、 /etc/portage/package.unmask(もしくは、ディレクトリであればその中のファイル)に自分が望むバージョン(通常はprofilesからの正確な同じ行です)を追加します。

例えば、=net­mail/hotwayd­0.8がマスクされているなら、同じ行をpackage.unmaskに追加することによってマスクを解除できます。

コード表示 3.1: /etc/portage/package.unmask

=net­mail/hotwayd­0.8

注意: もし/usr/portage/profiles/package.mask内の該当行がパッケージのバージョン範囲を含んでいるのであれば、 自分が実際に望むバージョンのみをアンマスクする必要があります。 package.unmaskにどのようにバージョンを指定するかについては前節を読んでください。

package.mask

Portageにあるパッケージや特定のバージョンのパッケージを利用して欲しくないときには、/etc/portage/package.mask(ファイルもしくはディレクトリ内のファイルかのどちらか)に適当な行を追加してやることによってあなた自身でマスクすることができます。

例えば、gentoo­sources­2.6.8.1より新しいカーネルソースをインストールして欲しくないときには、以下の行をpackage.maskに追加します。

コード表示 3.2: /etc/portage/package.mask 記入例

>sys­kernel/gentoo­sources­2.6.8.1

4. 追加のPortageツール

4.a. dispatch­conf

dispatch­confは._cfg0000_<name>ファイルをマージするための補助ツールです。 ._cfg0000_<name>ファイルは、PortageがCONFIG_PROTECT変数によって保護されているディレクトリ内のファイルを上書きしたいとき、Portageによって生成されます。

dispatch­confを使うと、変更履歴をすべて残しながら、設定ファイルに対する更新をマージすることができます。 dispatch­confはその設定ファイルの間の差分を、パッチとして、あるいはRCSリビジョンを使うことで、保存します。 これは、もし設定ファイルの更新で失敗したら、いつでも前のバージョンの設定ファイルを復元できることを意味します。

dispatch­confを使用する際、設定ファイルをそのまま保持するか、新しい設定ファイルを使うか、既存のものを編集するか、もしくは変更を対話的にマージするかを指示できます。 またdispatch­confはいくつかの役立つ追加機能を持っています。

コメントへの更新のみの場合、設定ファイルへの自動的なマージ余白の量が異なる場合、設定ファイルへの自動的なマージ

必ず/etc/dispatch­conf.confを最初に編集し、archive­dir変数によって参照されるディレクトリを作成してください。

コード表示 1.1: dispatch­conf を実行する

# dispatch­conf

dispatch­confを走らせると、変更された各設定ファイルが一つずつ提示されます。 既存の設定ファイルを新しいもので更新して(置き換えて)次のファイルへ進むときは、uを押してください。 新しい設定ファイルを消去(削除)して次のファイルへ進むときは、zを押してください。 すべての設定ファイルが処理されたら、dispatch­confは終了します。 またqを押せば、いつでも終了することができます。

さらに詳細な情報はdispatch­confのmanを確認してください。 そこには、既存の設定ファイルと新しい設定ファイルの対話的なマージや、新しい設定ファイルの編集方法や、ファイル間の差異を調べる方法などが書かれています。

コード表示 1.2: dispatch­conf man ページを読む

$ man dispatch­conf

4.b. etc­update

設定ファイルのマージを行うために、etc­updateを使うこともできます。 etc­updateはdispatch­confのように簡単ではありませんし、先進的でもありません。 しかし、対話的なマージ機能一揃いを提供し、些細な変更を自動でマージすることができます。

しかしながら、dispatch­confとは違い、etc­updateは旧バージョンの設定ファイルを保存しません。 一度設定ファイルを更新したら、旧バージョンの

設定ファイルは永遠に失われてしまいます! etc­updateの使用は、dispatch­confの使用と比べて著しく安全性が低いので、十分に注意してください。

コード表示 2.1: etc­updateを実行

Page 52: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

コード表示 2.1: etc­updateを実行

# etc­update

分かり易い変更点をマージした後、更新を待っている保護されたファイルのリストが表示されるでしょう。 その下には利用可能なオプションが表示されています。

コード表示 2.2: etc­updateオプション

Please select a file to edit by entering the corresponding number. (­1 to exit) (­3 to auto merge all remaining files) (­5 to auto­merge AND not use 'mv ­i'):

­1を入力すると、etc­updateは終了し、以降の全ての変更を中止します。 ­3か­5を入力すると、表示された全ての設定ファイルが新しいものに置き換えられます。 ゆえに、まず自動的に更新されるべきでない設定ファイルを選択することがとても重要です。 これは設定ファイルの左に常時されている数字を入力することによって簡単に行えます。

例えば、/etc/pear.confという設定ファイルを選択します。

コード表示 2.3: 特定の設定ファイルを更新

Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf[...]End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf1) Replace original with update2) Delete update, keeping original as is3) Interactively merge original with update4) Show differences again

今あなたは2つのファイルの違いを見ています。 もし設定ファイルの更新が問題なく行えると信じるならば、1を入力します。 更新された設定ファイルが必要でない、もしくは新しい有用なものを何も提供してくれないと思うなら、2を入力します。 現在の設定ファイルを相互的に更新したいのなら、3を入力します。

相互マージについてのより詳しい情報をここで記述することには意味がありません。 完全にするためには、2つのファイルを相互マージしているときに利用できるコマンドのリストを提示します。 2行(オリジナルと、推奨される新しいもの)と以下のコマンドのうち1つを入力することができるプロンプトが表示されています。

コード表示 2.4: 相互マージで利用可能なコマンド

ed: 両方のバージョンをヘッダーで装飾して利用して編集eb: 両方のバージョンを利用して編集el: 左のバーションを利用して編集er: 右のバーションを利用して編集e: 新しいバージョンを編集l: 左のバージョンを利用r: 右のバージョンを利用s: 結果を表示せず共通の行を含むv: 結果を表示して共通の行を含むq: 終了

重量な設定ファイルの更新が終了したら、その他の設定ファイルを自動更新します。 更新できる設定ファイルが見つからないときにはetc­updateは終了します。

4.c. quickpkg

quickpkgを使えばシステムに既にマージされたパッケージのアーカイブを作成することができます。 これらのアーカイブは既にビルドされたパッケージとして利用できます。 quickpkgの実行は簡単です: アーカイブにしたいパッケージ名を追加するだけです。

例えば、curl、orageそしてprocpsをアーカイブするならこうします。

コード表示 3.1: quickpkg利用例

# quickpkg curl orage procps

ビルドされたパッケージは$PKGDIR(デフォルトでは/usr/portage/packages/ )に保管されます。 これらのパッケージは$PKGDIR/<category>にあります。

5. オフィシャルツリーの活用

5.a. Portageツリーの一部を使う

パッケージ/カテゴリーを除外する

あるカテゴリー/パッケージのみを選択的にアップデートし、その他のものを除外することができます。 これはrsyncがemerge ­­syncを行っているときにカテゴリー/パッケージを除外することによって行うことができます

除外パターンを含むファイル名を/etc/make.confの­­exclude­from変数で定義する必要があります。

コード表示 1.1: /etc/make.confで除外ファイルを定義

PORTAGE_RSYNC_EXTRA_OPTS="­­exclude­from=/etc/portage/rsync_excludes"

コード表示 1.2: /etc/portage/rsync_excludesでgameのすべてを除外

games­*/*

注意して欲しいのはこれにより依存関係の問題を引き起こすかもしれないと言うことです。 許可されたパッケージが除外されたものに依存しているかもしれないからです。

Page 53: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

5.b. 非公式のebuildを追加する

Portageオーバーレイディレクトリを定義する

Portageツリーを通して公式に利用できないebuildを利用するようにPortageに命令することができます。 サードパーティのebuildを保存しておく新しいディレクトリ(例えば/usr/local/portage)を作成します。 公式のPortageツリーと同じディレクトリ構造を使うようにしてください。

そして/etc/make.confのPORTDIR_OVERLAYが先ほど作成したディレクトリを示すように定義します。 これでPortageを使うときには、これらのebuildが次回emerge ­­syncを実行したときに削除/上書きされることなく利用できるようになります。

いくつかのOverlayで作業する

いくつかのoverlayで開発を行ったり、Portageツリーを破壊する前にパッケージをテストしたり、または単に様々なソースのunofficialなebuildを使用したりしたいパワーユーザ向けに、app­portage/laymanはlaymanを提供します。これは、overlayリポジトリを最新状態に保つ手助けをしてくれるツールです。

まず始めにOverlays Users' Guide(日本語訳) にあるようにlaymanをインストールして設定します。そして、layman ­a <overlay­name>で自分が望むリポジトリを追加します.

java(開発中のjava ebuild用)とentapps(あなたの会社のために社内開発されたアプリケーション用)という2つのリポジトリを所有していると仮定します。 この場合には、以下のコマンドを利用してこれらのリポジトリを更新することができます。

コード表示 2.1: すべてのリポジトリの更新にlaymanを使用する

# layman ­S

overlayについてより知りたいのであれば、man laymanとlayman/overlay users' guide (日本語訳)を読んでください。

5.c. Portageによって保守されていないソフトウェア

自分で保守されたソフトウェアをPortageで使う

場合によっては、Portageが自動処理を提供しているにもかかわらず、あなた自身でソフトウェアを設定、インストール、そして保守を行いたいことがあるでしょう。 有名なものにはカーネルソールやnvidiaドライバがあります。 あるパッケージがシステムに手動インストールされたことをPortageが知るように設定することができます。 この仕組みはinjectingと呼ばれ、/etc/portage/profile/package.providedファイルを通してPortageにサポートされています。

例えば、gentoo­sources­2.6.11.6が手動でインストールされたと言うことをPortageに知らせたいときには、以下の行を/etc/portage/profile/package.providedに追加します。

コード表示 3.1: package.provided の例

sys­kernel/gentoo­sources­2.6.11.6

6. ebuildアプリケーション

6.a. EmergeとEbuild

ebuildアプリケーションはPortageシステムの下層レベルインターフェースです。 このアプリケーションを使うと、与えられたebuildに反して特定の行動を実行することができます。 例えば、あなた自身によって個々のマージステップを実行することができます。

ebuildの利用はより開発目的です。 その為ebuildに関するより多くの情報はDevelopers Handbookにあります。 しかし、ここでは、あるソフトウェアをマージしているときにどんなebuildインスタンスがPortageによって呼び出されているのか、 そして実行を許可したいくつかのebuildを設定後の過程でどのようにして呼びだすのかについて説明します。

6.b. ソフトウェアの手動インストール

ソースの取得とチェックサム

与えられたebuildファイルと共にebuildが呼び出されたときはいつでも、全てのファイルのチェックサムが付属するManifestかfiles/digest­<name>­<version>から提供される値と一致しているか確認します。 これはソースが取得された後も行われます。

ebuildを使ってソースを取得するには、次のように実行します。

コード表示 2.1: ソースの取得

# ebuild path/to/ebuild fetch

ebuildのmd5sumがManifestファイルのものと一致しなかったり、ダウンロードされたソースがfiles/digest­<package>ファイルのものと一致しないときには、このようなエラーが表示されます。

コード表示 2.2: ebuildのチェックサム失敗

!!! File is corrupt or incomplete. (Digests do not match)>>> our recorded digest: db20421ce35e8e54346e3ef19e60e4ee>>> your file's digest: f10392b7c0b2bbc463ad09642606a7d6

この後にエラーが起きたファイルが表示されます。

もし取得したソースとebuild自身が正しいことが確実ならば、ebuildのダイジェスト機能を使ってManifestとdigest­<package>を再生成することができます。

コード表示 2.3: Manifestとdigestの再生成

Page 54: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# ebuild path/to/ebuild digest

ソースの解凍

ソースを/var/tmp/portage (もしくは/etc/make.confで定義したその他のディレクトリ)に解凍するには、ebuildの解凍機能を実行します。

コード表示 2.4: ソースの解凍

# ebuild path/to/ebuild unpack

これはebuildのsrc_unpack()機能(src_unpack()機能が何も定義されていないときには単に抽出するだけ)によって実行されます。 このステップでは必要なパッチも適用されます。

ソースのコンパイル

マージ行程の次のステップはソースのコンパイルです。 ebuildのコンパイル機能はebuildのsrc_compile()機能を実行することによってこのステップを引き受けます。 これは適当であれば設定ステップも含みます。

コード表示 2.5: ソースのコンパイル

# ebuild path/to/ebuild compile

コンパイルの命令を変更したいのならebuildのsrc_compile()機能を編集すると良いでしょう。 しかし、ebuildアプリケーションがコンパイルステップを完了したとPortageをだまして信じ込ませることもできます。 全ての必要なコマンドを実行して作業ディレクトリに.compiledという空のファイルを作成します。

コード表示 2.6: コンパイルジョブが完了したとPortageに通達する

# touch .compiled

ファイルを一時的な場所にインストール

次のステップでは、Portageは全ての必要なファイルを一時的な場所にインストールします。 このディレクトリは現在のファイルシステムにマージするべき全てのファイルを含みます。 src_install()機能を実行するebuildのインストール機能を実行することでこれを行うことができます。

コード表示 2.7: ファイルのインストール

# ebuild path/to/ebuild install

現在のファイルシステムにファイルをマージ

最終ステップでは全てのファイルを現在のファイルシステムにマージし、Portageに登録します。 ebuildはこのステップを"qmerge"と呼び、以下のステップによって呼び出されます。

指定されているならpkg_preinst()機能を実行全てのファイルを現在のファイルシステムに上書きPortageにファイルを登録指定されているならpkg_postinst()機能を実行

ebuildのqmergeを実行してこれらのステップを実行します。

コード表示 2.8: 現在のファイルシステムにファイルをマージ

# ebuild path/to/ebuild qmerge

一時的なディレクトリの削除

最後にebuildのclean機能を使って一時ディレクトリを掃除します。

コード表示 2.9: 一時的なディレクトリの削除

# ebuild path/to/ebuild clean

6.c. 追加のEbuild機能

全てのマージ関連のコマンドを実行する

ebuildのmerge機能を使うと取得、解凍、コンパイル、インストール、そしてqmergeコマンドを一度に実行できます。

コード表示 3.1: ソフトウェアのインストール

# ebuild path/to/ebuild merge

設定動作を実行

いくらかのパッケージにはシステムにより適合させるためにパッケージを設定する指示が含まれています。 これらの指示は対話方式なので自動的には実行されません。 ebuildのconfig()機能を利用して設定ステップを実行するには、ebuildの設定機能を使います。

コード表示 3.2: パッケージの設定

# ebuild path/to/ebuild config

(RPM)パッケージのビルド

ebuildのバイナリパッケージや、RPMファイルでさえもPortageに作成するよう指示することができます。 ebuildのpackageかrpm機能を使ってこれらアー

Page 55: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

ebuildのバイナリパッケージや、RPMファイルでさえもPortageに作成するよう指示することができます。 ebuildのpackageかrpm機能を使ってこれらアーカイブを作成します。 これら2つの機能の間には少し違いがあります。

package機能は、パッケージを作成する前に全ての必要なステップ(取得、解凍、コンパイル、インストール)を実行するというmerge機能にとても良く似たものですrpm機能はebuildのインストール機能を実行し、ファイルが作成された後にPRMパッケージがビルドされます

コード表示 3.3: パッケージの作成

(Portage互換のバイナリパッケージ)# ebuild path/to/ebuild package

(RPMパッケージ)# ebuild path/to/ebuild rpm

作成されたRPMファイルにはebuildの依存関係情報は含まれていません。

6.d. より詳しい情報

Portageやebuildアプリケーション、そしてebuildファイルについてのより詳しい情報については以下のmanページを調べてください。

コード表示 4.1: manページ

$ man portage (Portage自身)$ man emerge (emergeコマンド)$ man ebuild (ebuildコマンド)$ man 5 ebuild (ebuildファイル構文)

開発者関連の情報がDevelopers Handbookで取得できます。

D. Gentooネットワーク設定

1. はじめに

1.a. はじめに

注意: この文書は、読者がカーネルと使用しているハードウェアに対するモジュールを正確に設定してあることと、ハードウェアのインターフェース名を把握していることを想定しています。 さらに、eth0、またはeth1やwlan0やその他を設定している最中であることも想定しています。

ネットワークカードの設定を始めるために、GentooのRCシステムにその旨を示す必要があります。 これは、/etc/init.dの下にnet.loからnet.eth0へのシンボリックリンクを作成することで行います。

コード表示 1.1: net.loからnet.eth0にシンボリックリンクする

# cd /etc/init.d# ln ­s net.lo net.eth0

こうすることでGentooのRCシステムは、そのインターフェースについて情報を得ることができます。 さらに新しいインターフェースの設定方法もわからなければなりません。 すべてのネットワークインターフェースが、/etc/conf.d/netで設定されます。 以下はDHCPの場合と固定アドレスの場合の例です。

コード表示 1.2: /etc/conf.d/netの例

# DHCPの例config_eth0="dhcp"

# CIDR表記を使用した固定IPの例config_eth0="192.168.0.7/24"routes_eth0="default via 192.168.0.1"

# ネットマスク表記を使用した固定IPの例config_eth0="192.168.0.7 netmask 255.255.255.0"routes_eth0="default via 192.168.0.1"

注意: インターフェースの設定を指定しない場合、DHCPであると想定されます。

注意: CIDRは、Classless InterDomain Routingの略です。 もともと、IPv4アドレスはA、B、Cにクラス分けされていました。 初期のクラス分けの仕組みには、インターネットの今のような大規模な大衆化が想定されておらず、新規のユニークアドレスを使い果たす恐れがあります。 CIDRは、一つのアドレスが複数のIPアドレスを指すことが可能なアドレス割当て体系です。 CIDRのIPアドレスは、例えば、192.168.0.0/16のように、スラッシュの後に続く数字があることを除いて普通のIPアドレスのように見えます。CIDRは、RFC 1519に記述されています。

インターフェースを設定したら、次のコマンドを使用して開始および停止することができます。

コード表示 1.3: ネットワークスクリプトの開始と停止

# /etc/init.d/net.eth0 start# /etc/init.d/net.eth0 stop

重要: ネットワーク接続に関する問題を解決するときは、/var/log/rc.logを見てみましょう。 /etc/rc.conf内でrc_logger="NO"と設定していないのであれば、 上記のログファイルにブート時の情報が記録されています。

ネットワークインターフェースの開始と停止に成功したら、Gentooの起動時に開始したいと思うでしょう。 ここにそれをする方法があります。 最後の行の"rc"コマンドは、現在のrunlevelでまだ開始されていないスクリプトを開始するためにGentooに指示します。

コード表示 1.4: 起動時にネットワークインターフェースを設定する

# rc­update add net.eth0 default# rc

Page 56: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

2. 高度な設定

2.a. 高度な設定

config_eth0変数が、インターフェースの設定の要です。 config_eth0は、インターフェース(この場合はeth0)設定用の高度な設定値のリストです。 設定値のリストに含まれる各コマンドは、順に実行されます。 一つでもコマンドが動作すれば、そのインターフェースは正常であると判断されます。

以下は、あらかじめ備わっている設定値のリストです。

コマンド 説明null 何もしませんnoop インターフェースが有効になっていてアドレスが割り当てられていたならば、 その時はこの設定を無視しますIPv4かIPv6のアドレス インターフェースに指定されたアドレスを追加しますdhcp、adsl、apipa(もしくはサードパーティのモジュールが要求するカスタムコマンド)

コマンドを供給するモジュールを実行します。例えばdhcpは、dhcpcd、dhclient、pumpのうちのどれか一つである、DHCP機能を提供するモジュールを実行します。

一つのコマンドが失敗した場合に備えて、一つの予備のコマンドを指定することができます。 予備のコマンド(fallback)も、これらの設定の形式に正確に適合している必要があります。

これらのコマンドを繋げて同時に指定できます。実際に使用されるいくつかの例を示します。

コード表示 1.1: 設定例

# 以下のIPv4アドレスを追加しますconfig_eth0=( "192.168.0.2/24" "192.168.0.3/24" "192.168.0.4/24")

# 一つのIPv4アドレスと二つのIPv6アドレスを追加しますconfig_eth0=( "192.168.0.2/24" "4321:0:1:2:3:4:567:89ab" "4321:0:1:2:3:4:567:89ac")

# 既にインターフェースが有効になっていて、アドレスが割り当ててある場合は、何もしません。# インターフェースが無効になってしまっている場合、DHCP経由の新たなアドレスを割当てます。config_eth0=( "noop" "dhcp")fallback_eth0=( "null" "apipa")

注意: ifconfigモジュールを使用して一つ以上のアドレスを追加する場合、二つ目以降のアドレスの各々に対しインターフェースの別名が生成されます。 よって上二つの例では、インターフェースeth0、eth0:1、eth0:2が得られます。 カーネルとその他プログラムがeth0としてeht0:1とeth0:2を扱う場合、これらのインターフェースでは何も特別なことはできません。

重要: fallback順は重要です! nullオプションを指定していないと、apipaコマンドは、noopコマンドが失敗したときだけ実行されます。

注意: APIPAとDHCPについては後で記述します。

2.b. ネットワーク依存設定

/etc/init.dにあるinitスクリプトは、特定のネットワークインターフェース、もしくはただ単にnetに依存することがあります。 netサービスの意味を、RC_NET_STRICT_CHECKING変数を使用して異なる状況を示すように/etc/conf.d/rcで定義することができます。

値 説明none netサービスは常に起動されていると見なされますno net.loに加えて少なくとも一つのnet.*サービスが起動していなければなりません。 WIFIと有線NICを持っていて、netサービスが起動しているように状況に応じて一つだけを起動させたいと

思うノートブックのユーザによって利用されるでしょう。lo noオプションと同じですが、net.loも数に含まれます。 起動時にどのインターフェースが起動するか気にしないユーザに便利です。yes netサービスが起動していると見なされるためには、すべてのネットワークインターフェースが起動していなければならない場合です。

ですが、net.eth0とnet.eth1に依存しているnet.br0の場合はどうでしょうか。 net.eth1は、ブリッジに追加する前に設定される必要がある無線もしくはPPPデバイスかもしれません。 その場合、net.loへのシンボリックリンクとしての/etc/init.d/net.br0では実現できません。

この状況への答えは、/etc/conf.d/netにdepend()関数を書くことです。

コード表示 2.1: /etc/conf.d/netでのnet.br0の依存設定

# 現行のスクリプトに則って、すべての依存関係(use、after、before)が使用できますdepend_br0() need net.eth0 net.eth1

依存関係についての詳しい解説は、GentooハンドブックのWriting Init Scriptsを参照してください。

2.c. 変数名と値

変数名は可変です。 通常はvariable_$interface|mac|essid|apmacの形式に従っています。 例えば、変数dhcpcd_eth0は、eth0のdhcpcdオプションの値を保持しますし、dhcpcd_essidは、どれかのインターフェースがESSIDアクセスポイント"essid"に接続したときのdhcpcdオプションの値を保持

Page 57: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

します。

しかし、インターフェースの名前が必ずethxでなければならないといっているわけではありません。 実際、多くの無線インターフェースは、ethxと同じようにwlanx、raxのような名前です。 さらに、ブリッジのようなユーザ定義のインターフェースは、fooなどのように任意の名前を付けることもできます。 よりわかりやすいように、無線アクセスポイントは、アルファベットや数字以外の文字を使った名前にできます。このことはESSID毎にネットワークパラメータの設定を可能にするために、とても重要です。

このことに関して何より弱点なのは、Gentooはネットワーク接続に関してbash変数を使うことです。 そしてbashは英字のアルファベットと数字以外は使用できません。 この制限を回避するために、英字のアルファベットと数字ではない全ての文字を_(アンダースコア)に変換します。

もう一つのbashの弱点は、変数の内容に関してです。 一部の文字はエスケープされてしまいます。 これは、エスケープされる必要がある文字の前に\(バックスラッシュまたは円記号)を置くことで回避できます。次の文字は、この方法でエスケープする必要があります。"と'と\。

この例では、特殊な文字を使用する無線ESSIDを使用しています。 この場合、以下のようにESSID My "\ NETを使用することになります。

コード表示 3.1: 変数名の例

(これは機能しますが、ドメイン名としては不正です)dns_domain_My____NET="My "\\ NET"

(上記は、無線LANカードがMy "\ NETのESSIDを持つアクセスポイントに接続した場合、dnsドメインをMy "\ NETに設定します)

3. 個別ネットワーク

3.a. ネットワークモジュール

現在、モジュール構造のネットワーク接続スクリプトをサポートしています。 これにより、既存のものと互換性を保ちながら、新しいインタフェースの種類や設定モジュールのサポートを簡単に追加できます。

モジュールが必要とするパッケージがインストールされていれば、モジュールはデフォルトでロードされます。 ここでまだインストールされていないパッケージのモジュールを指定すると、インストールする必要があるパッケージがあることを示すエラーとなります。 理想は、同一サービスを提供する二つ以上のパッケージをインストール済みで、その中の一つを選ぶ必要があるときにだけモジュール設定を使用することです。

注意: ここで紹介したすべての設定は、他に規定がなければ、/etc/conf.d/netに書かれています。

コード表示 1.1: モジュール選択

# ifconfigではなくiproute2を選択modules=( "iproute2" )

# 特定のインタフェースに対し別のモジュールも指定できます# ここではdhcpcdではなくpumpを選択していますmodules_eth0=( "pump" )

# 使用しないモジュールの指定もできます ­ 例えば無線LANの設定を制御するために、# supplicantもしくはlinux­wlan­ngを使用しているかもしれません。# にもかかわらず、接続するESSIDごとにネットワーク設定を指定したい場合

modules=( "!iwconfig" )

3.b. インタフェースハンドラ

現在、ifconfigとiproute2の二つのインタフェースハンドラを提供しています。 ネットワークの設定のどんなことをするのにも、これらのうちの一つが必要です。

ifconfigは、今のGentooのデフォルトであり、システムプロファイルに含まれています。iproute2は、より強力で柔軟なパッケージですが、デフォルトでは含まれていません。

コード表示 2.1: iproute2をインストールする

# emerge sys­apps/iproute2

# 両方がインストールされている場合、ifconfigではなくiproute2を選択するmodules=( "iproute2" )

ifconfigもiproute2もどちらもよく似たことをするので、基本設定を相互に動作するようにできます。 例えば、以下の抜粋コードのどちらも、どちらを使用しているかに関係なく動作します。

コード表示 2.2: ifconfigとiproute2の例

config_eth0=( "192.168.0.2/24" )config_eth0=( "192.168.0.2 netmask 255.255.255.0" )

# broadcastの指定も可能config_eth0=( "192.168.0.2/24 brd 192.168.0.255" )config_eth0=( "192.168.0.2 netmask 255.255.255.0 broadcast 192.168.0.255" )

3.c. DHCP

DHCPは、DHCPサーバからネットワーク情報(IPアドレス、DNSサーバ、ゲートウェイ、その他)を取得する手段です。 これは、ネットワーク上で稼動中のDHCPサーバが存在する場合、DHCPを使うことを各クライアントに指示する必要があり、それが自動的にネットワークを設定するということを意味します。 もちろん、DHCPを使えるようになる前に、必要なら無線やPPPなど、他の設定をする必要はあります。

DHCPの機能は、dhclient、dhcpcd または pumpによって提供されます。 各DHCPモジュールには、長所と短所があります。以下にざっと紹介します。

DHCPモ

Page 58: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

DHCPモジュール パッケージ 長所 短所

dhclient net­misc/dhcp

BIND DNSソフトウェアを作成しているISCによって作成されています。 設定項目が豊富

設定が極めて複雑で、ソフトウェアは非常に大きくなり過ぎており、DHCPからNTPサーバの情報を得ることはできず、デフォルト設定ではホスト名を送信しません

dhcpcd net­misc/dhcpcd

長い間Gentooではデフォルトであり、外部のツールに依存せず、Gentooで積極的に開発されています

たまに遅くなることがあり、与えられたIPアドレスなどの貸与期間に制限がない場合は、今のところデーモン化されません

pump net­misc/pump

軽量、外部ツールへの依存なし 性能向上のためには維持されておらず、信頼性が低く、特にモデム経由の場合に信頼性が低く、DHCPからNISサーバの情報を取得できません

二つ以上のDHCPクライアントがインストールされている場合、どれを使用するかを指定する必要があります ­ そうしないと可能ならdhcpcdをデフォルトにします。

DHCPモジュールに特定のオプションを与えるために、module_eth0="..."を使用してください。 (使用中のDHCPモジュールにmoduleを付け替えてください ­ たとえばdhcpcd_eth0)

DHCPの相互運用性の向上に勤めています ­ その一環としてdhcp_eth0変数を使用して以下のコマンドをサポートします。デフォルト設定ではこれらのどれも設定されていません。

release ­ 再利用できるようにIPアドレスを解放しますnodns ­ /etc/resolv.confを書き換えませんnontp ­ /etc/ntp.confを書き換えませんnonis ­ /etc/yp.confを書き換えません

コード表示 3.1: /etc/conf.d/netでのDHCP設定の例

# 二つ以上のDHCPモジュールがインストールされている場合にだけ必要ですmodules=( "dhcpcd" )

config_eth0=( "dhcp" )dhcpcd_eth0="­t 10" # 10秒後にタイムアウトしますdhcp_eth0="release nodns nontp nonis" # アドレスのみ取得します

注意: dhcpcdとpumpは、デフォルトで現在のホスト名をDHCPサーバに送信します。 よって、これに関して何も指定する必要はありません。

3.d. PPPoE/PPPoAによるADSL

最初に、ADSLソフトウェアをインストールする必要があります。

コード表示 4.1: pppパッケージのインストール

# emerge net­dialup/ppp

注意: もしPPPoAが必要なら、必ず>=baselayout­1.12.xを使用してください。

次に、PPPで使われるPPPネットスクリプトとイーサネットインタフェースのためのネットスクリプトを生成します。

コード表示 4.2: PPPとイーサネットのスクリプトの生成

# ln ­s /etc/init.d/net.lo /etc/init.d/net.ppp0# ln ­s /etc/init.d/net.lo /etc/init.d/net.eth0

必ず/etc/conf.d/rcでRC_NET_STRICT_CHECKING="yes"を設定してください。

ここで、/etc/conf.d/netの設定をする必要があります。

コード表示 4.3: 基本的なPPPoEの設定

config_eth0=( null ) (あなたのイーサネットインタフェースを記述してください)config_ppp0=( "ppp" )link_ppp0="eth0" (あなたのイーサネットインタフェースを記述してください)plugins_ppp0=( "pppoe" )username_ppp0='user'password_ppp0='password'pppd_ppp0=( "noauth" "defaultroute" "usepeerdns" "holdoff 3" "child­timeout 60" "lcp­echo­interval 15" "lcp­echo­failure 3" noaccomp noccp nobsdcomp nodeflate nopcomp novj novjccomp)

depend_ppp0() need net.eth0

コード表示 4.4: /etc/ppp/pap­secretsの例

# *(アスタリスク)は重要です"username" * "password"

もしUSBモデムによるPPPoEを使用しているなら、br2684ctlをemergeする必要があるでしょう。 これについての適切な設定方法は、/usr/portage/net­dialup/speedtouch­usb/files/READMEを読んでください。

重要: /etc/conf.d/net.exampleのADSLとPPPの章を注意深く読んでください。 個々のPPPの設定で必要になりそうなすべての設定方法について、より詳細な説明が多く含まれています。

Page 59: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

3.e. APIPA (Automatic Private IP Addressing)~自動プライベートIPアドレス割当て機能

APIPAは、インタフェースに169.254.0.0­169.254.255.255の範囲のアドレスに無作為にARPメッセージを送信することによって、空きアドレスを探します。 応答のないものがあった場合、そのアドレスをインタフェースに割り当てます。

DHCPサーバが存在せず、かつ直接インターネットに接続せず、かつ他の全てのコンピュータがAPIPAを使用しているプライベートネットワークにだけ役に立ちます。

APIPAをサポートするために、emerge net­misc/iputilsまたは、net­analyzer/arpingをしてください。

コード表示 5.1: /etc/conf.d/netでのAPIPA設定

# 最初にDHCPを試します ­ 失敗したら代替手段としてAPIPAを使用config_eth0=( "dhcp" )fallback_eth0=( "apipa" )

# APIPAだけを使用config_eth0=( "apipa" )

3.f. Bonding(インタフェースを束ねる)

bonding/trunkingをする(インタフェースを束ねる)には、emerge net­misc/ifenslaveをします。

bondingは、ネットワーク帯域を増やすために使われます。 もし一つのネットワークにしたい二つのネットワークカードがあるなら、それらを束ねることができます。 そうすると、アプリケーションには一つのインタフェースとして見えますが、実際は両方のネットワークカードが使用されます。

コード表示 6.1: /etc/conf.d/netでのbonding設定

# 二つのインタフェースを束ねるslaves_bond0="eth0 eth1 eth2"

# 束ねられたインタフェースにIPアドレスを割り当てたくない場合もありますconfig_bond0=( "null" )

# 別の設定が必要かもしれないのでeth0、eth1、eth2に依存しますdepend_bond0() need net.eth0 net.eth1 net.eth2

3.g. ブリッジ (802.1dのサポート)

ブリッジをサポートするには、emerge net­misc/bridge­utilsをします。

ブリッジは、異なるネットワーク同士を繋げるために使用されます。 例えば、ADSLモデム経由でインターネットに接続していて、他のコンピュータをADSLモデム経由でインターネットに接続できるようにするための無線接続カードを持っているサーバがあるとします。 この場合、二つのインタフェースを相互に繋げるために、ブリッジを作成できます。

コード表示 7.1: /etc/conf.d/netでのブリッジ設定

# ブリッジ設定 ­ 詳細は"man brctl"を参照してくださいbrctl_br0=( "setfd 0" "sethello 0" "stp off" )

# ブリッジbr0にポートを追加しますbridge_br0="eth0 eth1"

# dhcpが開始しないようにするために、そのポートにはnullを設定する必要がありますconfig_eth0=( "null" )config_eth1=( "null" )

# 最後にブリッジにアドレスを設定します ­ DHCPも使用できますconfig_br0=( "192.168.0.1/24" )

# 別の設定が必要かもしれないのでeth0、eth1に依存しますdepend_br0() need net.eth0 net.eth1

重要: 複数のブリッジ設定を行う場合、変数名を参照してください。

3.h. MACアドレス

sys­apps/baselayout­1.11.14かそれ以上を使用していて、特定のアドレスに変更したいなら、インタフェースのMACアドレスを変更するために何もemergeする必要はありません。 しかし、ランダムなMACアドレスに変更する必要があるか、上記のバージョンよりも古いbaselayoutを使用しているなら、この機能が有効になるにはemerge net­analyzer/macchangerをする必要があります。

コード表示 8.1: MACアドレスを変更する例

# インタフェースのMACアドレスを設定しますmac_eth0="00:11:22:33:44:55"

# 最後の3バイトだけランダムに設定します

Page 60: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# 最後の3バイトだけランダムに設定しますmac_eth0="random­ending"

# ベンダ毎に、物理的に同じ種類別にランダムに設定します# (例 ファイバ、銅線、無線)mac_eth0="random­samekind"

# ベンダ毎に、物理的な種類を問わずランダムに設定します# (例 ファイバ、銅線、無線)mac_eth0="random­anykind"

# 完全にランダムに設定します ­ 警告: これによって生成される一部のMACアドレスには# 期待したように動作しないものがありますmac_eth0="random­full"

3.i. トンネリング

トンネリングをするには、インタフェースハンドラで実現できるので、何もemergeする必要はありません。

コード表示 9.1: /etc/conf.d/netでのトンネリング設定

# GREトンネリング向けiptunnel_vpn0="mode gre remote 207.170.82.1 key 0xffffffff ttl 255"

# IPIPトンネリング向けiptunnel_vpn0="mode ipip remote 207.170.82.2 ttl 255"

# 該当するインタフェースの設定config_vpn0=( "192.168.0.2 peer 192.168.1.1" )

3.j. VLAN (802.1qのサポート)

VLANをサポートするには、emerge net­misc/vconfigをします。

仮想LANは、たとえ別のセグメントであっても、あたかも単一のネットワークセグメントに接続されているように振舞うネットワークデバイスの集合です。VLANに接続している機器には、たとえ物理的に同じネットワークを共有していても、同一のVLAN上の機器しか見えません。

コード表示 10.1: /etc/conf.d/netでのVLAN設定

# 次のようにインタフェースのVLAN番号を指定します# VLANのIDは、前に0を付加しない形式ですvlans_eth0="1 2"

# もちろんVLANを設定することもできます# 詳細はvconfigのmanページを参照してくださいvconfig_eth0=( "set_name_type VLAN_PLUS_VID_NO_PAD" )vconfig_vlan1=( "set_flag 1" "set_egress_map 2 6" )

# 通常のようにVLANインタフェースを設定しますconfig_vlan1=( "172.16.3.1 netmask 255.255.254.0" )config_vlan2=( "172.16.2.1 netmask 255.255.254.0" )

重要: 複数のVLAN設定を行う場合、変数名を参照してください。

4. 無線ネットワーク

4.a. はじめに

現在、wireless­toolsやwpa_supplicantによって無線のセットアップがサポートされています。 覚えておくべき重要なことは、無線ネットワークの設定をインターフェース毎ではなく、全体的に行うと言うことです。

wpa_suppliantは最良の選択ですが、全てのドライバをサポートしている訳ではありません。 サポート済みのドライバリストはread the wpa_supplicantsiteで確認することが出来ます。 また、現在wpa_supplicantは設定されたSSIDにのみ接続することが出来ます。

wireless­toolsはほぼ全てのカードとドライバをサポートしていますが、WPAのみのアクセスポイントには接続することは出来ません。

警告: 現時点ではlinux­wlan­ngはbaselayoutではサポートされていません。 これは、linux­wlan­ngは人それぞれによって全く異なる独自のセットアップと設定を行うからです。 linux­wlan­ng開発者達はセットアップをwireless­toolsへと変更するのではと噂されています。 これが実現した場合、baselayoutでlinux­wlan­ngが使えるかもしれません。

4.b. WPA Supplicant

WPA Supplicantとは、 WPAが有効なアクセスポイントへの接続を可能にするパッケージです。 これはまだベータ版なのでセットアップはかなり変わりやすいですが、ほとんどの部分でうまく動作します。

コード表示 2.1: wpa_supplicantのインストール

# emerge net­wireless/wpa_supplicant

重要: wpa_supplicantを動作させるにはカーネルでCONFIG_PACKETを有効にしなければなりません。

では、wpa_supplicantをwireless­toolsより優先させるために/etc/conf.d/netを設定しましょう。(両方がインストールされているのな

ら、wireless­toolsがデフォルトとなります)

コード表示 2.2: wpa_supplicant向けに/etc/conf.d/netを設定

Page 61: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# wpa_supplicantをwireless­toolsよりも優先させるmodules=( "wpa_supplicant" )

# どのドライバを使用すべきかwpa_supplicantに教えることが重要です。# まだ自動識別はうまく動作しませんwpa_supplicant_eth0="­Dmadwifi"

注意: host­apドライバを使用しているのなら、wpa_suppliacnatで正しく使用するために、 カードをManagedモードにする必要があります。/etc/conf.d/netにiwconfig_eth0="mode managed" を記述することによりこれを行うことが出来ます。

簡単でしょう? ですが、まだwpa_supplicant自身の設定をしなければいけません。 これは、接続しようとするアクセスポイントがどれくらいセキュアかによって、 設定の複雑さも変わってきます。 以下はwpa_supplicantと共にインストールされる /usr/share/doc/wpa_supplicant­<version>/wpa_supplicant.conf.gz からの抜粋です。

コード表示 2.3: /etc/wpa_supplicant/wpa_supplicant.confの例

# 以下の行は変更しないでください。動作しなくなります。ctrl_interface=/var/run/wpa_supplicant

# rootのみがWPA設定を読めることを確実にします

Page 62: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# rootのみがWPA設定を読めることを確実にしますctrl_interface_group=0

# wpa_supplicantにスキャンとアクセスポイントの選択を行わせますap_scan=1

# 単純な例。PSKをASCIIパスフレーズで指定し、WPA­PSKはすべての有効な暗号方式を許可します。network= ssid="simple" psk="very secret passphrase" # 優先度を上げれば上げるほどより早くに照合されます priority=5

# 上と同じですが、特定のSSIDの検出を要求します。# (ブロードキャストSSIDを拒否するアクセスポイント向け)network= ssid="second ssid" scan_ssid=1 psk="very secret passphrase" priority=2

# WPA­PSKのみが使用されます。どんな暗号の組み合わせでも認めます。network= ssid="example" proto=WPA key_mgmt=WPA­PSK pairwise=CCMP TKIP group=CCMP TKIP WEP104 WEP40 psk=06b4be19da289f475aa46a33cb793029d4ab3db7a23ee92382eb0106c72ac7bb priority=2

# 平文接続 (WPA、IEEE 802.1X無し)network= ssid="plaintext­test" key_mgmt=NONE

# 共有WEPキー接続 (WPA、IEEE 802.1X無し)network= ssid="static­wep­test" key_mgmt=NONE # Keys in quotes are ASCII keys wep_key0="abcde" # Keys specified without quotes are hex keys wep_key1=0102030405 wep_key2="1234567890123" wep_tx_keyidx=0 priority=5

# 共有キーIEEE 802.11認証を使った共有WEPキー接続 (WPA、IEEE 802.1X無し)network= ssid="static­wep­test2" key_mgmt=NONE wep_key0="abcde" wep_key1=0102030405 wep_key2="1234567890123" wep_tx_keyidx=0 priority=5 auth_alg=SHARED

# WPA­None/TKIPを使ったIBSS/ad­hocネットワークnetwork= ssid="test adhoc" mode=1 proto=WPA key_mgmt=WPA­NONE pairwise=NONE group=TKIP psk="secret passphrase"

4.c. Wireless Tools

最初の設定とmanagedモード

Wireless Toolsは、 基本的な無線インターフェースを起動することからWEPセキュリティレベルまでを設定する一般的な方法です。 WEPはセキュリティの手段としては弱いですが、最も普及しています。

Wireless Toolsの設定は少数の要となる変数によって制御されます。 以下の設定ファイルの例は必要となる全てを記述しています。 何も設定しないと「最も信号が強く暗号化されていないアクセスポイントへ接続する」事になり、 いつも何かに接続しようとしていることを心に留めておいてください。

コード表示 3.1: wireless­toolsのインストール

# emerge net­wireless/wireless­tools

注意: 無線の設定を/etc/conf.d/wirelessに保存することも出来ますが、このガイドでは/etc/conf.d/netに保存することを推奨します。

Page 63: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

重要: 変数名ドキュメントを参照する必要があるでしょう。

コード表示 3.2: /etc/conf.d/netでのiwconfig設定例

# iwconfigをwpa_supplicantより優先させるmodules=( "iwconfig" )

# ESSID1やESSID2と呼ばれるアクセスポイント向けのWEPキーを設定します# WEPキーは4つまで設定することが出来ますが、いかなる場合においても有効となるのは1つだけです# そのため、デフォルトのインデックスである[1]をkey [1]に適用し、アクティブなキーを[1]へと変更します# 1以外のWEPキーを使用するために他のESSIDを定義する場合にこれを行います## キーの前にs:を付けるとASCIIキーとなり、付けなければHEXキーになります## enc openはオープンセキュリティを指定します(最も安全)# enc restrictedは制限セキュリティを指定します(最小限の安全)key_ESSID1="[1] s:yourkeyhere key [1] enc open"key_ESSID2="[1] aaaa­bbbb­cccc­dd key [1] enc restricted"

# 以下は利用可能なアクセスポイントをスキャンしたときにのみ動作します

# 時々2つ以上のアクセスポイントが利用可能となるので、接続優先順位を定義する必要がありますpreferred_aps=( "ESSID1" "ESSID2" )

アクセスポイントの選択を微調整する

アクセスポイントの選択を微調整するために、いくつかの特別なオプションを追加することが出来ます。 ですが、これらは通常では必要ではありません。

優先されたアクセスポイントのみに接続するかどうかを選択することが出来ます。 デフォルトでは、設定された全てが失敗したのなら、暗号化されていないアクセスポイントへ接続します。 これはassociate_order変数で制御することが出来ます。 以下に値と詳細を示します。

値 詳細any デフォルトの振る舞いpreferredonly 優先リストにある接続可能なアクセスポイントのみ接続するforcepreferred スキャンで見つからなければ優先リストにあるアクセスポイントへ強制接続を試みるforcepreferredonly アクセスポイントのスキャンを行わず、リストにある物に接続を試みるforceany forcepreferredと同じで、それに加えて利用可能なアクセスポイントへ接続する

最後にblacklist_apsとunique_apの選択を行います。 blacklist_apsはpreferred_apsと同じような動作を行います。 unique_apにはyesかnoが設定され、 2番目の無線インターフェースが1番目と同じアクセスポイントへ接続できるかを決定します。

コード表示 3.3: blacklist_apsとunique_apの例

# 決して接続したくないアクセスポイントを記述しますblacklist_aps=( "ESSID3" "ESSID4" )

# 2つ以上の無線カードを持っているのなら、それぞれのカードが# 同じアクセスポイントと接続することを許可するかしないかを決定します# 値は"yes"と"no"です# デフォルトは"yes"ですunique_ap="yes"

Ad­HocとMasterモード

managedモードになっているアクセスポイント全てで接続失敗した場合に、 Ad­Hocノードに設定を切り替えたいのなら、 以下のように設定することでこれを行うことが出来ます。

コード表示 3.4: Ad­Hocモードへのフォールバック

adhoc_essid_eth0="This Adhoc Node"

Ad­Hocネットワークへ接続したり、アクセスポイントとなるためにMasterモードで起動してはどうですか? そのためには以下のように設定します。上で述べたようにしてWEPキーを指定する必要があるかもしれません。

コード表示 3.5: Ad­Hoc/Master設定の例

# モードを設定します。managed (デフォルト)、ad­hoc、masterから選びます。# 全てのドライバが全てのモードをサポートしているわけではありませんmode_eth0="ad­hoc"

# インターフェースのESSIDを設定します# managedモードでは、インターフェースに特定のESSIDへ強制的に接続させ、それ以外は何も行いませんessid_eth0="This Adhoc Node"

# 何も設定しなければチャンネル3を使用しますchannel_eth0="9"

重要: 以下はthe NetBSD documentationにあるBSD wavelanドキュメントを丸写ししたものです。 14のチャンネルが利用可能であり、北アメリカではチャンネル1­11が合法で、 ヨーロッパの多くではチャンネル1­13、フランスではチャンネル10­13、そして日本ではチャンネル14のみです。 疑うのであれば、カードやアクセスポイントに付属するドキュメントを参照してください。 選択したチャンネルがアクセスポイントのチャンネル(もしくはAd­Hocネットワークの他のカード) と一致するようにしてください。 北アメリカやヨーロッパの多くで売られているカードのデフォルトは3で、 フランスで売られているカードのデフォルトは11、そして日本で売られているカードのデフォルトは14です。

無線ツールのトラブルシューティング

ドライバや環境の問題で、無線を接続し稼働の手助けになる変数がいくつかあります。 以下に一覧を示します。

変数初期 詳細

Page 64: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

変数 期値

詳細

iwconfig_eth0 iwconfigに何を送るかについての詳細はiwconfigのマニュアルを参照してくださいiwpriv_eth0 iwprivに何を送るかについての詳細はiwprivのマニュアルを参照してくださいsleep_scan_eth0 0 スキャンを試みる前にスリープを行う秒数です。ドライバやファームウェアが利用可能になるまでにより長い時間がかかるのであればこれが必要です。sleep_associate_eth0 5 接続先のアクセスポイントを次へと変更するためにインターフェースを待機させる秒数ですassociate_test_eth0 MAC いくつかのドライバでは接続の解放やテスト時に無効なMACアドレスをリセットしません。いくらかのドライバでは接続の解放やテスト時に品質レベルをリセット

しません。MAC、qualityとallが設定可能です。scan_mode_eth0 いくつかのドライバではad­hocモードでスキャンを行うため、スキャンが失敗したらここでad­hocの設定を試みますiwpriv_scan_pre_eth0 スキャン前にいくつかのiwprivコマンドをインターフェースへ送信します。詳細はiwprivのマニュアルを参照してください。iwpriv_scan_post_eth0 スキャン後にいくつかのiwprivコマンドをインターフェースへ送信します。詳細はiwprivのマニュアルを参照してください。

6.d. ESSIDごとにネットワーク設定を定義する

ESSID1に接続するときには固定IPが必要で、ESSID2に接続するときにはDHCPが必要なことがあります。 実際、ほとんどのモジュール変数はESSIDごとに変更可能です。 以下に例を示します。

注意: WPA Supplicantや無線ツールを使用しているのならこれらは動作します。

重要: 変数名ドキュメントを参照する必要があるでしょう。

コード表示 4.1: ESSIDごとにネットワーク設定を上書きする

config_ESSID1=( "192.168.0.3/24 brd 192.168.0.255" )routes_ESSID1=( "default via 192.168.0.1" )

config_ESSID2=( "dhcp" )fallback_ESSID2=( "192.168.3.4/24" )fallback_route_ESSID2=( "default via 192.168.3.1" )

# ネームサーバやその他も設定することが出来ます# 注意: 禁止されていなければDHCPはこれらを上書きしますdns_servers_ESSID1=( "192.168.0.1" "192.168.0.2" )dns_domain_ESSID1="some.domain"dns_search_domains_ESSID1="search.this.domain search.that.domain"

# アクセスポイントのMACアドレスで上書きします# 同じESSIDを持つ異なった場所へ移動するのならこれは便利ですconfig_001122334455=( "dhcp" )dhcpcd_001122334455="­t 10"dns_servers_001122334455=( "192.168.0.1" "192.168.0.2" )

5. 機能の追加

5.a. 標準フック関数

start/stop操作に関連して呼び出される4つの関数が定義できます。 それらの関数は、一つの関数で複数のアダプタを制御できるように、インターフェース名が最初に渡されて呼び出されます。

対象のインターフェースの有効化処理や無効化処理が続行可能であることを示すには、preup()とpredown()関数の戻り値は、0 (成功)でなければなりません。 preup()がゼロ以外の値を返すと、インターフェースの有効化処理は中断されます。 predown()がゼロ以外の値を返すと、インターフェースの無効化処理の続行は認められません。

postup()とpostdown()関数の戻り値は無視されます。失敗を示す場合は何もすることがないからです。

$IFACEには起動/停止しようとしているインターフェースが設定されます。 $IFVARはbashが許容する変数名に変換された$IFACEです。

コード表示 1.1: pre/post up/down関数の例

preup() # 起動前のインターフェースの物理接続テスト。一部のネットワークアダプタ # にのみ有効です。ethtoolパッケージがインストールされている # 必要があります。

Page 65: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

# 必要があります。 if ethtool $IFACE | grep ­q 'Link detected: no'; then ewarn "No link on $IFACE, aborting configuration" return 1 fi

# 成功時は0を忘れずに返します return 0

predown() # このスクリプトのデフォルトの処理は、NFSルートのテストをして # その場合にインターフェースの停止処理を中断することです。predown()関数を # 定義するとこの処理を上書きしてしまうことに注意してください。やはり # その処理を必要とするなら、このような感じ... if is_net_fs /; then eerror "root filesystem is network mounted ­­ can't stop $IFACE" return 1 fi

# 成功時は0を忘れずに返します return 0

postup() # この関数は、例えばダイナミックDNSサービスに登録するとき # 使えます。他にはインターフェースが起動したときにメールの送受信を # することにも使えます。 return 0

postdown() # この関数はほとんど一貫性のためにあります... まだこの関数を # 使用して行うのに何かふさわしいものを考え付いたことはありません ;­) return 0

5.b. Wireless Toolsのフック関数

注意: WPA Supplicantとの組み合わせでは動作しません。­ ですが$ESSIDと$ESSIDVAR変数はpostup()関数で利用可能です。

associate関数に関連して呼び出される2つの関数が定義できます。 それらの関数は、一つの関数で複数のアダプタを制御できるように、インターフェース名が最初に渡されて呼び出されます。

対象のインターフェースの有効化や無効化処理が続行可能であることを示すには、preassociate()関数の戻り値は、0 (成功)でなければなりません。preassociate()ゼロ以外の値を返すと、インターフェースの有効化処理は中断されます。

postassociate()関数の戻り値は無視されます。失敗を示す場合は何もすることがないからです。

$ESSIDは接続しようしているAPの正確なESSIDが設定されます。 $ESSIDVARはbashが許容する変数名に変換された$ESSIDです。

コード表示 2.1: pre/post associate関数

preassociate() # 以下の処理は、leap_user_ESSIDとleap_pass_ESSIDの2つの設定変数 # を追加します。接続されようとしているESSID向けに両方が設定されたら、 # CISCO LEAPスクリプトを実行します。

local user pass eval user="\$\leap_user_$ESSIDVAR\" eval pass="\$\leap_pass_$ESSIDVAR\"

if [[ ­n $user && ­n $pass ]]; then if [[ ! ­x /opt/cisco/bin/leapscript ]]; then eend "For LEAP support, please emerge net­misc/cisco­aironet­client­utils" return 1 fi einfo "Waiting for LEAP Authentication on "$ESSID//\\\\//"" if /opt/cisco/bin/leapscript $user $pass | grep ­q 'Login incorrect'; then ewarn "Login Failed for $user" return 1 fi fi

return 0

postassociate() # この関数はほとんど一貫性のためにあります... まだこの関数を # 使用して行うのに何かふさわしいものを考え付いたことはありません ;­)

return 0

注意: $ESSIDと$ESSIDVARはpredown()とpostdown()関数では利用できません。

6. ネットワーク管理6.a. ネットワーク管理

コンピュータを持って常に移動する場合、いつもイーサネットケーブルがあるわけでも、ケーブルが繋がっているわけでも、アクセスポイントが利用可能なわけでもないかもしれません。 さらにイーサネットケーブルが接続されたりアクセスポイントを発見したりしたときに、自動でネットワークが使えるように

Page 66: Gentoo Linux ドキュメント -- Gentoo Linux AMD64 ハンドブック

わけでもないかもしれません。 さらにイーサネットケーブルが接続されたりアクセスポイントを発見したりしたときに、自動でネットワークが使えるようにしたほうがいいかもしれません。

ここには、このようなネットワーク管理をしやすくするいくつかのツールがあります。

注意: この文書ではifplugdに関連したことだけ説明しますが、 netplugのような代替もあります。 netplugはifplugdを代替する軽量版で、カーネル上のネットワークドライバが正しく動作することを期待しますが、 多くのドライバは正しく動かないことがあります。

6.b. ifplugd

ifplugdはイーサネットケーブルの挿抜時にインターフェースを起動停止するデーモンです。 アクセスポイントとの接続や新しいアクセスポイントの範囲内に入ったことの検知も扱います。

コード表示 2.1: ifplugdのインストール

# emerge sys­apps/ifplugd

ifplugdの設定も難しいことはなにもありません。 設定ファイルは/etc/conf.d/netにあります。 設定可能な変数についてはman ifplugdを実行してください。

コード表示 2.2: ifplug設定例

(eth0を監視するインターフェースに置き換えてください)ifplugd_eth0="..."

(無線インタフェースを監視する)ifplugd_eth0="­­api­mode=wlan"

複数のネットワーク接続を管理する場合には、 複数のDNSサーバーとの通信と設定が簡単になるツールを導入した方がいいでしょう。 これは、DHCPからIPアドレスを取得する場合にはとても便利です。 単純にopenresolvをemergeするだけです。

コード表示 2.3: openresolvのインストール

# emerge openresolv

この点について知りたい場合は、man resolvconf を見てください。

このドキュメントの内容は、他のものが明示されない限りは、 CC­BY­SA­2.5ライセンスです。 Gentoo Name and Logo Usage Guidelines (日本語訳)が適用されます。