それでは、前回見つけた『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)
更新が滞ってしまいましたが、前回は、Portageツリーのrsyncが、とりあえずうまく行き、bootstrapを実行して寝てしまったわけですが・・・
その結果・・・
ダメでした。朝起きて見てみると、telnetのセッションが切れているではありませんか。何度かやってみましたが、ダメです。
ふぅ・・・
なんとしても、パワー不足・・・emergeするたびにこれでは、先が思いやられる。何でもソースからコンパイルのGentoo様は、玄箱には重荷なのか・・・。
stage3から、やるか・・・
それとも、distccを導入して、ボロPCにコンパイルを手伝わせるか・・・
何かいい手はないものか・・・
などと考えながら、ネットを検索していると、
いいものを見つけました。
その名も、
www.kurobox.com (現在はリンク切れです)
苦手な英語を、わかる単語だけ拾い読みしてみると、玄箱用にコンフィギュレーション済みのGentoo-stage3に対応するファイルとPortageのオーバーレイセットを置いてあるではありませんか!
英語なのが玉にキズですが、ドキュメントも豊富にあり、最新のPortageにも対応しているようです。
これを、使ってみます。
では早速・・・・
っと
・・・(To be continued)
とりあえず、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)
玄箱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から、ブートして、ログインプロンプトが出るまで待ちます。
次に、ディスクをマウントして、chrootでGentoo環境に入ります。私の場合は、
# 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を使う。長い間、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
ほい!っと。
ブート前に、必要なシステムツールをインストールしておきます。
まずは、ログツール。sysklogd、sysklogd-ng、metalogの中から、metalogを使うことにします。
# emerge metalog
cronは、dcron、fcron、vixie-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は使用していないので、clockをlocalに設定します。
...
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を追加しておきます。