SheevaPlug 請求書が来ました
8月28日にFedExから請求書が来ました。どうやらこちらのDAIさんからのコメントでも指摘があったように輸入消費税のようです。請求金額は\1,200で内訳は、
- 関税 \0
- 消費税 \600
- 地方消費税 \100
- 手数料 \500
となっていました。
コンビニか銀行振り込みで10日以内に支払いをしなさいとのことでしたので、コンビニで早速支払ってきました。ちなみに、銀行振り込みだと手数料がかかるようです。
8月28日にFedExから請求書が来ました。どうやらこちらのDAIさんからのコメントでも指摘があったように輸入消費税のようです。請求金額は\1,200で内訳は、
となっていました。
コンビニか銀行振り込みで10日以内に支払いをしなさいとのことでしたので、コンビニで早速支払ってきました。ちなみに、銀行振り込みだと手数料がかかるようです。
Apacheはaptでインストールしても良いのですが、今使っている玄箱と比較したいので、いつものようにセルフビルドする方針で行きます。
# apt-get install libssl-dev
# cd /opt
# mkdir srcall
# mkdir src
# chmod 777 srcall src
$ cd /opt/srcall
$ wget http://www.meisei-u.ac.jp/mirror/apache/httpd/httpd-2.0.63.tar.gz
$ cd ../src
$ tar zxf ../srcall/httpd-2.0.63.tar.gz
$ cd httpd-2.0.63
$ ./configure --disable-ipv6 --disable-include --disable-env --disable-status --disable-autoindex --disable-asis --disable-imap --enable-auth-digest --enable-ssl --with-ssl=/usr
$ su -
# cd /opt/src/httpd-2.0.63
# make install
httpd.confの設定などは後回しにします。とりあえずPHPが必要なのでこちらもセルフビルドします。 また、Apache2.0.63のconfigure,makeの時間をtimeコマンドで計測してみました。なお、比較対象は無印の玄箱(PowerPC 200MHz, メモリ64MB, OS:純正OS)です。
configure
| sheeva | kuro-box | |
|---|---|---|
| real | 3m 47.402s | 9m 32.803s |
| user | 2m 13.120s | 4m 55.290s |
| sys | 1m 33.250s | 4m 31.900s |
make
| sheeva | kuro-box | |
|---|---|---|
| real | 15m 26.416s | 31m 31.129s |
| user | 13m 21.240s | 25m 10.390s |
| sys | 2m 3.160s | 6m 3.380s |
続いてPHP5.2.10をセルフビルドします。
# apt-get install libxml2 libxml2-utils libxml2-dev
# apt-get install libjpeg62 libjpeg62-dev
# apt-get install libpng12-0 libpng12-dev
# apt-get install libgd2-xpm libgd2-xpm-dev
# apt-get install bison flex re2c
$ cd /opt/srcallうーん、なぜかインストール中にこんなWarningがたくさん出ます...
$ wget http://jp2.php.net/get/php-5.2.10.tar.gz/from/jp.php.net/mirror
$ cd ../src
$ tar zxf ../srcall/php-5.2.10.tar.gz
$ cd php-5.2.10
$ ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-pcntl --enable-mbstring --enable-mbregex --enable-zend-multibyte --without-mysql --with-pear=/usr/local/lib/php --with-openssl=/usr --with-zlib --with-zlib-dir=/usr/lib --with-gd=/usr --enable-gd-native-ttf --enable-gd-jis-conv --with-jpeg-dir=/usr/lib --with-png-dir=/usr/lib --with-xpm-dir==/usr/lib
$ make
# cd /opt/src/php-5.2.10
# make install
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line ...ググってみたけど、pearまわりのトラブル?
# pear version
PEAR Version: 1.8.0
PHP Version: 5.2.10
Zend Engine Version: 2.2.0
Running on: Linux sheeva 2.6.30.5 #1 PREEMPT Sun Aug 16 18:37:13 MDT 2009 armv5tel
# cp -p php.ini-dist /usr/local/lib/php.ini
# vi /usr/local/lib/php.ini
[mbstring]
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = EUC-JP
mbstring.detect_order = auto
mbstring.substitute_character = none;
expose_php = Off
$ cd /opt/srcallこんなWarningが出ます。
$ wget http://bart.eaccelerator.net/source/0.9.5.3/eaccelerator-0.9.5.3.tar.bz2
$ cd ../src
$ tar jxf ../srcall/eaccelerator-0.9.5.3.tar.bz2
$ cd eaccelerator-0.9.5.3/
$ /usr/local/bin/phpize
configure.in:158: warning: AC_CACHE_VAL(lt_prog_compiler_static_works, ...): suspicious cache-id, must contain _cv_ to be cachedググってみるとautoconf2.63だとダメみたいなのでバージョン2.13を入れた後、再度phpizeを実行します。
$ su -
# apt-get install autoconf2.13
# exit
$ /usr/local/bin/phpize
$ ./configure --enable-eaccelerator --with-eaccelerator-shared-memory --with-eaccelerator-sessions --with-eaccelerator-content-caching --with-eaccelerator-disassembler --with-eaccelerator-userid=80 ←80はApacheの起動ユーザのuidです。
$ make
# cd /opt/src/eaccelerator-0.9.5.3
# make install
;; eAccelerator
zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size = "32" ← 16MB以上に増やす場合は/etc/sysctl.confのkernel.shmmaxの値を増やして下さい。
eaccelerator.cache_dir = "/tmp/eac-cache" ← キャッシュ保存用ディレクトリ
eaccelerator.enable = "1"
eaccelerator.optimizer = "1"
eaccelerator.check_mtime = "1"
eaccelerator.debug = "0"
eaccelerator.filter = ""
eaccelerator.shm_max = "0"
eaccelerator.shm_ttl = "0"
eaccelerator.shm_prune_period = "0"
eaccelerator.shm_only = "0"
eaccelerator.compress = "0" ← 圧縮無し
eaccelerator.compress_level = "9"
eaccelerator.keys = "shm_only" ← メモリのみキャッシュを保存する場合
eaccelerator.sessions = "shm_only" ← メモリのみキャッシュを保存する場合
eaccelerator.content = "shm_only" ← メモリのみキャッシュを保存する場合
eaccelerator.allowed_admin_path = "/usr/local/apache2/htdocs/control.php"
# cd /etc/rc2.d
# ln -s /usr/local/apache2/bin/apachectl S97apache
# cd /etc/rc0.d
# ln -s /usr/local/apache2/bin/apachectl K10apache
# vi /etc/logrotate.d/httpd月1回、2世代まで保管する場合の例
/usr/local/apache2/logs/*_log {
monthly
rotate 2
postrotate
/usr/local/apache2/bin/apachectl restart
endscript
}この後、玄箱からrep2のファイルを持ってきて実行させたところ正常に動作しました。なお、期待していた実行速度ですが、明らかに速い箇所と、1.5倍ぐらいの速さのところがあり、まだまだチューニングが必要なようです。(素直にaptで入れた方が実行速度が速いって事はないよね...)
カーネル更新まで完了したので、OSの設定に入ります。
# vi /etc/network/interfaces
auto eth0↓以下の通り修正
iface eth0 inet dhcp
# /usr/share/doc/ifupdown/examples for more information.
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.1
# passwd
# useradd -u 1001 -g users -m -s /bin/bash ユーザ名
# passwd ユーザ名
# vi /etc/ssh/sshd_config
PermitRootLogin yes↓
PermitRootLogin no
# apt-get install sysv-rc-conf
# sysv-rc-conf
# sysv-rc-conf samba off
# apt-get update
# apt-get -u upgrade
# vi /etc/init.d/sysklogd2009/8/26訂正(修正するファイルを間違えていました)
# vi /etc/default/syslogd
SYSLOGD=""↓
SYSLOGD="-m 0"
# /etc/init.d/sysklogd restart
# apt-get update
# apt-get install build-essential
# apt-get install libtool
# vi /etc/hostname
# vi /etc/hosts
# shutdown -r now
今日はここまで。明日以降Apacheを入れる予定です。
Plug Wikiのこちらの記事を見ていると、SDカードでブートしてみてブートできなければ内蔵フラッシュメモリからブートさせることができるようなので、早速やってみました。
Marvell>> setenv bootargs_nand 'rootfstype=jffs2 console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1'
Marvell>> setenv bootcmd_nand 'setenv bootargs $(bootargs_nand); nand read.e 0x800000 0x100000 0x400000; bootm 0x800000'
Marvell>> setenv bootargs_sd 'console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mmcblk0p3 rootfstype=ext2 rootdelay=3'
Marvell>> setenv bootcmd_sd 'setenv bootargs $(bootargs_sd); mmcinit; ext2load mmc 0:1 0x800000 /sheeva-2.6.30.5-uImage; bootm 0x800000'
Marvell>> set bootcmd 'run bootcmd_sd; run bootcmd_nand'
Marvell>> saveenv
これで、SDカードがセットされていればSDカードから、SDカードがない場合は内蔵フラッシュメモリからブートするようになりました。
前回はrootファイルシステムのみSDカード、カーネルイメージは内蔵フラッシュという少し中途半端なところまでしかいけませんでした。
ということでリベンジです。今度こそSDカードのみで使えるようにしてみたいと思います。
# fdisk /dev/mmcblk0
Command (m for help): o
Command (m for help): n
Command action p
Partition number (1-4): 1
First cylinder (1-2046, default 1):
Last cylinder, +cylinders or +size{K,M,G} (1-2046, default 2046): +256M
Command (m for help): n
Command action p
Partition number (1-4): 2
First cylinder (136-2046, default 136):
Last cylinder, +cylinders or +size{K,M,G} (136-2046, default 2046): +512M
Command (m for help): n
Command action p
Partition number (1-4): 3
First cylinder (405-2046, default 405):
Last cylinder, +cylinders or +size{K,M,G} (405-2046, default 2046): そのまま[Enter]
Command (m for help): t
Partition number (1-4): 2
Hex code (type L to list codes): 82
Command (m for help): w
Command (m for help): q
# mkfs -t ext2 /dev/mmcblk0p1
# mkfs -t ext2 /dev/mmcblk0p3
# mkswap /dev/mmcblk0p2
# mount /dev/mmcblk0p1 /mnt/sdcard
# cp -p /root/sheeva-2.6.30.5-uImage /mnt/sdcard
# umount /mnt/sdcard
# mount /dev/mmcblk0p3 /mnt/sdcard
# cp -ax / /mnt/sdcard
# cp -a /dev /mnt/sdcard
# umount /mnt/sdcard
Marvell>> set bootargs 'console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs)rw root=/dev/mmcblk0p3 rootfstype=ext2 rootdelay=3'
Marvell>> set bootcmd 'mmcinit; ext2load mmc 0:1 0x800000 /sheeva-2.6.30.5-uImage; bootm 0x800000'
Marvell>> boot
# swapon /dev/mmcblk0p2
# mkdir /boot
# vi /etc/fstab
/dev/mmcblk0p2 swap swap defaults 0 0
/dev/mmcblk0p1 /boot ext2 defaults 0 0
今度はbootargsのmdtpartsを設定したため、OS起動時に uncorrectable error : <3>uncorrectable errorが出ません。心なしか起動も速いような感じがします。
また、bootcmdで使用しているext2loadコマンドですが、こちらによると引数は以下のような意味があるようです。
mmc インターフェイス (mmcはSDカードを指す)
0:1 デバイス番号(0~):パーティション番号(1~) (デバイス0のパーティション1を指す)
0x800000 ロードするアドレス
/sheeva-2.6.30.5-uImage ロードするファイル名
また、Plug Wikiのこちらの記事も参考になります。
一度更新したubootですが、SDカードからの起動に対応していないため、対応版に更新します。 本来はこのあたりを参考にubootのパッチ当てと再コンパイルが必要なのですが、Windowsマシンで作業しているため、「Hisao's blog」さんがこちらで公開されているコンパイル済みのバイナリを使用させていただきます。 手順としては以下の通りです。
Marvell>> bubt u-boot-rd88f6281Sheevaplug_400db_nand-sd.bin
Using egiga0 device
TFTP from server 192.168.2.222; our IP address is 192.168.2.10
Filename 'u-boot-rd88f6281Sheevaplug_400db_nand-sd.bin'.
Load address: 0x2000000
Loading: #################################################################
###########################
done
Bytes transferred = 470920 (72f88 hex)
**Warning**
If U-Boot Endiannes is going to change (LE->BE or BE->LE), Then Env parameters should be overriden..
Override Env parameters? (y/n) n ← nを入力
Erase 0 - 655360 ...
Copy to Nand Flash...
done
Marvell>> reset
Marvell>> version
U-Boot 1.1.4 (Aug 22 2009 - 11:36:42) Marvell version: 3.4.16
Marvell>> boot
ubootが更新できたら、内蔵フラッシュのファイルをSDカードにコピーし、SDカードからブートできるようにします。
# fdisk /dev/mmcblk0
# mkfs -t ext2 /dev/mmcblk0p1
# mkfs -t ext2 /dev/mmcblk0p3
# mkswap /dev/mmcblk0p2
# mkdir /mnt/sdcard
# mount /dev/mmcblk0p1 /mnt/sdcard
# cp -ax / /mnt/sdcard
# cp -a /dev /mnt/sdcard
Marvell>> setenv bootargs console=ttyS0,115200 root=/dev/mmcblk0p1
Marvell>> boot
swapon /dev/mmcblk0p2
# mkdir /www
# vi /etc/fstab
/dev/mmcblk0p3 /www ext2 rw 1 1
# vi /etc/fstab
/dev/mmcblk0p2 swap swap defaults 0 0
これでSDカードからブートできるようになりました。SDカードからのブートをメインにする場合は、bootargsを変更後、saveenvで保存して下さい。
なお、起動時に uncorrectable error : <3>uncorrectable errorなどが表示されるようです。もう少し修正が必要なのかもしれません。
2009/08/24 追記
どうやら、この設定ではカーネルイメージは内蔵フラッシュから読み込んでいるようです。(bootcmdがnand readのままのため) 出直してきます...
カーネル更新の前に、まず、ネットワークが使えるようにします。
# vi /etc/dhcp3/dhclient.conf以下の行をコメントアウトします。
supersede domain-name-servers 127.0.0.1;
# dpkg-reconfigure tzdataメニューでAsia→Tokyoを選択
# ntpdate 210.173.160.27
# hwclock -w
# vi /etc/hosts
91.189.88.36 ports.ubuntu.com
起動時になぜか変な時刻にしてたりする箇所をがあるので、修正しておきます。
# vi /etc/rc.local
以下の行をコメントアウトします。
insmod /boot/fat.ko
insmod /boot/vfat.ko
/root/discoverd
cd /
date 012618002009
hwclock -w
ロケールを設定します。
# locale-gen ja_JP.UTF-8
# echo 'LANG="ja_JP.UTF-8"' > /etc/default/locale
一度リブートします。
# shutdown -r now
OS起動後 wgetをインストールします。
# apt-get install wget
カーネルの更新を行います。
# wget http://sheeva.with-linux.com/sheeva/README-2.6.30.5
# chmod u+x README-2.6.30.5
# ./README-2.6.30.5
一度リブートしてubootに入ります。
# shutdown -r now
ubootに入って環境変数を変更します。
Marvell>> setenv mainlineLinux yes
Marvell>> setenv arcNumber 2097
Marvell>> setenv bootargs rootfstype=jffs2 console=ttyS0,115200 mtdparts=orion_nand:0x400000@0x100000(uImage),0x1fb00000@0x500000(rootfs) rw root=/dev/mtdblock1
Marvell>> saveenv
OSを起動します。
Marvell>> reset
OS起動後、カーネルが更新されていることを確認します。
# uname -a
Linux debian 2.6.30.5 #1 PREEMPT Sun Aug 16 18:37:13 MDT 2009 armv5tel GNU/Linux
とりあえず手持ちのWindows XPマシンと接続してみる。(XPマシンには予めTeraTermをインストールしておいてください。)
しばらく待つとTeraTerm上にOSの起動メッセージが表示されます。[Enter]を押すと
Ubuntu jaunty (development branch) debian ttyS0
debian login:
と表示されるので、一度rootでログインします。(パスワードはnosoup4uです。)
ubootのバージョンを確認するため、shutdown -r now でリブートします。
Hit any key to stop autoboot: 0
と表示されたら[Enter]キーを押してubootに入り、versionコマンドでバージョンを確認
Marvell>> version
U-Boot 1.1.4 (Mar 19 2009 - 16:06:59) Marvell version: 3.4.16
不具合ありバージョンみたいです。
ということで、ubootを更新します。
Marvell>> set ipaddr 192.168.2.10 ← SheevaPlugのIPアドレス
Marvell>> set serverip 192.168.2.222 ← XPマシンのIPアドレス
Marvell>> set netmask 255.255.255.0
Marvell>> printenv
Marvell>> saveenv
Marvell>> bubt u-boot-rd88f6281Sheevaplug_400db_nand.bin
Override Env parameters? (y/n) n ←必ずnを選択
Marvell>> reset
Marvell>> version
U-Boot 1.1.4 (Apr 9 2009 - 12:23:12) Marvell version: 3.4.16
Marvell>> boot
今日はこのへんまで。明日からKernelの更新に入ります。(用意しておいたLinuxマシン使ってないなあ...)
8月22日にようやく到着しました。
ちなみにログインして確認しても、まだTracking Numberは、「Pending From FedEx ShipManager 」のままです。
いったいどうなってるのやら。ちなみに添付の資料を見ると出荷日は8月18日でした。ログイン画面では8月13日出荷なのに、全然違うじゃないですか。
こちらの続きです。
あの後、8月12日の夜にGlobalscale Technologiesに出荷がいつ頃になるのかを再度問い合わせてみたところ、翌朝メールが返ってきました。
Due to the demand of certain components, currently we are fulfilling all back orders for now.
We expect to receive next lot production in by August 21, 2009.
どうも部品が2009年8月21日になるとのこと。出荷は9月頃からかな、とあきらめていたところ、先ほどログインして確認すると
Shipping Status
Shipped via FedEx International Economy|84.97|0.00 on 8/13/2009 1:00:23 PM Tracking Number: Pending From FedEx ShipManager
出荷されてるじゃん。
まだFedExの出荷番号がついてないようですが、とりあえず出荷されているようです。
来週ぐらいには来るかな?
最近のコメント