LS-XH500Lを購入した。
購入目的は、ビルドマシン。-- 1.2GHz もの高クロックで動作し、メモリも 256MB も載っているという ARM マシンは、こいつの他には(たぶん?)ない。だから ビルドする環境はぜひコイツの上に構築したい。
どうやって、そういう環境を作るか。fedora core 6 , 8 , 10 を ARM に移植したものが公開されている。
→
http://ftp.linux.org.uk/pub/linux/arm/fedora/ここの
rootfs-f8.tar.bz2 and/or
rootfs-f10.tar.bz2を取ってきて ホストマシンで、bunzip2 しておく。
で、コイツに telnet して、tar -xvpf xxx.tar で展開し、chroot すれば、最初のビルド環境になる。
問題はどうやって telnet できるようにするか?
1. 確実な方法
LS-XHL を分解して、 ハードディスクを取り出し、USB ハード DISK ケースに入れる。
EFI GPT パーティションを扱え かつ xfs をサポートしている Linux マシン(ubuntu 8.10は OK) に接続して、/etc/shadow と /etc/init.d/rcS を編集する。
telnet 有効化/ root のパスワードを潰すが参考になる。
この方法は確実だ。ただし、LS-XHL を分解すると 保証はもちろんなくなる。その上 ツメをいくつか壊してしまう可能性がかなりある。(私は やってしまった。)
2. やってみる価値がある方法
ファームウェア 1.03 をダウンロードし、↑の改変を行ったものをインストールする。
( 改変する方法は、ファームウェア を実行して出てくる ファイル名で、ググれば 見つかる。)
改変したものを LSUpdater.exe で インストールしたいわけだが.. ファームウェアは 最初から 1.03 で通常の方法では、再インストールできない。
tftpboot を使ったクリアインストールなら、ファームウェア 1.03 の再インストールができる。
手順は、次のとおり
1) Web のシステム→初期化 メニューから ディスク完全フォーマットを実行して、ハードディスクを初期状態にする。
2) BUFFALO LinkStation HDD換装方法を参考にして、ファームウェアのインストールを行う。
(LS-XHL の場合、赤く点滅しているはず。ftpd の準備が出来たら、FUNCTION ボタンを押すこと。そうすると 青の点滅に変わり tftpbtoot が開始される。)
まず、この方法も危険である。HDD換装方法をみて簡単そうだと思えなければやるべきではない。あと分解する覚悟は必要。
ちなみに、ハードディスクの初期状態にするのは、/usr/local/bin/zerofill.sh を実行して ディスクを全部 0 で埋めている。DISK 全部に書くので時間がかかる。中途半端に停止させるのはまずいので、最後まで実行すべき。
おまけ: 試行錯誤することになるかも知れない。そのたびに 数時間かかるのではやってられないので、zerofill.sh も 編集しておくと良いかも知れない
dd if=/dev/zero ... bs=8M
↓
dd if=/dev/zero ... bs=1M count=100 conv=sync
ただし、zerofill.sh は、initrd のほうにある。mkimage とかが使える環境を持っていないと 無理。
結局のところ、分解するはめになった。2 の方法はうまくいくかどうかはよくわからない。
さて、とにもかくにも telnet できるようになり、chroot をやってみた。
rootfs-f8.tar, rootfs-f10.tar ともに OK 。
実をいうと、以前 LS-GL でこれをやってみたのだが、カーネルが古くて chroot できなかった。(fc6 は OK 。だが fc8 では ABI が変わったので NG。)。で、面倒になって放置したのだ。
おそらく 玄箱/PRO も同じ理由で NG のはず。LS-CL は 2.6.22 なので、おそらく OK。
なにを ビルドしたいのか?ビルドしたいのは、RHEL5 相当のもの。サーバなので、全部をビルドするのでなく、必要なものだけにする方針。
RHEL5 の gcc は、4.1.2 なので、ベースにするのは、同じ 4.1.2 を使っている fedora core 8 にすることにする。
gcc や binutils あるいは rpm のバージョンがお互いに近いから、あまり困難はないと思える。まぁ、どうなるか分からないが まずは始めてみることにする。
といっても 最初からつまずく。
rpmbuild が rootfs に入っていないのだ、結局 rpmbuild を動かせるまで 試行錯誤しながら rpm の ダウンロードを繰り返す。
とりあえず rpm やら gcc を最新にしてインストールして rpmbuild できるようにしてみたところ .. ビルドされるアーキテクチャ は、armv5tejl になった。-- オリジナルの rpm は全部 armv5tel 。armv5tejl でいいのか? 少々疑問だが、これで作ってみることに。
おまけ LS-XHL はどれぐらい速い?
ちょっといにしえの dhrystone を引っ張り出して比較してみた。
ソースコード :
http://nmj.sumomo.ne.jp/arc/dhrystone.c結果: コンパイルはすべて gcc -O2 、3 回実行して最速を採用
LS-XHL (ARM ORION6 1.2GHZ) 1519756 (gcc-4.1.2)
LS-GL (ARM ORION5 400 MHz) 431778 (gcc-4.1.1)
kurobox/HG (PPC MPC8241 266MHz) 687757 (gcc-3.4.5)
Pentium III 1GHz 2118644 (gcc-3.3.2)
eeePC 701SD(Celeron-M 900MHz) 3318258 (gcc-4.3.2)
コンパイラの性能が入ってしまうし、そもそも dhrystone だし、CPU 自体を比較するものではない。... が、こんなものか。
LS-XHL は、LS-GL の 3.5 倍。クロックの差以上に速くなっている。gcc の最適化の差?
ちなみに、LS-GL (ARM ORION5 400MHz) は、PPC 266MHz に負ける。ORION5 は 同時に 2 命令実行できるはずなのだが、それ用に最適化できないと あまり速くない(らしい)。
それはともかく、LS-GL の 3.5 倍も速いので満足。
Pentium III 1GHz と比べると 70% ぐらいの性能。まぁ、比較できるレベルにまでなっているから、ARM も速くなったものだ。
それにしても、Celeron-M ってこんなに速いのか? ... なにか間違っているのかも。ひょっとして、gcc-4.3 でチート入ってる?
あと、ORION5 とか ORION6 とか 書いたのは、Linux カーネルの config を元にした。記憶によると ORION というのは SoC の名前(= CPUの名前) で、Feroceon とかは Xscle みたいなアーキテクチャの名前で ARM926EJ-S 互換?。で、arch として認識しているのは、armv5tejl とか .. arm + v5 + 追加命令セット の命名規則。
ビルドがすごく遅いことに気が付いた。
ビルドをちょっと止めて、top を実行してみたら ... びっくり。
twonkymediaserver と mt-daapd が仲良く 50 % づつ消費しているではないか。
これはいったい?
とりあえず メディアサーバを止めることで、twonkymediaserver は止まったが、mt-daapd が 100% になった。
しょうがないので、kill -TERM で停止させた。
追記: 2008/3/18
USB DISK (500G) をつないで使っていたのだが、USB DISK に ガツーンと 重量のあるものをぶつけてしまった。となりに あった LS-XHL も 将棋だおしのごとく 衝撃を与えてしまった。
で、USB DISK は、電源を入れると カッ、カッ、カッ .. と言うだけの存在になってしまった。ついでに LS-XHL もなんかおかしい。
LS-XHL のハードディスクを 初期化したくて、システム→初期化→ディスク完全フォーマットをやってみた。
やってみてわかったのだが、ディスク全体に 4 回書き込む。1 回目は 0 書き、2回目と 4回目は 1書き。3 回目は見逃したのでわからない。 ディスク全体といっても データパーティションをきれいにするだけで、システムは初期化しなかった。
システム側もおかしいらしく、まだなんかおかしい。
しょうがないので、telnetd を仕込んだ 1.04β をインストールしてみたのだが .... 失敗。
よくわからないのだが、/etc/shadow が元にもどっている。
またカラ割りするかどうか悩んだのだが、admin で login できることがわかった。ただし、admin は root ではないので出来ることに制限がある。
いろいろ探してみると、/dev/sda が書き込める状態なのを発見し、dd で壊すことによって、tftp boot できる状態になった。
前回と同じように、ちゃんと仕込んだ ファームウェア 1.03 をインストールすることで、ようやく元に戻せた。
いろいろビルドしていたものが吹っ飛んでしまった。... のだが なんか失敗していて変だったので、最初からやりなおす良い機会かも。