Gentoo Logo

Disclaimer : This document is not valid and is not maintained anymore.


Gentoo Linux 1.4 インストール手引書

Content:

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

序文

Gentoo Linux へようこそ! Gentoo Linuxはいろいろな方法でインストールすることができます。 手早くインストールしたいなら、コンパイル済みパッケージを使う方法があります。 とことん自分の好みに合わせてカスタマイズしたい人は、 Gentoo Linux全体をソースコードからコンパイルすることもできます。 どのようにインストールするかはあなた次第です。

正式に1.4がリリースされたことに伴なう重要な変更点は、 2枚組のCDによるインストールセットが提供されることです。 このCDはGentoo Linux Storeで購入することができますし、 ミラーサイト からダウンロードすることもできます。 この2枚組CDのインストールセットはx86(486かそれ以降)、i686(Pentium Pro, Pentium II, Athlon/Duronかそれ以降)、 Pentium III、Pentium 4、Athlon XP向けが用意されています。 どのセットを選べばよいのかを知るには、Gentoo Linux Storeでそれぞれの商品の説明を読んでください。 このお店の説明にはCPUの互換性について詳しく書いてあります。

LiveCDのISOイメージはGentoo Linuxのミラーサイトからダウンロードすることができます。 x86アーキテクチャ用のLiveCDはreleases/x86/1.4/livecd/というディレクトリにあります。

インストール用CD

2枚組CDについて、それぞれ説明します。 最初のCD("CD 1")は"インストール用 LiveCD"と呼ばれ、起動可能なCD-ROMです。 つまり"CD 1"をドライブに入れれば、Gentoo LinuxをCDから直接走らせることができます。 この、CDバージョンのGentoo Linuxを使って、Gentoo Linux 1.4をハードディスクにインストールすることができます。 この"CD 1"には、Gentoo Linux環境の他に、Gentoo Linuxを手早くインストールするために必要なものが全て含まれており、 インターネット接続環境が無くてもインストール可能です。 さらに、"CD 1"にはXFree86 Xサーバなど、いくつかのコンパイル済みパッケージも含まれています。 "CD 1"のISOイメージは-cd1を含むファイル名になります。

2番目のCD("CD 2")はブートはできませんが、数多くのコンパイル済みパッケージを含んでいます。 たとえば、KDE、GNOME、OpenOffice、Mozilla、Evolutionといったものがあります。 "CD 2"は、使うかどうかは任意であり、 Gentoo Linuxをできるだけ速くインストールしたい人の利便を図るものです。 この"CD 2"に含まれるパッケージをソースからコンパイルするしたら、 標準的なシングルプロセッサのシステムでは36時間程度掛かります。 "CD 2"のISOイメージは-cd2を含むファイル名になります。

Note: Gentoo Linuxの2枚組CDセットは、GNOME、KDE、Mozilla、OpenOfficeを含むコンパイル済みGentoo LinuxシステムGentoo Reference Platformを含んでいます。 Gentoo Reference Platform("GRP")は、パッケージを短時間でインストールする機能を実現するために用意されました。 Gentoo Linuxの基本である、「ソースからのコンパイル」は常に選択肢として用意されます。 GRPの目的は、Gentooの強力な「ソースからのコンパイル」によるインストールに影響をあたえることなく、 Gentoo Linuxをより手軽なものにすることです。

2枚組CDセットの他に、とても小さい"basic" LiveCDも用意しており、こちらを使ってシステムをブートすることができます。 ブートしたあとは、インターネットへの接続などを設定したのち、ネットワーク経由でダウンロードしながらインストールできます。 このCDの特長はその小ささで、ISOイメージのダウンロード時間が節約できます。 あなたが慣れたユーザで、Gentoo Linuxの最新バージョンの利用したいと考えており、 良好なネットワーク接続環境を持っているなら、このCDは良い選択となるでしょう。 "basic" LiveCDのISOイメージは-basicを含むファイル名になります。

必須環境

CDを使うどのインストール方法を選んだとしても、 インストールを行なうには486以上のCPUおよび少なくとも64Mバイトのメモリが必要となります (Gentoo Linuxは64Mバイトのメモリと64Mバイトのスワップでビルドに成功していますが、 このような環境下では、とても時間がかかります)。

インストール方法の決定

LiveCDを使ってブートしたあとにも、さらに選択肢が用意されています。 Gentoo Linuxは3つある"ステージ"の圧縮ファイルのうち、どれかひとつを使ってインストールすることができます。 どれを使うかは、システムのどの程度を自分でコンパイルして用意するかによって決まります。 ステージ1圧縮ファイルは、ブートストラップしてシステム全体を一から組み立てるときに使います。 ステージ2圧縮ファイルは、既にブートストラップが済んだ状態からシステムを構築する場合に使います。 ステージ3圧縮ファイルは、標準的な設定で構築されたGentoo Linuxシステムを含んでいます。 "GRP"を使ってインストールすることを考えているのなら、ステージ3を選択しなければなりません。

GRPを使わずにインストールするとしたら、どのステージの圧縮ファイルを選んだらよいのでしょうか?

ここで、その手助けとなるように少し説明をします。

ステージ1を使うと、インストール直後のシステムに対して、 最適化オプションやコンパイル時に組込まれる機能を完全にコントロールすることができます。 自分のしていることをきちんと把握しているパワーユーザには、ステージ1が良いでしょう。 また、Gentoo Linuxの内部について知りたい人にとっても良い選択となります。

ステージ2を使うと、ブートストラップを省略することができます。 用意されたステージ2圧縮ファイルの最適化に不満がないならこれを使ってください。

ステージ3を使うことでインストール時間がもっとも短くなりますが、 最適化を自分でコントロールすることはできません。 しかしGentoo Linuxのメジャーリリースでは、 ポピュラーなプロセッサに対してそれぞれ最適化されたステージ3圧縮ファイルを用意しますので、 どのプロセッサに対してもステージ3は、素早いインストールと充分に最適化されたシステムという最高の環境を提供します。

Gentoo Linuxをインストールするのが初めてなら、ステージ3圧縮ファイルによるインストール、もしくはステージ3とGRPの組合せを選択すると良いでしょう。

Note: 上級者向け:ステージ3を使ってインストールする場合は、 /etc/make.confのCHOST設定を変えてはいけません。 変更する必要があるならば、ステージ1圧縮ファイルを使って、 希望するCHOST設定のシステムを構築してください。 標準的なCHOSTは次のように設定されています: i686-pc-linux-gnu

Important: インストールの途中で見つけたバグをレポートする時は、 原則としてhttp://bugs.gentoo.orgを使ってください。 バグがそのソフトウェアそのものに起因するような場合、 Gentoo Linuxの開発チームがそれを判断してソフトウェアの開発チーム (例えばKDE開発チームなど)に報告します。

Note: LiveCDに収められているインストール手引書は、 我々のウェブサイトにあるインストール手引書(日本語訳)とは違い、 必ずしも最新とは限りません。

インストール手順

それではインストールの手順を簡単に見てみましょう。 まずLiveCDイメージをダウンロードし、CDを作成します。 LiveCDでブートしてプロンプトが出たら、まずパーティションを、 続いてファイルシステムを作成し、ステージ1、ステージ2、ステージ3圧縮ファイルのどれかを展開します。 ステージ1かステージ2の圧縮ファイルを使用する場合、ステージ3に進むために適切な手順を踏む必要があります。 ステージ3に進みシステムに対して各種の設定(設定ファイルの調整、 ブートローダーのインストールなど)を行ない、再起動すればGentoo Linuxの完成です。 基本的なGentoo Linuxシステムを動作させたら、2枚組CDセットの"CD 2"を使って KDE、GNOME、OpenOffice、Mozilla他のコンパイル済みパッケージをインストールすることができます。

以下に、スタートするステージ別にどのような手順が必要なのかを示します。

圧縮ファイル インターネットアクセス メディア 手順
1 必須 basic または CD 1 パーティションとファイルシステムの作成、emerge sync、ブートストラップ、emerge system、最終調整
2 必須 basic または CD 1 パーティションとファイルシステムの作成、emerge sync、emerge system、最終調整
3 CD 1を使うなら不要 basic または CD 1 パーティションとファイルシステムの作成、emerge sync(CD 1を使うなら不要)、 最終調整
3+GRP 不要 CD 1と、必要に応じてCD 2を使用 パーティションとファイルシステムの作成、最終調整、"CD 1"のコンパイル済パッケージのインストール(任意)、 再起動、KDEやGNOMEなどのパッケージのインストール("CD 2"を使う場合)

Note: ハードウェアATA RAIDのユーザは、次に進む前にこの文書の最後にあるセクションを読んでください。

2.  ブート

Warning: 先に進む前に、このセクション全体、特にブートオプションの部分をよく読んでください。 無視して先に進むと、キーボードの設定が間違っていたり、pcmciaサービスを起動していなかったりすることがあります。

選択したLiveCDでブートするところから始めましょう。 Gentoo Linuxロゴとともにブートスクリーンが表示されるはずです。 この画面ではそのままブートプロセスを進めるためにEnterを押すか、 自分のマシンに合ったカーネルとブートオプションを入力してからEnterを押してブートすることができます。 例えば、gentoo nousb nohotplugなどと入力します。 Gentoo Linuxを複数のプロセッサを搭載したシステム("SMP")で使うなら、gentooの代わりに、smpと入力してください。 そうすることで、LiveCDが1つのプロセッサだけでなく、全てのプロセッサを使えるようになります。

利用できるカーネルとオプションについては、以下の表かF2やF3キーを押すと表示されるヘルプを見てください。

利用できるカーネル 概要
gentoo 標準的なgentooカーネル (デフォルト)
nofb フレームバッファ無効化
smp smpカーネルでフレームバッファ無効化
acpi acpi=on有効かつinit中にacpiモジュールをロード
memtest メモリテストプログラムを起動
利用できるブートオプション 概要
doataraid initrdでIDE-RAIDモジュールを読み込む
dofirewire initrdでfirewireモジュールを読み込む(firewireのCD-ROMドライブ等利用者向け)
dokeymap 非USキーボード配列向けのキーマップ選択を有効にする
dopcmcia pcmciaサービスを開始する
doscsi SCSIデバイスをスキャンする(これにより動かなくなるイーサネットカードが存在する)
noapm APMモジュールの読み込みを無効にする
nodetect hwsetup/kudzuとhotplugによる検出をしない
nodhcp ネットワークカードが検出されてもDHCPを実行しない
nohotplug hotplugサービスの読み込みを無効にする
noraid evmsモジュールの読み込みを無効にする
nousb initrdでのUSBモジュールの読み込みとhotplugを無効にする
ide=nodma DMAモードでうまく動かないIDEデバイスがある場合に、強制的にDMAを無効にする
cdcache CDの中身をメモリにキャッシュする。メモリを40MB程度余分に使うが、 umount /mnt/cdromし別のCDをマウントすることができる

Enterを押すと、ちょっとしゃれたブートスクリーンとプログレスバーが表示されます。

Warning: ブートスクリーンが表示されず、画面が真っ暗なままになってしまったときは、 nofbカーネルを試してみてください。 おそらくLiveCDのカーネルではあなたのグラフィックアダプタでフレームバッファが利用できないのが原因でしょう。

ブートプロセスが完了すると、自動的に"スーパーユーザ"である"root"として"Live" Gentoo Linuxにログインします。 コンソールにはrootのプロンプト ("#") が表示されるはずです。 ここでALT-F2、ALT-F3、ALT-F4を押すと別のコンソールに切り替えることができます。 最初のコンソールに戻るにはALT-F1を押します。

Note: 上級者向け:LiveCDがブートすると、LiveCD上のrootのパスワードは ランダムな文字列に設定されます。 sshdを動かしてLiveCDにリモートからログインすることを考えているなら、 ここでpasswdコマンドを使ってrootのパスワードを変更してください。 そうしないと、ネットワーク経由でログインするための正しいパスワードを知ることができません。

既にお気づきかと思いますが、#プロンプトの上には、ネットワークの設定方法やGentoo Linuxの各ステージ圧縮ファイル、 パッケージのありかなどの説明が書かれたヘルプテキストが表示されています。

3.  補足的なハードウェア設定

LiveCDは、起動すると全てのハードウェアを検出し、適切なカーネルモジュールを読み込もうとします。 大抵の場合、これはうまく動作します。 しかし、時には必要なモジュールが読み込まれないことがあります。 ハードウェアの自動検知がうまくいかなかったら、適切なカーネルモジュールを手動でロードしなければなりません。 利用可能なネットワークカードモジュールの一覧を見るには、 ls /lib/modules/`uname -r`/kernel/drivers/net/*とタイプしてください。 モジュールをロードするには、次のようにタイプします。

Code Listing 3.1: PCIモジュール設定

(pcnet32を使っているNIC用のモジュール名に変えてください)
# modprobe pcnet32

同じように、PCI自動検知で検出されなかったSCSIデバイスにアクセスできるようにするには、 もういちどmodprobeを利用して/lib/modulesから適切なモジュールをロードします。

Code Listing 3.2: SCSIモジュールの読み込み

(aic7xxxを使っているSCSIアダプタ用のモジュール名に変えてください)
# modprobe aic7xxx
(sd_modはSCSIディスクサポートのためのモジュール)
# modprobe sd_mod

Note: SCSI CD-ROMとハードディスクのサポートはカーネルに組み込まれています。

Note: 上級者向け:Gentoo LiveCDはディスクドライブのDMAを有効にするのでディスクの転送レートは最も速い状態になりますが、 もしこれが有効にならなかったときはhdparmを使ってドライブにDMAを設定できます。

Code Listing 3.3: DMA設定

(hdXを自分のシステムのディスクデバイス名に変えてください)
(DMAを有効に)
# hdparm -d 1 /dev/hdX 
(DMAと、性能を上げる安全なオプションを有効に)
# hdparm -d1 -A1 -m16 -u1 -a64 /dev/hdX
(Ultra-DMAを有効に -- 危険! -- ドライブが壊れる恐れあり)
# hdparm -X66 /dev/hdX

4.  補足的なネットワーク設定

もう動いているかも?

あなたのシステムがイーサネットによってネットワークに接続されているならば、 既にネットワークの設定が自動的に行なわれていることでしょう。 その場合は、LiveCDに含まれる多くのネットワーク関連のコマンド、 sshscppingirssiwgetlinksなどを利用できます。

ネットワーク接続できるようになっているなら、/sbin/ifconfigコマンドでloと一緒にeth0などのネットワークインタフェースが表示されるはずです。

Code Listing 4.1: /sbin/ifconfigでネットワークカードが動作しているか確認する

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

ISPのDNSサーバ(/etc/resolv.confにアドレスが書かれているはずです)や、 適当なWebサーバに対してpingを打ってみることで、パケットがネットワークに届くこと、 DNSによる名前の解決がうまく機能していることなどを確かめることができます。

Code Listing 4.2: ネットワークの確認

# ping -c 3 www.yahoo.com

ネットワークが使えるようになっていますか? それならば、残りは飛ばして次のセクションに進んでください。

PPPoE設定

インターネットへ接続するためにPPPoEが必要な場合、 どのバージョンのLiveCDにも含まれているrp-pppoeを使うのが簡単です。 adsl-setupスクリプトを使って接続の設定をしてください。 adslモデムに接続しているイーサネットデバイスとユーザ名、パスワード、 DNSサーバのIPアドレス、ファイアウォールが必要かどうか、を入力してください。

Code Listing 4.3: PPPoE設定

#  adsl-setup 
#  adsl-start 

うまくいかないようなら、ユーザ名とパスワードを間違いなく入力しているかどうか、 /etc/ppp/pap-secrets/etc/ppp/chap-secretsを見てよく確認してください。 また正しいイーサネットデバイスを指定しているかどうかも確認してください。

ネットワークの自動設定

自動的にネットワークが設定されなかった場合、いちばん簡単な設定方法は、net-setupスクリプトを実行することです。

Code Listing 4.4: net-setupスクリプト

# net-setup eth0

もちろん、お好みであれば手動で設定することもできます。その方法は次で説明します。

手動でDHCPを使う

DHCPの設定は簡単です。ご利用のISPがDHCPをサポートしていない場合は、固定IPの設定まで進んでください。

Code Listing 4.5: DHCPを使ったネットワーク設定

# dhcpcd eth0

Note: ISPによっては、ホスト名の入力が必要になります。 その場合はdhcpcdコマンドの後に-h myhostnameと書き加えてください。

もしdhcpConfig警告を受け取ったとしても、慌てないでください。 このエラーは重大なものではありません。ネットワークのテストまで進んでください。

手動で固定アドレスを設定する

システムの構築に必要なソースファイルをダウンロードすることができるようにネットワークを設定しなければなりません。 そのために必要な情報は以下の表に示されているものです。

項目 説明
IPアドレス ネットワークカードに割り当てたいIPアドレス 192.168.1.2
ブロードキャストアドレス ローカルネットワークの全てのホストにパケットをブロードキャストするためのアドレス 192.168.1.255
ネットワークマスク IPアドレスと一緒に使われ、アドレスのうちネットワークを識別する範囲とホストを識別する範囲を表現するために使われるマスク値 255.255.255.0
ゲートウェイ ローカルネットワーク以外のアドレス(インターネット接続している場合など)にパケットを転送するためのコンピュータのアドレス 192.168.1.1

システムの構築に必要なソースをダウンロードするために、ネットワークに対して適切な設定を行なう必要があります。 下記のコマンドを入力してください。その際、$IFACEを使用するネットワークインターフェイス (たいていの場合eth0)に、$IPNUMを使用するIPアドレスに、 $BCASTをブロードキャストアドレスに、$NMASKをネットワークマスクにそれぞれ置き換えてください。 routeコマンドでは、$GTWAYをデフォルトゲートウェイに置き換えてください。

Code Listing 4.6: 固定IPネットワーク設定

# ifconfig $IFACE $IPNUM broadcast $BCAST netmask $NMASK
# route add -net default gw $GTWAY netmask 0.0.0.0 metric 1 $IFACE

ここで、/etc/resolv.confを作成し、 名前解決(Webサイトや FTPサイトのIPアドレスを直接指定するのではなく名前で指定)できるようにします。 nano -w /etc/resolv.confとして、/etc/resolv.conを作成できます。 nanoは小さくて操作の簡単なエディタです。

以下に、/etc/resolv.conf作成の参考になるようにテンプレートを示します。

Code Listing 4.7: /etc/resolv.conf テンプレート

domain mydomain.com
nameserver 10.0.0.1
nameserver 10.0.0.2

10.0.0.110.0.0.2 をそれぞれプライマリDNSサーバとセカンダリDNSサーバのアドレスに書き換えてください。

プロクシ設定

プロクシを利用している場合は先に進む前にプロクシを利用する設定をしなければなりません。 次のように環境変数を設定してください。

Code Listing 4.8: プロキシ設定

(プロキシがHTTPでの通信を制限している場合:)
# export http_proxy="http://machine.company.com:1234"
(プロキシがFTPでの通信を制限している場合:)
# export ftp_proxy="ftp://machine.company.com"
(プロキシがRSYNCでの通信を制限している場合:)
# export RSYNC_PROXY="rsync://machine.company.com"

Note: プロクシを利用するために認証しなければならない場合は、 http://username:password@machine.company.com のようにしてください。 ("username:password@"が追加されています)

ネットワークの用意ができました!

これで、ネットワークの設定が終わって利用可能になったと思います。 sshscplynxirssiwgetコマンドを使って、LAN上のマシンやインターネットに接続することが可能です。

5.  システムの日付と時刻を合わせる

ここで、システムの日付と時刻を合わせてください。 dateコマンドを使います。

Code Listing 5.1: システム日付の調整

# date
Thu Feb 27 09:04:42 CST 2003
(時刻が合っていなかったら、次のようにして合わせる)
# date 022709042003
(date MMDDhhmmCCYY)

6.  ファイルシステム、パーティション、そしてブロックデバイス

ブロックデバイスとは

このセクションでは、Gentoo LinuxまたはLinux全般における、Linuxファイルシステム、 パーティション、ブロックデバイスなど、ディスクに関する事項を説明します。 ディスクに関する知識を得たところで、その後、 Gentoo Linuxのインストールをするためにパーティションおよびファイルシステムの作成手順を解説します。

まず初めに、"ブロックデバイス"を紹介します。 最も馴染みのあるブロックデバイスはおそらく1番目のIDEドライブとしてLinuxに認識されているものでしょう。

Code Listing 6.1: /dev/hdaはプライマリマスタIDEドライブを表すブロックデバイス

/dev/hda

もしSCSIドライブを使っているなら、1番目のハードディスクは次のようになるかも知れません。

Code Listing 6.2: /dev/sdaは1番目の論理SCSIドライブを表すブロックデバイス

/dev/sda

上で見たようなブロックデバイスはディスクに対する抽象的なインタフェースを表します。 ユーザプログラムは、それがIDEなのかSCSIなのかといったことを気にすることなく、これらのデバイスを使うことができます。 プログラムは、多数の連続した、ランダムアクセス可能な512バイトブロックに単純にアドレッシングできます。

パーティションとfdiskコマンド

Linuxでは、mkfs (または mke2fsmkreiserfsなど) にコマンドラインでブロックデバイスを指定して実行することで、ファイルシステムを作成します。

理論的には、"whole disk"ブロックデバイス(ディスク全体を表すもの)である、 /dev/hda/dev/sdaを使ってひとつのファイルシステムを格納することもできますが、 実際にはほとんどそのようにされることはありません。 ディスク全体を使うかわりに、もっと扱いやすい"パーティション"と呼ばれるブロックデバイスに分割します。 パーティションはfdiskと呼ばれる、パーティションテーブルを編集しそれぞれのディスクに書きこむツールを使って作成します。 パーティションテーブルはディスク全体がどのように分割されるのかを定義します。

fdiskを使って、ディスクのパーティションテーブルを見てみます。ディスク全体を表すデバイスを指定してください:

Note: パーティションテーブルを編集するには、他にcfdiskpartedpartimageなどがあります。 最も機能豊富でUnix/Linuxの世界で良く知られているfdiskの利用をお勧めします。

Code Listing 6.3: fdiskを起動する

# fdisk /dev/hda

または

Code Listing 6.4: /dev/sdaのパーティションテーブルを確認するために、fdiskを起動する

# fdisk /dev/sda

Important: ディスク内に使用中あるいは重要なデータを含んだパーティションがある場合は、 パーティションテーブルを保存したり変更したりしないように注意してください。 このような操作でディスク内のデータが失われる恐れがあります。

fdiskを実行すると、次のようなプロンプトが表示されます。

Code Listing 6.5: fdiskのプロンプト

Command (m for help): 

ディスクの現在のパーティションテーブルを表示するにはpコマンドを使います。

Code Listing 6.6: パーティション設定の一例

Command (m for help): p

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

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

Command (m for help): 

この例では、7つのLinuxファイルシステム("Linux"と表示)とスワップパーティション("Linux swap"と表示)が設定されています。

ここで、左側に表示されているそれぞれのパーティションの名前が、 /dev/hda1から始まって/dev/hda9まであることに注目してください。 かつては、パーティション作成ソフトウェアは最大4つのパーティション ("プライマリ"パーティションと呼ばれる)しか扱えませんでした。 これは厳しすぎる制限であったため、拡張パーティションと呼ばれるものが導入されました。 この拡張パーティションはプライマリパーティションとよく似ていて、同じく4つまでのパーティションを持つことができます。 しかし、拡張パーティションの中に、 論理パーティションとよばれるパーティションをいくつでも作成することができますので、 結局最大4つまでという制限を回避することができます。

/dev/hda5以降の全てのパーティションは論理パーティションです。 1から4まではプライマリまたは拡張パーティションのために予約されています。

つまり、この例では/dev/hda1から/dev/hda3はプライマリパーティションです。 /dev/hda4は拡張パーティションで、/dev/hda5から/dev/hda9を内包します。 /dev/hda4を直接使ってファイルシステムを作成することはできません。 /dev/hda5から/dev/hda9の入れ物となります。

それぞれのパーティションが"Id"、または"パーティションタイプ"と呼ばれるものを持っていることに気付いたでしょうか。 パーティションを作成したときには、パーティションタイプを正しく設定しているか確認してください。 '83'がLinuxファイルシステムのためのパーティションタイプです。'82'はLinuxスワップパーティションのためのパーティションタイプです。 'fd'はソフトウェアRAIDパーティションを作成するときの推奨パーティションタイプです。 fdiskコマンドではtコマンドでパーティションタイプを設定することができます。 Linuxカーネルは、起動時にパーティションタイプの設定を使って、ファイルシステムとスワップデバイスを自動的に識別します。

fdiskを使ってパーティションを作成する

ここまで、Linuxでのパーティション作成について説明しました。 それでは自分でGentoo Linuxをインストールするためのパーティションを作成してください。 パーティションの作成が終わると、次のような表示になるでしょう。

Code Listing 6.7: 以下の手順を行なうと、次のようにパーティションテーブルが作成されます

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

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

Command (m for help):

"初心者"におすすめのパーティション設定は、3つのパーティションから成ります。 最初のパーティション(/dev/hda1)はディスクの先頭に作成された小さなパーティションで、ブートパーティションと呼ばれます。 ブートパーティションはブートに関係する重要なデータ、たとえばGRUBブートローダの設定やLinuxカーネルなどを保持するための領域です。 ブートパーティションはLinuxをブートさせるために必要なもの全てを安全に格納できます。 日常的な利用のときは、ブートパーティションをマウントしていない状態にしておくことで安全性を確保します。 もしSCSIを利用したシステムを使っているなら、このパーティションは/dev/sda1となるでしょう。

ブートパーティションは、ディスクの先頭の領域に作成することが推奨されています。 今となっては過去の制約でしかありませんが、 かつてliloブートローダがディスクの1024番目のシリンダ以降の領域にあるカーネルを読みこむことができなかった時代から続く伝統です。

2番目のパーティション(/dev/hda2)はスワップパーティションとして利用する領域です。 カーネルは物理メモリの空き容量が少なくなったとき、スワップスペースを仮想的なメモリとして使います。 このパーティションは他の領域と比較してとても大きいということはありませんが、標準的には512MB前後の大きさで作成されます。 もしSCSIを利用したシステムを使っているなら、このパーティションは/dev/sda2となるでしょう。

3番目のパーティション(/dev/hda3)は非常に大きく、ディスクの残りの領域すべてを使って作成されます。 このパーティションは"ルート"パーティションと呼ばれ、Gentoo Linuxそのものを格納するファイルシステムが入ります。 もしSCSIを利用したシステムを使っているなら、このパーティションは/dev/sda3となるでしょう。

パーティション作成を始める前に、Gentoo Linuxをインストールする時に推奨されている、 パーティションとファイルシステムの設定についてまとめておきます。

パーティション サイズ タイプ 例でのデバイス
ブートパーティション(カーネルとブートのために必要な情報を保持) 32メガバイト Ext2/3を強く推奨(最も容易なため)。ReiserFSを使うのであれば、-o notailを付けてマウントすること。 ext3/ReiserFSを使うときは、ジャーナルのためのサイズも考慮すること。この場合は、64メガバイトが推奨となる。 /dev/hda1
スワップパーティション(128MBの制限はなくなり2GBまで可能) 一般的に、システムに搭載している物理メモリの1〜2倍のサイズとする。 Linux swap /dev/hda2
ルートパーティション(/usr、/homeなど、主たるファイルシステム) >=1.5ギガバイト ReiserFS/ext3を推奨。ext2でも良い。 /dev/hda3

それでは、先程の例と上に示した表に従ってパーティションを作成しましょう。 まず、fdisk /dev/hda(IDE)またはfdisk /dev/sda(SCSI)と入力して、fdiskを起動します。 現在のパーティション設定を確認するため、pと入力します。 保存しておかなければならないものがこのディスクにありませんか? もしあれば、先に進まないでください。 このままこの手順に従ってすすめると、ディスク上の全てのデータが消去されることになります。

Important: 以下で説明する手順では、ディスク上の全てのデータが削除されます! もしディスクにデータが入っているなら、失ってもかまわないものであることをよく確認してください。 また、うっかり違うドライブのデータを消してしまうことがないように、正しいドライブを選択しているかよく確認してください。

では、すでにあるパーティションを削除します。dと入力してエンターキーを押してください。 すると何番のパーティションを削除するのか聞いてきます。/dev/hda1を削除するなら、次のようになります。

Code Listing 6.8: パーティションの削除

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

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

ディスクの全てのパーティションを削除する場合は、pでパーティションを確認して、 dで番号を指定してパーティションを削除することを繰り返してください。 最後には、全てのパーティションが削除されて、次のような表示になるでしょう。

Code Listing 6.9: 空のパーティションテーブル

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

Device Boot    Start       End    Blocks   Id  System

Command (m for help):

これでメモリ上のパーティションテーブルは空の状態になり、ブートパーティションを作成する準備が整いました。 nで新しいパーティションを作成し、pでプライマリパーティションを指定してください。 さらに1と入力して1番目のプライマリパーティションを作成します。 先頭のシリンダ番号を聞かれたら、そのままエンターキーを押します。 最終のシリンダ番号を聞かれたら、+32Mと入力し、32MBのパーティションを作成します。 この手順では、次のように表示されたはずです。

Note: ジャーナルを使うファイルシステムではジャーナル保持のためのスペースを必要とします。標準の設定では約33MBが必要です。 そのため、ジャーナルを使うファイルを/bootとして使う場合は、+64Mと入力してください。

Code Listing 6.10: ブートパーティションを作成する手順

Command (m for help): n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1): (Hit Enter)
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +32M

pと入力してパーティションテーブルを表示してみてください。

Code Listing 6.11: 最初のパーティションが作成されました

Command (m for help): p

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

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

次にスワップパーティションを作成します。 nで新しいパーティションを作成し、pでプライマリパーティションを指定してください。 さらに2と入力して2番目のプライマリパーティションを作成します。 この場合は/dev/hda2となります。 先頭のシリンダ番号を聞かれたら、そのままエンターキーを押します。 最終のシリンダ番号を聞かれたら、+512Mと入力し、512MBのパーティションを作成します。 さらに、パーティションタイプを設定するためにtと入力し、 今作ったばかりの2番目のパーティションの2と入力し、 "Linux Swap"パーティションタイプの82を入力してください。 その後、pでパーティションテーブルを見ると次のようになるでしょう。

Code Listing 6.12: スワップパーティションが作成されました

Command (m for help): p

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

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

最後にルートパーティションを作成します。 nで新しいパーティションを作成し、pでプライマリパーティションを指定してください。 さらに3と入力して3番目のプライマリパーティションを作成します。 この場合は/dev/hda3となります。 先頭のシリンダ番号を聞かれたら、そのままエンターキーを押します。 最終のシリンダ番号を聞かれたら、そのままエンターキーを押すことでディスクの最後を指定します。 その後、pでパーティションテーブルを見ると次のようになるでしょう。

Code Listing 6.13: ルートパーティションが作成されました

Command (m for help): p

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

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

最後に、ブートパーティションに"ブート可能"フラグを設定し、これまで設定してきたパーティションテーブルをディスクに書きこみます。 /dev/hda1を"ブート可能"にするには、aと入力した後、ルートパーティションのパーティション番号1を入力します。 ここでpでパーティションテーブルを確認すると、/dev/hda1パーティションの"Boot"フィールドに*がついていることがわかるでしょう。 さて、いよいよディスクにパーティションテーブルを書き込みます。 そのためには、wと入力し、エンターキーを押します。 これで、Gentoo Linuxをインストールするための正しいパーティション設定ができました。

Note: fdiskcfdiskから指示があったら、新しいパーティションを認識できるようにするため、コンピュータを再起動してください。

ファイルシステムの作成

パーティションを作りましたので、次にブートパーティションとルートパーティションにファイルシステムを作成し、 マウントしたりデータを保存したりできるようにします。 また、スワップパーティションを作成し、スワップ領域が使えるようにします。

Gentoo Linuxはいくつかのファイルシステムをサポートしています。 これらはそれぞれ、強み、弱みを持っており、性能にも特徴があります。 作成できるのは、ext2、ext3、XFS、JFSおよびReiserFSファイルシステムです。

ext2は枯れたLinuxファイルシステムですが、メタデータジャーナリングがありません。 そのため、システム起動時のファイルシステムチェックに長い時間がかかることがあります。 実はジャーナリングを備えた、より新しいファイルシステムが存在し、 それは素早く整合性を確認できるので、ジャーナリングを備えていないext2より好まれているようです。 ジャーナリングファイルシステムではシステム起動時にファイルシステムに不整合が見つかっても、 待たされることがありません。

ext3はジャーナリングを備えたext2ファイルシステムで、メタデータジャーナリングによって、 素早い復旧だけでなく拡張ジャーナリングモードでfull dataとordered dataジャーナリングが可能です。 ext3は安定した信頼できるファイルシステムです。多くの場合、まずまずの性能を発揮します。 内部構造において"ツリー"のような仕組みを持たないため、条件によって性能が落ちることがあります。 大きなファイルシステムを作成するときや、大きなファイルを取り扱うとき、 またあるディレクトリに大量のファイルを格納するような場合には理想的な選択とは言えません。 しかし、極端な条件でなければ、ext3は優れたファイルシステムと言えます。

ReiserFSはB*-ツリーを基礎として作られたファイルシステムで、非常に良い性能を持っています。 小さなファイル(だいたい4kバイト未満)を扱うときは、ext2やext3よりも非常に高い性能を発揮し、 時には、10〜15倍にも達します。ReiserFSは大きなファイルシステムなどでも性能を発揮します。 メタデータジャーナリングも備えています。カーネル2.4.18以降、ReiserFSは非常に安定しており、 一般的な目的のファイルシステムはもちろん、大きなファイルや大量の小さなファイルを扱うような極端なケースにおいても推奨されます。 ReiserFSはブートパーティション以外ならいつでもお勧めします。

XFSはメタデータジャーナリングを備えたファイルシステムで、 Gentoo Linuxではxfs-sourcesカーネルで完全にサポートされています。 堅牢な特徴を持ち、スケーラビリティを持つように最適化されています。 このファイルシステムはハイエンドのSCSI/fibreチャネルストレージと無停電電源装置を備えたシステムでのみ推奨します。 XFSは積極的に処理中のデータをメモリにキャッシュするため、間違った設計のプログラム (ファイルをディスクに書き込むときに適切な予防措置を講じていない; そのようなプログラムが数多くあります)を走らせたときに、 不意のダウンによってデータが失われてしまう恐れがあります。

JFSはIBMのハイパフォーマンスジャーナリングファイルシステムです。 最近になって商利用に耐えるものになりましたが、充分な資料がないため、 その一般的な安定性については良いとも悪いともコメントできません。

もし、頑丈なジャーナリングファイルシステムが希望なら、ext3を選んでください。 汎用の高性能ファイルシステムがよければ、ReiserFSを選んでください。 ext3とReiserFSはどちらも成熟し洗練されていますのでお勧めです。

さきほど見た例に従うと、パーティションを初期化するコマンドは次のようになります。

Code Listing 6.14: パーティションの初期化(参考例)

# mke2fs /dev/hda1
# mkswap /dev/hda2
# mkreiserfs /dev/hda3

ブートパーティションの/dev/hda1はext2を選択しました。 堅牢なファイルシステムであるとともに、メジャーなブートローダがサポートしているからです。 スワップパーティションの/dev/hda2を初期化するにはmkswapを使います。 これは明白ですね。 そして、メインのルートパーティションである/dev/hda3にはReiserFSを選びました。 頑丈なファイルシステムであり、素晴らしいパフォーマンスをもたらします。 それではパーティションを初期化しましょう。

参考までに、インストール中に利用可能なmkfsコマンドの仲間を紹介します。

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

Code Listing 6.15: スワップの初期化

# mkswap /dev/hda2

mke2fsはext2ファイルシステムを作成します:

Code Listing 6.16: ext2ファイルシステムの作成

# mke2fs /dev/hda1

ext3ファイルシステムを使うのなら、mke2fs -jコマンドを使います:

Code Listing 6.17: ext3ファイルシステムの作成

# mke2fs -j /dev/hda3

Note: Linux2.4でext3を使用する場合は以下のURLが参考になるでしょう。 http://www.zip.com.au/~akpm/linux/ext3/ext3-usage.html

ReiserFSファイルシステムの作成にはmkreiserfsを使います:

Code Listing 6.18: ReiserFSファイルシステムの作成

# mkreiserfs /dev/hda3

XFSファイルシステムにはmkfs.xfsを使います:

Code Listing 6.19: XFSファイルシステムの作成

# mkfs.xfs /dev/hda3

Note: mkfs.xfsコマンドに対し、-d agcount=3 -l size=32mオプションを付加することができます。 -d agcount=3オプションはアロケーショングループの数を減らします。 XFSは4Gバイトごとに少なくともひとつのアロケーショングループを必要とします。 つまり、20Gバイトのパーティションがあった場合、最低でも5つのアロケーショングループが必要になります。 -l size=32mオプションはジャーナルサイズを32Mバイトに増加させ、パフォーマンスを良くします。

JFSファイルシステムの作成にはmkfs.jfsを使います:

Code Listing 6.20: JFSファイルシステムの作成

# mkfs.jfs /dev/hda3

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

初期化が済んだスワップボリュームを有効にし、後で仮想メモリが必要になったときに使えるようにしておきます。

Code Listing 7.1: スワップを有効にする

# swapon /dev/hda2

次に、/mnt/gentoo/bootというマウントポイントを作成し、そこにさきほどのファイルシステムをマウントします。 ブートファイルシステムとルートファイルシステムをマウントした後は、/mnt/gentooの中に作成されたファイルはすべてそれらのファイルシステム内に格納されます。 もし/usr/varなどのファイルシステムを別々に作成している場合は、それぞれ、/mnt/gentoo/usr/mnt/gentoo/varとしてマウントしてください。

Important: /bootパーティション(カーネルを保持しているパーティション) がReiserFSである場合、GRUBが正常にインストールされるように-o notailオプションを使ってマウントしてください。 さらに/etc/fstabのbootパーティションにnotailオプションを追加してください。 これについてはまたあとで説明します。もしReiserFSでLILOを使う場合は、-o notailオプションは必要ありません。 どんな場合でも-o notailオプションは安全です。

Code Listing 7.2: マウントポイントの作成

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

Important: もしext2のbootパーティションをマウントするときに問題が発生したら、mount /dev/hXX /mnt/gentoo/boot -t ext2 を試してみてください。

8.  ステージ圧縮ファイルとchroot

ステージ圧縮ファイルの選択

もしまだなら、ここでどのステージ圧縮ファイルを使うか決めなければなりません。 ステージ圧縮ファイルはCDの/mnt/cdrom/stages/にあります。 ls /mnt/cdrom/stages/とすれば、何が利用可能か確認できます。

GRPユーザstage3-xx-yy.tar.bz2を使ってください。

もしCD上に無い圧縮ファイルを使うのならば("basic" LiveCDを使う場合などがそうです)、以下の手順に従ってダウンロードをしなければなりません。 もし圧縮ファイルを既に持っていてダウンロードの必要がなければ(ほとんどの人がそうでしょう)、"ステージ圧縮ファイルの展開"に進んでください。

Note: プロクシを使うときは(例として proxy.server.tld:8080 を使う場合)、 -http-proxy proxy.server.tld:8080linksコマンドのオプションに指定してください。

Code Listing 8.1: 必要なステージの圧縮ファイルのダウンロード

# cd /mnt/gentoo
lynxを使って、圧縮ファイルのURLを確認してください。
# links http://gentoo.oregonstate.edu/releases/x86/1.4/
矢印キーの(あるいはタブキー)を使って希望する圧縮ファイルのあるディレクトリに移動してください。
カーソルをダウンロードしたいステージファイルに合わせ、dを押すとダウンロードが始まります。
ファイルに保存してブラウザを終了してください。

あるいはコマンドラインでwgetを使ってダウンロードすることもできます。
# wget (ここに必要な圧縮ファイルのURLを指定してください。)

ステージ圧縮ファイルの展開

ここで、選択した圧縮ファイルを/mnt/gentooに展開します。 展開するのはステージ1、ステージ2、ステージ3のいずれかひとつだけです。 つまり、ステージ3からインストールするのであれば、ステージ3圧縮ファイルを展開してください。

Important: tarする時は必ずpオプションを使用してください。 これを怠ると、いくつかのファイルに誤ったパーミッションを与えてしまいます。

Code Listing 8.2: 圧縮ファイルの展開

# cd /mnt/gentoo
選択した圧縮ファイルに合わせて、"stage3"を"stage2"や"stage1"に変えてください。
ダウンロードした圧縮ファイルを使うときは、パスの先頭が"/mnt/cdrom/stages/"ではなく"/mnt/gentoo/"になります。
# tar -xvjpf /mnt/cdrom/stages/stage3-*.tar.bz2

/mnt/gentooにダウンロードされた圧縮ファイルは、展開したあとで次のように入力して削除することができます: rm /mnt/gentoo/stage*.tar.bz2

GRPパッケージ/スナップショットの展開

Important: 以下の手順はGRPユーザ用です。GRPを使わないなら、「ミラーサイトの選択(任意)」に進んでください。

GRPユーザ: LiveCDにはPortageのスナップショットが入っています。 これを使うことで、後でこの文書で出てくるemerge sync(ネットワーク接続が必要)のステップを飛ばすことができます。以下のようにして展開してください。

Code Listing 8.3: Portageスナップショットの展開

yyyymmddには日付が入ります。
# tar -xvjf /mnt/cdrom/snapshots/portage-yyyymmdd.tar.bz2 -C /mnt/gentoo/usr

これで、Portageツリーのスナップショットを展開することができます。 emerge syncのためにネットワークに接続する必要はありません。 次に、distfilesとpackagesをLiveCDからコピーします。

Code Listing 8.4: GRPファイルのコピー

# cp -R /mnt/cdrom/distfiles /mnt/gentoo/usr/portage/distfiles
# cp -a /mnt/cdrom/packages /mnt/gentoo/usr/portage/packages

GRPに必要なファイルをすべて所定の位置にコピーできました。 これでネットワーク接続なしでGentoo Linuxのインストールために必要なものが揃いました。

ミラーサイトの選択(任意)

mirrorselectは自動的に一番速いミラーサイトを選び出したり、 リストの中から手動でサイトを選んだりするためのツールです。 残念なことに、mirrorselectはうまく動かないこともあります。

Code Listing 8.5: mirrorselectを使う

(ミラーサイトを自動選択)
# mirrorselect -a -s4 -o >> /mnt/gentoo/etc/make.conf
(ミラーサイトを手動選択)
# mirrorselect -i -o >> /mnt/gentoo/etc/make.conf

何らかの理由でmirrorselectがうまく動かなくても、何の変更もなくこの後の手順を進めることができます。 失敗する原因の一つとしてmirrorselectが存在しないことが挙げられます。 全てのインストールメディアにmirrorselectが含まれているわけではありません。

chrootの実行

次にGentoo Linuxのインストールを進めていくために、chrootを使ってGentoo Linuxシステムに「入り」ます。

Note: env-updateを実行したときに/etc/make.profile/make.defaultsが利用できないというメッセージが表示されますが、無視してください。 あとでemerge syncを実行しますが、それによってこの問題は解消します。

Code Listing 8.6: 下準備してchroot環境に入る

# mount -t proc proc /mnt/gentoo/proc
# cp /etc/resolv.conf /mnt/gentoo/etc/resolv.conf
# chroot /mnt/gentoo /bin/bash
# env-update
Regenerating /etc/ld.so.cache...
# source /etc/profile
(上のコマンドはシェルに新しい検索パスを設定し更新されたバイナリが使えるようにする)

このコマンドを実行すれば/mnt/gentooに作成されたGentoo Linux環境の「中」に入ることができます。 以下の手順はこのchroot環境内で進めます。

9.  最新のPortage ツリーを取得する

Important: GRPインストールをする場合は、以下のemerge syncに関するセクションは飛ばしてください。

ここで、emerge syncを実行してください。これにより、 インターネットを通じて最新のPortageツリーを取得できます。 もしPortageツリーをCD 1のスナップショットから展開しているなら、このステップを飛ばして次に進んでください。 Portageツリーには、Gentoo Linuxでパッケージを構築するための全てのスクリプト(ebuildと呼びます)が収められています。 現在、4000パッケージ近くのebuildスクリプトがあります。 emerge syncが完了すると、/usr/portage以下に完全なPortageツリーが格納されます。

Code Listing 9.1: syncを使って更新する

# emerge sync

Portageの新しいバージョンが利用可能だという警告が表示されても、 無視してかまいません。インストールの途中で自動的にアップデートされます。

10.  Gentooシステムの最適化オプションを設定する(make.conf)

Portageツリーをコピーできたので、次に最適化とパッケージ構築の設定をします。 Portageはどんなプログラムをコンパイルするときでもこの設定を使います。 設定するには/etc/make.confファイルを編集します。 このファイルでは、パッケージに組み込みたい機能を指定するUSE変数やをセットしてください。 一般的にはデフォルト(空かセットなし)でいいでしょう。 USEフラグに関しては、Gentoo Guide to USE flags(日本語訳))に詳しい説明があります。 利用可能なUSEフラグの完全リストがGentoo Linux Use Variable Descriptionsという文書にあります。

ステージ1の圧縮ファイルを使って始めた方は、お使いのハードウェアに合わせて、CHOST、CFLAGS、CXXFLAGS変数もそれぞれセットしてください (ファイルの下の方に設定例が載っています)。

Warning: ステージ2または3を使って始めた方は、 これらの設定は既に済んでいます。CHOSTの値を変更してはいけません。

Warning: 上級者向け: ACCEPT_KEYWORDS="~x86" のGentooシステムをインストールしようとしている場合でも、 ブートストラップ(ステージ1)が完了するまではACCEPT_KEYWORDSに値を設定しないでください。

Important: 上級者向け: CFLAGSとCXXFLAGSの設定は、 CとC++コンパイラが生成するコードの最適化などを指定するオプションとして使われます。 例えば、Athlon XPプロセッサを使っているユーザはCFLAGSとCXXFLAGSに"-march=athlon-xp"を設定するのが一般的です。 これによって、そのCPUに適した命令セットを使って最適化されたパッケージを構築できます。 /etc/make.confには、正しくCFLAGSとCXXFLAGSを設定するための一般的な解説が書かれています。

ファイアウォールが設置されている場合はここでプロクシ情報をセットできます。 /etc/make.confを編集するには、nanoというシンプルなスクリーンエディタが使えます。

Code Listing 10.1: make.confを編集する

# nano -w /etc/make.conf

Note: 上級者向け: ビルドプロセスに手を加えたいときは、/etc/make.globalsを参照してください。 このファイルは、Gentooで使われるデフォルト値を保持しており、書き換えないようにすべきです。 デフォルトで不十分な場合は、新しい値を/etc/make.confに書き込んでください。 make.confで指定された値は、make.globalsの設定を上書きします。 ここで見つけたUSE設定を無効にしたいときは、適切なUSE="-foo"(fooを無効にしたい場合)を/etc/make.confに追加してください。

Warning: ステージ1が終了するまでは、'static'をUSEに加えないでください。

11.  ステージ1から始める場合

Note: ステージ1から始める人以外は、このセクションを飛ばしてください。

ステージ1圧縮ファイルを使うと徹底的にカスタマイズと最適化をすることができます。 この圧縮ファイルを選択したのは、最適化された最新のシステムを求めているからだと思います。 お楽しみください。 ステージ1からのインストールには長い時間がかかりますが、その見返りとして特定のマシンとニーズに合わせ隅々まで最適化されたシステムを手に入れることができます。

「ブートストラップ」プロセスを開始します。 AMD Athlon 1200Mhzで約2時間かかります。 このプロセスでは、残りのシステムをコンパイルするために、展開されたビルドイメージが準備されます。 GNUコンパイラ一式とGNU Cライブラリが構築されます。 これらは時間がかかる処理で、ブートストラッププロセスの大半が構成されます。 以下のようにしてブートストラップを始めてください。

Code Listing 11.1: ブートストラッピング

# cd /usr/portage
# scripts/bootstrap.sh

これで「ブートストラップ」プロセスが始まります。

Note: bootstrap.sh--fetchonlyオプションが追加されました。 ダイアルアップ回線を使っている人などに便利な機能です。 ブートストラップに関係するファイルを一度にまとめてダウンロードしてから、コンパイルを始めることができます。 bootstrap.sh -hでヘルプが表示されます。

Note: デフォルトのPortageはパッケージのビルド中に一時的に/var/tmpを数百Mバイト使用する時があります。 一時ファイルの場所を変更している場合は、ブートストラッププロセスを始める前にPORTAGE_TMPDIR変数を変更してください。

Code Listing 11.2: Portageの作業ディレクトリの設定

# export PORTAGE_TMPDIR="/otherdir/tmp"

bootstrap.shbinutilsgccgettextglibcを構築し、glibcが構築された後、gettextを再構築します。 言うまでもなく、このプロセスには時間がかかりますので、昼寝でもしていてください。 このプロセスが終了すると"ステージ2"から始めたシステムと同じ状態になります。次に進んでください。

12.  ステージ2から始める場合、あるいはステージ1からの続き

Note: このセクションはステージ1かステージ2から始めた人が対象ですので、ステージ3から始める人は次のセクションに進んでください。

Warning: ステージ2から始める場合は、 /etc/make.conf内のCHOSTの値を変えないでください。 変えてしまうと、おかしな状態になったり、コンパイルに失敗したりします。

ステージ2の圧縮ファイルを使うと、既にブートストラップが済んだ状態から始めることができます。 残りのシステムのインストールを始めましょう。

Note: ステージ2から始めた場合は、ここでコンパイラ一式が最新の状態になるようにできます。 以下のコマンド(emerge)に-uオプションを付けてください。 これがどういう意味か判らないなら、この注釈は無視して構いません。

Code Listing 12.1: 残りのシステムをインストールする

# emerge -p system
(インストールされるパッケージが一覧表示される)
# emerge system

ベースシステム全体を構築するにはまとまった時間が必要です。 そのかわりシステムは徹底的に最適化されます。 もちろん暇つぶしの方法を見いださなければなりませんが。 作者はプレイステーション2用ソフト「Star Wars - Super Bombad Racing」をおすすめします。

システムの構築は終了しました。"タイムゾーン設定'に進んでください。

13.  ステージ3から始める場合

Note: このセクションはステージ3から始める人に向けたものですので、それ以外の人は次のセクションに進んでください。GRPを使ってインストールする人も次のセクションに進んでください。

Warning: /etc/make.conf内のCHOSTの値を変えないでください。 変えてしまうと、おかしな状態になったり、コンパイルに失敗したりします。

ステージ3の圧縮ファイルは完全に機能する基本的なGentoo Linuxシステムを含んでいますので、構築の手順は不要です。

Note: 上級者向け: ただし、ステージ3圧縮ファイルはあらかじめコンパイルされたものですので、もう最新ではなくなっているかも知れません。 もし気になるようなら、 自動的に現在のステージ3システムを最新バージョンのパッケージで置き換えることができます。 /etc/make.confのバックアップを作成し、 export CONFIG_PROTECT="-*" emerge -u system (この処理を行なうにはネットワーク接続が必要になります)を実行して、 最後に/etc/make.confを書き戻してください。 ステージ3圧縮ファイルが古い場合、この処理には長い時間がかかるかもしれません。 そうでなければ、一般的には短時間で最新バージョンへのアップデートやバグフィクスされたパッケージが得られます。 なお、これらの手順を踏まずに次のセクションに進んだとしても、なんの問題もありません。

14.  タイムゾーン設定

ここではタイムゾーンの設定を行ないます。

/usr/share/zoneinfoのなかからタイムゾーン(グリニッジ標準時を使用するならGMT)を選んでシンボリックリンクを作成してください。

Code Listing 14.1: タイムゾーンを設定するためにシンボリックリンクを作成する

# ln -sf /usr/share/zoneinfo/path/to/timezonefile /etc/localtime

15.  /etc/fstabを書き換える

Important: このファイルを編集するときは、nano -w "filename"とすることを(-wオプションを付けることを)忘れないでください。

ここまでの作業でGentoo Linuxシステムはほぼ完成しました。 あとは重要なシステムファイルを作成し、GRUBブートローダーをインストールします。 まず、/etc/fstabファイルを編集します。 ReiserFSファイルシステムを使用する場合はnotailオプションをbootパーティションに付加するのを忘れないでください。 ext2ext3reiserfsなどのファイルシステムのタイプも指定してください。

Warning: 下に示したように/etc/fstabを更新してください。 ただし、"BOOT"、"ROOT"、"SWAP"はそれぞれ実際に利用されるブロックデバイスの名前に(例えばhda1)、 "ext2"、"ext3"などは実際のファイルシステムの名前にします。

Code Listing 15.1: fstabの編集


# /etc/fstab: 静的なファイルシステム設定.
#
# noatime はパフォーマンスを向上させます (atimeは通常は必要ありません)
# (訳注: atime はファイルにアクセスした時刻のこと)
# notail は ReiserFS のパフォーマンスを向上させます (ディスク効率が犠牲になります)
# noatimeを削っても安全です。また、notailとtailは自由に切り替えられます。

# <fs>           <mount point>   <type>   <opts>          <dump/pass>

# NOTE: もしBOOTパーティションがReiserFSなら、notailオプションを加えてください。

/dev/BOOT           /boot       ext2        noauto,noatime  1 2
/dev/ROOT           /           reiserfs    noatime         0 1
/dev/SWAP           none        swap        sw              0 0
/dev/cdroms/cdrom0  /mnt/cdrom  iso9660     noauto,ro,user  0 0
none                /proc       proc        defaults        0 0

Warning: /bootがブート時にマウントされないことに気づいたでしょうか。 これは/bootが破壊されることを防ぐためです。 /bootにアクセスする必要があるときは、マウントしてください。

16.  カーネルとシステムロガーのインストール

カーネルの選択

カーネルのインストールには2通りのやり方があります。 自分でカーネルの設定をすることもできますし、genkernelユーティリティを使って設定とコンパイルを自動的に実行することもできます。

手動であれ、genkernelであれ、まずお好みのLinuxカーネルソースをemergeしなければなりません。 Gentooはカーネルのebuildを何種類か用意しています。 その一覧がGentoo Linuxカーネルガイド(日本語訳))で確認できます。 どのカーネルソースを選べばよいかわからなければ、gentoo-sourcesにするのがお勧めです。 XFSサポートが必要なら、xfs-sourcesgs-sourcesを選んでください。 ちなみに、GentooのLiveCDはxfs-sourcesgs-sourcesを使っています。 他に、ゲームをする人に適したgaming-sourcesがあり、"Preemptible kernel"オプションが有効になっていれば素晴らしい応答性が得られます。

カーネルを選択し、次のようにしてemergeしてください。

Code Listing 16.1: カーネルソースをemergeする

# emerge -k gentoo-sources

/usr/src/linuxシンボリックリンクは 新しくインストールされたソースツリーを指しています。 Portageは/usr/src/linuxシンボリックリンクを特別な意味を持つファイルとして扱います。 カーネルモジュールをインストールするようなebuildは /usr/src/linuxシンボリックリンクで示されたカーネルソースツリーを使って設定されます。 Portageは初めてカーネルソースをインストールするとき/usr/src/linux を作成しますが、既にこのシンボリックリンクが作成されているときは何もしません。

genkernelを使ってカーネルを構築する

カーネルソースツリーがインストールされました。続いてカーネルをコンパイルします。 これには2種類の方法があります。一つは新しく用意されたgenkernelスクリプトを使って自動的にカーネルを構築する方法です。 genkernelはLiveCDのカーネルとほぼ同じようにカーネルを設定して構築します。 つまり、genkernelを使ってカーネルを構築すると、ブート時にはLiveCDと同じようにハードウェアを検出してくれます。 genkernelは全自動なので、カーネルの設定に不慣れな人などにとって、最もよい解決法となるでしょう。

では、genkernelの使いかたを説明します。まずは、genkernelをemergeします。

Code Listing 16.2: genkernelをemergeする

# emerge -k genkernel

次に、genkernelと入力して、カーネルの構築を始めてください。

Note: 上級者向け: genkernel --config と入力すると、 カーネルの構築を始める前にデフォルトの設定をいじることができます。

Code Listing 16.3: genkernelの実行

genkernel 1.2(1.4-20030803 x86/i686 GRPセットに入っているもの)を使っているなら、次のようにカーネルを指定してください。
# genkernel gentoo-sources
genkernel 1.4かそれより新しいバージョンを使っているなら、次のようにします。
# genkernel
Gentoo Linux genkernel, version 1.4
Copyright 2003 Gentoo Technologies, Inc., Bob Johnson, Daniel Robbins
Distributed under the GNU General Public License version 2

Settings:
compile optimization: 1 processor(s)
source tree: /usr/src/linux-2.4.20-gaming-r3
config: gentoo (customized)
config loc: /etc/kernels/config-2.4.20-gaming-r3
initrd config: (default) /etc/kernels/settings

* Running "make oldconfig"...                                                                     [ ok ]
* Logging to /var/log/genkernel.log...                                                            [ ok ]
* Starting 2.4.20-gaming-r3 build...                                                              [ ok ]
* Running "make dep"...                                                                           [ ok ]
* Running "make bzImage"...                                                                       [ ok ]
* Running "make modules"...                                                                       [ ok ]
* Running "make modules_install"...                                                               [ ok ]
* Moving bzImage to /boot/kernel-2.4.20-gaming-r3...                                              [ ok ]
* Building busybox...                                                                             [ ok ]
* Creating initrd...                                                                              [ ok ]

* Build completed successfully!

* Please specify /boot/kernel-2.4.20-gaming-r3 and /boot/initrd-2.4.20-gaming-r3
* when customizing your boot loader configuration files.

genkernelが終了すると、カーネル、モジュール一式、initial root disk (initrd)ができあがります。カーネルとinitrdは後でブートローダに登録します。 そのとき必要となるので、ここでカーネルとinitrdのファイル名を控えておいてください。 initrdは"実際"のシステムが起動する前の、ブート開始直後ににハードウェアを検出するために使われます(LiveCDと同じです)。

では、さらにLiveCDの動作に近づけるために、更に手順を進めましょう。hotplugのemergeです。 initrdはブートするために必要なハードウェアを検出するものですが、hotplugはその他あらゆるものを検出します。 hotplugをemergeするには、次のように入力してください。

Code Listing 16.4: hotplugをemergeし有効にする

# emerge -k hotplug
# rc-update add hotplug default

genkernelを使った人は、次の"手動でのカーネル設定"は飛ばしてください。

手動でのカーネル設定

genkernelによるカーネルの構築を選ばなかった方には、 このセクションでカーネルを手動で設定して構築するための手順を解説します。 /usr/src/linuxがemergeされたカーネルソースへのシンボリックリンクになってることに注意してください。 これはPortageによって自動的に作成されます。 もし複数のカーネルソースをemergeしているなら、適切なカーネルソースへのリンクになっているかどうかを確認する必要があります。

Warning: 自分でカーネルを設定して使う場合は、grsecurityオプションに注意してください。 セキュリティの設定をきつくしすぎると、いくつかのプログラム(たとえばX Windowなど)が正常に動作しなくなる恐れがあります。 必要かどうかわからない場合は、無効にしておきましょう。

Note: カーネルの設定をLiveCDと同じにしたい、あるいはLiveCDの設定を元にしたい場合は、次のようにしてください: cd /usr/src/linux && cat /proc/config > .config && make oldconfig 。 なお、xfs-sources以外のカーネルを使っている場合は、 選んだカーネルとxfs-sourcesとで異なる部分に関して、いくつか質問に答える必要があるかもしれません。

Code Listing 16.5: Linuxカーネルの設定

# cd /usr/src/linux
# make menuconfig

Warning: カーネルを正常に機能させるために必要なオプションが正しくカーネルに組み込まれているかどうかを確認してください。 つまり、これらは有効でかつモジュールではない状態でコンパイルされねばなりません。 ReiserFSファイルシステムを使用している場合は ReiserFSオプションを有効にします。"Ext3"も同様です。 XFSファイルシステムを使用している場合は"SGI XFS filesystem support"オプションを有効にします。 どのような場合でも"Ext2"オプションを有効にしておくと良いでしょう。

以下に必要となるであろう、一般的なオプションの一覧を示します。

Code Listing 16.6: 重要なカーネルオプション

Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers"
(下に示したオプションのうち、いくつかはこれを有効にしないと現れない)
...

File systems --->
<*> Reiserfs support
(ReiserFSを使うときに必要)
... 
<*> Ext3 journalling file system support
(ext3を使うときに必要)
...
[*] Virtual memory file system support (former shm fs)
(Gentoo Linuxでは必須)
...
<*> JFS filesystem support
(JFSを使うときに必要)
...
[*] /proc file system support
(Gentoo Linuxでは必須)
[*] /dev file system support (EXPERIMENTAL)
[*]   Automatically mount at boot          
(Gentoo Linuxでは必須)
[ ] /dev/pts file system for Unix98 PTYs
(カーネル2.6を使っているのでなければ不要なのでチェックを外す)
...
<*> Second extended fs support
(ext2を使うときに必要)
...
<*> XFS filesystem support
(XFSを使うときに必要)

インターネット接続にPPPoEを使っているなら、以下のオプションを選択してください(ビルトインか、できればモジュール)。 "PPP (point-to-point protocol) support"、 "PPP support for async serial ports"、"PPP support for sync tty ports"。 これらの2つの圧縮に関するオプションは組込まれても害はありませんが不要です。 "PPP over Ethernet"オプションも、rp-pppoeがカーネルモードPPPoEをで動作するときに利用されるだけです。

もし、IDE CD-Rを使うならば、SCSIエミュレーションを利用できるようにしてください。 "ATA/IDE/MFM/RLL support" ---> "IDE, ATA and ATAPI Block devices" ---> "SCSI emulation support"をチェックしてください(筆者はいつもモジュールとしてインストールします)。 そして"SCSI support"の"SCSI support"、"SCSI CD-ROM support"と"SCSI generic support"をチェックしてください(これも筆者はいつもモジュールとしてインストールします)。 モジュールとしてインストールしたならば、echo -e "ide-scsi\nsg\nsr_mod" >> /etc/modules.autoload.d/kernel-2.4として、ブート時に読み込まれるようにしてください。

忘れずに、必要なイーサネットカードのサポートをカーネルに組込んでください。

Note: 2.2カーネルベースのGentoo Linuxをインストールすることもできます。 安定性と引き換えに 2.4カーネルの素晴らしい特徴(XFSファイルシステムとtmpfsファイルシステムやiptablesなど)が使えなくなります。 ただし、 ReiserFSファイルシステムやdevfsはパッチを当てることで使えるようにできます。 Gentoo LinuxのブートスクリプトはtmpfsかRAMディスクのどちらかを必要としますので、2.2カーネルを使用する際にはRAMディスクサポートを組み込んでください(モジュールではなく)。 必ず/boot/grub/grub.confファイルにgentoo=notmpfsと記述して、RAMディスクをtmpfsのかわりにブートスクリプトにマウントしてください。 devfsを使わないならばgentoo=notmpfs,nodevfsと記述してください。

Code Listing 16.7: カーネルのコンパイルとインストール

# make dep && make clean bzImage modules modules_install
# cp /usr/src/linux/arch/i386/boot/bzImage /boot

各種ハードウェア用ebuildの追加インストール

最後に、あなたのシステム上のハードウェアに必要なパッケージをemergeしてください。 カーネルに関係するebuildを一覧にして示します。

Ebuild 用途 コマンド
nvidia-kernel XFree86用NVIDIAグラフィック高速化モジュール emerge -k nvidia-kernel
nforce-net NVIDIA nForce(2)マザーボード上のオンボード・イーサネットコントローラ用 emerge nforce-net
nforce-audio NVIDIA nForce(2)マザーボード上のオンボード・オーディオ用 emerge nforce-audio
e100 Intel e100 Fast Eth