自宅のミニPCでは、Fedora 9がサーバとして稼働しているのだけれども、yumリポジトリの更新がのんびり過ぎて、未だにgitが1.5.5.1だったりsvnが1.4.6だったりしてイライラし始めたので、いっそ別のディストリでいいのはないかと思い、名前だけは聞いていたGentoo Linuxとやらがどんなものか調べてみたら、割と私向けな気がしたので本格的に移行を検討し始めた。
Portage
昨日の今日まで名前しか知らなかったので語れることはほぼないが、何と言っても特徴的なのがPortageと言うパッケージ管理システム。MacやBSD系で使われてるらしいportsと似たようなシステム。
yumやaptといったパッケージ管理システムはリポジトリからバイナリを取得してインストールするのに対して、Portageはソースを取得してその場でコンパイルしてインストールする*1。もちろん依存関係の解決や、パッケージの検索、アンインストールなんかもできる。ここら辺が手動でソースをコンパイルするのと違うところか。
USEフラグと言うものを使って、必要な機能、不要な機能をあらかじめ設定しておくことでコンパイル時に機能を自動でオン・オフするらしい。
前々から周りのMacな方々が使ってるportsはコンパイルオプション付けられていいなーと思っていたのでこれはぜひとも使ってみたい。
インストール
最近のLinuxは豪華なGUIインストーラが付いているので、初心者の敷居もかなり下がってきているように思う。Linuxのコマンドなんか1つも知らなくてもインストールして使い始める事が出来る。
が、Gentoo Linuxは違う。手順は大まかに以下のような感じ*2。
- インストールCDのイメージを取得してインストールCDを作る。
- おもむろに起動するとrootでbashが立ちあがる。
- ネットワーク設定をする。net-setupコマンドなどを使う。
- ディスクの準備をする。fdiskを使ってごりごりパーティション切る。
- インストールファイルをインストールする。stage3と呼ばれるtar ballをDLしてきて、/(ルート)にあたる部分に直接展開する。Portageも同じようにインストール。
- ベースシステムをインストールする。インストール先の/(ルート)にchrootして、Portageのミラーサイトを設定したりPortageツリーを最新の状態に更新したりする。
- カーネルの設定をする。emerge(Portageのコマンド)でおもむろにLinuxカーネルをDLしてmake menuconfigなどしてカーネルをコンパイルする。
- 起動するのに必要なシステム設定をする。/etc/fstabやら/etc/conf.d/netやら/etc/conf.d/clockやらその他いろいろなファイルをテキストエディタでゴリゴリ設定する。
- 必要なシステムツールをインストールする。syslogやらcronすら入っていないので、emergeを使ってインストールする。dhcpcdなども必要なら入れる。
- ブートローダを設定する。もちろんgrubもないのでemergeで。設定ももちろん/boot/grub/grub.confをテキストエディタで編集。
これで再起動してようやく完了。もちろんこのあと一般ユーザ追加したりなどやることはまだある。
非常に手間だが、私のようにLinuxを触ってるけどいまいち理解しきれていない人には絶好の教材だと感じた。丁寧な解説もあるので、ある程度の知識があれば割とすんなりいくと思う。いい勉強になった。
実際のところ
私の行った作業の記録。とりあえず練習と言う事でVirtualBox使ってやった。
proxy設定
まず、proxyを通さないといけない環境だったので作業が微妙に増えたり詰まったりした。このproxyがウイルスゲートウェイを兼ねていて、ファイルを落としきらないとresponseが返ってこない。そのせいで、emergeがtimeout吐きまくって何もインストールできない状態に…。
timeoutを延長すべく、中で使ってるらしいwgetの設定ファイルwgetrcなどをいじるも効果なし。
psでプロセスを見てみると、-Tオプションで直接timeout指定されてた。そら無理だわ。
どうやら/etc/make.conf内でFECTHCOMMANDと言う変数を設定すればそれを使うらしい。
FETCHCOMMAND = "wget -t 5 -T 21600 --passive-ftp -O \${DISTDIR}/\${FILE} \${URI}"
これでようやく通った。かなり時間食った。
エディタ
インストールCDの環境にはVim7が入っていて、快適に編集していたんだけど、chrootした途端状況は一変した。
# vim bash: vim: command not found
ちょ…どうやらstage3にはvimは入っていないようだ。emergeで入れようかとも思ったが、USEフラグのあたりをきちんと理解して設定してから入れたかったので、仕方なくnanoエディタを使うことに…。なんだこれ、本当に同じテキストエディタか?
たまに
パーティションの罠
罠と言うか、私が無知だっただけだけど。パーティションを切る場面で、Fedoraの構成を真似してLVMを使った。
/dev/hda1 /boot /dev/hda2 swap /dev/hda3 -> LVM /dev/gentoo/root / /dev/gentoo/home /home /dev/gentoo/var /var
が、最後の最後でうまくbootしない。調べて見ると、どうやらLVMをルートにするのは鬼門らしい。やっちまった。
bootできないことはないらしいが、どこを見ても推奨しないと。こんな面倒な構成を何も考えずにできてしまう最近のインストーラはやっぱすごいな。
で、どうしたかと言うと…今ここ。さーてどうしようか。早くUSEフラグ使って色々インストールしてみたい。