玄箱Gentoo化 — 『kurobox.com』の手順 その1

それでは、前回見つけた『kurobox.com』な方法で、玄箱にGentooを導入します。

最初に、次のファイルをダウンロードします。最新のものが、ミラーサイト(現在リンク切れ)にあったので、そちらを使います。

  • EM_mode_binaries.tar.gz — EMモードで動作する最低限のツールが入っています。
  • system-20060108.tar.bz2 — 玄箱用にカスタム化されたstage3
  • portage-20060127.tar.bz2 — ミラーサイトでみつからなかったので、Gentooミラーから最新のものを使いました。
  • overlay-20060122.tar.bz2 — 玄箱用portageオーバーレイ

作業は、ボロPCから行いました。

boro:
$ wget http://kurobox.ods.org/EM_mode_binaries.tar.gz
$ wget http://kurobox.ods.org/system-20060108.tar.bz2
$ wget http://mirror.gentoo.gr.jp/snapshots/portage-20060127.tar.bz2
$ wget http://kurobox.ods.org/overlay-20060122.tar.bz2

telnetで玄箱に入り、EMモードにします。

boro:
$ telnet kuro
login: root
Password:
# echo -n "NGNG" > /dev/fl3
# reboot

EMモードの玄箱に入り、RAMディスクの空き容量を確認します。

boro:
$ telnet 192.168.11.3
Trying 192.168.11.3...
Connected to 192.168.11.3.
Escape character is '^]'.
Kroutoshikou KURO-BOX (IETSUNA)
kernel 2.4.17-kuro-box on ppc

kuro:
KURO-BOX-EM login: root
Password:
# df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/ram0                 9677      5194      4483  54% /

ftpでEMモードコマンドファイルを転送しておきます。

$ ftp 192.168.11.3
Connected to 192.168.11.3.
220 KURO-BOX-EM FTP server (Version 6.4/OpenBSD/Linux-ftpd-0.17) ready.
331 Password required for root.
Password:
230- Linux 2.4.17 ppc unknown
230 User root logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> pwd
257 "/root" is current directory.
ftp> cd /
250 CWD command successful.
ftp> put EM_mode_binaries.tar.gz
local: EM_mode_binaries.tar.gz remote: EM_mode_binaries.tar.gz
200 PORT command successful.
150 Opening BINARY mode data connection for 'EM_mode_binaries.tar.gz'.
226 Transfer complete.
122637 bytes sent in 0.0245 secs (4.9e+03 Kbytes/sec)
ftp> bye
221 Goodbye.

転送したファイルを展開して、EMモード用コマンドをインストールします。

# cd /
# tar zxvf EM_mode_binaries.tar.gz
bin/
bin/sfdisk
bin/fdisk
bin/bzip2
bin/date
bin/chroot

5つのコマンドがインストールされました。

次は、インストールされたfdiskを使って、パーティション分割です。

・・・(To be continued)

bootstrap失敗


更新が滞ってしまいましたが、前回は、Portageツリーのrsyncが、とりあえずうまく行き、bootstrapを実行して寝てしまったわけですが・・・

その結果・・・

ダメでした。朝起きて見てみると、telnetのセッションが切れているではありませんか。何度かやってみましたが、ダメです。

ふぅ・・・

なんとしても、パワー不足・・・emergeするたびにこれでは、先が思いやられる。何でもソースからコンパイルのGentoo様は、玄箱には重荷なのか・・・。

stage3から、やるか・・・
それとも、distccを導入して、ボロPCにコンパイルを手伝わせるか・・・
何かいい手はないものか・・・

などと考えながら、ネットを検索していると、

いいものを見つけました。

その名も、

www.kurobox.com (現在はリンク切れです)

苦手な英語を、わかる単語だけ拾い読みしてみると、玄箱用にコンフィギュレーション済みのGentoo-stage3に対応するファイルとPortageのオーバーレイセットを置いてあるではありませんか!

英語なのが玉にキズですが、ドキュメントも豊富にあり、最新のPortageにも対応しているようです。

これを、使ってみます。
では早速・・・・
っと

・・・(To be continued)

Portage更新無事完了


とりあえず、Portage更新はうまくいったみたいです。

emerge --sync」開始時のメッセージは、英語の苦手な私にも、「1日に1回以上やるな!」「バンリストに入れるぞ!」と警告しているような気がします。

今日は、何回 sync したかなぁ・・・。

次は、ブートストラップ・スクリプトの実行

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

コンパイルが始まりました。

こちらもうまくいくことを祈りながら、本日はお休みします・・・。

zzz………

玄箱固まる!想定内?!

世間では、ホリエモンがえらいことになっているようですが、こちらは、Portage更新中に、玄箱が固まってしまいます。何度やっても、また別の箇所で、同じ現象が起こりPortage更新は完了しません。
telnetできくなったりもしますが、pingも通るし、emergeのプロセスが落ちれば、再度telnetでつなぐ事もできます。
ハードウェアの障害とかじゃなさそうだし・・・、こんなところで諦めるわけにはいかない。

安直にGentoo化キットに手を出したくなる誘惑を抑えて・・・

想定内、想定内。

『この作業は、いわゆるキャッシュを最新にしているんだろ』としか理解していない私は、次のブートストラップを実行してみました。
最初は、順調に進んでいるかに見えましたが、3時間ぐらいすると、Teratermのログが流れなくなり、何かキーに触れると、telnetが切れてしまいます。

ふぅ・・・。さて、次の手は???

メモリが足らなくて、プロセスが処理しきれないのだろうか・・・?
スワップを増やしてみることにします。

玄箱からHDDをはずし、再びボロPCにつなぎ、必要なファイルをバックアップした後、パーティションを切り直して、スワップ領域を256Mから一気に1024Mに増やしてみることにします。

・・・(To be continued)

chroot環境下でGentoo構築


玄箱Gentoo化の手順は、以下のようなステップを考えています。

  • まず、chroot環境下で、Gentoo環境構築
  • Gentoo環境下に、ハードウェアまわりに必要なモジュールを、オリジナルから、持ってくる
  • できたGentooイメージを、ルートに展開して、Gentoo化の出来上がり

まあ、そう簡単にはいかないと思いますが、ちまちまやることにします。

ああ、chrootがない。・・・そうかもね、NASには必要ないしと納得。しかし、こんなところで、納得してもいられない。どうしようかと、付属CDの内容をみていると、binaryの下にツール類があるのを見つけました。autoconf,binutils,gcc,make…。ふ~む、まずはこれを、全部入れておきます。もしかしたら、chrootもあるかも?

# which chroot

chrootは、ありません。付属CDについてきたツール類で、コンパイルはできそうなので、ソースからコンパイルすることにします。

# emerge --search chroot

してみると、Gentooでは、coreutilsにパッケージされているらしい。 Gentooミラーサイトから、coreutils-5.2.1.tar.bz2を持ってきて、玄箱の共有フォルダ経由で、コピーします。適当なディレクトリに展開し、

# ./configure
# make

さすがに、PowerPC200MHzだと、時間がかかりますねー。
src下に、chrootができたので、/usr/local/sbinにコピーします。

# which chroot
/usr/local/sbin/chroot

ボロPCの時と同様に、ステージ→Portageと進むのですが、今回は、Stage3で手を抜くわけにはいきそうもない。Stage1をダウンロード&展開。Portageも同じく。
/etc/make.confを編集して、

# mount -t proc none /mnt/share/gentoo/proc
# chroot /mnt/share/gentoo /bin/bash
# env-update
# source /etc/profile

chrootもできた・・・。

が、

# emerge --sync

あれ、順調に進んでいたかに、見えたのですが、遅いのではなさそう・・・固まっています。Teratermで[Enter]を叩いただけで、Teratermが閉じてしまいました。

・・・(To be continued)

ブート失敗?!


もしも、うまく起動しなかったら、どうしましょ?
私の場合は、起動はうまくいったのですが、先にも述べたとおり、rootパスワードの設定を忘れて、ログインできないことになってしまいました  。

えっ?!インストールのやり直し?

いえ、インストールCDを使って、復旧できます 。

インストールCDから、ブートして、ログインプロンプトが出るまで待ちます。

次に、ディスクをマウントして、chrootGentoo環境に入ります。私の場合は、

# mount /dev/hda4 /mnt/gentoo
# cd /mnt/gentoo
# mkdir var boot
# mount /dev/hda1 boot
# mount /dev/hda3 var

procファイルシステムもマウントして、

# mount -t proc none /mnt/gentoo/proc

chrootして、Gentoo環境に入ります。

# chroot /mnt/gentoo /bin/bash
# env-update && source /etc/profile

ここで、必要な作業を実行します。

後は、chrootから抜けて、再度リブートします。

# exit
# umount /mnt/gentoo/boot /mnt/gentoo/var /mnt/gentoo/proc /mnt/gentoo
# reboot

この方法は、カーネルの作成失敗、GRUBの設定ミスなどにも、応用がききますね。

GRUBのインストールと設定


ブートローダは、GRUBを使う。長い間、LILOに慣れてきたのですが、最近は、GRUBが趨勢のようです。

例によって、エマージして、インストール。

# emerge grub

/boot/grub/grub.confを編集して、

timeout 5
default 0

title  Gentoo Linux 2.6.14-r5
root   (hd0,0)
kernel /kernel-2.6.14-gentoo-r5 root=/dev/hda4

としました。

grubを起動して、MBRに書き込みます。

# grub --no-floppy

grub> root (hd0,0)
grub> setup (hd0)
grub> quit

これで、ようやく再起動できる状態になりました。

chrootから抜けて、ディスクをアンマウトしてリブートです。

# exit
# cd
# umount /mnt/gentoo/boot /mnt/gentoo/var /mnt/gentoo/proc /mnt/gentoo
# reboot

ほい!っと。

システムツールの導入

ブート前に、必要なシステムツールをインストールしておきます。

まずは、ログツール。sysklogdsysklogd-ngmetalogの中から、metalogを使うことにします。

# emerge metalog

cronは、dcronfcronvixie-cronから、vixie-cronを選びました。

# emerge vixie-cron

slocateも、ここでインストールします。

# emerge slocate

次は、ブートローダをインストールします。

システムの設定

必要なシステム設定をします。

まずは、/etc/fstabを編集。

/dev/hda1 /boot ext2 noauto,noatime 1 2
/dev/hda4 /   ext3 noatime        0 1
/dev/hda3 /var  ext3 noatime        0 1
/dev/hda2 none swap sw             0 0

次は、ネットワークまわりを設定していきます。

/etc/conf.d/hostnameを編集。

HOSTNAME="xxxx"

/etc/conf.d/domainnameの編集。

DNSDOMAIN="example.com"

domainnameを自動実行スクリプトとして登録します。

# rc-update add domainname default

/etc/conf.d/netを編集して、ネットワークの設定します。

config_eth0=( "192.168.11.101 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.11.1" )

ブート時にネットワークを有効にさせます。

rc-update add net.eth0 default

/etc/hostsは、とりあえずこのPCだけ、記述しておきます。

127.0.0.1      localhost
192.168.11.101 xxxx.example.com xxxx

ここらで、忘れずにrootパスワードを変更してきます(実は、これを忘れて、ログインできなかったのだ。

# passwd
New UNIX password:
Retype new UNIX password:
passwd: password updated successfully

デフォルトでは、使いにくいので、KEYMAPを設定しておく。/etc/conf.d/keymapsを編集して、

...
KEYMAP="jp106"
...

としておきます。
最後に、UTCは使用していないので、clocklocalに設定します。

...
CLOCK="local"
...

カーネルの構築


やっと、カーネルの構築です。
その前に(準備が長いな・・・)タイムゾーンの設定か。

# ln -sf /usr/share/zoneinfo/Japan /etc/localtime

カーネルソースを持ってきます。

# emerge gentoo-sources

カーネルソースのバージョンの確認。

# ls -l /usr/src/linux

linux-2.6.14-gentoo-r5となっています。

# make menuconfig

で、カーネルのオプションを指定していくわけですが、よくわからないものは、デフォルトのままにして、以下のものだけを変更しました。

  • Processor family –> Pentium III
  • Device Driver
    –>Network device
    –>Ethernet (10 or 100Mbit)
    –><M>Inter(R) PRO/100M+ support

カーネルコンパイルだ、ふぅ。

# make && modules_install

/etc/modules.autoload.d/kernel-2.6を編集して、NICインターフェースのe100を追加しておきます。