MENU of Gentoo Linux

私のメモです。参考になればいいですが、間違っていたらごめんなさい。

戯れ言

--------------------------------------------------------




























Gentoo Linuxってなぁに?

最近、話題に上るディストリビューションで、パッケージがコンパクト& FreeBSDのportsに似た”portage”というパッケージ管理システムを採用している。 バイナリも用意されているが、自分用のコンパイルオプションを付けてコンパイルする らしい。

所謂、「自分の環境に特化できる」ディストリビューション。

インストール

Gentoo Linuxのウェブページ にインストールの手順があるのだが、英語なので何を言っているのかよく分からない。 そこで、いろいろ探してみると、 その日本語訳が 千里さんのウェブページにあった。

僕は次のように理解してインストールした。

  1. まず、ISOイメージを入手する。
  2. gentoo-ix86-1.X.iso :全てのPentium用のISOイメージ
    gentoo-i686-1.X.iso :Pentium Pro以上のCPU用のISOイメージ(こっちの方が楽チン)

  3. CD-ROMからbootする。boot:というプロンプトが出たらリターンキーを押す。
  4. PCIをスキャンし、kernelが自動でモジュールをロードする。
  5. 上記の後、ロードしたモジュールの確認をさせられる。 この際、必要なモジュールがロードされていない場合は、次のようにして読み込む。
  6. # modprobe tulip  (AN983チップ搭載のネットワークデバイス。tulip.oではないことに注意)

  7. ネットワークカードの設定をする。
    (ネットワークインストールしなくても、後でネットワークへ接続が必要になります。)
  8. Gentoo Linuxをインストールするパーティションをfdiskで作成する。
  9. マニュアルでのお奨めは、/boot、/、swapの3つのパーティションの作成である。
    Gentoo Linuxでは次のファイルシステムが使える(/bootはext2、ext3が良い)。
    1. ext2
    2. # mke2fs /dev/hdaX

    3. ext3
    4. # mke2fs -j /dev/hdaX

    5. swap
    6. # mkswap /dev/hdaX

    7. ReiserFS
    8. # mkreiserfs /dev/hdaX

    9. xfs
    10. # mkfs.xfs /dev/hdaX

  10. ファイルを解凍のためにcdromをマウントする
  11. # mount /dev/cdroms/cdrom0 /mnt/cdrom -o ro -t iso9660

  12. ステージファイル(stage?-*.tbz2)の展開
  13. stageの展開方法
    # cd /mnt/linux  (千里さんの訳 では/mnt/gentooになっているが、 原文は linuxに変更になった模様)
    # tar -xvjpf /mnt/cdrom/展開したいパッケージ名
    # mount -o bind /proc /mnt/linux/proc
    # cp /etc/resolv.conf /mnt/linux/etc/resolv.conf

  14. chrootでGentoo Linuxを展開した/mnt/linuxをルートパーティションにし、残りの環境構築を行う
  15. # chroot /mnt/linux /bin/bash
    # env-update
    Regenerating /etc/id.so.cache...
    # source /etc/profile
     

  16. Portageツリーのダウンロードとコンパイルオプションの設定
  17. # emerge rsync
    # nano -w /etc/make.conf
    nanoはviに代わるエディタです。 また、上記のmake.confのリンク先は、stage3から入れたときのmake.confファイルです。HTTPプロキシもmake.confで設定できます。)

  18. gcc、gettext、binutils、glibcの構築や再構築 (stage2以上を展開したときは不要)
  19. # export PORTAGE_TMPDIR="好みのディレクトリ" (デフォルトは/var/tmp)
    # cd /usr/portage
    # scripts/bootstrap.sh

  20. 残りのシステムの構築 (stage3を展開したときは不要)
  21. # export CONFIG_PROTECT=""
    # emerge --pretend system
    (インストールされるパッケージ一覧が表示されます)
    # emerge system

  22. タイムゾーンの設定
  23. 日本のタイムゾーンになるよう、次のようにシンボリックリンクを張る。
    # ln -sf /usr/share/zoneinfo/Japan /etc/localtime
    これだけではハードウェアクロックをUTCと判別し、+9Hで時刻を返してくるので/etc/rc.confでUTCをlocalに 変更しておく。
    CLOCK="local"

    注意:UTCをlocaleを設定した場合、インストール終了後にemerge --update  worldすると、アップデートできないパッケージ(iptables)がある。これは 上記のemerge rsyncがUTCで行われる、即ちJSTなら+9hで行われるからである。 そのため、emerge rsyncの前にdateで時間を確認し、date -sで時間を 修正してからemerge rsyncをすると良い。ちなみにdateコマンドでの時間修正 の書式は、date -s 'Thu Aug 22 19:00 2002 UTC' である(UTCで2002年8月22日木曜日の場合)。

  24. カーネルの構築とインストール
  25. Gentoo Linuxは、GENERICカーネルをバイナリで提供せず、 自分でコンパイルしたものをインストールする。その方法は以下の通り(カーネルの再コンパイルと同じ)。

    # emerge sys-kernel/xfs-sources(gentoo-sourceがデフォルトだが、僕はxfsにしたので左のようになっている。他にはusermode、openmoxis、vanillaなどのソースがある)
    # cd /usr/src/linux
    # make menuconfig
    # make dep && make clean bzImage modules modules_install
    # mv /boot/bzImage /boot/bzImage.orig (すでにbzImageがあれば実行する)
    # cp /usr/src/linux/arch/i386/boot/bzImage /boot

  26. システムログの選択
  27. 次の通り、sysklogd、syslog-ng、metalogの中からシステムロガーを選択する。

    # emerge sys-apps/sysklogd
    # rc-update add sysklogd default
    或いは、
    # emerge app-admin/syslog-ng
    # rc-update add syslog-ng default
    或いは、
    # emerge app-admin/metalog
    # rc-update add metalog default
  28. 追加パッケージ
  29. xfsやLVMを使っている場合は、emergeでそれぞれxfsprogs、lvm-userをインストールする。

    # emerge sys-apps/xfsprogs
    # emerge --usepkg sys-apps/lvm-user

  30. /etc/fstabの設定
  31. 初期のfstabファイルでは/dev/〜がROOTだったりSWAPだったりするので、 適切なデバイス(たとえばhdb1など)に直す。

  32. rootパスワードの設定
  33. # passwd で設定

  34. ネットワークの設定
  35. ホストネーム
    # echo hostname >> /etc/hostname

    /etc/hostsの設定
    # nano -w /etc/hosts
    192.168.0.1     mymachine.mydomain.com  mymachine という順番で記述。
    /etc/conf.d/netの設定
    # nano -w /etc/conf.d/net
    (設定方法はファイル内に記述されている)
    # rc-update add net.eth0 default

  36. 起動時の設定
  37. 起動時に読み込むべきモジュールを/etc/modules.autoloadに書き込む。 書式は下のようにモジュール名を1行ずつ列記するだけである。
    また、キーマップなどの設定は/etc/rc.confに記述する。こちらはrc.conf ファイルを見ると設定可能なものやその記述方法が分かる

    /etc/modules.autoloadの中身
    tulip
    advansys
        .
        .

  38. grubの設定
  39. grubのインストール
    # grub
    grub> root (hd1,8)  (/bootがあるパーティションをgrubへ教える)
    grub> setup (hd1,8)  (grubのインストール先。マスターブートレコードなら(hd0)である)
    grub> quit
    ※grubでは、/dev/hda=>hd0、/dev/hdb=>hd1、/dev/hda3=>(hd0,2)と1つ番号がずれていることに注意。

    /boot/grub/menu.lstの編集
    (この作業は無くてもGentoo Linuxは起動します。起動時の見栄えを整えるものです)
    /boot/grub/menu.lstの一例
    default 0
    timeout 30
    splashimage=(hd1,8)/boot/grub/splash.xpm.gz

    title=Gentoo Linux
    root (hd1,8)
    kernel /boot/bzImage root=/dev/hda3 gentoo=nodevfs

  40. 終了処理
  41. chrootから抜け、安全にパーティションを切り離してリブートする。

    # exit
    # cd /
    # umount /mnt/linux/boot
    # umount /mnt/linux/proc
    # umount /mnt/linux
    # reboot

Back to MENU

ハードウェア関係のセッティング

無事にインストールが終わったが、2つほど設定されていないものが あった。

  1. cdromデバイス
  2. cdromデバイスが無いと言っても、/dev/hdcや/dev/sdcが無いわけではないので、 /etc/fstabに書かれている/dev/cdroms/cdrom0にシンボリックリンクを張るだけである。
    # ln -s /dev/hdb /dev/cdroms/cdrom0

  3. /dev/agpgartの作成
  4. googleでmknod、agpgart をキーワードに検索すると、一発で 「i810 with XFree86 4.x HOWTO」 が見つかった。これに従って、次のコマンドで/dev/agpgartを作成した。
    # mknod /dev/agpgart c 10 175

Back to MENU

ソフトウェアのインストール

Gentoo Linuxでは、パッケージの管理はPortageで行われ、emergeというコマンド ラインを使ってインストールや管理が行われる。emergeはDebianのapt-getにも似ているような気が するが、パッケージのインストール形態がソースコードをコンパイルして行われることから、 FreeBSDのportsupgradeに近いと思われる。

Portageの使い方は、詳しくは Portage Manual を見てもらうとして、よく使うと思われるオプションなどを下に記した。

僕はXFceがお気に入りなので、下のコマンド一発でxfreeも含めてインストールした。

# emerge xfce

ちなみに、コンパイル&インストールが終わるまで、3時間以上掛かった(^^;;

Back to MENU

日本語環境の構築

まず、ネットサーフィンに必要なmozilla、メールクライアントのSylpheed、 XIMのkinput2、かな漢字変換のcannaをインストールした。

# emerge canna
# emerge kinput2
# emerge sylpheed
# emerge net-www/mozilla/mozilla-1.0-r2.ebuild

mozillaは、複数のバージョンが候補に挙がっていて、ファイルが見つからないものもあった ため、ちゃんとファイルが存在する1.0-r2をインストールした。

次にxfceのメニューなどを日本語にするため、localeを設定する。Debianや FreeBSDでは.xsessionファイルでLANG=ja_JP.eucJP、LANGUAGE=jaに設定したが、startxコマンド からの起動では.xsessionファイルを読み込まないようだ。そのため、Gentoo Linuxでは、 .xinitrcにlocaleを設定する(但し、LANGUAGE=jaではなくLC_ALL=ja_JP.eucJP)。
同様に、.xinitrcファイルにXIMやキーバインドの設定をする。これらの例は次のようになる。
(参考:Gentoo Linuxの日本語メーリングリスト: http://www.freeml.com/message/gentoo@freeml.com/0000191 http://www.freeml.com/message/gentoo@freeml.com/0000198

# Setting locale
export LANG=ja_JP.eucJP
export LC_ALL=ja_JP.eucJP

# Setting kinput2 and Canna
xmodmap -e "keycode 49=Kanji"
if [ -f /usr/X11R6/bin/kinput2 ]; then
    kinput2&
    export XMODIFIERS=@im=kinput2
fi
(上記の設定だけでは、xfceのメニューやタイトルバーが文字化けする。この修正は、 FreeBSDのXFceの日本語化を参考のこと。)

上記の設定でlocaleやXIMなどはOKだが、このままでは、cannaを使用 する際に、わざわざ下のコマンドでcannaを起動させなくてはならない。
# /etc/init.d/canna start

cannaをスタートアップ時に自動で起動させるには、/etc/runlevel/default の下に、/etc/init.d/cannaのシンボリックリンクを貼れば良い。 (参考:Gentoo rc-scripts Guide

# ln -s /etc/init.d/canna /etc/runlevel/default/canna

これでxfceが日本語メニューになり、ネットサーフィンやメールが 日本語で行えるようになった。

Back to MENU

deviceファイルシステム

先進的と言われるファイルシステムであるデバイスファイルシステムを Gentoo Linuxでは使用できるらしい(と言うより、それがデフォルトになっている)。 早速導入してみた。

その前に、USBのページに も書いたが、間違えて/usr/src/linuxが/usr/portage/sys-kernel/gentoo-linux にリンクされていた。僕はxfsファイルシステムを使っているので、正しくは /usr/portage/sys-kernel/xfs-linuxにリンクされるべきである。 そんなわけでリンクを張り直した。

カーネルで次の項目を設定すれば使用できるようになるらしい。()内は make menuconfigやxconfigを使った際に、どの項目の下にあるかを示す。

後はカーネルを再構築すればOK。

Back to MENU

USBキーボード&マウス

こっちで述べている ように、USBを使えるように設定をした。

USBのキーボード&マウスを使用するには、次の2つのことが必要らしい。

  1. USB関連がモジュールになっているカーネルを使う
  2. hotplugを支援するソフト(スクリプト?)を使う

1に関しては、カーネルコンフィグレーションで以下の項目をモジュールにする。 (mではなくyにして組み込まないこと。USB関係は不安定なものが多い上、hotplugを支援する ソフトやUSB関係のモジュール自体が他のモジュールを呼び出すため、kernelに組み込まれていると エラーを吐くなるらしい。実使用上は問題ないのかも知れないが。。。)ちなみに、太字になっている 項目はUSBに必ず必要な項目であり、その他はキーボードとマウスに関する項目である。

USBコントローラ(UHCI、UHCI_ALT、OHCI)が分からなければ、全てをmにすれば良い。 また、MOUSEDEV_SCREENはXで使用している解像度を選択する(特に設定しなくてもいいのかも)。
 さらに、USBマウスは/dev/input/miceデバイスを使用するため、/dev/input/miceデバイスノードが 無い場合は次のように作成しておく。

# mkdir /dev/input
# mknod /dev/input/mice c 13 63

※Gentoo Linux 1.2からemerge --update worldで全体を アップグレードした後は、この項目が無いとマウスを認識しない(hotplugのバージョンが変わり、 /etc/hotplug/usb.agentが変更になったためと思われる)。マウスデバイスは /dev/input/mice又は/dev/input/mouse0になる。この2つのデバイスは自動で作成されるため、 上記のようにノードを作成する必要は無い。しかし、この2つのデバイスに、なぜかキーボードの 入力も入っているようである(catで見ると、マウスの入力だけでなくキーボードの入力も見える)。 マウスを抜き差しすると、/dev/input/mouse0は削除されたり作成されたりするが、 /dev/input/miceはそうならないため、マウスデバイスは/dev/input/mouse0と考えた方が いいと思われる。

また、2のソフトは/proc/bus/usb以下を参照するため、/etc/fstabに次の一行を 加える(無くてもエラーを吐くだけでモジュールのロードは適切に行われているようだが。。。)。

none   /proc/bus/usb     usbdevfs     noauto     0  0

/proc/bus/usb以下を用いるには、CONFIG_USB_DEVICEFS=yである必要がある。また、 usbcore.oモジュールが呼び出されるまで/proc/bus/usbというディレクトリが 存在しないため、通常にマウントされるとエラーを起こしてしまう。そのためオプションに「noauto」 を指定している。

デバイスノードの作成と/etc/fstabの編集が終わったら、再構築したカーネルで 起動する。

2に関しては、2つのソフトがある。 murasakihotplug である。どちらを用いるかは対応するデバイスやディストリビューションでどちらを採用しているか による。Gentoo Linuxではmurasakiではなくhotplugである。

デバイスノードや/etc/fstabの編集を終えた後、hotplugをインストールしたところ Gentoo LinuxでもUSBキーボード&マウスを使用できるようになった。 また、XでUSBマウスを使用するには、XF86Config(-4)ファイルで、マウスの項目 (InputDeviceセクション)Options "Device" "/dev/mouse"を/dev/input/miceに 直す。USBホイールマウスの僕の設定は次のようになっている。

Section "InputDevice"

# Identifier and driver

    Identifier   "Mouse1"
    Driver "mouse"
    Option "Protocol"    "IMPS/2"
    Option "Device"       "/dev/input/mice(又は/dev/input/mouse0)"
    Option "ZAxisMapping" "4 5"
EndSection

Back to MENU

xfsをext3に変更

emergeで長時間コンパイルするとハングアップするという現象がでた。 仕方なくresetボタンで再起動すると、 /etc/ld.so.cacheや/etc/ld.so.confが 空ファイルになっている。そのせいか、emerge Package名としても、 ダウンロードしてくれず、どのパッケージもインストールorアップグレードできなく なってしまった。

仕方なく再インストールしても、emerge --update worldや 他のパッケージのインストール中に必ずフリーズし、reset後にはld.so.cacheやld.so.conf が壊れてしまうと言う現象が続く。SystemCommanderでディスク表面の検査をしても、 bad sectorは見つからない。 そこで、それまでxfsにしていたのをext3にしたところ、 難なく全てのパッケージをインストールできた。xfsのせいなのだろうか???

Back to MENU

1.4へのアップデート

これまでemerge rsync && emerge --update worldで アプリケーションを更新してきたが、そろそろシステム自身(gccなど)を更新 することにした。とは言っても、非常に簡単。 Gentoo 1.4 アップグレード・ガイド に書いてあるとおり、 4つのスクリプト をダウンロードして、順番に実行するだけである。

各スクリプトで掛かる時間は、 僕のPCで次の 通りであった。

スクリプト番号 掛かった時間
10分
1.5時間
6時間
30分

結構時間が掛かるので注意(^^;;

Back to MENU