Gentoo インストールのヒントとトリック
Gentoo はフレキシブル、かつさまざまなインストール方法をサポートしています。それら個々のインストール手順にすべてのヒントとトリックを記載することはほぼ不可能です。そのため本ドキュメントではリファレンスを目的として、これまでに投稿されたすべてのヒントとトリックを扱うことに挑戦します。
イントロダクション
はじめに
このドキュメントは Gentoo/x86 のインストールに関して、さまざまなヒントとトリックを含んでいます。それらの多くはこれまで十分に議論されてきたものであり、インストール手順を補足できますが、元の手順を置き換えるものではありません。
高度なインストール方法
ソフトウェアRAID
もし、あなたがソフトウェアRAIDそのものに詳しくない場合、ソフトウェア RAID についてを読んでください。
インストール CD からブートする時は適切な RAID モジュールをロードしてください。例えば、RAID-1 の場合は以下を実行します。
root #
modprobe raid1
ここで、対象となるディスクのパーティションタイプが 83
(Linux native)ではなく、fd
(Linux raid autodetect) となっていることを確認してください。パーティションタイプは fdisk
の t
コマンドで変更できます。
また RAID を構成する前にメタデバイスノードを作成する必要があります。
root #
mknod /dev/md1 b 9 1
root #
mknod /dev/md2 b 9 2
root #
mknod /dev/md3 b 9 3
パーティション作成後、RAID 管理のためのより進んだツールである mdadm
コマンドで/etc/mdadm.conf ファイルを作成します(もちろん、インストール CD でブートした場合でも作成します)。例えば、/dev/sda と /dev/sdb の上に RAID-1 でミラーされた boot、swap、root パーティションを作成する場合は、以下のようにします。
root #
mdadm --create --verbose /dev/md1 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda1 /dev/sdb1
root #
mdadm --create --verbose /dev/md2 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda2 /dev/sdb2
root #
mdadm --create --verbose /dev/md3 --level=1 --raid-devices=2 --metadata=0.90 /dev/sda3 /dev/sdb3
ブートパーティションに対しては、RAID-0 や RAID-5 のようなストライピングをする RAID は使用できません。また、
--metadata=0.90
はこれらクリティカルなファイルシステムのみに必要です。他のファイルシステムに対しては、より新しいメタデータフォーマットを使用できます。Linux のソフトウェア RAID ドライバは、まずメタデバイスを作成します。進捗は /proc/mdstat で確認できます。まずはメタデバイスが完全に生成されるまで待ちましょう。
root #
mdadm --detail --scan > /etc/mdadm.conf
ここから先は、boot パーティションに /dev/md1、swap パーティションに /dev/md2、root パーティションに /dev/md3 を使います。
chroot を実行する直前に、/etc/mdadm.conf 全体を/mnt/gentoo/etc にコピーすることを忘れないでください。
カーネルを再コンフィグレーションするときは、適切な RAID サポートをモジュールではなく、カーネルに"組み込む"必要があります。
追加のツールをインストールする場合、sys-fs/mdadm も emerge しましょう。ただ全てのインストール CD で利用できるわけではない点に注意してください。このため、ネットワークを使用しない場合、ソフトウェア RAID 上に Gentoo をインストールできないかもしれません。
ブートローダーの設定時、ミラーリングを使っている場合は、ミラーリング対象のディスクの両方の MBR にインストールしなければなりません。
カーネル 2.4 を使用した ATA RAID
まず、インストール CD を doataraid
オプション付きでブートしてください。ブート後、/dev/ataraid ディレクトリを確認してください。ATA RAIDで使用可能なハードディスクそれぞれに対して、disc* ディレクトリが存在するはずです。ここでディスク全体は disc と表示され、パーティションは part* と表示されます。
Gentoo をインストールしたい /dev/ataraid/disc*/* デバイスファイルをメモしておいてください。後でインストール例の /dev/sda と、メモしたパスを置き換えなければならないためです。
chroot する前に、/dev を新しい環境に bind オプション付きでマウントしなければなりません。
root #
mount --rbind /dev /mnt/gentoo/dev
カーネル設定時、ATA RAID チップセットといくつかのオプションをサポートする必要があります。ポピュラーな ATA RAID システムは、Promise FastTrack built-in RAID で、この場合は Promise FastTrack Options
を組み込む必要があります。
GRUB を設定する時は、まず GRUB のブートディスクを生成しなければなりません。これはあなたが想像するほど難しい作業ではありません。まずは普段どおりGRUB をインストールしますが、GRUB を実際に MBR に書き込むときは以下の手順を実行します。
root #
cd /boot/grub
root #
dd if=stage1 of=/dev/fd0 bs=512 count=1
root #
dd if=stage2 of=/dev/fd0 bs=512 seek=1
grub.conf の設定も必要です。これは通常のインストール手順と変わりありません。ただ、ATA RAID デバイスを root=
で確実に指定してください。
インストール完了後、GRUB のブートディスクからブートすると、GRUB のプロンプトが表示されるでしょう。ATA RAID デバイスからブートするように設定します。
grub>
root (hd0,x)
grub>
setup (hd0)
grub>
quit
ここで再起動します。(同時に GRUB の起動用フロッピーは取り出しておきます)
LILO の場合は、インストール手順に従えば安全にインストールできます。
インストール CD のカーネルを使用する
もし、カーネルをあなた自身でコンパイルしたくない場合、インストール CD のカーネルをあなたのシステムにコピーすることができます。インストール手順のカーネルをコンパイルする箇所で、別のターミナル(Alt と F2 を同時押し)に切り替えて、インストールの最初に指定した root のパスワードでログインしてください。
カーネルとモジュールをあなたのGentooにコピーしてください。
${KN} はカーネルの名前で、通常は 'gentoo' や 'smp' のような名前になります。
root #
cp /mnt/cdrom/isolinux/${KN} /mnt/cdrom/isolinux/${KN}.igz /mnt/gentoo/boot
root #
mkdir -p /mnt/gentoo/lib/modules
root #
cp -Rp /lib/modules/`uname -r` /mnt/gentoo/lib/modules
Gentoo の起動中に(インストール CD から)ロードされたすべてのモジュールを新しい環境側で設定します。chroot した環境で以下のコマンドを実行してください。
root #
mkdir -p /etc/modules-load.d
root #
cut -d ' ' -f 1 /proc/modules >> /etc/modules-load.d/local.conf
/etc/modules-load.d/local.conf の内容が適切に更新されたことを確認しましょう。
インストールを簡単に
ターミナルから離れる
多くの場合、時間がかかるコンパイル中はシステムから離れたいものです。しかし、特定のケースではこれは難しくなります。例えば周囲に知らない人がたくさんいる公衆の環境でインストールをする場合です。このようなケースでは、コンパイルはバックグラウンドで実行して、すべてのターミナルからログオフしたくなるでしょう。
これを実現するためのいくつかの手段があります。まず最初の方法は screen を使うことです。インストール CD からブート後、root パスワードを設定して、screen セッションを開始してください。
すべてのインストール CD が screen を提供しているわけではありません。その場合、この節に記載している別の方法を使ってください。
root #
screen -S gentoo
一旦、screen セッションに入った後は、すべてのインストール作業を screen 上で行えます。ターミナルを離れる時は、Ctrl と a を同時に押した後、d を押してください。これで screen セッションからターミナルを "detach" するため、(作業内容を失うことなく) 安全にログアウトできます。
作業を再開する場合、再度 root でログインして、バックグラウンドで動作している screen セッションに "attach" してください。
root #
screen -x gentoo
仮に screen が使用できなくても、別の方法でターミナルから離れることができます。通常のインストール手順の中で長時間のコンパイルが始まる場合(例えば ./scripts/bootstrap.sh の実行時)、nohup
を使えばあなたがログアウトしてセッションが閉じた場合でもコンパイルを継続できます。このとき、忘れずにコンパイルコマンドの末尾に "&" を付けてください。そうしないとコンパイルコマンドはバックグラウンドで実行されません!ここで、あなたが現在どのディレクトリにいるのか(これは pwd コマンドでわかります)を覚えておいてください。これは後の手順で必要です。
root #
pwd
/var/db/repos/gentoo
root #
nohup ./scripts/bootstrap.sh &
これで chroot 環境とインストール CD のセッションから出ることができます(exit)。コンパイルはバックグラウンドで実行されます。
コンパイル結果を確認するには、(インストール CD で)root としてログインし、chroot 環境に戻ります。そしてセッション中で最後にいたディレクトリに戻ってください。
root #
chroot /mnt/gentoo /bin/bash
root #
env-update && source /etc/profile
root #
cd /var/db/repos/gentoo
ここで、そのディレクトリに作られているであろう nohup.out ファイルを less コマンドで見てください。コンパイル結果が nohup.out ファイルに追加されているでしょう。そのため、もしコンパイルの進捗を随時確認したい場合は、less nohup.out を実行後、F を入力してログの追加を随時反映させましょう。
変更をフォローし終わった場合、Ctrl と c を押した後に、q を押してください。この場合、コンパイルプロセスは終了せず、単に less が終了するだけです。
エラーと問題の解決
ディスクを詳細にテストする
ディスク全体を通して整合性(不良セクタ等)をチェックしたい場合は、 mke2fs
で ext2 または ext3 のファイルシステムを作成時、-c
(小文字の c )オプションを付与してください。これでディスク全体のフォーマットとリードテストを行い、かつ不良ブロックについてはその旨マークします。もしあなたが本当にパラノイドであるならば、-c -c
とすることでディスク全体に対してリード/ライトテストを実行できます。
root #
mke2fs -j -c /dev/sda3
インストールに失敗したときの復旧方法
なんらかの理由で Gentoo のインストールに失敗した場合でも、全てのインストール作業を最初からやり直す必要はありません。あなたがミスをしたと思われる時点まで(もしくは手順に不備があると考える時点まで)安全に戻ることができ、その時点から違うアプローチでインストールを続けることができます。
まず最初に、chroot した Gentoo Linux 環境から抜け出す必要があります。しかしすべての手順を再度実行する必要はありません。例えばパーティションが既に作成されているのであれば、パーティション作成はスキップすることができます。その場合、すぐにそのパーティションを /mnt/gentoo にマウントできます。また、ステージの展開や make.conf の修正もスキップできるでしょう。せっかく作ったファイルを上書きしたくありませんよね。
一旦、Gentoo Linux 環境に chroot した後は、異なるアプローチを取りたいポイントまですぐに進みましょう。例えばそれ自身が間違いでない限り、通常の手順でブートストラップのような処理が求められていたとしても、それを再度実行する必要はありません。
もしあなたが間違って grub.conf を設定したと考えているのであれば、すぐにエディタを起動して /boot/grub/grub.conf を更新しましょう。
起こっている問題に対して一旦異なるアプローチを取った場合、いくつの後続ステップの再実行を検討しなければなりません。具体的には、後続ステップがあなたの変更に依存していれば、それらをやり直す必要があります。
例えば、
- make.conf の変数を変更した場合、この変数に依存している全てのコンパイルを再実行しなければなりません。
- /boot/grub/grub.conf を変更した場合、chroot 環境から出てリブートします。理由はgrub.conf に依存する後続のステップを正常に実行するためです。
- カーネルをリコンパイルした場合、ブートローダーがそのカーネルイメージを正しくブートできるようにしなければなりません(/boot をマウントしていることを再確認しましょう)。そして chroot 環境を出て、リブートしてください。
- /etc/fstab を変更した場合、chroot 環境を出て、リブートしなければなりません。
ほとんどのリカバリ操作ですぐに再起動が必要になることがわかるでしょう。そのまま後続のインストールステップをやり直さなければならないのは特定のケースだけです。
This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Xavier Neys, nightmorph
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.