Gentoo Linux amd64 ハンドブック: Gentoo をインストールする

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:AMD64/Full/Installation and the translation is 100% complete.



はじめに

ようこそ

まずはじめに、Gentooへようこそ!あなたは、選択と性能の世界に入ろうとしています。Gentooでは、全てが選択です。そのことは、インストールするときにもたびたび明らかになります。コンパイルを何回やらせたいか、Gentooをどのようにインストールしたいか、システムのロギングツールに何を使用したいかなどなど、ユーザに選択権があります。

Gentooは、高速で現代的なメタディストリビューションで、整理された柔軟なデザインになっています。Gentooは、フリーソフトウェアのエコシステムの上に成り立っており、内部をユーザに隠匿することがありません。Gentooで用いるパッケージ管理システムであるPortageはPythonで書かれていますので、ソースコードを容易に閲覧したり改変したりすることができます。Gentooで採用しているパッケージ化の手法は、(コンパイル済パッケージにも対応していますが、)ソースコードを用いるものです。Gentooの設定は、一般的なテキストファイルで行います。つまり言い換えれば、Gentooは、全てをユーザーに開放しています。

選択こそが Gentoo を動かすものであることを全員が理解していることは、きわめて重要です。望まざることをユーザーに強いないよう、我々は努めています。もし異なる信念をお持ちであれば、バグリポートを送ってください。

インストール作業の順序

Gentoo のインストール作業工程は、次章以降で説明する10のステップに分けられます。それぞれの段階を適切に完了させましょう。

ステップ 結果
1 Gentoo をインストール可能な作業環境にします。
2 Gentoo をインストールするためのインターネット接続の準備が完了します。
3 インストールする Gentoo をホストするハードディスクを初期化します。
4 インストールする環境を準備し、新たな環境にユーザーが chroot 可能にします。
5 Gentoo をインストールする全ての場合に共通する中核的なパッケージをインストールします。
6 Linux カーネルをインストールします。
7 Gentoo システムの設定ファイルの大部分が作成されます。
8 必要なシステムツールをインストールします。
9 適切なブートローダーもインストールし設定します。
10 インストールしたての Gentoo Linux 環境に繰り出す準備が完了します。

このハンドブックでは、一定の選択肢を提示したときには必ず、賛否両論の併記に努めます。デフォルトの選択肢で進める記載をした際にも(見出しに「デフォルト:」と記載)、他に取りうる選択肢も記載します(見出しに「代替案:」と記載)。決して、「デフォルトは Gentoo のお勧めだ」と考えないでください。デフォルトはあくまでも、多くのユーザーが採用すると思われる選択肢にすぎません。

ときには、追加可能な手順が続くことがあります。そのような手順は「追加可能:」と記載します。つまりこの手順は、Gentoo のインストール自体には必須ではありません。とはいえ、以前にした決断によっては必須になる追加手順もあります。その際には、その追加手順の説明の直前に、この旨を明記するとともに、原因となった決断をした時期も記載します。

Gentooのインストール方法

Gentoo は、さまざまな方法でインストールすることができます。ダウンロードしてインストールすることも、起動可能なISOイメージのような公式インストールメディアからインストールすることもできます。インストールメディアは USB メモリにインストールすることも、ネットワークブートすることもできます。さらには、インストール済の異なるディストリビューション環境や、(例えば Knoppix のような)Gentoo 以外のブータブルディスクといった非公式メディアからインストールすることも可能です。

この文書が扱っているのは、公式の Gentoo インストールメディアを用いる方法と、場合によってはネットワークブートによる方法です。

注意
Gentoo 以外の起動可能なメディアを用いる場合などの、ほかのインストール方法については、『Alternative installation guide』を読んでください。

また、我々が提供している『Gentoo インストールのヒントとトリック』 という文書も役にたつかもしれません。

トラブルがあったときは

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

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

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

そういえば、Gentooについて何か分からないことがあったら、よくある質問を見てみてください。Gentoo Forums上にあるFAQsもあります。






ハードウェア要件

始める前に、amd64の機械に首尾よくGentooをインストールするために必要なハードウェアの条件を示します。


AMD64 liveディスクのハードウェア要件
Minimal CD LiveDVD
CPU あらゆる x86-64 CPU(AMD64 および Intel 64)
メモリ 2 GB
ディスク容量 8 GB (スワップ領域を除く)
スワップ領域 最低 2 GB

AMD64 project (英語) は、Gentoo の amd64 対応についての詳細を知るのに良い場所です。


Gentoo Linux インストールメディア

MinimalインストールCD

Gentoo MinimalインストールCDは、自己完結したGentoo環境である、ブート可能イメージです。このCDを使うとLinuxをCDやその他のインストールメディアから起動することができます。起動時、接続されたハードウェアが検出されて適切なドライバが読み込まれます。 このイメージは、Gentooの開発者によってメンテナンスされるもので、インターネット接続さえできれば誰でもGentooをインストールできるようにします。

MinimalインストールCDは、install-amd64-minimal-<release>.isoと呼ばれます。

必要なときに使うGentoo LiveDVD

必要な場合に使う、Gentooをインストール用の特別なDVDイメージが作成されています。この章で説明する方法は、MinimalインストールCDをターゲットにしているので、LiveDVDから起動する場合と少々の差異があるかもしれません。しかしLiveDVD (または他の起動可能なLinux環境) は、ターミナル上で単純にsudo su -またはsudo -iを実行するだけで、rootプロンプトの取得を行えます。

Stage とは?

stage3 tarballは、プロファイル特有でかつ最小限のGentoo環境を含んだアーカイブで、このハンドブックに従ってインストールを進めるのに適しています。以前は、このハンドブックでは3つのstage tarballから1つを選ぶインストール方法を説明していました。Gentooはもうstage1とstage2のtarballをダウンロード用に提供していません。これは、これらが内部使用のためであること、そして新しいアーキテクチャに対するブートストラップとして使用されているためです。

stage3 tarballは、公式Gentooミラーのいずれか のreleases/amd64/autobuilds/からダウンロードできます。stageファイルは頻繁に更新され、公式のインストールイメージの中には含まれていません。

ダウンロード

メディアの入手

Gentoo Linuxが使う既定のインストールメディアは、MinimalインストールCDで、とても小さいブータブルGentoo Linux環境を格納しています。この環境はGentooをインストールするために最適なツールをすべて含んでいます。このCDのイメージは、ダウンロードページから(推奨)か、たくさんの利用可能なミラーのいずれかを自分で選び、そのミラー上でISOが置いてある場所を訪れることで、ダウンロードできます。

ミラーからダウンロードするなら、以下の場所でMinimalインストールCDを見つけられます:

  1. releases/ディレクトリに行く。
  2. 関連するターゲットアーキテクチャのディレクトリ(例えばamd64/)を選択する。
  3. autobuilds/ディレクトリを選択する。
  4. amd64x86アーキテクチャでは、それぞれcurrent-install-amd64-minimal/ or current-install-x86-minimal/のどちらかを選択する。他のすべてのアーキテクチャでは、current-iso/ディレクトリへ進む。
Note
armmipss390のような一部のターゲットアーキテクチャには、MinimalインストールCDがありません。現時点では、Gentoo Release Engineering projectはこれらのターゲット向けの.isoファイルの作成をサポートしていません。

この場所の中では、インストールメディアファイルは.isoという接尾辞 (拡張子) を持ちます。例えば、以下の一覧を見てみてください。

CODE releases/amd64/autobuilds/current-iso/におけるダウンロード可能なファイルの一覧の例
[DIR] hardened/                                          05-Dec-2014 01:42    -   
[   ] install-amd64-minimal-20141204.iso                 04-Dec-2014 21:04  208M  
[   ] install-amd64-minimal-20141204.iso.CONTENTS        04-Dec-2014 21:04  3.0K  
[   ] install-amd64-minimal-20141204.iso.DIGESTS         04-Dec-2014 21:04  740   
[TXT] install-amd64-minimal-20141204.iso.DIGESTS.asc     05-Dec-2014 01:42  1.6K  
[   ] stage3-amd64-20141204.tar.bz2                      04-Dec-2014 21:04  198M  
[   ] stage3-amd64-20141204.tar.bz2.CONTENTS             04-Dec-2014 21:04  4.6M  
[   ] stage3-amd64-20141204.tar.bz2.DIGESTS              04-Dec-2014 21:04  720   
[TXT] stage3-amd64-20141204.tar.bz2.DIGESTS.asc          05-Dec-2014 01:42  1.5K

上記の例では、install-amd64-minimal-20141204.isoというファイルがMinimalインストールCDそのものです。 しかし見て分かりますが、他の関係ファイルも存在しています:

  • .CONTENTSファイルは、インストールメディアで利用可能な全てのファイルの一覧を含むテキストファイルです。このファイルは、インストールメディアをダウンロードする前に、特定のファームウェアまたはドライバが含まれているかどうか調べるために使えます。
  • .DIGESTSファイルは、様々なハッシュ形式とアルゴリズムで計算したISOファイルのハッシュ値を含んでいます。このファイルは、ダウンロードしたISOファイルが破損しているか否かを調べるために使われます。
  • .DIGESTS.ascファイルは、(.DIGESTSのような) ISOファイルのハッシュ値だけではなく、ファイルのデジタル署名を含みます。これは両方ともダウンロードしたファイルが破損しているか否かを調べるために使われますが、同様にダウンロードしたものがGentooリリースエンジニアリングチームによって実際に提供されたものであり、改竄されていないかを調べるためにも用います。

今のところ、この場所で利用可能な他のファイルは無視してください。インストールがもっと進んだ後に再登場しますので。.isoファイルをダウンロードし、もしダウンロードの検証が必要であれば、.isoファイル用の.DIGESTS.ascファイルも同じようにダウンロードします。 .CONTENTSファイルはダウンロードする必要はありません。これからのインストール手順ではもう参照しないからです。.DIGESTSファイルと.DIGESTS.ascは、後者が署名されていることを除いて、同じ情報が含まれています。

ダウンロードしたファイルを検証する

注意
これは任意自由選択なステップで、Gentoo Linuxをインストールするために必須なものではありません。しかしながら、ダウンロードしたファイルが破損していないことを確かめ、Gentooインフラストラクチャ チームから実際に提供されていることを保証するため、推奨されます。

.DIGESTS.DIGESTS.ascファイルを通じ、ISOファイルの妥当性は、適切なツール群を用いて確認できます。この検証は通常、2つのステップで行われます。

  1. まず、デジタル署名を検証します。これは、インストール·ファイルがGentooリリースエンジニアリングチームによって提供されていることを確認するためです。
  2. デジタル署名が正しければ、ダウンロードされたファイル自体が破損していないかを確かめるため、チェックサムを検証します。

Microsoft Windows上での検証

Microsoft Windowsシステムでは、チェックサムとデジタル署名を検証するための適切なツール群が普通にある見込みはまずありません。

まずデジタル署名を検証するには、例えばGPG4Winのようなツールを利用できます。インストール後、Gentooリリースエンジニアリングチームの公開鍵をインポートする必要があります。鍵の一覧は署名のページで提供されています。インポート後、ユーザは.DIGESTS.ascファイルの署名を検証できるようになります。

重要
これは.DIGESTSファイルが正しいことを検証しません。.DIGESTS.ascが正しいことだけを検証します。このことはまた、チェックサムが.DIGESTS.ascファイルに含まれる値を用いて検証されるべきであることを意味します。そのため、上記の手順では.DIGESTS.ascファイルのみダウンロードするようになっています。

チェックサム自体は、Hashcalcアプリケーションを使って検証できますが、多数の代替も同様に存在します。ほとんどの場合、これらのツールはユーザに対して計算されたチェックサムを表示しますので、ユーザはこのチェックサムを.DIGESTS.ascファイルの中にある値で検証する必要があります。

Linux上での検証

Linuxシステムでは、デジタル署名を検証する最も一般的な方法はapp-crypt/gnupgソフトウェアを使うことです。このパッケージがインストールされていると、.DIGESTS.ascファイルのデジタル署名を検証するために以下のコマンドが使えます。

まず、適切な鍵を利用できるようにするため、署名のページよりダウンロードします:

user $gpg --keyserver hkps://keys.gentoo.org --recv-keys 0xBB572E0E2D182910
gpg: requesting key 0xBB572E0E2D182910 from hkp server pool.sks-keyservers.net
gpg: key 0xBB572E0E2D182910: "Gentoo Linux Release Engineering (Automated Weekly Release Key) <releng@gentoo.org>" 1 new signature
gpg: 3 marginal(s) needed, 1 complete(s) needed, classic trust model
gpg: depth: 0  valid:   3  signed:  20  trust: 0-, 0q, 0n, 0m, 0f, 3u
gpg: depth: 1  valid:  20  signed:  12  trust: 9-, 0q, 0n, 9m, 2f, 0u
gpg: next trustdb check due at 2018-09-15
gpg: Total number processed: 1
gpg:         new signatures: 1

代わりに、WKDを使用してダウンロードすることも可能です:

--2019-04-19 20:46:32--  https://gentoo.org/.well-known/openpgpkey/hu/wtktzo4gyuhzu8a4z5fdj3fgmr1u6tob?l=releng
Resolving gentoo.org (gentoo.org)... 89.16.167.134
Connecting to gentoo.org (gentoo.org)|89.16.167.134|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 35444 (35K) [application/octet-stream]
Saving to: 'STDOUT'
 
     0K .......... .......... .......... ....                 100% 11.9M=0.003s
 
2019-04-19 20:46:32 (11.9 MB/s) - written to stdout [35444/35444]
 
gpg: key 9E6438C817072058: 84 signatures not checked due to missing keys
gpg: /tmp/test2/trustdb.gpg: trustdb created
gpg: key 9E6438C817072058: public key "Gentoo Linux Release Engineering (Gentoo Linux Release Signing Key) <releng@gentoo.org>" imported
gpg: key BB572E0E2D182910: 12 signatures not checked due to missing keys
gpg: key BB572E0E2D182910: 1 bad signature
gpg: key BB572E0E2D182910: public key "Gentoo Linux Release Engineering (Automated Weekly Release Key) <releng@gentoo.org>" imported
gpg: Total number processed: 2
gpg:               imported: 2
gpg: no ultimately trusted keys found

次に.DIGESTS.ascファイルのデジタル署名を検証します:

user $gpg --verify install-amd64-minimal-20141204.iso.DIGESTS.asc
gpg: Signature made Fri 05 Dec 2014 02:42:44 AM CET
gpg:                using RSA key 0xBB572E0E2D182910
gpg: Good signature from "Gentoo Linux Release Engineering (Automated Weekly Release Key) <releng@gentoo.org>" [unknown]
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: 13EB BDBE DE7A 1277 5DFD  B1BA BB57 2E0E 2D18 2910

すべてが確実であることを完全に確かめるために、表示された指紋がGentooの署名のページ上にある指紋かどうかを調べます。

デジタル署名が検証されれば、次にチェックサムを確認します。これは、ダウンロードしたISOファイルが破損していないことを確認するためです。 .DIGESTS.ascファイルには、複数のハッシュアルゴリズムが含まれています。そのため、適切なものを検証するための1つの方法としては、.DIGESTS.ascに登録された先頭のチェックサムを見てください。 例えば、SHA512チェックサムを取得します:

user $grep -A 1 -i sha512 install-amd64-minimal-20141204.iso.DIGESTS.asc
# SHA512 HASH
364d32c4f8420605f8a9fa3a0fc55864d5b0d1af11aa62b7a4d4699a427e5144b2d918225dfb7c5dec8d3f0fe2cddb7cc306da6f0cef4f01abec33eec74f3024  install-amd64-minimal-20141204.iso
--
# SHA512 HASH
0719a8954dc7432750de2e3076c8b843a2c79f5e60defe43fcca8c32ab26681dfb9898b102e211174a895ff4c8c41ddd9e9a00ad6434d36c68d74bd02f19b57f  install-amd64-minimal-20141204.iso.CONTENTS

上記の出力では、2つのSHA512チェックサムが表示されます。1つはinstall-amd64-minimal-20141204.isoファイルのもので、1つはそれに付随する.CONTENTSファイルです。最初のチェックサムだけが重要で、その 比較対象となるSHA512チェックサムは、以下のように生成することができます:

user $sha512sum install-amd64-minimal-20141204.iso
364d32c4f8420605f8a9fa3a0fc55864d5b0d1af11aa62b7a4d4699a427e5144b2d918225dfb7c5dec8d3f0fe2cddb7cc306da6f0cef4f01abec33eec74f3024  install-amd64-minimal-20141204.iso

双方のチェックサムが同一であれば、ファイルは破損していません。インストールを続行できます。

ディスクに書き込む

もちろん、ISOファイルをダウンロードしただけでは、Gentoo Linuxのインストールは始められません。ISOファイルはブートCDに書き込む必要があり、しかもISOファイルそのものではなく、ISOファイルの中身を書き込む必要があります。以下にいくつかのよく使われる方法を示します--より詳細な情報が知りたい場合はISOファイルの書き込みについてのわたしたちのFAQを見てください。

Microsoft Windows 7以降での書き込み

Microsoft Windows 7以降のバージョンでは、サードパーティ製のソフトウェアを必要とすることなく、ISOイメージをマウントし書き込むことができます。単純に書き込み可能なディスクを挿入し、ダウンロードしたISOファイルをブラウズし、右クリックして「ディスクイメージの書き込み」を選択してください。

Linuxでの書き込み

Linuxでは、app-cdr/cdrtoolsパッケージにあるcdrecordユーティリティで、ISOイメージを書き込みことができます。

/dev/sr0デバイス(これはシステム上の1番目のCDデバイスです。必要ならば正しいデバイスに置き換えてください)のCDにISOファイルを書き込むには:

user $cdrecord dev=/dev/sr0 install-amd64-minimal-20141204.iso

GUIを好むユーザーはkde-apps/k3bパッケージの一部であるK3Bを使うことができます。K3Bでは、ToolsメニューからBurn CD Imageを選択してください。

起動する

インストールメディアから起動する

インストールメディアの準備が出来たら、このメディアで起動させましょう。メディアをシステムに挿入してから再起動し、マザーボードのファームウェアメニューに入ります。Power-On Self-test (POST) 画面の間に DELF1F10ESC を押すものが多いですが、このトリガーとなるキーはシステムやマザーボードによって異なります。マザーボードのモデル名でインターネット検索をすると簡単に見つけられるはずです。ファームウェアメニューに入ることができたら、外付けブートメディア (CD/DVDやUSBメモリなど) の起動順位を内臓ディスクより "先" にしましょう。そうしないと、外付けブートメディアを無視して内臓ディスクから起動してしまうでしょう。

重要
Gentoo を、BIOS ではなく UEFI インターフェースを利用する方法でインストールした場合には、UEFI から直接にブートすることをお勧めします。もしそうしないのであれば、Gentoo Linux のインストールを完了するより前に、UEFI のブータブル USB スティックメモリ(あるいはその他のブータブルメディア)を一度作成しておく必要があるかもしれません。

もしまだなら、インストールメディアがシステムに挿入されているか、またはプラグでシステムに繋がれているかを確かめて再起動させます。ブートプロンプトが表示されるはずです。この画面で、Enter を入力すると、デフォルトのブートオプションで、ブートプロセスが進行します。カスタムブートオプションでブートさせたい場合には、カーネルとブートオプションを指定して Enter を入力します。

注意
ほとんどの場合、上述の通り、デフォルトの Gentoo カーネルは追加のパラメータを指定しなくても問題なく機能します。起動のトラブルシューティングをする場合、エキスパートオプションについて知りたい場合は次の節をお読みください。そうでない場合は、Enter を押して、 例外的なハードウェア構成へ飛んでください。

ブートプロンプトでは、利用可能なカーネル (F1) とブートオプション (F2) を表示させることができます。(情報を表示したりカーネルを選択したりすることなく)何もしないで15秒経過すると、(メディアからではなく)原則通りにディスクからブートします。この仕様により、CDを取り除くことなしに、再起動してインストール後の環境に入ることができます(特に遠隔でインストールした際に便宜です)。

カーネルの選択について触れました。MinimalインストレーションCDでは、2つだけの予め定義されたカーネル起動オプションが提供されています。デフォルトのオプションは、 gentoo と呼ばれています。もう一方は"-nofb"の付いたバリエーションで、これはカーネルのフレームバッファを無効にしたものです。

次の章で、利用可能なカーネルの概要を示します。

カーネルの選択

gentoo
K8 CPU (NUMA サポートを含む) と EM64T CPU に対応した、デフォルトのカーネル
gentoo-nofb
gentoo のカーネルからフレームバッファ対応を除いたもの
memtest86
ローカル RAM のエラーを検査する

カーネルと並んで、ブートオプションはブートプロセスをさらに調整するのに役立ちます。

ハードウェアに関するオプション

acpi=on
ACPIサポートを読み込み、自動的に acpid デーモンを起動します。システムがACPIなしでは正しく動かない場合に指定します。ハイパースレッディング対応にこのオプションを使う必要はありません。
acpi=off
ACPIを無効にします。APMを使う古いシステムで有用なことがあります。このオプションはCPUのハイパースレッディング機能のサポートを無効にします。
console=X
シリアル端末による接続を設定します。デバイス名 (ttyS0 である場合が多い) に続けて接続オプションをカンマ区切りで指定します。デフォルトのオプションは 9600,8,n,1 です。
dmraid=X
device-mapper RAID サブシステムに渡すオプションを指定します。Options should be encapsulated in quotes.
doapm
APMドライバのサポートを有効にします。acpi=off も併せて指定しなければなりません。
dopcmcia
PCMCIA および Cardbus ハードウェアのサポートを読みこみ、pcmcia cardmgr を自動的に起動します。このオプションはPCMCIA/Cardbus デバイスから起動する場合にのみ必要です。
doscsi
ほとんどのSCSIコントローラのサポートを読み込みます。大抵のUSBデバイスはカーネルのSCSIサブシステムを使用するため、そのようなデバイスからの起動にも必要です。
sda=stroke
BIOSが大容量ディスクを扱えない場合でも、ハードディスク全体をパーティションできるようにします。このオプションは古いBIOSを使うシステムでのみ使用します。sda を対象のデバイス名に置き換えてください。
ide=nodma
DMAを強制的に無効にします。一部のIDEチップセットとCDROMドライブで必要になることがあります。もしIDE接続のCDROMドライブの読み取りに問題が発生する場合、このオプションを試してみてください。このオプションを指定するとデフォルトの hdparm 設定も実行されなくなります。
noapic
最近のマザーボードに搭載されている Advanced Programmable Interrupt Controller を無効にします。この機能は古いハードウェアで問題が起きることが知られています。
nodetect
CDによる全ての自動検出を無効にします。これにはデバイスの自動検出やDHCPの検出が含まれます。CDやドライバがうまく動かない時のデバッグに使います。
nodhcp
検出されたネットワークカードでのDHCP検出を無効にします。静的なアドレスのみで構成されるネットワークに便利です。
nodmraid
device-mapper RAID のサポートを無効にします。オンボード IDE/SATA RAID コントローラーを使う場合などに使います。
nofirewire
Firewareモジュールの読み込みを無効にします。起動時にFirewireハードウェアが問題を起こす場合にのみ使うべきです。
nogpm
gpm による端末上でのマウスサポートを無効にします。
nohotplug
hotplug / coldplug init script の読み込みを無効にします。CDやドライバがうまく動かないときのデバッグに使います。
nokeymap
US配列以外のキーボードレイアウト向けのkeymap選択を行いません。
nolapic
ユニプロセッサ環境でのローカルAPICを無効にします。
nosata
シリアルATAモジュールの読み込みを行いません。SATAサブシステムで問題が発生する場合に使います。
nosmp
対照型マルチプロセッシング (SMP) が有効なカーネルでは、これを無効化します。一部ドライバやマザーボードで発生するSMP関連の問題のデバッグに使います。
nosound
サウンドサポートと音量調整を無効にします。サウンドサポートが問題を起こす場合に使います。
nousb
USBモジュールの自動読み込みを無効にします。USBの問題をデバッグする際に使います。
slowusb
IBM BladeCenterのような低速なUSB CDROM向けに、起動時の待機時間を延ばします。

論理ボリューム・デバイス管理

dolvm
Linux の Logical Volume Management を有効にします。

その他のオプション

debug
デバッグコードを有効にします。大量の情報を画面に表示するので、ごちゃごちゃして見えるかもしれません。
docache
実行時に必要なCDの情報を全てRAM上にキャッシュすることで、 /mnt/cdrom のマウントを解除して別の CDROM をマウントできるようにします。このオプションを使うには最低でもCDのデータ量の2倍のRAMが必要です。
doload=X
initial ramdisk に指定したモジュールとそれが依存するモジュールを読み込むよう指示します。Xにカンマ区切りのモジュール名のリストを指定します。
dosshd
sshd を自動起動します。無人セットアップに便利です。
passwd=foo
=の後ろに指定した文字列を root パスワードにします。デフォルトでは root パスワードがスクランブルされているので、"dosshd" を指定する場合にこのオプションが必要になります。
noload=X
initial ramdisk に指定したモジュールを読み込まないよう指示します。問題を起こすモジュールを読み込ませたくないときに使います。構文は doload と同じです。
nonfs
portmap/nfsmount の自動起動を無効化します。
nox
Xが有効なLiveCDで、Xを自動起動せずコマンドライン環境に移行するよう指示します。
scandelay
初期化に時間のかかるデバイスのために、ブートプロセスの途中で10秒待機させます。
scandelay=X
初期化に時間のかかるデバイスのために、ブートプロセスの途中で指定した時間待機させます。Xを任意の秒数で置き換えます。
注意
ブートメディアは、do* オプションより先に no* オプションを判定しますので、指定した順番が覆ることがあります。

メディアからブートしたら、(デフォルトの gentoo カーネルで足りなければ)カーネルを選び、また、ブートオプションを選びます。例えば、gentoo カーネルで、dopcmcia をカーネルパラメーターに指定して起動するには、以下のようになります。

boot:gentoo dopcmcia

次に起動画面やプログレスバーを目にすることになりますが、もし英字配列以外のキーボードを使っている場合はここでAlt+F1を押して、画面の指示に従ってキー配列を選択してください。10秒以内に選択しない場合はデフォルトの英字配列が選択されたものとして起動します。起動が完了すると、Gentoo Linuxの"ライブ"環境にrootとして自動ログインします。端末にrootプロンプトが表示されていますが、Alt+F2Alt+F3Alt+F4を押すことで他の端末に切り替えることができます。最初の端末に戻るにはAlt+F1を押します。


例外的なハードウェア構成

インストールメディアが起動するとき、すべてのハードウェア機器を検出して適切なカーネルモジュールを読み込もうとします。これは非常に多くの場合、とても良い仕事をします。しかしある場合において、システムに必要なカーネルモジュールを自動で読み込まないかもしれません。PCI自動検出機能がシステムのハードウェアを見逃した場合、適切なカーネルモジュールを手動で読み込む必要があります。

次の例は、(ある種類のネットワークインタフェイスをサポートする) 8139tooモジュールを読み込みます:

root #modprobe 8139too

追加可能: ユーザアカウント

インストール環境に他の人たちがアクセスする必要があったり、インストールメディア上で非rootユーザでコマンドを実行する(例えば、セキュリティ上の理由から、root権限無しでirssiを使ってチャットする)必要があるなら、別のユーザアカウントを作成し、強いrootパスワードを設定する必要があります。

rootパスワードを変更するには、passwdユーティリティを使ってください:

root #passwd
New password: (新しいパスワードを入力)
Re-enter password: (もう一度新しいパスワードを入力)

ユーザーアカウントを作成するためには、まずアカウントの資格情報を、次にパスワードを入力します。このために、useraddpasswdコマンドを使います。

次の例では、johnというユーザが作成されます:

root #useradd -m -G users john
root #passwd john
New password: (Enter john's password)
Re-enter password: (Re-enter john's password)

現在のrootユーザから新しく作成したユーザアカウントに切り替えるには、suコマンドを使ってください:

root #su - john

追加可能:インストール中のドキュメント閲覧

TTY

Gentooハンドブックをインストール中に見るには、最初に上記の方法でユーザアカウントを作ってください。そしてAlt+F2を押すことで新しい端末を使い始められます。

インストール中、 linksコマンドでGentooハンドブックを閲覧できます。もちろん、インターネット接続が機能し始めた瞬間からですけど。

user $links https://wiki.gentoo.org/wiki/Handbook:AMD64/ja

元々の端末に戻るには、Alt+F1を押してください。

GNU Screen

公式 Gentoo インストールメディアにはデフォルトで Screen ユーティリティがインストールされています。熟練の Linux ファンにとっては、上に書いた複数の TTY を使う方法よりも、ペインを分割してインストール指示を読むために screen を使うほうが効率がいいかもしれません。

追加可能:SSHデーモンの開始

他のユーザーがインストール中にシステムにアクセスできるようにする(インストール中のサポートをしたり、あるいは全て遠隔操作で行うため)ためには、(前述の通り)ユーザーアカウントを作成し、SSHデーモンを起動する必要があります。

OpenRC 上で SSH デーモンを始動させるためには、次のコマンドを実行します:

root #rc-service sshd start
Note
ユーザーがシステムにログオンすると、(指紋・fingerprint と呼ばれるもので) ホスト鍵を確認するようメッセージが表示されると思います。これはSSHサーバーへの最初の接続では期待される典型的な挙動です。ところが、この後の手順でシステムのセットアップが完了した後、改めてログオンしようとすると、SSHクライアントはホスト鍵が変更されていると警告します。SSH的には別のサーバー (現在インストールに使っているLive環境ではなく、新しくインストールされた Gentoo システム) にログオンしようとしているように見えるのです。この場合は画面上の指示に従い、クライアント側で記憶しているホスト鍵を更新しましょう。

sshdを使えるようにするには、ネットワークを適切に機能させる必要があります。ネットワーク設定の章を参照してください。





ネットワークの自動検出

動いているかも?

もしあなたのシステムが、DHCPサーバを持つEthernetネットワークに接続されているなら、おそらく既にネットワーク設定は自動的に完了しているでしょう。その場合には、sshscppingirssiwgetlinksなど、インストールCDに含まれるネットワーク接続が必要な多くのコマンドはすぐに使うことができるでしょう。

インターフェース名を決定する

ifconfig コマンド

ネットワークが設定されているならば、ifconfigコマンドで、lo以外のネットワークインターフェースを一覧表示できるはずです。次の例ではeth0が見えています:

root #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 

predictable network interface namesへ移行した結果、システム上のインターフェース名は古い命名規則によるeth0とはかなり違うものになっているかもしれません。最近のインストールメディアはeno0ens1enp5s0など、命名規則に則ったネットワークインターフェース名を表示するかもれません。ifconfigの出力から、あなたのローカルネットワーク上のIPアドレスが設定されたインターフェースを探してください。

Tip
標準の ifconfig コマンドを使ってインターフェースが表示されないなら、同コマンドを -a オプション付きで使ってみてください。このオプションは、システムが検出したすべてのネットワークインターフェースを、その状態が up であるか down であるかに関わらず、強制的に表示させます。ifconfig -a が何の効果もないのなら、ハードウェアに問題があるか、そのインターフェースのためのドライバがカーネルにロードされていないかです。どちらの状況も、このハンドブックの対象範囲を外れています。#gentoo (webchat) に助けを求めてください。

ip コマンド

ifconfig の代替として、インターフェース名を決定するために ip コマンドが使えます。次の例に ip addr の出力を示します。別のシステムでの出力なので、表示される情報は前の例とは異なっています:

root #ip addr
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether e8:40:f2:ac:25:7a brd ff:ff:ff:ff:ff:ff
    inet 10.0.20.77/22 brd 10.0.23.255 scope global eno1
       valid_lft forever preferred_lft forever
    inet6 fe80::ea40:f2ff:feac:257a/64 scope link 
       valid_lft forever preferred_lft forever

この出力結果はさっきより少し分かりづらいかもしれません。この例でのインターフェース名は、番号のすぐ後ろに続いている、eno1 です。

以降、このドキュメントでは、扱っているネットワークインターフェース名はeth0であると仮定します。

追加可能: プロキシを設定する

プロキシを経由してインターネットにつなぐ場合には、インストール作業の中でプロキシ情報を設定する必要があります。プロキシを設定するのはとても簡単です:プロキシサーバ情報を変数に設定するだけです。

ほとんどの場合、プロキシサーバのホスト名を設定するだけで十分です。例えば、ホスト名はproxy.gentoo.org、ポート番号は8080であるとしましょう。

HTTPプロキシ(HTTPとHTTPS通信のため)を設定するには:

root #export http_proxy="http://proxy.gentoo.org:8080"

FTPプロキシを設定するには:

root #export ftp_proxy="ftp://proxy.gentoo.org:8080"

RSYNCプロキシを設定するには:

root #export RSYNC_PROXY="proxy.gentoo.org:8080"

ユーザ名とパスワードが必要ならば、次の構文で変数を設定します:

CODE ユーザ名とパスワードをプロキシ変数に追加する
http://username:password@proxy.gentoo.org:8080

ネットワークのテスト

あなたのISPのDNSサーバ(/etc/resolv.confで見つかります)と、好きなウェブサイトへのpingを試してみましょう。これにより、ネットワークが正常に機能しているか、ネットワークパケットがインターネットに到達できるか、DNS名前解決が正常に機能しているか、等のことを確認できます。

root #ping -c 3 www.gentoo.org

これがすべてうまくいくのなら、この章の残りの部分を読み飛ばして、インストールマニュアルの次のステップ(ディスクの準備)へ進むことができます。

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

起動しただけではネットワークが使えない場合は、インストールメディアにnet-setup(通常のネットワークや無線ネットワーク用)や、pppoe-setup(ADSL用)や、pptp (PPTP用)などのツールが含まれているなら、それらを使って設定できます。

お使いのインストールメディアがこれらのツールを含んでいない場合は、#手動でのネットワーク設定へ進んでください。

デフォルト: net-setupを使う

ネットワークが自動で設定されなかった場合に、ネットワークを設定するための最も簡単な方法がnet-setupスクリプトを実行することです:

root #net-setup eth0

net-setupはあなたのネットワーク環境について、いくつかの質問をします。すべてに答えると、ネットワーク接続が使えるようになるはずです。上に書いた方法でネットワークをテストしてください。すべてのテストをパスできたなら、おめでとうございます! この章の残りを飛ばしてディスクの準備へ進みましょう。

それでもネットワークが使えない場合は、#手動でのネットワーク設定へ進んでください。

代替案: PPPを使う

インターネットへの接続にPPPoEが必要なら、インストールCD(どのバージョンでも可)に含まれるpppが設定を楽にしてくれます。提供されるpppoe-setupスクリプトを使ってネットワークを設定しましょう。セットアップ中には、ADSLモデムに接続されたEthernetデバイスの名前、ユーザ名とパスワード、DNSサーバのIPアドレス、基本的なファイアウォールが必要かどうかが聞かれます。

root #pppoe-setup
root #pppoe-start

何かがおかしいときは、etc/ppp/pap-secretsまたは/etc/ppp/chap-secretsを見てユーザ名とパスワードが正しいかダブルチェックしてください。加えて、正しいEthernetデバイスを使っているか確認してください。もしEthernetデバイスが無い場合は、適切なネットワークモジュールをロードする必要があります。そのような場合には手動でのネットワーク設定へ進んでください。そこで適切なネットワークモジュールをロードする方法を説明します。

すべてうまくいったら、ディスクの準備へ進みましょう。

代替案: PPTPを使う

PPTPサポートが必要なら、インストールCDが提供するpptpclientを使ってください。でもその前に、設定が正しいか確認してください。/etc/ppp/pap-secretsまたは/etc/ppp/chap-secretsを編集して、正しいユーザ名/パスワードの組み合わせを設定してください。

root #nano -w /etc/ppp/chap-secrets

必要ならば/etc/ppp/options.pptpを修正してください:

root #nano -w /etc/ppp/options.pptp

これが全部終わったら、pptpを(options.pptpで設定できないオプションがあれば、それもいっしょに付けて)実行し、サーバに接続します:

root #pptp <server ipv4 address>

それではディスクの準備へ進みましょう。

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

適切なネットワークモジュールをロードする

インストールCDの起動時に、インストールCDはすべてのハードウェアデバイスを検出し、そのハードウェアをサポートする適切なカーネルモジュール(ドライバ)のロードを試みます。ほとんどの場合、この機能はとてもよくやってくれます。しかし稀に、存在するネットワーク機器と適切に通信するために必要なカーネルモジュールが自動でロードされないこともあります。

net-setupまたはpppoe-setupが失敗したという場合、ネットワークカードを起動時に見つけられなかった可能性があります。つまり、ユーザが適切なカーネルモジュールを手動でロードする必要があるかもしれません。

ネットワーク設定のためのカーネルモジュールの一覧を見るには、lsコマンドを使います:

root #ls /lib/modules/`uname -r`/kernel/drivers/net

お使いのネットワークデバイスのためのドライバがあった場合は、modprobeでカーネルモジュールをロードしましょう。例えば、pcnet32モジュールをロードするには:

root #modprobe pcnet32

ネットワークカードが検出されているかどうかチェックするには、ifconfigを使います。ネットワークカードが検出されていれば、以下のように表示されるでしょう(繰り返しますが、ここでのeth0は一例です):

root #ifconfig eth0
eth0      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)

しかし次のようなエラーが表示される場合、ネットワークカードは検出されていません:

root #ifconfig eth0
eth0: error fetching interface information: Device not found

現在のシステムで利用可能なネットワークインターフェース名は、/sysファイルシステムを通して一覧表示できます:

root #ls /sys/class/net
dummy0  eth0  lo  sit0  tap0  wlan0

上の例では、6個のインターフェースが見つかっています。eth0がおそらく(有線の)Ethernetアダプタで、wlan0は無線のアダプタです。

ネットワークカードがこれで検出できたとして、net-setupまたはpppoe-setupをもう一度試してください(今度はうまくいくはずです)。しかし上級者のために、手動でのネットワーク設定についても説明していきます。

あなたのネットワーク構成に応じて、次の節のうちからひとつを選んでください:

DHCPを使う

DHCP (Dynamic Host Configuration Protocol) を使うと、自動でネットワーク接続情報(IPアドレス、ネットマスク、ブロードキャストアドレス、ゲートウェイ、ネームサーバ、等)を受信することができます。この機能は、DHCPサーバがネットワーク内に存在しないと(または、ISPがDHCPサービスを提供していないと)動作しません。ネットワークインターフェースに接続情報を自動で受信させるようにするには、dhcpcdを使います:

root #dhcpcd eth0

DHCPサーバが提供するホスト名とドメイン名をシステムで使うようにと、ネットワーク管理者から要求されている場合もあるでしょう。そのような場合には:

root #dhcpcd -HD eth0

これが動作すれば(インターネット上のサーバ、例えばGoogleの8.8.8.8やCloudflareの1.1.1.1に、pingしてみましょう)、設定は完了です。次に進む準備ができました。この節の残りの部分を飛ばして、ディスクの準備に進みましょう。

無線接続を準備する

Note
iwコマンドの対応状況はアーキテクチャによって異なるかもしれません。このコマンドが使えない場合は、net-wireless/iwパッケージが作業中のアーキテクチャにおいて利用可能であるか確かめてください。net-wireless/iwパッケージがインストールされていないと、iwコマンドを使用することはできないでしょう。

無線(802.11)カードを使っている場合には、まず第一に無線の設定をする必要があります。無線カードの現在の設定を確認するためには、iwを使うことができます。iwはこのようなものを表示するでしょう:

root #iw dev wlp9s0 info
Interface wlp9s0
	ifindex 3
	wdev 0x1
	addr 00:00:00:00:00:00
	type managed
	wiphy 0
	channel 11 (2462 MHz), width: 20 MHz (no HT), center1: 2462 MHz
	txpower 30.00 dBm

現在の接続を確認するには:

root #iw dev wlp9s0 link
Not connected.

または

root #iw dev wlp9s0 link
Connected to 00:00:00:00:00:00 (on wlp9s0)
	SSID: GentooNode
	freq: 2462
	RX: 3279 bytes (25 packets)
	TX: 1049 bytes (7 packets)
	signal: -23 dBm
	tx bitrate: 1.0 MBit/s
Note
無線カードのデバイス名は、wlp9s0の代わりにwlan0またはra0のような名前かもしれません。正しいデバイス名を調べるには、ip linkを実行してください。

ほとんどのユーザにとって、接続するのに必要な設定は、ESSID(無線ネットワーク名とも言います)と、場合によってはWEPキー、この2つだけです。

  • まず、インターフェースがアクティブになっていることを確認してください:
root #ip link set dev wlp9s0 up
  • GentooNodeという名前のオープンネットワークに接続するには:
root #iw dev wlp9s0 connect -w GentooNode
  • 16進WEPキーを使って接続するには、キーの前にd:を付けてください:
root #iw dev wlp9s0 connect -w GentooNode key 0:d:1234123412341234abcd
  • ASCII WEPキーで接続するには:
root #iw dev wlp9s0 connect -w GentooNode key 0:some-password
Note
無線ネットワークがWPAまたはWPA2で設定されている場合には、wpa_supplicantを使う必要があります。Gentoo Linuxでのネットワーク設定のさらなる情報については、Gentooハンドブックの無線ネットワークの章を読んでください。

iw dev wlp9s0 linkを使って、無線の設定ができたか確認してください。無線が機能したら、次節(ネットワーク用語を理解する)に示す、IPレベルのネットワークオプションの設定に進むか、先に示したnet-setupツールを使ってください。

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

Note
IPアドレス、ブロードキャストアドレス、ネットマスクやネームサーバーのことを知っているなら、このサブセクションを飛ばして ifconfigrouteを使うに進んでください。

もし上記のすべてが失敗したら、ネットワークは手動で設定される必要があります。これは少しも難しくありませんが、幾ばくかのネットワーク用語と基礎的な概念の知識は必要でしょう。この章を読んだあとには、ユーザーはゲートウェイが何で、ネットマスクがなんの役に立っていて、ブロードキャストアドレスがどのように作られてなぜシステムがネームサーバーを必要とするのかがわかるでしょう。

ネットワーク内部では、ホストはIPアドレス(インターネットプロトコルアドレス)によって識別されます。少なくともIPv4 (IP バージョン4)を使うときは、そのようなアドレスは0から255の間の4つの数字の組み合わせです。実際は、IPv4アドレスは32ビット(0と1の集合)からできています。例をみてみましょう。

CODE IPv4アドレスの例
IP Address (数字):   192.168.0.2
IP Address (ビット): 11000000 10101000 00000000 00000010
                        -------- -------- -------- --------
                           192      168       0        2
Note
IPv4の後継であるIPv6は128ビット(0と1の集合)を使っています。この章ではIPv4アドレスに焦点を合わせています。

そのようなIPアドレスはすべての接続可能なネットワークが関わっている範囲で一意に定まっています。つまり到達可能でありたいホストはどれも、唯一なIPアドレスを持たなければならないということです。ネットワークの内部と外部を区別するために、IPアドレスはネットワーク部とホスト部の2つの部分に分かれています。

0の並びのあとに1の並びが続くネットマスクによって、その分かれ目は記録されています。1が位置しているIPの部分はネットワーク部で、そうでない部分はホスト部です。普通は、ネットマスクはIPアドレスとして記録されるでしょう。

CODE ネットワークとホストの分離の例
IP address:    192      168      0         2
            11000000 10101000 00000000 00000010
Netmask:    11111111 11111111 11111111 00000000
               255      255     255        0
           +--------------------------+--------+
                    Network              Host

言い換えると、192.168.0.14は例のネットワークの一部ですが、192.168.1.2はそうではありません。

ブロードキャストアドレスは、ネットワークと同じネットワーク部を持ち、ホスト部がすべて1であるようなIPアドレスです。同じネットワーク上にあるすべてのホストは、このIPアドレスで通信を受けられます。このアドレスは、パケットをブロードキャストするためだけに存在します。

CODE ブロードキャストアドレス
IP address:    192      168      0         2
            11000000 10101000 00000000 00000010
Broadcast:  11000000 10101000 00000000 11111111
               192      168      0        255
           +--------------------------+--------+
                     Network             Host

インターネットに接続するためには、ネットワーク内のそれぞれのコンピュータは、どのホストがインターネット接続を共有してくれるのかを知っている必要があります。そのようなホストをゲートウェイといいます。ゲートウェイも普通のホストなので、普通のIPアドレスを持っています(例: 192.168.0.1)。

最初に、すべてのホストは一意にIPアドレスを持つと書きました。ホストを(IPアドレスの代わりに)名前で指定できるようにするためには、名前(例: dev.gentoo.org)をIPアドレス(例: 64.5.62.82)に変換するサービスが必要になります。このようなサービスを「ネームサービス」といいます。ネームサービスを利用するには、ネームサーバを/etc/resolv.conf内に定義しておく必要があります。

ゲートウェイがネームサーバを兼ねていることもあります。そうでない場合には、ISPが提供するネームサーバをこのファイルに書く必要があります。

まとめると、続けるには次の情報が必要になります:

ネットワーク設定項目
システムの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を使う

sys-apps/net-toolsパッケージにあるツールを使うことで、通常3つのステップで手動でネットワークの設定ができます。

  1. ifconfigコマンドを使ってIPアドレスを割り当てる
  2. routeコマンドを使ってゲートウェイへのルーティングを設定する
  3. 正しいネームサーバのIPアドレスを/etc/resolv.confファイルに書いて完了

IPアドレスを割り当てるには、IPアドレス、ブロードキャストアドレス、ネットマスクの情報が必要になります。${IP_ADDR}をターゲットIPアドレスに、${BROADCAST}をターゲットブロードキャストアドレスに、${NETMASK}をターゲットネットマスクに置き換えて、次のコマンドを実行してください:

root #ifconfig eth0 ${IP_ADDR} broadcast ${BROADCAST} netmask ${NETMASK} up

routeを使ってルーティングの設定を行う場合、${GATEWAY}を適切なゲートウェイのIPアドレスに置き換えてください:

root #route add default gw ${GATEWAY

}

テキストエディタを用いて/etc/resolv.confファイルを開いてください:

root #nano -w /etc/resolv.conf

必要ならば、次のテンプレートを使って、ネームサーバの情報を入力してください。${NAMESERVER1}${NAMESERVER2}は正しいネームサーバのIPアドレスに置き換えてください。複数のネームサーバを追加することが可能です:

FILE /etc/resolv.confデフォルトのresolv.confのテンプレート
nameserver ${NAMESERVER1}
nameserver ${NAMESERVER2}

これで終わりです。インターネット上のサーバ(Googleの8.8.8.8やCloudflareの1.1.1.1など)にpingをして、ネットワークのテストを行ってください。うまくいったなら、おめでとうございます。ディスクの準備へ進んでください。





ブロックデバイスの概要

ブロックデバイス

Gentoo Linuxの、そしてLinux一般の、ブロックデバイス、パーティション、Linuxファイルシステムを含めた、ディスクやファイルシステム中心の考え方について詳しく見てみましょう。ディスクの入出力とファイルシステムについて理解することで、インストールのためのパーティションとファイルシステムを構築できるようになります。

まずはブロックデバイスについて見ていきます。SCSIドライブやシリアルATAドライブは両方とも/dev/sda/dev/sdb/dev/sdcなどのようなデバイスハンドルとしてラベル付されます。更にモダンなマシンでは、PCI ExpressベースのNVMeソリッドステートディスクは、/dev/nvme0n1/dev/nvme0n2などのようなデバイスハンドルを持ちます。

下の表は、各種のブロックデバイスがシステム上のどこにあるかを判断するのに役立つでしょう:

デバイスの種類 デフォルトのデバイスハンドル 編集者メモと、考慮すべき点
SATA、SAS、SCSI、または USB フラッシュメモリ /dev/sda 2007 年頃から現在までに製造されたハードウェアで見られます。このデバイスハンドルはおそらく Linux 上でもっともよく使用されているものでしょう。この種のデバイスは SATA バスSCSIUSB バスを介してブロックストレージとして接続されます。例えば、最初の SATA デバイス上の最初のパーティションは /dev/sda1 という名前になります。
NVM Express (NVMe) /dev/nvme0n1 ソリッドステートテクノロジとして最新の NVMe ドライブは PCI Express バスに接続され、一般市場でもっとも高速な転送速度を持っています。2014 年頃以降のシステムは NVMe ハードウェアのサポートを備えているかもしれません。最初の NVMe デバイスの最初のパーティションは /dev/nvme0n1p1 という名前になります。
MMC、eMMC、および SD カード /dev/mmcblk0 embedded MMC デバイス、SD カード、そして他の種類のメモリーカードはデータ用のストレージとして有用です。つまり、多くのシステムはこれらの種類のデバイスからのブートを許可していないかもしれません。これらのデバイスに Linux をインストールして常用するのはおすすめできません。それらの設計目標である、ファイルの交換用に使うものと考えてください。短期バックアップとして使用すると便利かもしれません。

上のブロックデバイスは、ディスクへの抽象的なインターフェースを表しています。ユーザープログラムはこれらのブロックデバイスを用いて、デバイスが SATA、SCSI、もしくは他のものであるかどうかを心配することなしにディスクと通信することができます。プログラムは容易にディスク上の記憶領域を、ランダムアクセスできる 4096 バイト (4K) ごとの連続領域としてアドレッシングできます。


パーティションテーブル

Linux システムを入れるために、(btrfs RAID を作成した場合のように)パーティショニングされていない生のディスクを使うことも理論上は可能ですが、実際にそのようなことを行うことはほとんどありません。代わりに、ディスク全体のブロックデバイスをより小さく扱いやすいブロックデバイスに分けて使います。amd64 システムでは、この分けられたブロックデバイスのことをパーティションと呼びます。現在主流なパーティショニング技術は、MBR(DOS ディスクラベルとも呼ばれる)と GPT の 2 つがあります。これらは 2 種類のブートプロセスに関連しています: レガシー BIOS ブートと UEFIです。

GUID パーティションテーブル (GPT)

GUID パーティションテーブル (GPT)構成(GPT ディスクラベルとも呼ばれます)は、パーティションの識別子として 64 ビットの値を使います。パーティション情報を格納する領域は MBR パーティションテーブル(DOS ディスクラベル)の 512 バイトよりもずっと大きいため、パーティション数の制限はないようなものです。さらに、パーティションサイズの上限ももっと大きく設定されています(およそ 8 ZiB、そう、ゼビバイトです)。

オペレーティングシステムとファームウェアの間のソフトウェアインターフェースが(BIOS ではなく)UEFI ならば、DOS ディスクラベルでは互換性の問題が発生するので、GPT はほぼ必須となります。

GPTはまたチェックサムと冗長性も備えています。具体的にはヘッダやパーティションテーブルのエラーを検出するCRC32チェックサムや、ディスクの末尾にバックアップのGPTを持っています。もしディスク先頭にあるプライマリGPTに損害があっても、バックアップのGPTを使って回復できます。

Important
GPT にはいくつか注意点があります:
  • BIOS ベースのコンピュータで GPT を使うことは可能ではありますが、Microsoft Windows オペレーティングシステムとのデュアルブートを行うことはできません。理由は、Microsoft Windows は GPT パーティションラベルを検出すると UEFI モードで起動しようとするためです。
  • 一部、バグのある(古い)マザーボードのファームウェアは、BIOS/CSM/legacy モードで起動するように設定されていると、GPT ラベルのディスクから起動する際に問題が発生する場合があります。

マスターブートレコード (MBR) あるいは DOS ブートセクタ

マスターブートレコードブートセクタ(DOS ブートセクタまたは DOS ディスクラベルとも呼ばれる)は、1983 年に PC DOS 2.x とともに最初に導入されました。MBR はパーティションの識別子として、32 ビットで、開始セクタとパーティションのセクタ数を使い、3種類のパーティションタイプ(プライマリ、拡張、論理)を持っています。プライマリパーティションは、ディスク先頭のとても小さい領域(ふつうは 512 バイト)にある MBR の中に、その情報が格納されます。この小ささのために、たった 4 つのプライマリパーティションしか使うことができません(例えば /dev/sda1 から /dev/sda4 まで)。

より多くのパーティションを使うために、プライマリパーティションのうちのひとつを拡張パーティションとしてマークすることができます。拡張パーティションは追加の論理パーティションを複数格納することができます(パーティションの中にパーティションが存在することになります)。

Important
まだほとんどのマザーボードメーカーがサポートしてはいるものの、MBR ブートセクタと、それに関連するパーティションの制限は既に過去のものと考えられます。2010 年以前のハードウェアを扱っているのでない限り、GUID パーティションテーブルでディスクをパーティショニングする方が良いでしょう。このセットアップを使って作業を続ける必要がある読者は、以下のことを認識しておいてください:
  • 2010 年以降のほとんどのマザーボードは、MBR ブートセクタを利用するのを過去の(サポートはされているが理想的でない)ブートモードとみなします。
  • 32 ビットの識別子を使用しているため、MBR のパーティションテーブルは 2 TiB を超えるサイズのストレージ空間のアドレスを指定することができません。
  • 拡張パーティションを作成しない限り、MBR は最大で4つまでのパーティションしかサポートしません。
  • このセットアップではバックアップのブートセクタは一切提供されないので、何かがパーティションテーブルを上書きしてしまうとすべてのパーティション情報が失われます。

とはいえ、MBR と BIOS ブートは AWS などの仮想化されたクラウド環境ではいまだによく使われています。

ハンドブックの著者たちは、可能であればいつでも、Gentoo をインストールするためには GPT を使うことを提案します。

高度なストレージ

amd64インストールCDは Logical Volume Manager (LVM) サポートを提供しています。LVMのパーティション構造は、ストレージのより柔軟な管理を可能にします。LVM では、パーティションとディスクを組み合わせてボリュームグループを構成し、RAID グループや、低速な HD に対して高速な SSD 上にキャッシュを定義できます。この後の説明では「ふつう」のパーティションに焦点を当てていますが、LVMが好ましい場合は、それがサポートされていることを知っておいて損はないでしょう。詳細は LVM の記事をご覧ください。興味を持たれた方へ: 本ガイドはLVMをサポートしていないことにご注意ください。

デフォルトのパーティション構成

これよりこのハンドブックでは、ふたつの場合を考察し説明します: 1) GPT パーティションテーブルと UEFI ブートと、2) MBR パーティションテーブルとレガシー BIOS ブートです。それ以外の組み合わせも可能ではありますが、このマニュアルの対応範囲からは外れます。上述の通り、現代的なハードウェアに対するインストールは GPT パーティションテーブルと UEFI ブートを使用するべきで、このルールに対する例外として、MBR と BIOSブートが仮想化された (クラウドの) 環境でいまだによく使用されています。

シンプルな例として以下のパーティション構造を使います。

パーティション ファイルシステム サイズ 説明
/dev/sda1 fat32 (UEFI) または ext2 (BIOS) 256M ブート/EFIシステムパーティション
/dev/sda2 (swap) RAM サイズ * 2 スワップパーティション
/dev/sda3 ext4 残りのディスク ルートパーティション

もしこの情報だけで十分なほど熟練した読者は、実際のパーティション作成に進んで構いません。

fdiskparted は共にパーティショニングのためのユーティリティです。fdisk は有名で、安定した、MBR パーティションレイアウトのために推奨されるツールです。parted は GPT パーティションをサポートした、最初期の Linux ブロックデバイスの管理ツールの一つで、代替の選択肢を提供します。ここでは、より優れたテキストベースのユーザーインターフェースを持つ fdisk を使用します。

パーティションの生成方法に進む前に、以降の数セッションでパーティション構造がどのように生成されるのかについて、その詳細を述べ、いくつかの共通した落とし穴について触れておきます。

パーティション構成の設計

パーティション数とサイズ

ディスクのパーティションレイアウトの設計は、システムに対する要求と、デバイスに適用されるファイルシステムに大きく依存します。多数のユーザがいる場合、セキュリティを向上し、バックアップの作成とその他のメンテナンスを容易にするために、/home を分離されたパーティションに配置することが推奨されます。もし メールサーバとして動作する場合は、/var を分離されたパーティションとし、すべてのメールを /var ディレクトリに保存すべきでしょう。ゲームサーバでは、ほとんどのゲームサーバソフトウェアは /opt にインストールされるので、/opt を分離されたパーティションとすることができます。これらが推奨される理由は最初の /home ディレクトリと同様で、セキュリティ、バックアップ、そしてメンテナンスです。

Gentoo では多くの場合、/usr/var は相対的に大きい容量を確保すべきです。/usr にはシステム上で利用可能なアプリケーションの大部分と、Linux カーネルソース (/usr/src 配下) が配置されます。デフォルトでは、/var には Gentoo ebuild リポジトリが (/var/db/repos/gentoo 配下に) 配置され、ファイルシステム依存ではあるものの通常 650 MiB ほどのディスク容量を消費します。この推定容量には /var/cache/distfiles/var/cache/binpkgs ディレクトリは含まれていません。これらはそれぞれ、ソースファイルとバイナリパッケージ (使用している場合) を格納するディレクトリで、システムに追加すればするほど大きくなっていきます。

適切なパーティションの数とサイズは、システムを取り巻く環境と、トレードオフを考慮することで大きく変わります。パーティションやボリュームを分離することには下記の利点があります:

  • それぞれのパーティションまたはボリュームに対して、最も性能が高いファイルシステムを選択できます
  • ゾンビプロセスがパーティションまたはボリュームに継続的に書き込みをした場合でも、システム全体の空き領域を使い切ることはありません
  • 必要ならば、複数のチェックを並行して実行することで、ファイルシステムチェックの時間を短縮できます (複数のパーティションよりも複数のディスクの方が効果を実感できます)
  • リードのみ、nosuid(setuidビット無効)、noexec(実行ビット無効)等のマウントオプションによって、セキュリティが向上します


しかし、複数パーティションにはデメリットもあります:

  • もし適切に設定されていないと、あるパーティションが空き領域をたくさん持ち、別のパーティションにはまったく空き領域がなくなるといったことが起こり得ます。
  • /usr/ を独立したパーティションにすると、他のブートスクリプトが動作する前にパーティションをマウントするために、initramfs を使ってブートする必要があるかもしれません。initramfs の生成と保守はこのハンドブックのスコープの範囲外ですので、慣れていない方が /usr を独立したパーティションとすることは推奨しません。
  • SCSI や SATA では仕様上の制約により、GPT ラベルを使用しない限りは 15 個までしかパーティションを作れません。
Note
Systemd を使うつもりであれば、/usr/ はルートファイルシステムの一部とするか、または initramfs によりマウントされるようにして、ブート時に利用可能でなくてはなりません。

スワップ領域について

スワップ領域のサイズについて完璧な値というものはありません。スワップ領域の目的は、メインメモリ(RAM)が逼迫した際、カーネルにディスク領域を提供するためにあります。スワップ領域があれば、カーネルは最近最も使われていないメモリページをディスクに書き出し(スワップもしくはページアウト)、現在のタスクのために RAM 上に置かれたメモリを開放します。もちろん、もしディスクにスワップされたページが急に必要になった場合は、これらのページはメモリに戻す(ページイン)必要があります。これには、RAM から読み込むより相当長い時間がかかります(メインメモリと比較してディスクはとても遅いためです)。

システムがメモリを大量に消費するアプリケーションを実行しないとき、またシステムが多くの RAM を持っているときは、それほど大きいスワップ領域は必要ではありません。しかし、ハイバネーションの際に、スワップ領域はメモリの内容すべてを保存するために使われる(サーバシステムよりも、デスクトップやラップトップシステムでよくあることです)ことに留意してください。システムにハイバネーションのサポートが必要な場合は、メモリの全体量以上のサイズのスワップ領域が必要です。

一般的なルールとして、スワップ領域のサイズは内部メモリ (RAM) の 2 倍であることが推奨されます。複数のハードディスクを備えるシステムでは、並列して読み込み/書き込み操作が行えるように、それぞれのディスクに 1 つずつスワップパーティションを作成するのが賢い方法です。スワップ空間内のデータにアクセスしなくてはならないときに、ディスクがより高速にスワップできるほど、システムもより高速に動作するでしょう。回転式ディスクとソリッドステートディスクを比較すると、SSD 上にスワップを置いたほうが高いパフォーマンスが発揮できます。また、スワップパーティションの代わりにスワップファイルを使用することもできます。これは主にディスク容量が非常に限られたシステムで興味深いものです。


EFI システムパーティション (ESP) とは

オペレーティングシステムを起動するのに (BIOS ではなく) UEFI を使うシステムに Gentoo をインストールするときは、EFI システムパーティションを作成することが重要です。この手順については後述の説明でも述べます。BIOS/Legacy モードで起動する場合には、EFI システムパーティションは不要です。

ESP は FAT 系列のファイルシステム (Linux システムでは vfat と表示することもあります) である必要があります。UEFI specification では、UEFI ファームウェアは FAT12、16、32 を認識すると書かれている一方で、ESP には FAT32 を推奨しています。パーティションを作成したら、ESP をフォーマットしてください:

root #mkfs.fat -F 32 /dev/sda1
重要
ESP が FAT 系列のファイルシステムでフォーマットされていないと、UEFI ファームウェアはブートローダー (か Linux カーネル) を見つけられず、おそらくシステムをブートすることができません!


BIOS ブートパーティションとは

BIOS ブートパーティションは、GPT パーティションレイアウトを BIOS/Legacy モードで GRUB2 と組み合わせる場合にのみ必要になります。EFI/UEFI モードで起動する場合や、MBR テーブルを使用する場合には不要です。これはとても小さい (1 - 2 MB) パーティションで、GRUB2 などのブートローダが、与えられた領域に収まらないようなデータを置くためのパーティションです。このガイドでは使用しません。


UEFI 向けに GPT でディスクをパーティショニングする

以降の部分では、fdisk を使って、例示したパーティションレイアウトを GPT / UEFI ブートでのインストール用に作成する方法を説明します。パーティションレイアウトの例は先にも示した通りです:

パーティション 説明
/dev/sda1 EFI システム (かつブート) パーティション
/dev/sda2 スワップパーティション
/dev/sda3 ルートパーティション

パーティションレイアウトはお好みで変更してください。

現在のパーティションレイアウトを表示する

fdiskは、ディスクをパーティション分割するためのポピュラーでパワフルなツールです。ディスク(我々の例では/dev/sda)に対してfdiskを起動しましょう。

root #fdisk /dev/sda

pキーを使えば、現在のディスクのパーティション構成を表示できます。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA
 
Device        Start      End  Sectors  Size Type
/dev/sda1      2048   526335   524288  256M EFI System
/dev/sda2    526336  2623487  2097152    1G Linux swap
/dev/sda3   2623488 19400703 16777216    8G Linux filesystem
/dev/sda4  19400704 60549086 41148383 19.6G Linux filesystem

このディスクは 2 つの Linux ファイルシステム ("Linux" と書かれているパーティションに対応します) と 1 つの swap パーティション ("Linux swap" と書かれているパーティション) で構成されているようです。

新しいディスクラベルを作成する / すべてのパーティションを削除する

新しい GPT ディスクラベルを作成するには、g を入力してください。この操作は既存のパーティションをすべて削除します。

Command (m for help):g
Created a new GPT disklabel (GUID: 87EA4497-2722-DF43-A954-368E46AE5C5F).

GPT ディスクラベルがすでに存在する (上の p の出力を確認してください) 場合は、代わりに既存のパーティションをひとつずつ削除することを検討してください。パーティションを削除するには d と入力します。例えば /dev/sda1 を削除するにはこのようにします:

Command (m for help):d
Partition number (1-4): 1

これで指定したパーティションの削除が予約されました。パーティションの一覧 (p) にはもう現れませんが、変更を保存するまで実際の消去は行われないので、間違えて操作してしまった場合は中止することができます。すぐに q を入力して Enter を押せば、パーティションは削除されません。

p でパーティションの一覧を表示して d とパーティション番号を入力する、という作業を繰り返すと、パーティションテーブルは空っぽになります。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F

さて、メモリ内のパーティションテーブルが空になり、パーティションを作る準備ができました。

EFI システムパーティション (ESP) を作成する

まずは、/boot としてマウントされることになる小さな EFI システムパーティションを作成します。新規パーティションを作るので n を入力し、1 で最初の基本パーティションを選択しましょう。開始セクタについて聞かれたら、2048 (ブートローダーのために必要になるかもしれません) になっていることを確認して Enter を押しましょう。終了セクタの指定では、256 MB のパーティションを作るので +256M と入力します:

Command (m for help):n
Partition number (1-128, default 1): 1
First sector (2048-60549086, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549086, default 60549086): +256M
 
Created a new partition 1 of type 'Linux filesystem' and of size 256 MiB.

パーティションを EFI システムパーティションとしてマークしてください:

Command (m for help):t
Selected partition 1
Partition type (type L to list all types): 1
Changed type of partition 'Linux filesystem' to 'EFI System'.

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

次に、スワップパーティションを作成したいので、新規パーティション作成の n を入力し、2 で 2 番目のパーティション、/dev/sda2 を選択しましょう。開始セクタの指定ではそのまま Enter を押します。終了セクタの指定では、4GB のパーティションを作るので +4G (もしくはお好みのswap領域のサイズ) と入力します。

Command (m for help):n
Partition number (2-128, default 2): 
First sector (526336-60549086, default 526336): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549086, default 60549086): +4G
 
Created a new partition 2 of type 'Linux filesystem' and of size 4 GiB.

ここまでできたら、パーティションタイプを設定するために t と入力し、今作成したパーティション 2 を選択、そしてパーティションタイプ "Linux Swap" を意味する 19 を入力します。

Command (m for help):t
Partition number (1,2, default 2): 2
Partition type (type L to list all types): 19
 
Changed type of partition 'Linux filesystem' to 'Linux swap'.

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

最後に、ルートパーティションを作成します。n で新規パーティション作成、3番目のパーティション、/dev/sda3 を作成するために 3 を入力、最初のセクタはそのまま Enter を押します。最後のセクタを聞かれたら、ディスクの空き領域全てをこのパーティションに割り当てたいのでそのまま Enter を押しましょう。これが終わったら、 p で次のようなパーティションテーブルが表示されるはずです:

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F
 
Device       Start      End  Sectors  Size Type
/dev/sda1     2048   526335   524288  256M EFI System
/dev/sda2   526336  8914943  8388608    4G Linux swap
/dev/sda3  8914944 60549086 51634143 24.6G Linux filesystem

パーティションのレイアウトを保存する

このパーティションレイアウトを保存して fdisk を終了するために、w を入力します。

Command (m for help):w

パーティションが作成できたら、今度はそこにファイルシステムを置きます。

BIOS / legacy ブート向けに MBR でディスクをパーティショニングする

以降の部分では、例示したパーティションレイアウトを MBR / BIOS レガシーブートでのインストール用に作成する方法を説明します。先にも示したパーティションレイアウトの例は、こちらでは次のようになります:

パーティション 説明
/dev/sda1 ブートパーティション
/dev/sda2 スワップパーティション
/dev/sda3 ルートパーティション

パーティションレイアウトはお好みで変更してください。

現在のパーティションレイアウトを表示する

ディスク(我々の例では/dev/sda)に対してfdiskを起動しましょう。

root #fdisk /dev/sda

pキーを使えば、現在のディスクのパーティション構成を表示できます。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA
 
Device        Start      End  Sectors  Size Type
/dev/sda1      2048   526335   524288  256M EFI System
/dev/sda2    526336  2623487  2097152    1G Linux swap
/dev/sda3   2623488 19400703 16777216    8G Linux filesystem
/dev/sda4  19400704 60549086 41148383 19.6G Linux filesystem

このディスクは現時点まで、GPT テーブルを使用して、2 つの Linux ファイルシステム ("Linux" と書かれているパーティションに対応します) と 1 つの swap パーティション ("Linux swap" と書かれているパーティション) で構成されているようです。

新しいディスクラベルを作成する / すべてのパーティションを削除する

新しい MBR ディスクラベル (ここでは DOS ディスクラベルとも呼ばれています) を作成するには、o を入力してください。この操作は既存のパーティションをすべて削除します。

Command (m for help):o
Created a new DOS disklabel with disk identifier 0xe04e67c4.
The device contains 'gpt' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.

DOS ディスクラベルがすでに存在する (上の p の出力を確認してください) 場合は、代わりに既存のパーティションをひとつずつ削除することを検討してください。パーティションを削除するには d と入力します。例えば /dev/sda1 を削除するにはこのようにします:

Command (m for help):d
Partition number (1-4): 1

これで指定したパーティションの削除が予約されました。パーティションの一覧 (p) にはもう現れませんが、変更を保存するまで実際の消去は行われないので、間違えて操作してしまった場合は中止することができます。すぐに q を入力して Enter を押せば、パーティションは削除されません。

p でパーティションの一覧を表示して d とパーティション番号を入力する、という作業を繰り返すと、パーティションテーブルは空っぽになります。

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe04e67c4

これでパーティションを作る準備ができました。

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

まずは、/boot としてマウントされることになる小さなパーティションを作成します。新規パーティションを作るので n を入力し、p で基本パーティションを選択、1 で最初の基本パーティションを選択しましょう。開始セクタについて聞かれたら、2048 (ブートローダーのために必要になるかもしれません) になっていることを確認して Enter を押しましょう。終了セクタの指定では、256 MB のパーティションを作るので +256M と入力します:

Command (m for help):n
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-60549119, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549119, default 60549119): +256M
 
Created a new partition 1 of type 'Linux' and of size 256 MiB.

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

次に、スワップパーティションを作成したいので、新規パーティション作成の n を入力し、p で基本パーティションを選択し、 2 で2番目の基本パーティション、/dev/sda2 を選択しましょう。開始セクタの指定ではそのまま Enter を押します。終了セクタの指定では、4GB のパーティションを作るので +4G (もしくはお好みのswap領域のサイズ) と入力します。

Command (m for help):n
Partition type
   p   primary (1 primary, 0 extended, 3 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2): 2
First sector (526336-60549119, default 526336): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549119, default 60549119): +4G
 
Created a new partition 2 of type 'Linux' and of size 4 GiB.

ここまでできたら、パーティションタイプを設定するために t と入力し、今作成したパーティション 2 を選択、そしてパーティションタイプ "Linux Swap" を意味する 82 を入力します。

Command (m for help):t
Partition number (1,2, default 2): 2
Hex code (type L to list all codes): 82

Changed type of partition 'Linux' to 'Linux swap / Solaris'.

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

最後に、ルートパーティションを作成します。n で新規パーティション作成、3番目の基本パーティション、/dev/sda3 を作成するために p3 を入力、最初のセクタはそのまま Enter を押します。最後のセクタを聞かれたら、ディスクの空き領域全てをこのパーティションに割り当てたいのでそのまま Enter を押しましょう。これが終わったら、 p で次のようなパーティションテーブルが表示されるはずです:

Command (m for help):p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors
Disk model: DataTraveler 2.0
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0xe04e67c4
 
Device     Boot   Start      End  Sectors  Size Id Type
/dev/sda1          2048   526335   524288  256M 83 Linux
/dev/sda2        526336  8914943  8388608    4G 82 Linux swap / Solaris
/dev/sda3       8914944 60549119 51634176 24.6G 83 Linux

パーティションのレイアウトを保存する

このパーティションレイアウトを保存して fdisk を終了するために、w を入力します。

Command (m for help):w

それでは、パーティション上にファイルシステムを作成していきましょう。


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

はじめに

パーティションが作成できたら、その上にファイルシステムを作成します。次の節ではLinuxがサポートする各種ファイルシステムを紹介します。どのファイルシステムを使うかをすでに決めているなら、パーティションにファイルシステムを適用するへ進みましょう。そうでなければ、次の節を読んで利用可能なファイルシステムについて知るのがよいでしょう。

ファイルシステム

Linux は多くのファイルシステムをサポートしていますが、それらの多くは特定の目的をもって配備するのが賢明なものです。特定のファイルシステムのみが amd64 アーキテクチャ上で安定して動作するとされています - 重要なパーティションに実験的なファイルシステムを選択するときは、事前にファイルシステムのサポート状況を十分に知っておくことを推奨します。ext4 はすべてのプラットフォームですべての目的で推奨されるファイルシステムです。

btrfs
スナップショット、チェックサムによる自己修復、透過的圧縮、サブボリューム、RAIDの統合など、多くの先進機能を提供する次世代のファイルシステムです。いくつかのディストリビューションはこれをすぐに使えるオプションとして提供し始めていますが、未だ製品に使える状態ではありません。ファイルシステムが壊れたという報告はよくあります。開発者はユーザーに、安全のため最新のカーネルバージョンを使うようしきりに促しています。古いカーネルには既知の問題があるからです。この状況は何年も続いており、事態が変わってきたと判断するには早すぎます。問題への修正が古いカーネルにバックポートされることは滅多にありません。このファイルシステムを使う際は十分注意を払うようにしてください。
ext2
試練を受けた本当のLinuxファイルシステムですが、メタデータジャーナリングがないため、起動時に行われる毎回のext2ファイルシステムチェックは時間のかかるものになります。今ではジャーナルの効く新世代の、整合性を非常に素早くチェックできるファイルシステムの選択肢が数多くありますから、一般的にはそちらのほうが、ジャーナルの効かない対抗馬より好まれます。ジャーナルの効くファイルシステムは、システム起動の際たまたまファイルシステムに不整合があった場合の長い遅延を防いでくれます。
ext3
ジャーナルが有効になった ext2 ファイルシステムであり、full data及びordered dataジャーナリングといった強力なジャーナリングモードに加え、高速な修復のためのメタデータジャーナリングをサポートします。HTreeインデックスによって、ほぼすべての状況で高いパフォーマンスが可能になります。簡単にいえば、ext3 はとても優れた信頼できるファイルシステムです。
ext4
もともと ext3 のフォークとして作られた ext4 は、新機能、パフォーマンスの向上と、ディスク上でのフォーマットの適度な変更による、サイズ制限の撤廃を提供します。ボリュームは1EBまで広げることができ、最大のファイルサイズは16TBです。古典的なext2/3のbitmap block割当ての代わりに、ext4 はextentを使い、大きなファイルでのパフォーマンスを向上し、断片化を減らしています。ext4は他にもより洗練されたアロケーションアルゴリズム(遅延割当てと複数ブロック割当て)を提供し、ファイルシステムドライバーに、ディスク上のデータのレイアウトを最適化するより多くの方法を与えています。ext4 は推奨される、全目的、全プラットフォームのファイルシステムです。
f2fs
Flash-Friendly File Systemはもともと、SamsungによってNANDフラッシュメモリで利用するために作られました。2016年Q2現在、このファイルシステムはまだ未熟なものと思われますが、GentooをmicroSDカードやUSBスティックや他のフラッシュベースの記憶装置にインストールする際にはすばらしい選択でしょう。
JFS
IBMの高パフォーマンスジャーナリングファイルシステムです。JFSは軽量、高速かつ信頼できる、B+木ベースのファイルシステムで、様々な条件で良いパフォーマンスが出ます。
ReiserFS
B+木ベースのジャーナルが有効なファイルシステムで、全体的に良いパフォーマンスが出ます。特に、大量の小さなファイルを扱う際は、CPUサイクルを多く消費するものの、高いパフォーマンスを得ることができます。ReiserFSは他のファイルシステムと比べるとあまり保守されていないように思われます。
XFS
メタデータジャーナリングのあるファイルシステムで、堅牢な機能セットを持ち、スケーラビリティに最適化されています。XFSはどうやら、様々なハードウェアの問題に対してはあまり寛大ではないようです。
vfat
別名FAT32。Linuxでサポートされていますが、いかなるパーミッションの設定もサポートされていません。ほとんど、他のOS(主にMicrosoft Windows)との相互運用性のために使われていますが、いくつかのシステムファームウェア(たとえばUEFI)でも必要になります。
NTFS
この "New Technology" ファイルシステムは、Microsoft Windowsのフラッグシップファイルシステムです。上記のvfatと同様、BSDやLinuxが正しく動作するために必要なパーミッション設定や拡張属性を保持しないため、ルートファイルシステムとして使うことはできません。Microsoft Windowsとの相互運用のためにのみ使うべきです(「のみ」の強調に注意してください)。

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

パーティションまたはボリュームの上にファイルシステムを作成するには、ファイルシステムごとに異なるユーザースペースのユーティリティが利用可能です。下表でファイルシステムの名前をクリックすると、それぞれに追加の情報が得られます:

ファイルシステム 作成コマンド Minimal CD にある? パッケージ
btrfs mkfs.btrfs はい sys-fs/btrfs-progs
ext2 mkfs.ext2 はい sys-fs/e2fsprogs
ext3 mkfs.ext3 はい sys-fs/e2fsprogs
ext4 mkfs.ext4 はい sys-fs/e2fsprogs
f2fs mkfs.f2fs はい sys-fs/f2fs-tools
jfs mkfs.jfs はい sys-fs/jfsutils
reiserfs mkfs.reiserfs はい sys-fs/reiserfsprogs
xfs mkfs.xfs はい sys-fs/xfsprogs
vfat mkfs.vfat はい sys-fs/dosfstools
NTFS mkfs.ntfs はい sys-fs/ntfs3g

例えば、パーティション構造例の通りに、EFI システムパーティション(/dev/sda1)を FAT32 として、ルートパーティション(/dev/sda3)を ext4 として設定するには、次のコマンドが使えます:

root #mkfs.vfat -F 32 /dev/sda1
root #mkfs.ext4 /dev/sda3

ext2、ext3、ext4 を(8 GiB 未満の)小さいパーティションに使用するときは、十分な inode 数を確保できるように適切なオプションを指定してファイルシステムを作成する必要があります。これは、各ファイルシステム毎に、以下のコマンドのうちのひとつを使用することで行えます:

root #mkfs.ext2 -T small /dev/<device>
root #mkfs.ext3 -T small /dev/<device>
root #mkfs.ext4 -T small /dev/<device>

上のコマンドは通常では、「inodeあたりのバイト数」を16kBから4kBに減らすので、ファイルシステムに4倍のinode数を確保できます。

それでは、新しく作成したパーティション(または論理ボリューム)にファイルシステムを作成しましょう。

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

mkswapはスワップパーティションを初期化するために使われるコマンドです:

root #mkswap /dev/sda2

スワップパーティションを有効化するには、swaponを使います:

root #swapon /dev/sda2

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

ルートパーティションのマウント

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

root #mount /dev/sda3 /mnt/gentoo
Note
もし/tmp/を別のパーティションに置く必要があるなら、マウントしたあと権限の変更を忘れずに行ってください:
root #chmod 1777 /mnt/gentoo/tmp
/var/tmpについても同様です。

このあと解説の中で、proc ファイルシステム(仮想的なカーネルとのインターフェース)が、他のカーネル擬似ファイルシステムと同様にマウントされますが、まず最初は、Gentooインストールファイルをインストールします。





stage tarballをインストールする

日時を設定する

Gentoo をインストールする前に、日付と時刻が正しく設定されていることを確認するといいでしょう。時刻が正しく設定されていないと、おかしな結果を導くかもしれません。例えば、ベースシステムのファイルは、タイムスタンプを正確に保ったまま展開されるべきです。実際、いくつかのウェブサイトやウェブサービスでは暗号化された通信(SSL/TLS)を利用しているため、システム時刻があまりにもずれていると、インストール用ファイルをまったくダウンロードできないということもありえます!

date コマンドを実行して、現在の日付と時刻が正しいか確認してください。

root #date
Mon Oct  3 13:16:22 PDT 2016

表示された日時が間違っていたら、以下に示す方法に従って、自動または手動で更新してください。

Note
リアルタイムクロック(RTC)を搭載していないマザーボードでは、自動的にシステム時刻を時刻サーバと同期するように設定するべきでしょう。これはRTCを搭載しているけれど、バッテリーがだめになってしまったシステムについてもいえます。

自動

公式 Gentoo インストールメディアには、ntpd コマンド(net-misc/ntp パッケージを通して利用可能です)が含まれています。公式メディアには、 ntp.org 時刻サーバを指定した設定ファイルも含まれています。これによって、時刻サーバを利用して、システム時刻を UTC 時刻と自動で同期することができます。この方法はネットワーク設定を必要とし、アーキテクチャによっては利用できないかもしれません。

Warning
自動時刻同期によって犠牲になるものもあります。例えば、システムのIPアドレスや、関連するネットワークの情報が、時刻サーバ(下の例では ntp.org)に明らかにされます。プライバシーが心配なユーザーは、下記の方法でシステム時刻を設定する前に、このことを理解しておくべきです。
root #ntpd -q -g

手動

date コマンドはシステム時刻を手動設定するのにも使えます。MMDDhhmmYYYY(月(MM)、日(DD)、時(hh)、分(mm)、年(YYYY))という形式で日時を更新してください。

すべての Linux システムでは UTC で時刻を設定することが推奨されます。タイムゾーンはインストール中にあとで設定します。タイムゾーンを設定すると、時刻の表示がローカル時刻に切り替わります。

例えば、2016年の10月3日 13時16分に設定するには以下のようにします。

root #date 100313162016

stage tarballを選択する

multilib (32ビットと64ビット)

ベースとなるtarballを適切に選ぶことで、この後に続くインストールプロセスの相当な時間を短縮できます。特に適切なプロファイルを選ぶで効果があります。ステージtarballの選択はこの後のシステム設定に直接影響し、頭痛の種もしくはtwo later on down the lineを減らします。multilib tarballは64ビットのライブラリを使えるときはそれを使用し、互換性を必要とする場合は32ビットのライブラリを使用します。これはインストールされるほとんどのソフトにとってすばらしい選択肢となります。プロファイルを簡単に変更できるシステムが必要な場合は、そのプロセッサアーキテクチャにあったmultilib tarballをダウンロードしなければなりません。

大部分のユーザは、'advanced'なtar ballを選択すべきではありません。これらは特定のソフトウェアもしくはハードウェアのみに必要です。

非multilib (64ビットのみ)

システムのベースとして非multilibのtarballを選択することで、完全な64ビット環境を構築できます。これは事実上、multilibプロファイルへの変更を(可能ではありますが)困難にします。非mutilibを必要とする明確な理由がなく、単にGentooを使いたいというケースでは、非multilibを選択すべきではありません。

警告
非multilibからmutilibシステムへの変更は、Gentooの深い知識と低レベルのツールチェーンが必要だということを忘れないでください(これはおそらく私たちのToolchain developersを身震いさせるでしょう)。これは気の弱い人への警告ではなく、このガイドの範囲外になるということです。

OpenRC

OpenRC は依存関係に基づく init システム (カーネルが起動した後にシステムサービスを開始するためのシステム) で、通常は /sbin/init にある、システムが提供する init プログラムとの互換性を保っています。Gentoo に由来するオリジナルの init システムですが、他の一部の Linux ディストリビューションや BSD システムでも採用されています。

OpenRC はデフォルトでは /sbin/init ファイルの代替としては機能せず、Gentoo の init スクリプトとは完全な互換性があります。つまり、Gentoo ebuild リポジトリにはデーモンを起動するソリューションがあるということです。

純粋に歴史的理由から、本マニュアルでは OpenRC を使ったインストールと構成設定にのみ着目します。Systemd インストールを説明するための書き換え、改良 (下記参照) も計画されています。

systemd

systemd は SysV スタイルの init と rc の、Linux システム向けの現代的な代替です。今や Linux ディストリビューションの大多数で使用されています。systemd は Gentoo でサポートされており、問題なく機能し、広範に渡って調節することができます。残念なことに、関連するインストールハンドブックのセクションは広範囲に渡り、書き換えがまだ行われていないか、現在作業中です。

Note
Gentoo がインストールされたシステムを OpenRC から systemd に、あるいはその逆に変更することも可能です。しかし、これには多大な労力が必要で、インストールマニュアルの範囲外です。インストール後の利用目的に応じて、正しい stage tarball を選択してください。

stage tarball をダウンロードする

ルートファイルシステムがマウントされている場所、Gentooのマウントポイント(おそらく/mnt/gentoo)に移動してください。

root #cd /mnt/gentoo

インストールメディアを使ってstage tarballをダウンロードするのに必要なたった1つのツールが、ウェブブラウザです。

グラフィカルブラウザ

完全なグラフィカルウェブブラウザがある環境を使っているひとには、stageファイルのURLをメインウェブサイトのダウンロードセクションからコピーするのに何の問題も無いでしょう。単純に適切なタブを選択して、stageファイルへのリンクを右クリックして、Copy Linkしてクリップボードにリンクをコピーして、コマンドライン上でwgetユーティリティにリンクをペーストして、stage tarballをダウンロードします。

root #wget <PASTED_STAGE_URL>

コマンドラインブラウザ

伝統的な読者や'古参'のGentooユーザで、コマンドラインのみで作業をする人たちは、グラフィカル環境を必要としないメニュー形式のブラウザであるlinksを使うほうを好むかもしれません。stageをダウンロードするために、Gentooミラーリストに飛んでください。

root #links https://www.gentoo.org/downloads/mirrors/

linksでHTTPプロキシを使うには、-http-proxyオプションにプロキシのURLを渡してください。

root #links -http-proxy proxy.server.com:8080 https://www.gentoo.org/downloads/mirrors/

linksに似たlynxというブラウザもあります。linksと同じくグラフィカル環境を必要としませんが、メニューはありません。

root #lynx https://www.gentoo.org/downloads/mirrors/

プロキシを定義する必要があるならば、http_proxyftp_proxy変数をexportしてください。

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

ミラーリストから、近くのミラーを選んでください。通常はHTTPミラーで十分ですが、他のプロトコルも使えます。releases/amd64/autobuilds/ ディレクトリに移動してください。入手可能なすべてのstageファイルが列挙されています。ファイルは、サブアーキテクチャにちなんだ名前のサブティレクトリの中にあることもあります。ファイルを選び、dを押してダウンロードしてください。

stageファイルのダウンロードが完了したら、整合性を検証してstage tarballのコンテンツが正当か確認することができます。興味のあるひとは次節へ進んでください。

stageファイルの検証と確認に興味が無いひとは、qを押すことでコマンドラインブラウザを終了して、stage tarball を展開する節へすぐに進むことができます。

検証して確認する

Note
一部の tarball は xz 圧縮で提供されています。.tar.xz で終わる tarball をダウンロードした場合は、以下のコマンドに出現する tarball ファイル名の .tar.bz2 を適宜修正してください。

MinimalインストールCDのときと同じく、stageファイルを検証して確認するためのファイルもダウンロードすることができます。これらの手順は飛ばしてもかまいませんが、ダウンロードしたファイルの妥当性を気にするユーザのためにこれらのファイルが提供されています。

  • stage tarball内のファイル一覧を含む.CONTENTSファイル。
  • stage ファイルの各種アルゴリズムでのチェックサムを含む.DIGESTSファイル。
  • .DIGESTSと同様にstageファイルの各種アルゴリズムでのチェックサムを含み、それがGentooプロジェクトから提供されたものであることを保証するために電子署名された.DIGESTS.ascファイル。

opensslを使って、その出力を.DIGESTS.DIGESTS.ascファイルに含まれるチェックサムと比較してください。

例えば、SHA512チェックサムを検証するには以下を入力します。

root #openssl dgst -r -sha512 stage3-amd64-<release>.tar.?(bz2|xz)

sha512sumコマンドを使う方法もあります。

root #sha512sum stage3-amd64-<release>.tar.?(bz2|xz)

Whirlpoolチェックサムを検証する場合は以下を入力します。

root #openssl dgst -r -whirlpool stage3-amd64-<release>.tar.?(bz2|xz)

これらのコマンドの出力を.DIGESTS(.asc)ファイルに記録されている値と比較してください。これらの値は合致している必要があります。合致していないのなら、ダウンロードしたファイルか、ダイジェストファイルが壊れているかもしれません。

ISOファイルと同様に、チェックサムが改竄されていないことを確認するために、gpgを使って.DIGESTS.ascファイルの電子署名を検証することもできます:

root #gpg --verify stage3-amd64-<release>.tar.?(bz2|xz){.DIGESTS.asc,}

リリースメディアに署名するのに使用された OpenPGP 鍵のフィンガープリントは、Gentoo ウェブサーバのリリースメディアの署名ページで確認できます。

stage tarball を展開する

ここで、ダウンロードしたstageを解凍しましょう。tarを使います。

root #tar xpvf stage3-*.tar.xz --xattrs-include='*.*' --numeric-owner

同じオプション(xpf--xattrs-include='*.*')が使われていることに留意してください。xは展開(extract)を示し、pはパーミッションを保持(preserve)すること、fは処理対象が標準入力ではなくファイル(file)であることを示しています。--xattrs-include='*.*'は、アーカイブに保存されている拡張属性をすべての名前空間について保持し含めることを示しています。最後の--numeric-ownerは、たとえ冒険的なユーザが公式Gentooインストールメディアを使わずに作業をしている場合であっても、tarballから展開されるファイルのユーザIDとグループIDがGentooリリースエンジニアリングチームの意図通りに保たれることを、確実にするためのものです。

これでステージファイルは展開されました。この続きはコンパイルオプションを設定するで。

コンパイルオプションを設定する

はじめに

Gentooを最適化するために、Portage(Gentooの公式なパッケージマネージャ)の挙動に影響するいくつかの変数を設定できます。これらの変数はすべて環境変数として(exportを使って)設定できますが、この場合は永続的なものではありません。設定を保存するために、Portageは設定ファイルとして/etc/portage/make.confを読み込みます。

注意
/mnt/gentoo/usr/share/portage/config/make.conf.exampleに、すべての利用可能な変数のリストが、コメント付きで記載されています。Gentooのインストールを成功させるためには、以降で示す変数だけは設定する必要があります。

これから詳しく見ていく最適化変数を設定するために、エディタ(このガイドではnanoを使います)を起動してください。

root #nano -w /mnt/gentoo/etc/portage/make.conf

make.conf.exampleファイルを読めば、記述形式は分かるでしょう。コメント行は"#"で始まり、他の行は「変数="内容"」の形式で変数を定義します。これらの変数のうちのいくつかについてこれから見ていきます。

CFLAGS と CXXFLAGS

CFLAGSCXXFLAGS変数はそれぞれ、GCC CコンパイラとC++コンパイラのための最適化フラグを定義します。この2つの変数は通常ここで定義されますが、真に最高のパフォーマンスを発揮するためには、このフラグはプログラム毎に別々に設定する必要があるでしょう。すべてのプログラムは異なるからです。しかし、それでは管理が大変なので、make.confファイルでこれらのフラグを定義します。

make.confでは、一般にシステムの応答が速くなるように最適化フラグを設定するべきです。この変数に実験的な設定を書かないでください。過剰な最適化はプログラムの挙動をおかしくすることがあり、クラッシュや誤動作の元となります。

ここではすべての最適化オプションを説明することはしません。すべてを理解するためには、GNUオンラインマニュアルやGCC infoページ(info gcc - Linuxシステムでのみ使えます)を読んでください。make.conf.exampleファイルにはたくさんの設定例と情報が含まれているので、これを読むこともお忘れなく。

最初の設定は-march=または-mtune=フラグです。これはターゲットアーキテクチャの名前を指定します。可能な選択肢はmake.conf.exampleファイル内にコメントとして書かれています。nativeを指定すると、コンパイラは(Gentooをインストールしようとしている)現在のシステムのアーキテクチャをターゲットとして選択してくれるので、よく使われます。

ふたつめの設定は-Oフラグ(ゼロではなく大文字のオー)です。これはgcc最適化クラスフラグを指定します。可能なクラスは、s(サイズ最適化)、0(ゼロ、最適化無し)、1、2、3(速度最適化)です。速度最適化については、各クラスは1段階前のクラスが持つものと同じフラグに加えて、追加のフラグを持ちます。-O2は推奨されるデフォルト設定です。-O3をシステム全体で使うと問題を起こすことが知られているので、-O2にとどめることをおすすめします。

他によく使われる最適化フラグには-pipeがあります。これは、コンパイルステージ間での連絡方法として、一時ファイルではなくパイプを使うよう指定します。生成されるコードには影響しませんが、より多くのメモリを使うようになります。メモリの少ないシステムでは、gccが強制終了するかもしれません。そのような場合には、このフラグは使わないでください。

-fomit-frame-pointerを使うと、必要の無い場合にはフレームポインタをレジスタに保持しなくなります。これはアプリケーションのデバッグ時に深刻な影響を与えるかもしれません。

CFLAGSCXXFLAGS変数を定義するときには、最適化フラグは1つの文字列として結合してください。stage3アーカイブから解凍したデフォルト値で十分でしょう。以下に例を示します:

CODE CFLAGSCXXFLAGS変数の設定例
# すべての言語において設定するコンパイラフラグ
COMMON_FLAGS="-march=native -O2 -pipe"
# 同じ設定を両方の変数に使用
CFLAGS="${COMMON_FLAGS}"
CXXFLAGS="${COMMON_FLAGS}"
Tip
各種コンパイルオプションがどのようにシステムに影響するかについてはGCCの最適化の記事に詳しい情報がありますが、初心者がシステムの最適化を始めるにはSafe CFLAGSの記事のほうがもっと実践的な場所かもしれません。

MAKEOPTS

MAKEOPTS変数は、パッケージのインストール時にどれだけ並行してコンパルを走らせるかを定義します。CPU数(コア数)プラス1を選択するのがよい選択とされていますが、ガイドラインは常に最良とは限りません。

Warning
ジョブ数を大きくすると、メモリ使用量にきわめて大きな影響を及ぼします。目安は、指定したジョブ数の各ジョブに対し、最低 2 GiB の RAM が割り当てられるようにすることです (つまり、例えば -j6最低でも 12 GiB を要求します)。メモリが枯渇しないようにするには、利用可能なメモリ容量に合うようにジョブ数を減らしてください。
Tip
並列 emerge を使用する (--jobs) と、実効的なジョブ数が指数関数的に (make ジョブ数 × emerge ジョブ数まで) 増大することがあります。これに対しては、localhost-only distcc 構成によって、ホスト当たりのコンパイラインスタンス数を制限することで対処することができます。
CODE make.confのMAKEOPTSの設定例
MAKEOPTS="-j2"

よーい、ドン!

好みの設定に合わせて/mnt/gentoo/etc/portage/make.confを変更し、保存してください。nanoではCtrl+xで保存できます。

それではGentooベースシステムのインストールに進んでください。





chroot する

任意自由選択: ミラーサーバーを選択する

ファイルの配布

ソースコードを短時間でダウンロードするために、速いミラーを選択することをお薦めします。Portageはmake.confの中のGENTOO_MIRRORS変数に指定されたミラー群を使用します。Gentooのミラー一覧から、インストール対象のマシンから物理的に最も近い一つ、もしくは複数のミラーを選択することができます(これらは高い頻度で最も高速になり得ます)。しかし、Gentooはmirrorselectという良いツールを提供しています。このツールは必要なミラーを選択するためによいユーザーインターフェースを提供できます。単純に選択可能なミラーが表示され、Spacebarを押せば、一つもしくは複数のミラーを選択できます。

root #mirrorselect -i -o >> /mnt/gentoo/etc/portage/make.conf

Gentoo ebuild リポジトリ

ミラーを選択するために次に重要なステップは、/etc/portage/repos.conf/gentoo.confファイルでGentoo ebuildリポジトリを設定することです。このファイルはパッケージリポジトリを更新するときに必要になる同期情報を含んでいます(パッケージリポジトリは、Portageがソフトウェアパッケージをダウンロード、インストールする時に必要なすべての情報を含むebuildと関連ファイルを集めたものです)。

リポジトリの設定は単純な数ステップでできます。最初に(それが存在しなければ)repos.confディレクトリを作成します。

root #mkdir --parents /mnt/gentoo/etc/portage/repos.conf

次に、Portageが提供するGentooリポジトリ設定ファイルを(新規作成した)repos.confディレクトリにコピーします。

root #cp /mnt/gentoo/usr/share/portage/config/repos.conf /mnt/gentoo/etc/portage/repos.conf/gentoo.conf

エディタで覗き見するか、catコマンドを使いましょう。そのファイルは.iniフォーマットで、以下のような記述になっているはずです。

FILE /mnt/gentoo/etc/portage/repos.conf/gentoo.conf
[DEFAULT]
main-repo = gentoo
 
[gentoo]
location = /var/db/repos/gentoo
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
auto-sync = yes
sync-rsync-verify-jobs = 1
sync-rsync-verify-metamanifest = yes
sync-rsync-verify-max-age = 24
sync-openpgp-key-path = /usr/share/openpgp-keys/gentoo-release.asc
sync-openpgp-key-refresh-retry-count = 40
sync-openpgp-key-refresh-retry-overall-timeout = 1200
sync-openpgp-key-refresh-retry-delay-exp-base = 2
sync-openpgp-key-refresh-retry-delay-max = 60
sync-openpgp-key-refresh-retry-delay-mult = 4

上に記載されているデフォルトのsync-uri変数は、ローテーション可能なミラーの場所を決めています。これはGentooインフラストラクチャーの帯域にかかるストレスを軽減することに役立ち、また特定のミラーがオフラインになっている場合のバックアップとなります。よって、デフォルトのURIは、ローカルのプライベートPortageミラーを使わない限り、そのままにしておくことが推奨されます。

Tip
興味のある人は、PortageプロジェクトのSync articleにあるPlug-in sync APIが役に立つでしょう。

DNS 情報をコピーする

新しい環境に入る前に一つだけやるべきことが残っています。それは/etc/resolv.confに記載されているDNS情報をコピーすることです。これは新しい環境に入った後でネットワークを使うために必要です。/etc/resolv.confは、そのネットワークのネームサーバーの情報を含んでいます。

この情報をコピーするときは、cpコマンドに--dereferenceオプションを付与することを推奨します。これは/etc/resolv.confがシンボリックリンクのときに、シンボリックリンクをコピーするのではなく、シンボリックリンクのリンク先の実ファイルをコピーします。そうしないと新しい環境でシンボリックリンクが存在しないファイルを指し示すでしょう(新しい環境では、元の環境でリンク先に指定していたファイルはほぼ利用できません)。

root #cp --dereference /etc/resolv.conf /mnt/gentoo/etc/

必要なファイルシステムをマウントする

もう少しで、Linuxルートは新しい場所に変わります。新しい環境を適切に動作させるために、いくつかのファイルシステムを使えるようにしなければなりません。

使えるようにしなければならないファイルシステムは以下の通りです。

  • /proc/ はLinuxカーネルから情報を引き出すための擬似ファイルシステムです(一見通常ファイルに見えますが、ファイルとしての実体はありません)。
  • /sys//proc/同様、擬似ファイルシステムです。/proc/より構造化されており、一度は/proc/を置き換えることを目的としていました。
  • /dev/は通常のファイルシステムです。一部はLinuxのデバイス管理機構(通常はudev)により管理されており、すべてのデバイスファイルを含んでいます。
  • /run/ は一時ファイルシステムです。PID ファイルやロックなど、実行時に生成されるファイルのために使用されます。

/proc/は、/mnt/gentoo/proc/にマウントされるでしょう。他はbindマウントされます。後者は、例えば/mnt/gentoo/sys/は事実/sys/となります(同じファイルシステムへの2番目のエントリです)。ここで/mnt/gentoo/proc/はファイルシステムの新しいエントリ(インスタンスとも言えるでしょう)となります。

root #mount --types proc /proc /mnt/gentoo/proc
root #mount --rbind /sys /mnt/gentoo/sys
root #mount --make-rslave /mnt/gentoo/sys
root #mount --rbind /dev /mnt/gentoo/dev
root #mount --make-rslave /mnt/gentoo/dev
root #mount --bind /run /mnt/gentoo/run
root #mount --make-slave /mnt/gentoo/run
注意
インストールの後半で出てくるsystemdを使う場合、--make-rslaveが必要です。
Warning
Gentoo以外のインストールメディアを使う場合、これだけでは十分ではない場合があります。いくつかのディストリビューションは/run/shm/へのシンボリックリンクとして/dev/shmを作りますが、これはchroot後に無効になってしまいます。これに対応するためには、/dev/shm/をtmpfsとして適切にマウントしておくことが必要です:
root #test -L /dev/shm && rm /dev/shm && mkdir /dev/shm
root #mount --types tmpfs --options nosuid,nodev,noexec shm /dev/shm

そして確実にモード1777に設定してください:

root #chmod 1777 /dev/shm /run/shm

新しい環境に入る

ようやく、すべてのパーティションが初期化され、ベース環境がインストールされました。chroot を実行して新しいインストール環境に入りましょう。これは、セッションの root (アクセスできる最も上位レベルの場所) を、現状のインストール環境 (インストール CD もしくは他のインストールメディア) から、インストール対象システム (つまり初期化されたパーティション) に変更することを意味しています。これが change root もしくは chroot の意味です。

chrootは次の3ステップで実行されます。

  1. chrootコマンドによって、最上位ディレクトリを(インストールメディアの)/から(パーティションをマウントしている)/mnt/gentoo/に変更する。
  2. /etc/profileのいくつかの設定をsourceコマンドでリロードする。
  3. chroot環境であることを忘れないようするために、シェルのプロンプトを変更する。
root #chroot /mnt/gentoo /bin/bash
root #source /etc/profile
root #export PS1="(chroot) ${PS1}"

この時から、すべての操作は新しいGentoo Linux環境で実行されます。もちろん、まだゴールには程遠いです。その証拠にまだいくつもの章が残っていますよね!

Tip
これ以降の時点で Gentoo インストールを中断しても、インストール作業をこのステップから「再開」することができるようになっているはずです。ディスクをまたパーティショニングする必要はありません!ただ単にルートパーティションをマウントして、上のステップを DNS 情報をコピーするところから実行すれば、作業中の環境に再び入ります。ブートローダの問題を解決するのにもこれが役に立ちます。さらなる情報は chroot の記事にあります。

ブートパーティションをマウントする

新環境に入った今、ブートパーティションをマウントする必要があります。このことはカーネルをコンパイルするときとブートローダをインストールするときに重要な意味を持ちます。

root #mount /dev/sda1 /boot

Portageを設定する

Web から Gentoo ebuild リポジトリのスナップショットをインストールする

次にGentoo ebuildリポジトリのスナップショットをインストールします。このスナップショットには、インストール可能なパッケージの情報、システム管理者が選択するプロファイルの一覧、パッケージやプロファイルごとのお知らせなどをPortageに伝えるファイルが含まれます。

ここで紹介するemerge-webrsyncは、HTTP/FTPプロトコル以外でのダウンロードがファイアウォールで制限されるような環境や、ネットワーク帯域を節約したい場合にお薦めです。これらの制約がなければ、この手順は省いて次のセクションに進んでも構いません。

次のコマンドで、毎日更新される最新のスナップショットをGentooのミラーサイトから取得し、インストールします:

root #emerge-webrsync
注意
この作業中、emerge-webrsync/var/db/repos/gentoo/ がない旨のメッセージを出すかもしれません。これは想定内で、心配することはありません。このディレクトリは自動的に作成されます。

この時点で、Portageはいくつかのアップデートが推奨されていることを通知するかもしれません。これは、stageファイルでインストールされたシステム関連のパッケージについて、より新しいバージョンが利用可能であることを示しています。今回新しいリポジトリスナップショットがインストールされたことで、Portageがそれを認識したのです。このメッセージは今のところは無視して、Gentooのインストールが完了してから対応しても問題ありません。

任意自由選択: Gentoo ebuildリポジトリを更新する

Gentoo ebuildリポジトリを最新版にアップデートできます。先のemerge-webrsyncコマンドはほぼ最新の(通常は24時間以内に作成される)スナップショットをインストールするため、このステップは本当に任意です。

最新(一時間以内)のパッケージ更新があるかもしれません。その更新を取り込むためにemerge --syncを実行しましょう。このコマンドはGentoo ebuildリポジトリ(先程emerge-webrsyncコマンドで取得したもの)をアップデートするためにrsyncプロトコルを使用します。

root #emerge --sync

アップデートの時間を短縮するために、特定のフレームバッファもしくはシリアルコンソール等の遅いターミナルでは、--quietオプションを使うことをお薦めします。

root #emerge --sync --quiet

ニュースを読む

Gentoo ebuildリポジトリの更新時、Portage が次のような情報メッセージを出すことがあります。

* IMPORTANT: 2 news items need reading for repository 'gentoo'.
* Use eselect news to read news items.

ニュース項目は、Gentoo ebuild リポジトリを通じて、ユーザーに重要なメッセージを通知するためのコミュニケーション手段です。これらニュース項目を管理するためにeselect newsを使用します。eselectはGentooに固有のユーティリティで、システム管理のための共通の管理インターフェースを提供します。この場合、eselectnewsモジュールを使うことを指示されます。

newsモジュールに対しては、主に3つの操作が使用されます。

  • listを指定すると、現在有効なニュースアイテムの概要が表示されます。
  • readを指定すると、そのニュースアイテムを読むことができます。
  • purgeを指定すると、一度購読したニュースを削除することができます。これにより、それらのニュースを二度と目にすることはないでしょう。
root #eselect news list
root #eselect news read

ニュースリーダーに関するほとんどの情報はマニュアルページを通じて得ることができます。

root #man news.eselect

適切なプロファイルを選ぶ

プロファイルはあらゆるGentooシステムの基礎を構成します。プロファイルはUSECFLAGS等の重要な変数の初期値を決めるだけではありません。プロファイルは、パッケージのバージョンを決まった範囲に固定する役目を持っています。プロファイルはGentooのPortage開発者によって完全にメンテナンスされています。

現在使用中のプロファイルを確認するには、eselectprofile モジュールを指定して実行してください:

root #eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/17.1 *
  [2]   default/linux/amd64/17.1/desktop
  [3]   default/linux/amd64/17.1/desktop/gnome
  [4]   default/linux/amd64/17.1/desktop/kde
注意
コマンドの出力は一例で、常に更新されています。
Note
systemd を使用する場合は、プロファイル名が systemd を含んだものであるか確認してください。そうでない場合は、プロファイル名が systemd を含んでいないものであるか確認してください。

上の例の通り、いくつかのアーキテクチャではデスクトップ向けのサブプロファイルが見られるでしょう。

Warning
プロファイルのアップグレードは軽々と行われるものではありません。初期プロファイルを選択する時、確実にstage3がはじめに使用していたものと同じバージョン(例えば17.1)を使用してください。新しいプロファイルのバージョンは、移行方法を含むニュース項目を通して発表されます。新しいプロファイルに移行する前に、確実にそのニュース項目を読み、説明に従ってください。

amd64アーキテクチャで利用可能なプロファイルを確認後、別のプロファイルを選択できます。

root #eselect profile set 2


no-multilib

純粋な64ビット環境(32ビットのアプリケーションやライブラリ無し)を選ぶには、no-multilib(非マルチライブラリ)のプロファイルを使用します。

root #eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/17.1 *
  [2]   default/linux/amd64/17.1/desktop
  [3]   default/linux/amd64/17.1/desktop/gnome
  [4]   default/linux/amd64/17.1/desktop/kde
  [5]   default/linux/amd64/17.1/no-multilib

そして、"non-multilib" プロファイルを指定します:

root #eselect profile set 5
root #eselect profile list
Available profile symlink targets:
  [1]   default/linux/amd64/17.1
  [2]   default/linux/amd64/17.1/desktop
  [3]   default/linux/amd64/17.1/desktop/gnome
  [4]   default/linux/amd64/17.1/desktop/kde
  [5]   default/linux/amd64/17.1/no-multilib *



Note
developerサブプロファイルはGentoo Linux開発向けの固有のプロファイルであり、通常のユーザーが使用するものではありません。

@worldの更新

この時点で、@world setをアップデートするとよいでしょう。それによりベースシステムが構築されます。

このステップは必須で、これによってシステムはアップデートや、stage3が構築された時やプロファイルの選択以降のUSEフラグの変更を適用できます。

root #emerge --ask --verbose --update --deep --newuse @world
Tip
フルスケールのデスクトップ環境を選択した場合、このプロセスはインストール時間を格段に長くしてしまうかもしれません。時間に追われている人は次の経験則が成り立つでしょう。「名前が短く、特定のシステムを示さないプロファイルの@world setを選択する」、「もっとも一般的な@worldセットは、より少ないパッケージのアップデートですむ」。別の言い方をすると、
  • default/linux/amd64/17.1を選択すると、パッケージのアップデートは少なくてすみます。
  • default/linux/amd64/17.1/desktop/gnome/systemdを選択すると多くのパッケージがインストールされます。なぜなら、initシステムがOpenRCからsystemdに変更され、GNOMEのデスクトップ環境がインストールされるためです。

USE変数を設定する

USEは、Gentooがユーザに提供する最もパワフルな変数の一つです。多くのプログラムに対して、決められた追加機能を含めたり、もしくは含めずにコンパイルすることが可能です。例えば、いくつかのプログラムはGTK+サポートもしくはQtサポートを有効にしてコンパイルできます。別のプログラムにはSSLサポートを含めたり、もしくは含めずにコンパイルすることが可能です。いくつかのプログラムはX11サポート(Xサーバー)の代わりに、フレームバッファサポート(svgalib)と共にコンパイルできます。

多くのディストリビューションでは、各種のサポートを最大限含むようにコンパイルします。これはプログラムサイズと起動時間を増大させます。多くの依存関係を発生させることは言うまでもありません。Gentooでは、ユーザーはパッケージをコンパイルする時のオプションを定義できます。ここでUSEが登場します。

USE変数を使って、ユーザーはコンパイルオプションにマップされるキーワードを指定します。例えば、sslキーワードはSSLをサポート可能なプログラムでSSLを有効にしてコンパイルします。-XキーワードはXサーバーのサポートを含まない(最初のマイナス記号で指定)ようにコンパイルします。gnome gtk -kde -qt5は、GNOME(とGTK+)サポートを有効にして、KDE(とQt)サポートを無効にします。これにより、(もし、アーキテクチャがGNOMEをサポートしていれば)システムはGNOME向けに最大限調整されます。

デフォルトのUSEの設定は、システムによって使用されるGentooプロファイルのmake.defaultsファイルに記述されています。Gentooはプロファイルをサポートするために、(複雑な)継承システムをサポートします。これにより今の段階でUSEの詳細に立ち入る必要はありません。現在有効なUSE設定を知るためのもっとも簡単な方法は、emerge --infoを実行してUSEで始まる行を抜き出すことです。

root #emerge --info | grep ^USE
USE="X acl alsa amd64 berkdb bindist bzip2 cli cracklib crypt cxx dri ..."
注意
上記の例は出力のほとんどを省略しています。実際には、USE 変数のリストはずっとずっと長いものです。

使用可能なUSEフラグの完全な記述は、/var/db/repos/gentoo/profiles/use.descにあります。

root #less /var/db/repos/gentoo/profiles/use.desc

lessコマンドでは、キーとキーを使ってスクロールすることができます。qを押すと終了します。

例として、DVD、ALSA、CD書き込みをサポートしたKDEベースのUSE設定を示します。

root #nano -w /etc/portage/make.conf
FILE /etc/portage/make.confDVD、ALSA、CD書き込みをサポートしたKDE/Plasmaベースのフラグ設定
USE="-gtk -gnome qt5 kde dvd alsa cdr"

/etc/portage/make.confUSE の値を定義すると、その値はシステムの USE フラグリストに追加されます。USE フラグは、リスト中の値の前に - マイナス記号を追加することで、グローバルに削除することができます。例えば、X グラフィカル環境のサポートを無効化するには、-X を設定することでこれを行えます:

FILE /etc/portage/make.confデフォルトのUSEフラグを無視する
USE="-X acl alsa"
警告
-* を指定することで、make.conf 内で指定したもの以外のすべての USE 値を無効化することができますが、これはまったくおすすめできない、賢明でないことです。Ebuild の開発者たちは、競合を防止するため、セキュリティを向上させるため、エラーを回避するため等の理由によって、デフォルトの USE フラグを選択して ebuild で指定しています。すべての USE フラグを無効化することはデフォルトの振る舞いを否定し、重大な問題を引き起こすことがあります。

任意自由選択: ACCEPT_LICENSE変数の設定

すべてのGentooのパッケージは、パッケージが該当するライセンスと結び付けられています。これによってユーザはソフトウェアをインストールするに先立って、特定のライセンスやライセンスのグループを指定することでソフトウェアを選択することができます。

Important
ebuildのLICENSE変数はGentooの開発者やユーザにとってのガイドラインでしかありません。これは法的声明ではなく、これが現実を反映する保証はありません。したがってLICENSE変数を信用するのではなく、パッケージそのものを、あなたが使用するすべてのファイルを含めて徹底的にチェックしてください。

PortageはACCEPT_LICENSE変数を使って、以前に承諾したライセンスに関してユーザに問い合わせることなく、許可するパッケージを決定します。なお、例外はパッケージ毎に/etc/portage/package.licenseに記述することができます。

Gentooリポジトリによって定義され、Gentooライセンスプロジェクトによって管理されているライセンスグループは以下の通りです:

グループ名 説明
@GPL-COMPATIBLE フリーソフトウェア財団[a_license 1]によって承認されたGPL compatible license群
@FSF-APPROVED FSF(訳注:フリーソフトウェア財団)によって承認されたフリーソフトウェアライセンス群(@GPL-COMPATIBLEを含みます)
@OSI-APPROVED Open Source Initiative [a_license 2]によって承認されたライセンス群
@MISC-FREE おそらくフリーソフトウェアであるその他のライセンス群。言い換えると、フリーソフトウェアの定義[a_license 3]に従っているものの、FSFやOSIによって承認されていないライセンス
@FREE-SOFTWARE 自由に利用、共有、変更、および変更の共有ができるすべてのライセンスのメタセット。@FSF-APPROVED、@OSI-APPROVEDそして@MISC-FREEを組み合わせたもの
@FSF-APPROVED-OTHER FSFが承認した「無料のドキュメント」および「ソフトウェアとドキュメント以外の実用的な作品」(フォントを含む)
@MISC-FREE-DOCS free definition[a_license 4] に従っているが、@FSF-APPROVED-OTHERの一覧には載っていない無料のドキュメントおよび他の作品
@FREE-DOCUMENTS @FSF-APPROVED-OTHERと@MISC-FREE-DOCSを組み合わせたもの
@FREE @FREE-SOFTWAREと@FREE-DOCUMENTSを組み合わせたもの
@BINARY-REDISTRIBUTABLE 少なくともソフトウェアのバイナリ形式での自由な再配布を認めているライセンス群。@FREEを含みます
@EULA あなたの権利を取り去ろうとするライセンス契約。これらは"all-rights-reserved"や明示的な承諾を必要とするものよりも拘束的です.

Gentooのプロファイルには予め値が定義されています、例えば以下の通りです:

user $portageq envvar ACCEPT_LICENSE
@FREE

これは/etc/portage/make.confを変更することで、システム全体で変えることができます。既定値は、フリーソフトウェア財団、Open Source Initiativeあるいはフリーソフトウェアの定義に従っていると明示的に承認されたライセンスのみを受け入れます:

FILE /etc/portage/make.confACCEPT_LICENSE変数を変更する
ACCEPT_LICENSE="-* @FREE"

もし必要ならば、パッケージ毎に値を上書きすることも可能です。例:

FILE /etc/portage/package.license/kernelライセンス承諾の例
app-arch/unrar unRAR
sys-kernel/linux-firmware @BINARY-REDISTRIBUTABLE
sys-firmware/intel-microcode intel-ucode


タイムゾーン

タイムゾーンを選択します。/usr/share/zoneinfo/から利用可能なタイムゾーンを探してください:

root #ls /usr/share/zoneinfo

選択したタイムゾーンがEurope/Brusselsの場合は以下となります。

OpenRC

/etc/timezone ファイルにタイムゾーン名を記述します。

root #echo "Europe/Brussels" > /etc/timezone

/usr/share/zoneinfo/Etc/GMT*のタイムゾーンは、その名前が期待されるゾーンを示していないため、避けましょう。たとえば、GMT-8は実際にはGMT+8となります。

次に、sys-libs/timezone-dataパッケージを再設定しましょう。これは/etc/timezoneを元に、/etc/localtimeをアップデートします。/etc/localtimeは、システムのCライブラリが、自身が属するタイムゾーンを知るために使われます。

root #emerge --config sys-libs/timezone-data

systemd

systemd を使用している場合は、多少異なるアプローチをとります。シンボリックリンクを生成します:

root #ln -sf ../usr/share/zoneinfo/Europe/Brussels /etc/localtime

その後 systemd が起動してから、タイムゾーンとそれに関連する設定を timedatectl コマンドで設定することができます。

ロケールの設定

Note
このステップは musl libc を使う場合は適用されません。それがどういう意味か分からない場合は、このステップを実行すべきです。

ロケールの生成

ほとんどのユーザは、一つもしくは二つのロケールを必要とします。

ロケールはシステムで使用する言語を指定するだけではなく、単語のソート順や日付、時間等のルールにも使用されます。ロケールは大文字小文字を区別するので、記載とまったく同じように表現する必要があります。利用可能なロケールの一覧は /usr/share/i18n/SUPPORTED ファイルで確認できます。

サポートされるシステムロケールは、/etc/locale.gen ファイルに定義する必要があります。

root #nano -w /etc/locale.gen

次のロケールの例では、英語(米国)とドイツ語(ドイツ)を(UTF-8のような)文字コードと共に指定しています。

FILE /etc/locale.genUSとDEロケールを適切な文字コードと共に有効にする
en_US ISO-8859-1
en_US.UTF-8 UTF-8
de_DE ISO-8859-1
de_DE.UTF-8 UTF-8
警告
UTF-8 のロケールを少なくとも一つは追加することを強く勧めます。おそらく多くのアプリケーションは適切にビルドするのに UTF-8 を必要とするためです。

次に locale-gen コマンドを実行します。このコマンドは /etc/locale.gen ファイルに記載されているすべてのロケールを生成します。

root #locale-gen

現在使用可能なすべてのロケールを確認するためには、locale -aを実行してください。

ロケールの選択

この時点で、システム全体で有効になるロケールを設定できます。eselectlocaleモジュールと共に使いましょう。

eselect locale listを実行すると、利用可能なターゲットが表示されます。

root #eselect locale list
Available targets for the LANG variable:
  [1]  C
  [2]  C.utf8
  [3]  en_US
  [4]  en_US.iso88591
  [5]  en_US.utf8
  [6]  de_DE
  [7]  de_DE.iso88591
  [8]  de_DE.iso885915
  [9]  de_DE.utf8
  [10] POSIX
  [ ]  (free form)

eselect locale set <番号> を実行することで、適切なロケールを選択することができます:

root #eselect locale set 9

手動で設定する場合は、/etc/env.d/02locale ファイルと、Systemd の場合は /etc/locale.conf ファイルも編集してください。

FILE /etc/env.d/02localeシステムのロケールをマニュアル設定する
LANG="de_DE.UTF-8"
LC_COLLATE="C.UTF-8"

ロケールを設定すると、後でカーネルをビルドしたり、他のソフトをコンパイルしたりするときに警告やエラーを回避できるでしょう。

ここで、環境をリロードします。

root #env-update && source /etc/profile && export PS1="(chroot) ${PS1}"

ロケール選択プロセス全体を通しての、追加のガイダンスを提供する完全なローカライゼーションガイド。他の興味深い記事は、 UTF-8 を有効にするために特化した情報である UTF-8 ガイドです。





任意自由選択: ファームウェアとマイクロコードのインストール

カーネルコンフィグの節へ進む前に知っておいたほうが良いこととして、一部のデバイスは、それを適切に動作させるために追加のファームウェアのインストールする必要がある、ということがあります。これはネットワークインターフェース、特に、デスクトップとラップトップの両方で広く使用される、無線ネットワークインターフェースで必要になることが多いです。AMD、Nvidia、Intel などのベンダによる最近のビデオチップも、完全に機能させるには外部のファームウェアが必要になることが多いです。最近のハードウェアのためのファームウェアの多くは sys-kernel/linux-firmware パッケージ内で入手可能です。これらのベンダによるグラフィックカードを使用するシステムでは、グラフィックカードを使えるようにするために、カーネルを構成してインストールする前にこのファームウェアパッケージを emerge しておくのが賢明です。

root #emerge --ask sys-kernel/linux-firmware

個別のグラフィックスハードウェアやネットワークインターフェースに加えて、CPU もまたファームウェアアップデートを必要とすることがあります。こうしたファームウェアは典型的にはマイクロコードと呼ばれます。新しいリビジョンのマイクロコードは、動作の不安定さ、セキュリティ上の懸念、その他の CPU ハードウェアのバグに対するパッチとして、必要になることがあります。

AMD CPU に対するマイクロコードアップデートは、典型的には先述の linux-firmware パッケージとともに配布されます。Intel CPU に対するマイクロコードは sys-firmware/intel-microcode パッケージ内で見つかりますので、これを個別にインストールする必要があります。マイクロコードアップデートを適用する方法についてのさらなる情報は、マイクロコードの記事を確認してください。

カーネルのコンフィギュレーションとコンパイル

これで、カーネルソースを設定、コンパイルする準備が整いました。この設定およびコンパイルには 3 つのアプローチがあります。

  1. カーネルをマニュアルで設定およびビルドする。
  2. Linux カーネルを自動的にビルド・インストールする genkernel を使用する。
  3. Linux カーネルを、他のパッケージと同様に自動的にビルド・インストールする配布カーネルを使用する。

環境を最適化するための最良の方法はマニュアル設定なので、デフォルトの選択肢としてマニュアル設定を説明します。

すべてのディストリビューションが構築されるその中心にあるのがLinuxカーネルです。カーネルレイヤーはユーザープログラムとハードウェアの間に存在します。Gentooではカーネルソースについて複数の選択肢があります。説明付きのすべてのカーネルソースのリストは、Kernel overview pageで見ることができます。

カーネルソースのインストール

amd64 ベースのシステムにカーネルを手動でインストールしてコンパイルする場合には、Gentoo はsys-kernel/gentoo-sources パッケージを推奨しています。

適切なカーネルソースを選択して、emergeでインストールします。

root #emerge --ask sys-kernel/gentoo-sources

このコマンドはカーネルソースを /usr/src/ の下に、カーネルバージョン毎のパスを分けてインストールします。選択されたカーネルソースパッケージに対して USE=symlink が有効化されていなければ、シンボリックリンクは自動で作成されません。

現在実行しているカーネルに対応するソースを指すように、/usr/src/linux シンボリックリンクを維持することは慣例となっています。しかし、このシンボリックリンクはデフォルトでは作成されないでしょう。シンボリックリンクを作成する簡単な方法は、eselect の kernel モジュールを利用することです。

シンボリックリンクの目的と、それを管理する方法についてのさらなる情報は、Kernel/Upgrade を参照してください。

まず、インストールされているカーネルを一覧表示します:

root #eselect kernel list
Available kernel symlink targets:
  [1]   linux-4.9.16-gentoo

linux シンボリックリンクを作成するには、次を使用してください:

root #eselect kernel set 1
root #ls -l /usr/src/linux
lrwxrwxrwx    1 root   root    12 Oct 13 11:04 /usr/src/linux -> linux-4.9.16-gentoo

マニュアル設定

はじめに

カーネルのマニュアル設定は、しばしばLinuxユーザーがしなければならない最も難しい手続きと考えられます。これは真実ではありません。カーネルを数回設定してみれば、それが難しいと言われていたことなど忘れてしまうでしょう!

しかし、一つだけ真実があります。カーネルをマニュアルで設定する時、ハードウェア情報を知ることはとても役に立ちます。ほとんどの情報は、lspciコマンドを含むsys-apps/pciutilsをインストールすることで得られます。

root #emerge --ask sys-apps/pciutils
注意
chroot環境では、lspciが出力していると思われる(pcilib: cannot open /sys/bus/pci/devicesのような)pcilibの警告は、無視しても構いません。

システム情報を得るための別の方法は、lsmodを使ってインストールCDが使っているカーネルモジュールを把握することです。その情報は何を有効にすべきかとてもよいヒントを与えてくれるでしょう。

では、カーネルソースがあるディレクトリに移動して、make menuconfigを実行しましょう。このコマンドはメニューベースの設定画面を起動します。

root #cd /usr/src/linux
root #make menuconfig

Linuxカーネルの設定はとても多くのセクションを持っています。まず最初にいくつかの必須オプションを述べましょう(そうでない場合、Gentooは動作しない、もしくは追加の処置なしには正しく動作しません)。 Gentoo wikiのGentoo カーネルコンフィグレーションガイドには、さらに役立つ記述があるでしょう。

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

もし sys-kernel/gentoo-sources を使用する場合は、Gentoo 固有のコンフィギュレーションオプションを有効化することを強く推奨します。これらは、正しく機能するために必要な最小限のカーネルの機能が有効化されることを確実にします:

KERNEL Gentoo 固有オプションを有効化する
Gentoo Linux --->
  Generic Driver Options --->
    [*] Gentoo Linux support
    [*]   Linux dynamic and persistent device naming (userspace devfs) support
    [*]   Select options required by Portage features
        Support for init systems, system and service managers  --->
          [*] OpenRC, runit and other script based systems and managers
          [*] systemd

通常、最後の 2 行の選択は init システムの選択(OpenRCsystemd か)に依存します。両方の init システムへのサポートを有効化しても害はありません。

もし sys-kernel/vanilla-sources を使用する場合は、この init システムに関する追加の選択項目は利用できないでしょう。サポートを有効化することは可能ですが、このハンドブックの範囲からは外れることです。

システムのブートに必須となるドライバ(SCSIコントローラ等)は、モジュールではなく、カーネルの一部としてコンパイルしなければなりません。そうでないと、システムは全くブートできないでしょう。

次に正確なプロセッサタイプを選択します。このとき、もし使えるのであればMCE機能を有効にすることが推奨されます。これによりハードウェアの異常が通知されるようになるでしょう。いくつかのアーキテクチャ(x86_64)で、これらのエラーはdmesgでは確認できませんが、/dev/mcelogにログが残ります。この機能を有効にするためにapp-admin/mcelogパッケージが必要になります。

また、Maintain a devtmpfs file system to mount at /devを選択することで、必須となるデバイスファイルがブートプロセスの初期段階で使えるようになります (CONFIG_DEVTMPFSCONFIG_DEVTMPFS_MOUNT):

KERNEL devtmpfsサポートを有効にする
Device Drivers --->
  Generic Driver Options --->
    [*] Maintain a devtmpfs filesystem to mount at /dev
    [*]   Automount devtmpfs at /dev, after the kernel mounted the rootfs

SCSI ディスクサポートが有効になっているか確認してください(CONFIG_BLK_DEV_SD):

KERNEL SCSIディスクサポートを有効にする
Device Drivers --->
   SCSI device support  --->
      <*> SCSI disk support

次にFile Systemsで、システムが使用するファイルシステムに必要なサポートを選択しましょう。ルートファイルシステムに使われるファイルシステムをモジュールとしてコンパイルしてはいけません。モジュールにした場合、システムがパーティションをマウントできないおそれがあります。また、ここでVirtual memory/proc file systemも選択してください。システムの必要に応じて以下の選択肢から1個以上を選択してください (CONFIG_EXT2_FS, CONFIG_EXT3_FS, CONFIG_EXT4_FS, CONFIG_MSDOS_FS, CONFIG_VFAT_FS, CONFIG_PROC_FS, and CONFIG_TMPFS):

KERNEL 必要なファイルシステムを選択する
File systems --->
  <*> Second extended fs support
  <*> The Extended 3 (ext3) filesystem
  <*> The Extended 4 (ext4) filesystem
  <*> Reiserfs support
  <*> JFS filesystem support
  <*> XFS filesystem support
  <*> Btrfs filesystem support
  DOS/FAT/NT Filesystems  --->
    <*> MSDOS fs support
    <*> VFAT (Windows-95) fs support
 
  Pseudo Filesystems --->
    [*] /proc file system support
    [*] Tmpfs virtual memory file system support (former shm fs)

もしインターネットに接続するために、PPPoEもしくはダイヤルアップモデムを使う場合、次のオプションを有効にしてください (CONFIG_PPP, CONFIG_PPP_ASYNC, and CONFIG_PPP_SYNC_TTY):

KERNEL PPPoEに必要なドライバを選択する
Device Drivers --->
  Network device support --->
    <*> PPP (point-to-point protocol) support
    <*>   PPP support for async serial ports
    <*>   PPP support for sync tty ports

2つの圧縮オプションは選択しても差し支えありませんが、必須というわけでもありません。PPP over Ethernetオプションも同様です。これはカーネルモードのPPPoEをするために設定された時だけにpppによって使用されるものです。

カーネルにネットワークカード(イーサネットもしくはワイヤレス)のサポートを組み込むことを忘れてはいけません。

多くのシステムではマルチコアを使用できます。Symmetric multi-processing supportを有効にすることは重要です (CONFIG_SMP):

KERNEL SMPサポートを有効にする
Processor type and features  --->
  [*] Symmetric multi-processing support
注意
マルチコアシステムでは、それぞれのコアが1プロセッサとカウントされます。

USB接続の入力装置(キーボードやマウス)などのUSBデバイスを使用する場合、以下を必ず有効にしてください (CONFIG_HID_GENERIC and CONFIG_USB_HID, CONFIG_USB_SUPPORT, CONFIG_USB_XHCI_HCD, CONFIG_USB_EHCI_HCD, CONFIG_USB_OHCI_HCD):

KERNEL 入力装置のためにUSBサポートを有効にする
Device Drivers --->
  HID support  --->
    -*- HID bus support
    <*>   Generic HID driver
    [*]   Battery level reporting for HID devices
      USB HID support  --->
        <*> USB HID transport layer
  [*] USB support  --->
    <*>     xHCI HCD (USB 3.0) support
    <*>     EHCI HCD (USB 2.0) support
    <*>     OHCI HCD (USB 1.1) support


アーキテクチャに即したカーネルコンフィグ

32ビットプログラムもサポートさせたいならば、IA32 エミュレーションを有効にすることを忘れないでください(CONFIG_IA32_EMULATION)。Gentoo は、デフォルト設定ではマルチライブラリシステム(32ビット・64ビット両方の演算)をインストールします。そのため、no-multilibプロファイルを選択しないかぎりは、IA32 エミュレーションを有効にしなければなりません。

KERNEL プロセッサの型式と機能を選択
Processor type and features  --->
   [ ] Machine Check / overheating reporting 
   [ ]   Intel MCE Features
   [ ]   AMD MCE Features
   Processor family (AMD-Opteron/Athlon64)  --->
     ( ) Opteron/Athlon64/Hammer/K8
     ( ) Intel P4 / older Netburst based Xeon
     ( ) Core 2/newer Xeon
     ( ) Intel Atom
     ( ) Generic-x86-64
Executable file formats / Emulations  --->
   [*] IA32 Emulation

ディスクパーティション作成時にGPT パーティションを使用した場合には、GPT パーティションラベルのサポートを有効にしましょう(CONFIG_PARTITION_ADVANCEDCONFIG_EFI_PARTITION):

KERNEL GPT サポートを有効
-*- Enable the block layer --->
   Partition Types --->
      [*] Advanced partition selection
      [*] EFI GUID Partition support

システムブートに UEFI を用いている場合には、Linux カーネルの EFI スタブサポートと EFI 変数を有効にしましょう(CONFIG_EFICONFIG_EFI_STUBCONFIG_EFI_MIXED、そして CONFIG_EFI_VARS):

KERNEL UEFI のサポートを有効にする
Processor type and features  --->
    [*] EFI runtime service support 
    [*]   EFI stub support
    [*]     EFI mixed-mode support
  
Firmware Drivers  --->
    EFI (Extensible Firmware Interface) Support --->
        <*> EFI Variable Support via sysfs

コンパイルおよびインストール

さあ、カーネルのコンフィグレーションが完了し、コンパイルとインストールをする時がきました。コンフィグレーションを終了させ、コンパイル作業を開始しましょう:

root #make && make modules_install
注意
make -jX とすることで、ビルドを並行処理させることができます( X には、並行処理を許可するビルドプロセスの数を整数で指定します。 /etc/portage/make.conf の説明中の、 MAKEOPTS 変数についてと同様です。

カーネルのコンパイルが完了したら、カーネルのイメージを /boot/ にコピーします。これは make install コマンドで行います。

root #make install

カーネルイメージとともに、System.map ファイルやカーネルコンフィグファイルも、 /boot/ にコピーされます。


任意自由選択: initramfsのビルド

いくつかの特別なケースで initramfs - initial ram-based file system (訳注: 起動時の RAM ベースのファイルシステム) のビルドが必要になります。最もよくある理由は、重要なディレクトリ(/usr//var/等)が別パーティションにある場合です。initramfsがあれば、initramfsの中にあるツールを使うことで、これらのパーティションをマウントすることができます。

initramfs が無いと、ファイルシステムをマウントするツールがまだマウントされていないファイルシステムの中にある情報を必要としている場合、システムが正しく起動できないリスクがあります。initramfs はカーネルブートの直後かつ制御が init ツールに移る前に必要なファイルをアーカイブに引き込みます。initramfs のスクリプトはシステムがブートを継続するために必要なパーティションを正しくマウントすることを保証します。

Important
genkernel を使用する場合は、カーネルおよび initramfs の両方をビルドでこれを使用するべきです。genkernel を initramfs の生成のためだけに使用する場合は、genkernel--kernel-config=/path/to/kernel.config を渡すのがきわめて重要です。そうしないと、生成された initramfs が手動でビルドされたカーネルと同時に動作しない場合があります。手動でビルドされたカーネルはハンドブックのサポート範囲外であることに注意してください。詳細についてはカーネルコンフィギュレーションの記事を確認してください。

initramfsをインストールするために、最初にsys-kernel/dracutをインストールしましょう。そしてinitramfsを生成します。

root #emerge --ask sys-kernel/dracut
root #dracut --kver=4.9.16-gentoo

initramfsは/boot/に保存されます。生成されるファイルは単純にinitramfsで始まります。

root #ls /boot/initramfs*

次はカーネルモジュールです。

別の方法: genkernelを使用する

もしマニュアル設定に気後れしてしまった場合、genkernel を使うことを考えてみてください。genkernel は自動的にカーネルを設定し、ビルドします。

genkernelはインストールCDのカーネルの設定とほぼ同じようにカーネルを設定します。これはカーネルのビルドにgenkernelを使った場合、システムはインストールCDと同じように対応するハードウェアをブート時に検出することを意味します。genkernelは自身のカーネルをコンパイルすることを好まないユーザには有用なソリューションとなり得ます。genkernel は、それが実行されているハードウェア向けのカスタムカーネル設定を自動的に生成するものではないことに注意してください。

では、genkernelの使い方を見てみましょう。最初にsys-kernel/genkernelをemergeします。

root #emerge --ask sys-kernel/genkernel

次に、/etc/fstabファイルを編集します。2番目のフィールドに/boot/を含む行は、その1番目のフィールドで正しいデバイス指定します。もしハンドブックのパーティショニング例の通りであれば、このデバイスはほぼ間違いなくext4ファイルシステムを持つ/dev/sda1でしょう。この場合、エントリは次のようになります。

root #nano -w /etc/fstab
FILE /etc/fstab/bootマウントポイントを設定する
/dev/sda1	/boot	ext4	defaults	0 2
注意
Gentooインストールでは、/etc/fstabはさらにもう一回編集されますが、/bootの設定はgenkernelアプリケーションがそれを読み込むために今必要です

genkernel allを実行してカーネルソースをコンパイルしましょう。ただ、genkernelはほとんどすべてのハードウェアをサポートするカーネルを生成するため、コンパイルが完了するまでにかなりの時間が必要になることに注意しましょう。

注意
もしルートパーティションまたはボリュームがファイルシステムとしてext4を使用していない場合、おそらく、genkernel --menuconfig allを使ってマニュアルでカーネルを設定し、カーネルにこの特別なファイルシステムを(モジュールではなく)組み込む必要があるでしょう。また、LVM2のユーザーはおそらく引数に--lvmを加えることになるでしょう。
root #genkernel all

genkernel完了後、カーネル、モジュール群、初期RAMディスク(initramfs)が生成されるでしょう。このドキュメントの後半でブートローダーを設定する際、このカーネルとinitrdを使うことになります。ブートローダーの設定に必要になるため、カーネルとinitrdの名前をメモしておきましょう。"真の"システムが起動する前に(インストールCDがするように)ハードウェアを自動的に検出しなければならないため、initrdはブート後すぐに起動します。

root #ls /boot/vmlinu* /boot/initramfs*

別の方法: 配布カーネルを使用する

配布カーネルは、カーネルを展開、構成設定、コンパイル、インストールする完全なプロセスをカバーする ebuild です。この手法を利用する最大の利点は、@world アップグレードの一部として、手動操作の必要なしにカーネルが新しいバージョンにアップグレードされることです。配布カーネルはデフォルトでは、大部分のハードウェアをサポートするように構成されますが、これは /etc/portage/savedconfig を利用してカスタマイズすることができます。

カーネルコンフィグをカスタマイズするには、コンフィグスニペットなどの他の方法も利用可能です。

正しい installkernel をインストールする

配布カーネルを利用する前に、システムにとって正しい installkernel パッケージがインストールされていることを確認してください。systemd-boot (旧 gummiboot) を使用している場合は、次をインストールしてください:

root #emerge --ask sys-kernel/installkernel-systemd-boot

伝統的な /boot レイアウト(例: GRUB、LILO 等)を使用している場合は、gentoo 変種がデフォルトでインストールされているはずです。疑わしい場合は:

root #emerge --ask sys-kernel/installkernel-gentoo

配布カーネルをインストールする

Gentoo パッチが当てられたカーネルをソースからビルドするには、次をタイプしてください:

root #emerge --ask sys-kernel/gentoo-kernel

システムの管理者として、カーネルのソースをローカルでコンパイルするのを避けたい場合は、代わりにコンパイル済みのカーネルイメージを使用することができます:

root #emerge --ask sys-kernel/gentoo-kernel-bin

アップグレードと後処理

一度カーネルがインストールされたら、パッケージマネージャが自動的にカーネルを新しいバージョンにアップグレードするでしょう。古いバージョンは、パッケージマネージャに古いパッケージを片付けるように指示するまで残ります。容量を節約するには:

root #emerge --depclean

を定期的に実行するのを忘れないでください。あるいは、古いカーネルのバージョンだけを片付けるには:

root #emerge --prune sys-kernel/gentoo-kernel sys-kernel/gentoo-kernel-bin

インストール/アップグレード後タスク

配布カーネルは、他のパッケージによってインストールされるカーネルモジュールの再ビルドに対応しています。linux-mod.eclassUSE=dist-kernel を提供し、これは virtual/dist-kernel に対するサブスロット依存関係を制御します。

sys-fs/zfssys-fs/zfs-kmod などのパッケージでこれを有効化すると、パッケージが新しいカーネルに対して自動的に再ビルドされ、それに従って、適用可能であれば initramfs を再生成することができます!

手動で initramfs を再ビルドする

必要であれば、カーネルアップグレード後に、以下を実行して手動で再ビルドを実行してください:

root #emerge --ask @module-rebuild

これらのモジュール (ZFS 等) のうちいずれかが初期ブートで必要であれば、続けて initramfs を再ビルドしてください:

root #emerge --config sys-kernel/gentoo-kernel
root #emerge --config sys-kernel/gentoo-kernel-bin

カーネルモジュール

モジュールの設定

Note
ハードウェアモジュールを手作業で列挙する必要はありません。ほとんどの場合、udev は接続を検出したハードウェアのモジュールを自動でロードします。ですが、自動で検出されるモジュールを列挙することは特に有害ではありません。時として変なハードウェアは、ドライバをロードするのにこうした手助けが必要になることがあります。

/etc/modules-load.d/*.confファイルに、自動的にロードしなければならないモジュールを改行区切りで記載してください。モジュールに追加のオプションを与える必要があれば、/etc/modprobe.d/*.confファイルで設定すべきです。

すべての利用可能なモジュールを把握するためには、次のfindコマンドを実行してください。"<kernel version>"をたった今コンパイルしたカーネルのバージョンで置き換えることを忘れないでください。

root #find /lib/modules/<kernel version>/ -type f -iname '*.o' -or -iname '*.ko' | less

たとえば、3c59x.koモジュール(特定の3Comネットワークカード)を自動的にロードするためには、/etc/modules-load.d/network.confにモジュール名を記載してください。実際のファイル名はローダにとって重要ではありません。

root #mkdir -p /etc/modules-load.d
root #nano -w /etc/modules-load.d/network.conf
FILE /etc/modules-load.d/network.conf強制的に3c59x モジュールをロードする
3c59x

では、システムの設定に進み、インストールを続けましょう。





ファイルシステムの情報

fstabについて

Linuxでは、システムで使用するすべてのパーティションは/etc/fstabに記載されていなければなりません。このファイルは、これらパーティションのマウントポイント(これらはファイルシステムに存在しなければなりません)、どのようにマウントされるべきか、また特別なオプション(自動マウントかそうでないか、ユーザー権限でマウントできるかどうか等)を定義します。

fstabファイルを作成する

/etc/fstabファイルは表のように記述します。それぞれの行はスペース(一つまたは複数のスペース、タブ、もしくはその組み合わせ)で区切られる6つのフィールドを持ちます。それぞれのフィールドの意味は以下の通りです。

  1. 最初のフィールドはマウントされるブロックスペシャルデバイスやリモートファイルシステムを示します。デバイスファイルへのパスや、ファイルシステムラベルやファイルシステムUUID,そしてパーティションラベルやパーティションUUIDを含む、いくつかの種類のデバイスIDがブロックスペシャルデバイスノードとして使用可能です。
  2. 2番目のフィールドはそのパーティションがマウントされるマウントポイントを示します。
  3. 3番目のフィールドはそのパーティションのファイルシステムを示します。
  4. 4番目のフィールドは、そのパーティションをマウントするmountコマンドが使用するオプションを示します。すべてのファイルシステムは、固有のマウントオプションを持っています。ユーザーはマウントコマンドのmanページ(man mount)を参照することですべてのオプションを確認できます。複数のマウントオプションを記述する場合はカンマで区切ります。
  5. 5番目のフィールドはそのパーティションをdumpでダンプするかどうかを示しています。このフィールドは通常0(ゼロ)のままにしておいてかまいません。
  6. 6番目のフィールドは、直前のシャットダウンが正常に完了しなかったときに、fsckが各パーティションをどの順番でチェックするか示しています。ルートファイルシステムは1であるべきです。残りのファイルシステムは2(ファイルシステムチェックが不要であれば0)に設定しましょう。
重要
Gentooが提供するデフォルトの/etc/fstabファイルは適切な記述ではありません。テンプレートとしてのみ使用してください
root #nano -w /etc/fstab

これ以降、パーティションとして、デフォルトのブロックデバイスファイルである/dev/sd*を使います。

ファイルシステムラベルとUUID

MBR(BIOS)とGPTの両方が、ファイルシステムラベルとファイルシステムUUIDをサポートしています。これらの属性は、ブロックデバイスを探しマウントするために使用されるmountコマンドの代用として、/etc/fstab内で定義することができます。ファイルシステムラベルやファイルシステムUUIDはそれぞれLABELUUID接頭辞で識別され、blkidコマンドで確認することができます:

root #blkid
Warning
もし、パーティション内のファイルシステムが消滅すると、ファイルシステムのラベルとUUIDの値は後に変更されるか除去されます。

一意性のため、MBRスタイルのパーティションテーブルを使用している読者は、/etc/fstab内で、マウント可能なボリュームを定義するのにラベルよりもUUIDを用いることを推奨します。

パーティションラベルとUUID

GPTルートを選択した人は、/etc/fstab でパーティションを定義する際に '頑丈' な方法を使うことができます。パーティション自体にどのファイルシステムが使用されているかにかかわらず、ブロックデバイスの個々のパーティションを識別するのにパーティションラベルやパーティションのUUIDを使うことができます。パーティションラベルとパーティションのUUIDはそれぞれPARTLABELPARTUUID接頭辞で識別され、そして端末で blkid コマンドを実行すると簡単に調べられます:

root #blkid

パーティションラベルも絶対にとは言えないのに対し、fstab でUUIDを使ったパーティション指定を使えば、たとえ将来ファイルシステムが変更されるとしても、ブートローダーがボリューム検出に迷うことはありません。従来のブロックデバイスファイル (/dev/sd*N) を使った指定は、SATAブロックデバイスの追加・削除とシステムの再起動が頻繁に行われるシステムでは危険です。

ブロックデバイスのファイル名は様々な要素 (ディスクがどんな順番でいくつ接続されているかを含む) によって変化します。またファイル名の順番についても、初期起動プロセス中にカーネルがどのデバイスを最初に検知するかによって変化します。つまり、ディスクの順序を頻繁にいじったりしない限りは、デフォルトのブロックデバイスファイルを使うのはシンプルで素直な方法です。


では、/boot/パーティションをどのように記述すればよいか見てみましょう。これは一つの例です。実際はインストール手順の最初に決めたパーティション構成通りに修正しなければなりません。ここでは amd64 のパーティション構成の例として、ext4 ファイルシステムを使う/dev/sda1パーティションを/boot/にします。このパーティションはブート中にチェックされなければなりません。fstabは以下のようになるでしょう。

FILE /etc/fstab/etc/fstabの/boot行の例
/dev/sda1   /boot     ext4    defaults        0 2

あるユーザーはセキュリティを向上させるために/boot/パーティションを自動的にマウントしたくないかもしれません。その場合はdefaultsnoautoで置き換えてください。これは、そのパーティションを使いたいときは都度手動でマウントしなければならないことを意味します。

実際のパーティション構成にあわせたルールや、CD-ROMドライブのためのルールを追加してください。他にパーティションやドライブがあれば、それも忘れずに追加しておきましょう。

以下は、より詳細な/etc/fstabの例です。


FILE /etc/fstab完全な/etc/fstabの例
/dev/sda1   /boot        ext4    defaults,noatime     0 2
/dev/sda2   none         swap    sw                   0 0
/dev/sda3   /            ext4    noatime              0 1
  
/dev/cdrom  /mnt/cdrom   auto    noauto,user          0 0

3番目のフィールドでautoを使う場合、mountコマンドはそのパーティションのファイルシステムが何かを推測します。これは様々なファイルシステムを使う可能性があるリムーバルメディアで推奨されます。4番目のuserオプションで、ルート権限を持たないユーザーがCDをマウントできるようになります。

パフォーマンスを改善するために、多くのユーザーはマウントオプションとしてnoatimeオプションを付け加えたいと考えるでしょう。アクセス時間が記録されないので、結果としてより高速なシステムになります(一般的にこの記録はほとんど必要ありません)。TRIMコマンドが動くようにdiscardオプション(現時点ではext4とbtrfsのみ)を使ってSSDをマウントする場合も、noatimeオプションを付けるとよいでしょう。

再度/etc/fstabを確認して、保存、エディタを終了します。

ネットワーク接続のための情報

ホストとドメインのための情報

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

OpenRC

root #nano -w /etc/conf.d/hostname
# hostname変数にホスト名を設定する。
hostname="tux"

次に、もしドメイン名が必要なら、/etc/conf.d/netに設定します。ISPやネットワーク管理者からそう言われているか、DNSサーバがありDHCPサーバがない場合には、ドメイン名が必要になります。もし、ダイナミックIPアドレスやネットワーク設定のためにDHCPを使っている場合は、DNSやドメイン名は気にしなくても構いません。

注意
デフォルトで/etc/conf.d/netが無い場合、新規作成する必要があります。
root #nano -w /etc/conf.d/net
# dns_domain_lo変数にドメイン名を設定する。
dns_domain_lo="homenetwork"
注意
もしドメイン名を設定しない場合、ログイン画面に"This is hostname.(none)"というメッセージが現れるでしょう。これは/etc/issueを編集して、.\Oを消去することで対策できます。

もし、NISドメインが必要であれば(それが何かを知らないユーザは必要ありません)、以下のように定義してください。

root #nano -w /etc/conf.d/net
# nis_domain_lo変数にNISドメイン名を設定。
nis_domain_lo="my-nisdomain"
注意
DNSとNISの設定詳細については、/usr/share/doc/netifrc-*/net.example.bz2にある例を参照してください。このファイルはbzlessで読むことができます。また、DNS/NIS設定を管理する場合、net-dns/openresolvをインストールすることは興味深いでしょう。

systemd

systemd でシステムのホスト名を設定するには、hostnamectl を実行してください。

ホスト名を "tux" に設定するためには、次のようにします:

root #hostnamectl hostname tux

ネットワーク

dhcpcd (どんな init システムでも)

netifrc の代替となるのが dhcpcd です。さらなる詳細については Dhcpcd を確認してください。

インストールするには:

root #emerge --ask net-misc/dhcpcd

OpenRC システム上で、サービスを有効化して開始するには:

root #rc-update add dhcpcd default
root #rc-service dhcpcd start

systemd システム上で、サービスを有効化して開始するには:

root #systemctl enable --now dhcpcd

netifrc (主に OpenRC で)

Tip
これは OpenRC 上で Netifrc を使ってネットワークをセットアップするときに固有の方法です。他にも Dhcpcd のような、より簡潔なセットアップの方法も存在します。

ネットワークインターフェースを構成するために利用できる選択肢は多く存在します。この節ではそのうち一部の方法だけをカバーします。必要な構成に最適と思われるものをひとつ選んでください。

ネットワークを設定する

Gentoo Linuxをインストールしている間、ネットワークが使えるように設定されています。しかし、それはインストールCDのためのネットワーク設定であり、インストールされた環境のためのものではありません。では、インストールされたGentoo Linuxのネットワークを設定しましょう。

注意
bonding、ブリッジ、802.1Q VLAN、無線ネットワークに間するより詳細な情報は、Gentoo Network Configurationセクションを参照してください。

すべてのネットワーク設定は/etc/conf.d/netにあります。直接的ではありますが、おそらく直感で理解できる構文ではありません。しかし恐れることはありません。すべては以下で説明されます。/usr/share/doc/netifrc-*/net.example.bz2に、多くの異なる設定に対して完全にコメントが付与された例が記載されています。

最初に net-misc/netifrc をインストールします。

root #emerge --ask --noreplace net-misc/netifrc

DHCPはデフォルトで使用されます。DHCPを動かすために、DHCPクライアントをインストールしなければなりません。これは Installing Necessary System Toolsで説明されます。

もし、特別なDHCPのオプションを設定している、もしくはDHCPをまったく使いたくない等の理由で、ネットワーク接続をしなければならないときは、/etc/conf.d/netを編集します。

root #nano -w /etc/conf.d/net

IPアドレスとルーティングを設定するのはconfig_eth0routes_eth0です。

注意
ここではネットワークインターフェイスがeth0であると仮定していますが、これはシステムによって違います。もし、最近のインストールメディアから起動しているのであれば、インストール時と同じインターフェイス名が使われると思ってよいでしょう。より詳しい情報はNetwork Interface Namingを参照してください。
FILE /etc/conf.d/net静的 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を設定してください。

FILE /etc/conf.d/netDHCPの定義
config_eth0="dhcp"

使用可能なオプションのリストについては、/usr/share/doc/netifrc-*/net.example.bz2を参照してください。もし特定のDHCPを設定しなければならないときは、DHCPクライアントのmanページも必ず読みましょう。

もし、システムが複数のネットワークインターフェースを持っている場合は、config_eth1config_eth2、…に対して上記の手順を繰り返してください。

設定を保存し、エディタを終了しましょう。

起動時に自動でネットワーク接続する

ブート時にネットワークインターフェースを有効にする場合は、デフォルトランレベルにそれらを追加する必要があります。

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

もし、複数のネットワークインターフェースがある場合は、net.eth0と同じ方法で、適切なnet.*ファイルを作成しなければなりません。

もし、ブート後、ネットワークインターフェース名(現在、このドキュメントではeth0と記述)が間違っていた場合、次の手順で修正してください。

  1. 正しいインターフェース名で/etc/conf.d/netファイルを更新します。(例えばeth0enp3s0と修正)
  2. 新しいシンボリックリンクを作成。(例えば/etc/init.d/net.enp3s0
  3. 古いシンボリックリンクを消去。(rm /etc/init.d/net.eth0
  4. 新しいスクリプトをデフォルトランレベルに追加。
  5. rc-update del net.eth0 defaultで古いスクリプトを消去。

hostsファイル

次に、ネットワーク環境をLinuxに伝えます。これは/etc/hostsに定義され、ネームサーバでは解決できないホストについて、ホスト名からIPアドレスを決められるようになります。

root #nano -w /etc/hosts
FILE /etc/hostsネットワーク情報の記述
# 以下は本システムの定義です。必ず設定されなければなりません。
127.0.0.1     tux.homenetwork tux localhost
  
# ネットワーク上にあるその他のホストの定義です。任意設定です。
192.168.0.5   jenny.homenetwork jenny
192.168.0.6   benny.homenetwork benny

設定をセーブし、エディタを終了しましょう。

任意自由選択: PCMCIAを機能させる

PCMCIAユーザーは、sys-apps/pcmciautilsパッケージをインストールする必要があります。

root #emerge --ask sys-apps/pcmciautils

システム情報

rootパスワード

passwdコマンドでルートのパスワードを設定します。

root #passwd

ルートアカウントはとてもパワフルなアカウントなので、強いパスワードを与えてください。後で、日常の作業のための一般ユーザーアカウントを作成します。

initとboot設定

OpenRC

Gentoo で OpenRC を使用しているときは、OpenRC はシステムのサービス、スタートアップ、シャットダウンの設定に /etc/rc.conf を使います。/etc/rc.conf を開いて、ファイル中のすべてのコメントを楽しみましょう。設定をレビューして、必要な箇所を変更してください。

root #nano -w /etc/rc.conf

次に、キーボードを設定するために/etc/conf.d/keymapsを開いて、正しいキーボードを選択、設定します。

root #nano -w /etc/conf.d/keymaps

keymap変数に特に注意してください。もしキーマップを間違えた場合、キーボードを叩くたびに、奇妙な現象が起こるでしょう。

最後に、クロック設定をするために/etc/conf.d/hwclockを編集します。個々の好みに合わせて設定できます。

root #nano -w /etc/conf.d/hwclock

もし、ハードウェアクロックがUTCになっていない場合、このファイルにclock="local"を記述しなければなりません。そうでない場合、クロックスキューが発生するでしょう。

systemd

システムが正しく起動できるようにするために、systemd-firstboot --prompt --setup-machine-id を実行することをおすすめしますが、必要なステップをひとつずつ実行することもできます。





システムロガー

同じ機能が複数のパッケージによって提供されるツールがいくつかあります。そういったツールはstage3アーカイブには含まれていません。どのパッケージをインストールしたいのかをあなた次第で選んでください。

まずシステムにロギング機能を提供するツールを決定しましょう。UnixとLinuxでは歴史をかけて素晴らしいログ機能を発展させてきました -- お望みならログファイルにシステムで起こった全てを記録できます。これはシステムロガーを使って行ないます。

Gentooでは複数のシステムロガーから使いたいものを選択することができます。このうちのいくつかを紹介します。

  • app-admin/sysklogdは、システムのログを取得するための伝統的なデーモンを集めたものです。デフォルトのログ設定をそのまま使ってもうまく働くので、このパッケージは初心者にはいい選択肢です。
  • app-admin/syslog-ngは、進化したシステムロガーです。1つの大きなファイルにログを取る以上のことをするには、何らかの設定が必要です。更に上級のユーザは、ロギングの発展性に基いてこのパッケージを選択できます。スマートなロギングのためには追加の設定が必要になることに注意してください。
  • app-admin/metalogは、高度な設定ができるシステムロガーです。

Portageツリーにはまだまだ他の選択肢があることでしょう。日毎にPortageツリーのパッケージは増えていますから。

Tip
もしsysklogdかsyslog-ngを使おうと思っているなら、これらのシステムログツールにはログファイルをローテーションする機構が無いので、後でlogrotateをインストールして設定しましょう。
Tip
systemdは"journal"と呼ばれる、独自のロギング機能を提供しています。別のシステムログのプロバイダーをインストールすることは、systemdが動作しているシステムでは任意です。そして、システムログのデーモンにjournalからのメッセージを読ませるように追加で設定をする必要がある場合があります。

選択したシステムログツールをインストールするには、それをemergeして、rc-updateを使ってデフォルトのランレベルにスクリプトを追加してください。次の例ではapp-admin/sysklogdをインストールします。

root #emerge --ask app-admin/sysklogd
root #rc-update add sysklogd default

任意自由選択: cronデーモン

次はcronデーモンです。cronデーモンは入れても入れなくてもよく、システムに必須ではありませんが、インストールしておくのが賢明でしょう。

cronデーモンは予定されたコマンドを実行します。定期的(例えば日毎、週毎、月毎)にあるコマンドを実行する必要があるならとても重宝します。

Gentooではいくつものcronデーモンを提供しています。例をあげると sys-process/bcronsys-process/dcronsys-process/fcron、そしてsys-process/cronieです。その内の1つをインストールするのはシステムロガーをインストールするのに似ています。次の例はsys-process/cronieをインストールします。

root #emerge --ask sys-process/cronie
root #rc-update add cronie default

dcron を使う場合、初期設定のための追加コマンドが必要です。

root #crontab /etc/crontab

fcron を使う場合、追加で emerge ステップが必要です:

root #emerge --config sys-process/fcron

任意自由選択: ファイルのインデックスを作成

より高速なファイル検索のためにファイルシステム中の各ファイルのインデックスを作成するときは、sys-apps/mlocateをインストールしてください。

root #emerge --ask sys-apps/mlocate

任意自由選択: リモートアクセス

インストール後、システムにリモートからアクセスできるようにするためには、sshdをデフォルトのランレベルに追加してください。

root #rc-update add sshd default

(たとえばリモートサーバで)シリアルコンソールからアクセスしなければならない場合、/etc/inittabのシリアルコンソールの部分のコメントを外します。

root #nano -w /etc/inittab
# SERIAL CONSOLES
s0:12345:respawn:/sbin/agetty 9600 ttyS0 vt100
s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100

ファイルシステムツール

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

次の表は、ファイルシステム毎にどのツールをインストールすべきかを示します。

ファイルシステム パッケージ
Ext2, 3, 4 sys-fs/e2fsprogs
XFS sys-fs/xfsprogs
ReiserFS sys-fs/reiserfsprogs
JFS sys-fs/jfsutils
VFAT (FAT32, ...) sys-fs/dosfstools
Btrfs sys-fs/btrfs-progs
ZFS sys-fs/zfs
Tip
Gentooのファイルシステムについてのさらなる情報は、ファイルシステムの記事を参照してください。

ネットワークツール

もし、追加のネットワークツールを必要としない場合、ブートローダーに進みましょう。

DHCPクライアントをインストールする

重要
DHCPはあくまで任意選択ですが、多くのユーザはネットワークに接続するためにDHCPクライアントが必要になるでしょう。この機会にDHCPクライアントをインストールしましょう。もしこの設定を忘れた場合、ネットワークに接続できないことになり、これによりDHCPクライアントがダウンロードできなくなってしまいます。

netifrcスクリプトを使用して、一つ以上のネットワークに自動的にIPアドレスを付与するときは、DHCPクライアントをインストールする必要があります。Gentooリポジトリには多くのDHCPクライアントがありますが、net-misc/dhcpcdがお薦めです。

root #emerge --ask net-misc/dhcpcd

dhcpcd articledhcpcdに関するより多くの情報があります。

任意自由選択: PPPoEクライアントのインストール

もしインターネットに接続するためにPPPを使うのであれば、net-dialup/pppパッケージをインストールします。

root #emerge --ask net-dialup/ppp

任意自由選択: ワイヤレス・ネットワークツールのインストール

もしシステムをワイヤレス・ネットワークに接続させるつもりならば、オープンネットワークあるいはWEPネットワークを使用するためにnet-wireless/iwパッケージを、あるいはWPAまたはWPA2ネットワークを使用するためにnet-wireless/wpa_supplicantパッケージをインストールしてください。iwはまた、ワイヤレス・ネットワークの検出のための便利で基本的な診断ツールでもあります。

root #emerge --ask net-wireless/iw net-wireless/wpa_supplicant

次はブートローダーです。






ブートローダーを選ぶ

これまでLinuxカーネルを設定すると共に、システムツールをインストールし、設定ファイルを修正してきました。そして今、最も重要なLinuxインストールの最後の一片をインストールします。それがブートローダーです。

ブートローダーは、ブート中にLinuxカーネルを起動することに責任を負っています。ブートローダーがないと、システムは電源ボタンが押されたときに、どう事を進めればいいのかわからなくなってしまいます。

amd64 に対して私たちは、 BIOS ベースのシステムについては GRUB2 または LILO を設定する方法を、UEFI システムについては GRUB2 または efibootmgr を設定する方法を文書化しています。

このセクションでは、ブートローダーパッケージの "emerge" と、ブートローダーのシステムへの "インストール" という表現を使っています。ここでいう "emerge" とは Portage を使ってソフトウェアパッケージがシステムで利用できるようにすることです。そして "インストール" はブートローダーが必要なファイルをコピーしたりディスク上の特定の領域に変更を加えることで、ブートローダーを有効化し次回起動時に使用可能な状態にすることを指します。

デフォルト: GRUB2

デフォルトでは、大半の Gentoo システムが GRUB Legacy の後継である GRUB (sys-boot/grub パッケージで利用できます) を使用しています。GRUB2 は追加の設定なしに従来の BIOS ("pc") システムで使うことができ、それ以外のプラットフォームでもビルド前のわずかな設定で済みます。詳しくは、 GRUB2 ページの 前提条件 節をご覧ください。

Emerge

MBR パーティションテーブルのみをサポートする従来の BIOS システムを使う場合、GRUBをインストールするのに追加の設定は必要ありません:

root #emerge --ask --verbose sys-boot/grub

UEFI ユーザーの方へ: 上記のコマンドを実行すると、現在有効な GRUB_PLATFORMS 値が表示されます。UEFI 対応のシステムでは GRUB_PLATFORMS="efi-64" が有効になっていることを確認してください (これがデフォルトです) 。もし有効になっていなければ、GRUB2 パッケージを EFI の機能付きでビルドするために、 GRUB2 を emerge する前に /etc/portage/make.confGRUB_PLATFORMS="efi-64" を追加しなければなりません。

root #echo 'GRUB_PLATFORMS="efi-64"' >> /etc/portage/make.conf
root #emerge --ask sys-boot/grub
なんらかの経緯で GRUB_PLATFORMS="efi-64" を有効にしていない状態で GRUB2 が emerge されてしまった場合は、この行を make.conf に追加して、 emerge--update --newuse オプションを渡せば、 world パッケージセット の依存関係を再計算することができます:
root #emerge --ask --update --newuse --verbose sys-boot/grub

これで GRUB2 ソフトウェアがシステムに emerge されましたが、インストールが終わったわけではありません。

インストール

つぎに、 grub-install コマンドを使って、必要な GRUB2 ファイルを /boot/grub/ ディレクトリにインストールします。もし(システムがブートする)一番目のディスクにインストールするなら、 /dev/sda ですので、以下のどちらかのコマンドでインストールすることができます:

  • BIOS を利用する場合:
root #grub-install /dev/sda
  • UEFI を利用する場合:
Important
grub-install を実行する前に EFI システムパーティションがマウントされているか必ず確認してください。 grub-install が GRUB EFI ファイル (grubx64.efi) を間違ったディレクトリにインストールしてしまい、しかも間違ったディレクトリが使われた形跡をまったく残さないということが起こりえます。
root #grub-install --target=x86_64-efi --efi-directory=/boot
Note
--efi-directory オプションは、 EFI システムパーティションのルートに変更してください。これは /boot パーティションが FAT の亜種でフォーマットされていない場合、必須です。
Important
grub_installCould not prepare Boot variable: Read-only file system といったエラーを返した場合、コマンドを成功させるためには efivars という特別なマウントを読み書き可能な状態で再マウントする必要があるかもしれません:
root #mount -o remount,rw /sys/firmware/efi/efivars

いくつかのマザーボードメーカーは、EFI システムパーティション (ESP) 内の .EFI ファイルの場所として /efi/boot/ ディレクトリのみをサポートしているようです。GRUB のインストーラーは --removable オプションを付けることでこの操作を自動的に行うことができます。以下のコマンドを実行する前に ESP がマウントされていることを確認してください。ESP が (以前お勧めしたとおり) /boot にマウントされているとすると、以下を実行します:

root #grub-install --target=x86_64-efi --efi-directory=/boot --removable

このコマンドは UEFI 仕様で定義されているデフォルトディレクトリーを作成し、また grubx64.efi ファイルを同じ仕様で定義されている'デフォルト'の EFI ファイルの場所にコピーします。

設定

次に、/etc/default/grub ファイルと /etc/grub.d スクリプトで指定されたユーザ固有の設定をもとに、 GRUB2 設定ファイルを生成します。GRUB2 はどのカーネルを起動するか(/boot/ 内で利用可能な最上位のもの)、どれがルートファイルシステムかを自動で検出してくれるので、ほとんどの場合、ユーザによる設定の必要はありません。カーネルパラメータは /etc/default/grubGRUB_CMDLINE_LINUX 変数で指定することができます。

最終的な GRUB2 の設定ファイルを生成するには、 grub-mkconfig コマンドを実行します:

root #grub-mkconfig -o /boot/grub/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-4.9.16-gentoo
Found initrd image: /boot/initramfs-genkernel-amd64-4.9.16-gentoo
done

このコマンドの出力を見て、ブートに必要な Linux イメージが見つかったという報告が少なくともひとつあることを確認してください。もし initramfs を使っているか genkernel でカーネルをビルドしている場合は、正しい initrd イメージが認識されていることも確認してください。もし確認できなかった場合、/boot/ にそれらのファイルが存在するかどうか ls コマンドで確かめてください。必要なファイルが存在していなければ、カーネルの設定とインストールをやり直さなければなりません。

Tip
接続されたドライブからほかのOSを検出するために、os-prober ユーティリティを使うこともできます。Windows 7、8.1、10、あるいはほかの Linux ディストリビューションが検出できるようになります。このようなデュアルブート環境を作るには、sys-boot/os-prober パッケージをインストールしてから grub-mkconfig コマンドを再実行するとよいでしょう。検出がうまくいかない時は、Gentoo コミュニティに助けを求める前に GRUB2 記事をよく読み直してみてください。

代替案1: LILO

Emerge

LILO (the LInuxLOader) は検証済みで、かつとても有用なLinuxのブートローダーです。しかしながら、GRUB と比べるといくつかの機能を欠いています。いくつかのシステムでは LILO は動作するものの GRUB は動作しないため、 LILO が今でも使われています。もちろん、 LILO をよく知っており使い続けたいと思っている人々もこれを使っています。どちらにしても、Gentoo は両方のブートローダーをサポートしています。

LILO のインストールは簡単です; emerge を使います。

root #emerge --ask sys-boot/lilo

設定

LILO の設定をするにはまず、/etc/lilo.conf を作成します:

root #nano -w /etc/lilo.conf

設定ファイルではブートできるカーネルを参照するためにセクションを使用しています。この設定ファイルで入力する必要があるので、カーネルファイル (カーネルバージョンも含む) や initramfs ファイルを確認しておいてください。

Note
ルートファイルシステムが JFS の場合には読み書き可能なマウントの前にログをリプレイする必要があるため、append="ro" という行を各ブート項目の後に書き加えてください。
FILE /etc/lilo.confLILO の設定例
boot=/dev/sda             # MBRにLILOをインストールする
prompt                    # ユーザに他のセクションを選択させる機会を与える
timeout=50                # デフォルトのセクションを起動する前に5秒間待つ
default=gentoo            # タイムアウトに達した場合、"gentoo"セクションを起動する
compact                   # これは劇的にロード時間を減らし、マップファイルをより小さくし続ける。いくつかのシステムでは失敗する場合がある。
  
image=/boot/vmlinuz-4.9.16-gentoo
  label=gentoo            # このセクションの名前
  read-only               # ルートを読み込み専用で始める。変えないこと!
  root=/dev/sda3          # ルートファイルシステムの場所
  
image=/boot/vmlinuz-4.9.16-gentoo
  label=gentoo.rescue     # このセクションの名前
  read-only               # ルートを読み込み専用で始める。変えないこと!
  root=/dev/sda3         # ルートファイルシステムの場所
  append="init=/bin/bb"   # Gentooの静的レスキューシェルを起動する
  
# 次の2行はWindowsとのデュアルブートのための行です。
# この例では、Windowsは/dev/sda6に格納されているとします。
other=/dev/sda6
  label=windows
Note
異なるパーティション構成やカーネルイメージを使用している場合はそれに応じて調整してください。

initramfs が必要な場合、設定を変更してその initramfs ファイルを参照し、また initramfs に root デバイスの場所を渡すようにします:

FILE /etc/lilo.confブートエントリーに initramfs の情報を加える
image=/boot/vmlinuz-4.9.16-gentoo
  label=gentoo
  read-only
  append="root=/dev/sda3"
  initrd=/boot/initramfs-genkernel-amd64-4.9.16-gentoo

追加のオプションをカーネルに渡す必要がある場合には append 文を使います。たとえばフレームバッファーを有効化するために video 文を追加するには:

FILE /etc/lilo.confブートオプションに video パラメータを追加する
image=/boot/vmlinuz-4.9.16-gentoo
  label=gentoo
  read-only
  root=/dev/sda3
  append="video=uvesafb:mtrr,ywrap,1024x768-32@85"

genkernel を使用したユーザーは、そのカーネルがインストール CD に使われたのと同じブートオプションを使用することを知っておいてください。たとえば SCSI デバイスのサポートを有効化する必要がある時は doscsi をカーネルオプションとして追加します。

それではファイルを保存して終了します。

インストール

仕上げに実行ファイル /sbin/lilo を起動して、LILO に /etc/lilo.conf の設定をシステムへ適用させます (つまり、自身をディスクにインストールさせます)。新しいカーネルをインストールしたりカーネルのファイル名が変更された際には、システムをブートさせるために lilo.conf ファイルに変更を加えるたびに /sbin/lilo を実行しなければならないことを覚えておいてください。

root #/sbin/lilo

代替案2: efibootmgr

UEFI ベースのシステムでは、システムの UEFI ファームウェア (言い換えると最初のブートローダー) を直接操作して UEFI ブートエントリーを見つけ出すことができます。こうしたシステムでは GRUB2 のようなシステムのブートを補助する追加の (あるいは第二の) ブートローダーは必要ありません。それでも GRUB2 といった EFI ベースのブートローダーが存在しているのは、UEFI システムのブートプロセスにおける機能を拡張するためです。efibootmgr は、システムのブートについて最小限 (かつ厳格) なアプローチをとるユーザーにまさに適しています; ユーザーの多くにとっては (前に見た) GRUB2 を使用する方が簡単です。なぜなら GRUB2 は UEFI システムをブートする際に柔軟なアプローチを提供するからです。

sys-boot/efibootmgr アプリケーションはブートローダーではないということを覚えておいてください; これはインストール済みの Linux カーネルを(必要であれば)追加のオプションとともにブートさせたり複数のブートエントリーを使用したりできるように UEFI ファームウェアと対話して設定を更新するためのツールです。この対話は EFI 変数を介して行われます (したがって、EFI 変数のカーネルサポートが必要です)。

続けるEFI stub kernel の記事を必ず読んでください。カーネルをシステムの UEFI ファームウェアから直接ブートできるようにするには、特有のオプションを有効化しなければなりません。カーネルの再コンパイルが必要になる場合があります。また、efibootmgr の記事を見てみるのも良い考えです。

Note
繰り返しますが、efibootmgr は UEFI システムのブートにおいて必須ではありません。Linux カーネルはそれ自体直接ブートさせることができ、また追加のカーネルコマンドラインオプションも Linux カーネルの中に組み込むことができます(ユーザーがブートパラメーターをコマンドラインオプションとして指定できる、CONFIG_CMDLINE というカーネルの設定オプションがあります)。initramfs でさえも、カーネルの中に'組み込む'ことができます。

この方法を選んだら、まず efibootmgr をインストールします。

root #emerge --ask sys-boot/efibootmgr

そして /boot/efi/boot/ を作成してカーネルをその中に bootx64.efi という名前でコピーします:

root #mkdir -p /boot/efi/boot
root #cp /boot/vmlinuz-* /boot/efi/boot/bootx64.efi

つぎに、"Gentoo" という名称のブートエントリーが作成され、これは新規にコンパイルされたEFIスタブカーネルをブートするものであることを、UEFI ファームウェアに知らせます:

root #efibootmgr --create --disk /dev/sda --part 2 --label "Gentoo" --loader "\efi\boot\bootx64.efi"

イニシャルRAMファイルシステム (initramfs)を用いるときには、適切なブートオプションを加えてください:

root #efibootmgr -c -d /dev/sda -p 2 -L "Gentoo" -l "\efi\boot\bootx64.efi" initrd='\initramfs-genkernel-amd64-4.9.16-gentoo'
注意
UEFI の定義には、ディレクトリーのセパレーターには \ を用いなければなりません。

これらの変更が完了したら、システムを再起動後から、"Gentoo" という名称のブートエントリーが利用可能になります。

代替案3: Syslinux

Syslinux は amd64 アーキテクチャ用のもう一つの代替ブートローダーです。MBR をサポートしており、バージョン 6.00 からは EFI ブートもサポートしています。また、PXE (ネットワーク) ブートやあまり知られていないオプションもサポートします。Syslinux は多くの人々に人気のあるブートローダーですが、このハンドブックではサポートしていません。このブートローダーの emerge やインストールに関する情報は Syslinux の記事で得ることができます。


システムのリブート

chroot環境を出て、全てのパーティションをアンマウントします。次に、最終かつ真のテストを実行するためのマジカルコマンドrebootを入力しましょう。

root #exit
cdimage ~#cd
cdimage ~#umount -l /mnt/gentoo/dev{/shm,/pts,}
cdimage ~#umount -R /mnt/gentoo
cdimage ~#reboot

もちろん、ブートCDを取り出しておいてください。そうしないと新しいGentooではなく、再度CDをブートしてしまいます。

新規にインストールされたGentooをリブートした後は、最終章インストールの締めくくりに進みましょう。





ユーザー管理

毎日使用するためのユーザを追加します

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

グループは、そのグループに所属するメンバーができることを定義します。次の表はいくつかの重要なグループを示します。

グループ 説明
audio オーディオデバイスにアクセスできます。
cdrom 光学デバイスに直接アクセスできます。
floppy フロッピーデバイスに直接アクセスできます。
games ゲームができます。
portage Portageの制限されたリソースにアクセスできます。
usb USBデバイスにアクセスできます。
video ビデオキャプチャのためのハードウェアにアクセスして、ハードウェアアクセラレーションを有効にできます。
wheel suを使うことができます。

例えばwheelusersaudioの3グループに所属するlarryというユーザを作成するには、最初にrootとしてログインし(rootだけがユーザを作ることができます)、useraddを実行します。

Login:root
Password: (rootのパスワードを入力してください)
root #useradd -m -G users,wheel,audio -s /bin/bash larry
root #passwd larry
Password: (larryのパスワードを入力してください)
Re-enter password: (確認のためにもう一度パスワードを入力してください)

もし、rootで何か作業をする場合は、一時的にroot権限を得るためにsu -を使います。別の方法はsudoパッケージを使用することです。これは(正しく設定されれば)とても安全です。

ディスクのクリーンアップ

tarファイルの削除

Gentooのインストールおよびリブート完了後、かつインストールがすべてうまくいった場合、ダウンロードしたステージ3のtarファイルを削除できます。このファイルは/ディレクトリにダウンロードされたことを思いだしましょう。

root #rm /stage3-*.tar.*

次にすることは?

ドキュメント

次に何をすればいいかわかりませんか?探索する道が多くあります。Gentooには多くの可能性と共にユーザーが存在します。それゆえ、このwikiや他のGentooに関連するサブドメイン群(下のGentooオンラインを見てください)を探索するため、多くのドキュメント化された機能を使うことができます(記述量は多くないのですが…)。

読者は絶対に、GentooハンドブックのPortageを読むべきです。これにはソフトウェアをどのように最新の状態にしておくのか、追加のソフトウェアパッケージをどのようにインストールするのか、USEフラグやGentooのOpenRC初期システムの詳細や、インストール後のGentooシステムを扱うことに関する他の様々な有益なトピックについてが説明されています。

ハンドブック以外では、コミュニティから追加提供されるドキュメントを見つけるために、Gentoo wikiの他のコーナーを探索したいと思うでしょう。Gentoo wikiチームは、Documentation topic overviewを提供しています。これは、このWikiにある記事のセレクションをカテゴリー別に一覧にしています。例えば、システムをよりあなたの国に適したものとするためには、ローカライゼーションガイドを参照します(特に英語を第二外国語として話すユーザにとって便利なものです)。

Gentooオンライン

Important
読者は、すべての公式のGentooオンラインサイトがGentooの行動規範によって治められていることに注意するべきです。Gentooのコミュニティで活動することは特権で、権利ではありません。そしてユーザは、行動規範が理由があるために存在することを知っていると見なされます。

Libera.Chatが運営するInternet Relay Chat(IRC)ネットワークと、メーリングリストを除いて、ほとんどのGentooのウェブサイトは質問をしたり、議論を開始したり、バグを報告するために、サイト単位でアカウントを必要とします。

フォーラムとIRC

私たちのGentoo forumsや多くのInternet Relay Chat Channelsの一つに参加することはウェルカムです。新規のGentooのインストールの最中に遭遇した問題が、過去に発見されたか、またその後いくつかのフィードバックの後に解決したかをフォーラムで調べるのは簡単です。初めてのGentoo故に他のユーザがインストールの問題を経験する可能性は驚くべきものです。ユーザはGentooサポートチャンネルで手助けを求める前に、フォーラムやwikiを調べるよう勧められています。

メーリングリスト

フォーラムやIRCでアカウントを作成するよりはむしろ、メール上でサポートやフィードバックを求めるほうがいいというコミュニティメンバーのために、いくつかのメーリングリストが利用可能です。ユーザは特定のメーリングリストを購読するために説明に従う必要があります。

バグ

時々、wikiを見たり、フォーラム内を探したり、IRCチャンネルやメーリングリストにサポートを求めても、問題に対する既知の解決策がない場合があります。一般的にこれは、GentooのBugzillaサイトにバグを公開する合図です。

開発ガイド

Gentooの開発についてより多くのことを学びたいと考えている読者は、開発ガイドを見ると良いでしょう。このガイドにはebuildの書き方、eclassの扱い方についての説明や、Gentooの開発の背後にある、多くの一般概念の定義が載っています.

締めくくり

Gentooは堅固で、柔軟でそして素晴らしく維持されたディストリビューションです。開発者コミュニティは、Gentooをどのようにさらに「よりよい」ディストリビューションにするかについてのフィードバックを聞けることを嬉しく思います。

確認として書いておきますが、このハンドブックに対するすべてのフィードバックは、ガイドライン(ハンドブックのはじめにあるどうやってハンドブックを改善しますか?のセクションに詳細があります)に従っているべきです。

We look forward to seeing how our users will choose to implement Gentoo!




Warning: Display title "Gentoo Linux amd64 ハンドブック: Gentoo をインストールする" overrides earlier display title "ハンドブック:AMD64/フル/インストール".