Gentoo玄箱、一丁あがり!

英語サイト『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日がかりでは、サーバ化は程遠いです。

少しでもコンパイルを早くするために、ccachedistccを導入します。

まずは、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

distccemergeがまだ実行中ではありますが、『kurobox.com』な方法での、玄箱Gentoo化は、完了とします。国内の玄箱いじり諸先輩方は、とっくにいじりつくして、今は下火気味ではありますが、外国(たぶん米国?)では、ここまでいじりまくっているとは・・・びっくりです。

これからは、自宅サーバ化して、Webサーバとして公開したいと思っております。
(現在は、公開をやめております)

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

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)

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

これまでの、手順はほとんどボロ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.confnanoで開いて、以下のように編集しました。

# 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)

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

パーティション分割は、ドキュメントにならって、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)

玄箱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)

パーティションの切り直し


玄箱は、初期状態から、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
・・・
・・・
・・・
動いた!よしよし!