英語サイト『kurobox.com』な方法で、玄箱Gentoo化を進めてまいりましたが、システムを最新にすることと、いくつかの設定を行って、Gentoo化の仕上げとします。
EMモードから、通常モードに変更して、リブートして、sshで入ります。・・・・・・
『おお、見事Gentoo化玄箱に入ることができました。』
『kurobox.com』のドキュメントは、一応ここまでですが、まずemerge systemを実行して、システムを最新状態にします。
その前に、glibcのコンパイルを少しでも、早くするために、不要なlocaleは、コンパイルしないようにしておきます。
# mkdir -p /etc/portage
# echo "sys-libs/glibc userlocales" >> /etc/portage/package.use
/etc/locales.buildを編集して、
en_US/ISO-8859-1 en_US.UTF-8/UTF-8 de_DE/ISO-8859-1 de_DE@euro/ISO-8859-15
ja_JP.EUC-JP/EUC-JP ja_JP.UTF-8/UTF-8 ja_JP/EUC-JP
以外は、削除します。
次に
# emerge -uD system
を実行して、最新のportageで、ベースシステムをリコンパイルします。これには、かなり時間がかかります。寝る前に、実行して、朝起きたときには、まだ終わってませんでした。ただ、いままでのように途中で固まってセッションが切れてしまわなかったのが幸いです。なんとか、10時ころには、おわりました。
前にも述べましたが、玄箱Gentooは、時間がかかるのがネックです。1パッケージ1日がかりでは、サーバ化は程遠いです。
少しでもコンパイルを早くするために、ccacheとdistccを導入します。
まずは、ccacheから
# emerge ccache
これは、すんなり終わりました。
/etc/make.confを編集して
FEATURES="ccache" CCACHE_SIZE="2G" CCACHE_DIR="/var/tmp/ccache"
として、ccacheの設定は完了です。
次は、distccです。こちらも、時間はかかるけど、手順は簡単です。(お手伝いさせるボロPCでも、同様にdistccをインストールします)
# emerge distcc
これがなんと、依存モジュールなども引っ張ってくるので、40パッケージもインストールされるようです。12時ころ実行を始めて、今3時をまわったところ・・・
今、6つ目を実行しています 。
設定を、やってしまいます。
/etc/make.confを編集するわけですが、今実行中なので、
# cp /etc/make.conf /etc/make.conf.new
として、/etc/make.conf.newを編集して、後で差し替えることにします。変更箇所は次のとおり
PORTAGE_TMPDIR=/var/tmp MAKEOPTS="-j6" FEATURES="ccache distcc"
←distccを追加 DISTCC_DIR="${PORTAGE_TMPDIR}/.distcc"
ホストマシンの登録と、起動スクリプトの登録して、distccの導入は終わりです。
# ditcc-config --set-hosts "192.168.11.101"
# rc-update add distccd default
distccのemergeがまだ実行中ではありますが、『kurobox.com』な方法での、玄箱Gentoo化は、完了とします。国内の玄箱いじり諸先輩方は、とっくにいじりつくして、今は下火気味ではありますが、外国(たぶん米国?)では、ここまでいじりまくっているとは・・・びっくりです。
これからは、自宅サーバ化して、Webサーバとして公開したいと思っております。
(現在は、公開をやめております)
systemの本番emergeは、ブート後にやるとして、設定をやってしまいます。
なれないnanoは使いにくい。vimをいれてしまいます。
KURO-BOX-EM # emerge vim
viを使って、/etc/fstab — 次のように編集します。
/dev/hda1 / ext3 noatime 0 1
/dev/hda2 none swap sw 0 0
/dev/hda3 /var ext3 noatime 0 2
/dev/hda5 /server ext3 noatime 0 2
/dev/hda6 /backup ext3 noatime 0 2
/dev/hda7 /media ext3 noatime 0 2
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
マウントディレクトリを作成します。
KURO-BOX-EM /
# mkdir /server KURO-BOX-EM /
# mkdir /backup KURO-BOX-EM /
# mkdir /media
rootパスワードの変更と、一般ユーザの作成
KURO-BOX-EM / # passwd
New UNIX password:
Retype new UNIX password:
passwd: password updated successfully
KURO-BOX-EM / # useradd kuro -m -G users,wheel -s /bin/bash
KURO-BOX-EM / # passwd kuro
New UNIX password:
Retype new UNIX password:
passwd: password updated successfully
/etc/conf.d/netを次のように編集して、IPアドレスを割り当てます。
config_eth0=( "192.168.11.111 netmask 255.255.255.0" )
routes_eth0=( "default gw 192.168.11.1" )
/etc/hostsは、とりあえず以下のように
127.0.0.1 localhost kuro
telnetは使わず、sshを使います。
KURO-BOX-EM / # /etc/init.d/sshd start
少し時間がかかりますが、公開キー、秘密キーが生成されます。入れるかどうか、テストしておきます。
ボロPCから、
$ ssh root@192.168.11.3 ...
Password:
rootパスワードを入力し、入れればOKです。
ブート時に、ネットワークを有効にすることとsshdが起動するように、defaultランレベルに登録します。
KURO-BOX-EM / # /etc/init.d/sshd stop
KURO-BOX-EM / # rc-update add net.eth0 default
* net.eth0 added to runlevel default
* rc-update complete.
KURO-BOX-EM / # rc-update add sshd default
* sshd added to runlevel default
* rc-update complete.
マウントを解除して、通常モード(EMモードでない)で起動します。
KURO-BOX-EM / # exit
# umount /gentoo/var
# umount /gentoo/proc
# umount /gentoo
# echo -n "OKOK" > /dev/fl3
# reboot
一応これで、Gentoo化玄箱が、立ち上がるはずですが、次は仕上げとして、システムを最新の状態にすることと各種設定を行って、『kurobox.com』な方法でのGentoo化玄箱完成といたします。
・・・(To be continued)
これまでの、手順はほとんどボロPCのときと変わりません。それでは、chrootしてGentooシステム内にはいります。
# mount -t proc none /gentoo/proc
# cp -L /etc/resolv.conf /gentoo/etc/
# mount -t proc none /gentoo/proc
# cp -L /etc/resolv.conf /gentoo/etc/
# chroot /gentoo /bin/bash
KURO-BOX-EM / # source /etc/profile
プロンプトが、変わりました。
しばらくは使いにくいnanoを使うので、TERM変数を設定しておきます。
KURO-BOX-EM / # export TERM=vt100
portageスナップショットは、/varの直下につくります。kurobox.comでは、/var/tree下に作っていますが、今回使用しているファイルでそのようにすると、シンボリックリンクが、1つ深くなってしまってうまくいきません。
KURO-BOX-EM / #
以下の、portage下に必要なディレクトリを作っておきます。
KURO-BOX-EM portage # cd /var/portage
KURO-BOX-EM portage # mkdir distfiles
KURO-BOX-EM portage # mkdir packages
KURO-BOX-EM portage # mkdir rpm
KURO-BOX-EM portage # cd ..
KURO-BOX-EM portage # mkdir overlays
/etc/make.confをnanoで開いて、以下のように編集しました。
# Kurobox make.conf
CFLAGS="-O2 -mcpu=603e -fno-strict-aliasing -pipe -fsigned-char"
CXXFLAGS="${CFLAGS}"
PORTDIR=/var/portage
DISTDIR=/var/portage/distfiles
PKGDIR=/var/portage/packages
RPMDIR=/var/portage/rpm
PORTDIR_OVERLAY="/var/overlays/kurobox"
RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes
GENTOO_MIRRORS="http://mirror.gentoo.gr.jp/"
SYNC="rsync://192.168.11.121/gentoo-portage"
PORTAGE_TMPDIR=/var/tmp
MAKEOPTS="-j6"
FEATURES="distcc"
DISTCC_DIR="${PORTAGE_TMPDIR}/.distcc"
ボロPCをrsyncサーバーをして、玄箱ではよく失敗するportage更新を、LAN内で実行するように、SYNC変数を指定しています。
また、玄箱でネックとなる、コンパイルを少しでも、早く実行できるようdistccを利用して、ボロPCに手伝わせる指定もしております。
rsyncサーバの構築とdistccの導入については、別途『Gentooいじり』に書く予定です。
/etc/make.profileにシンボリックリンクをはっておきます。
KURO-BOX-EM portage # rm make.profile
KURO-BOX-EM portage # ln -s ../var/overlays/kurobox/profiles/kurobox make.profile
次に、portageキャッシュをアップデートしておきます。
KURO-BOX-EM portage # emerge metadata
emergeをテストランして、portageの整合性をチェックします。
KURO-BOX-EM portage # emerge -puD system
Calculating system dependencies ...done!
OK!
ついでに、ボロPCにrsyncして、portageを最新状態にしておきます。
KURO-BOX-EM portage # emerge --sync
ふ~む、多少早い気がする・・・。LAN内から、ダウンロードしてるんだから、その分早くなるのは当たり前か。
とりあえず、ここでティーブレイク。
・・・(To be continued)
パーティション分割は、ドキュメントにならって、160GBのディスクを次のように分割しました。
Device Boot Start End Blocks Id System
/dev/hda1 1 1246 10008463+ 83 Linux
/dev/hda2 1247 1309 506047+ 82 Linux swap
/dev/hda3 1310 2555 10008495 83 Linux
/dev/hda4 2556 19457 135765315 5 Extended
/dev/hda5 2556 4423 15004678+ 83 Linux
/dev/hda6 4424 6291 15004678+ 83 Linux
/dev/hda7 6292 19457 105755863+ 83 Linux
/dev/hda1 --- /
/dev/hda2 --- swap
/dev/hda3 --- /var
/dev/hda5 --- /server
/dev/hda6 --- /backup
/dev/hda7 --- /media
フォーマットです。
# for i in 1 3 5 6 7 ; do mke2fs -j /dev/hda$i ; done
コマンドラインでforループか、やるなぁ!
swap領域もフォーマット。
# mkswap /dev/hda2
ディスクをマウントして、ルートからのツリーを作成します。
# mkdir /gentoo
# mount -t ext3 /dev/hda1 /gentoo
# mkdir /gentoo/var
# mount -t ext3 /dev/hda3 /gentoo/var
ディスクがマウントされたので、ダウンロードしたファイルをftpで転送します。
ftp> put system-20060108.tar.bz2
ftp> put portage-20060127.tar.bz2
ftp> put overlay-20060122.tar.bz2
ファイルダンプ
# cd /gentoo
# tar xvjf system-20060108.tar.bz2
./bin/
./bin/gawk
./bin/awk
./bin/bunzip2
./bin/pgawk
./bin/igawk
./bin/rc-status
./bin/login
./bin/mount
./bin/umount
[...]
./var/spool/cron/lastrun/.keep
./var/spool/cron/.keep
./var/state/
./var/state/.keep
./var/empty/
./var/empty/.keep
ルートディレクトリは、次のようになってます。
# ls
bin etc lost+found proc sys var
boot home mnt root tmp
dev lib opt sbin usr
次は、chrootして、新Gentooシステム内に入ります。
・・・(To be continued)
それでは、前回見つけた『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)
玄箱は、初期状態から、telnetが使えみたいです。LinkStation/玄箱をハックしようの山下さんは、LinkStationからいじり始めたので、最初に、telnetを導入しているようです。
この点、玄箱は楽できます。
LinkStationというのは、腹違いの双子のようなもので(ありえない?!)、BUFFALOから出ているNASで、中身は玄箱とほぼ同じものが動いているらしい。
ルートパーティションには、2Gが割り当てられていますが、Gentoo化に先立ち、これをもっと増やしてやりたいです。
パーティションを切り直し、昨日バックアップした内容を戻してやれば、動くはずですが・・・。
HDDをGentooPCにつないで、
Device Boot Start End Blocks Id System
/dev/hdb1 1 4864 39070048+ 83 Linux
/dev/hdb2 4865 4896 257040 82 Linux swap / Solaris
/dev/hdb3 4897 19457 116961232+ 83 Linux
のように、パーティションを切り直しました。
# mount /dev/hdb1 /mnt/kuro_hda1
# mount /dev/hdb3 /mnt/kuro_hda3
# cd /mnt/kuro_hda1
# tar zxvf /home/kuro/kuro_hda1_102.tgz
# cd /mnt/kuro_hda3
# tar zxvf /home/kuro/kuro_hda3.tgz
これを、玄箱に戻して電源ON
・・・
・・・
・・・
動いた!よしよし!