SheevaPlug 復活
昨日死亡したSheevaPlug ですが、復活しました。
ハードオフで5V/2.6AのACアダプタを315円で入手しました。
壊れた内蔵電源からコネクタ部分を切断し、購入したACアダプタと接続することであっさりと復活しました。
| 固定リンク
| コメント (0)
| トラックバック (0)
昨日死亡したSheevaPlug ですが、復活しました。
ハードオフで5V/2.6AのACアダプタを315円で入手しました。
壊れた内蔵電源からコネクタ部分を切断し、購入したACアダプタと接続することであっさりと復活しました。
| 固定リンク
| コメント (0)
| トラックバック (0)
昨日の夜から30分~1時間おきぐらいにSheevaPlugがリブートを繰り返すので、いったん電源をOFFにして、コンソールをつないで確認しようとしたら、電源のLEDとLANのLEDが点滅して起動しない...
いろいろググると同じ症状の方々が。
どうやら電源が死んでるみたいです。
5V2AのACアダプタで復活させようか...
| 固定リンク
| コメント (0)
| トラックバック (0)
久しぶりにApacheをバージョンアップしました。
以下、その手順です。
Apache停止
# /etc/rc2.d/S97apache stop
# exit
Apacheのビルド&インストール
$ cd /opt/srcall
$ wget http://www.meisei-u.ac.jp/mirror/apache/httpd/httpd-2.0.64.tar.gz
$ cd ../src
$ tar zxf ../srcall/httpd-2.0.64.tar.gz
$ cd httpd-2.0.64
$ ./configure --disable-include --disable-env --disable-status --disable-autoindex --disable-asis --disable-imap --enable-auth-digest --enable-ssl --with-ssl=/usr --enable-deflate
$ su -
# cd /opt/src/httpd-2.0.64
# make install
# exit
PHPのビルド&インストール
$ cd /opt/srcall
$ wget http://jp2.php.net/get/php-5.2.15.tar.gz/from/jp.php.net/mirror
$ cd ../src
$ tar zxf ../srcall/php-5.2.15.tar.gz
$ cd php-5.2.15
$ ./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
$ su -
# cd /opt/src/php-5.2.15
# make install
# exit
eAcceleratorのビルド&インストール
$ cd /opt/srcall
$ wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2
$ cd ../src
$ tar jxf ../srcall/eaccelerator-0.9.6.1.tar.bz2
$ cd eaccelerator-0.9.6.1/
$ /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
$ make
# cd /opt/src/eaccelerator-0.9.6.1
# make install
Apache起動
# /etc/rc2.d/S97apache start
# exit
いろいろと調べたところ、こちらと同じように、Apacheが起動しない時にpsコマンドで見ると、random_readで止まっています。
# ps ax -o pid,comm,wchan | grep httpd 1815 httpd random_readentropy_availも少ないようです。
# cat /proc/sys/kernel/random/entropy_avail 51対策としては、rng-toolsをインストールすればよいらしいのですが、
# apt-get install rng-tools Trying to create /dev/hwrng device inode... .udevdb or .udev presence implies active udev. Aborting MAKEDEV invocation. Starting Hardware RNG entropy gatherer daemon: (Hardware RNG device inode not found) /etc/init.d/rng-tools: Cannot find a hardware RNG device to use. invoke-rc.d: initscript rng-tools, action "start" failed.デバイスが無いようで起動してくれません。
HRNGDEVICE=/dev/urandomを追記し、
# /etc/init.d/rng-tools start Starting Hardware RNG entropy gatherer daemon: rngd.とすると動きました。entropy_availも問題ないようです。
# cat /proc/sys/kernel/random/entropy_avail 1991Apacheも正常に起動するようになりました。
| 固定リンク
| コメント (0)
| トラックバック (0)
rep2(現在はp2)を1.8.40から1.8.58にバージョンアップしていると、conf_admin.inc.phpに気になるコメントを見つけました。
// pecl_http が利用できる場合、HttpRequestPool による並列ダウロードを有効にする(※PHP5以上のみ可)
// この設定を有効にした場合は、$_conf['dlSubjectTotalLimitTime*'] の設定が無効となる。
// (off:0, on:1, モバイル時のみon:3) // cli:2 は未対応
$_conf['expack.use_pecl_http'] = 0; // (0)
そもそも今回玄箱からSheevaPlugに変えたのはrep2を高速化させるためでした。たしかにCPUクロックの向上とメモリの増加によりPHP自体の高速化はできたものの、[更新]ボタンを押した際のレスポンスは大して速くなりませんでした。どうやら2chのサーバからのダウンロードがボトルネックになっているようで、高速化をあきらめていましたが、並列ダウンロードとなればさらなる高速化が期待できます。早速pecl_httpを使えるようにしてみたいと思います。
とりあえずは、peclでinstallを試してみたものの
# pecl install pecl_http
pecl.php.net is using a unsupported protocal - This should never happen.
install failed
エラーが出てインストールできません。仕方がないのでソースからビルドします。
$ wget http://pecl.php.net/get/pecl_http-1.6.5.tgz
$ tar zxf pecl_http-1.6.5.tgz
$ cd pecl_http-1.6.5/
$ ./configure
…
checking for curl/curl.h... not found
configure: error: could not find curl/curl.h
curl.hが無いみたいです。
$ su -
# apt-get install libcurl3 libcurl3-gnutls
# apt-get install libcurl4-gnutls-dev
# exit
$ ./configure
…
checking for curl/curl.h... found in /usr
checking for curl-config... found: /usr/bin/curl-config
checking for curl version >= 7.12.3... 7.18.2
…
creating libtool
appending configuration tag "CXX" to libtool
updating cache ./config.cache
creating ./config.status
creating config.h
今度はうまくいきました。それでは、makeします。
$ make
…
Build complete.
Don't forget to run 'make test'.
$ su -
# make install
Installing shared extensions: /usr/local/lib/php/extensions/no-debug-non-zts-20060613/
Installing header files: /usr/local/include/php/
# ls /usr/local/lib/php/extensions/no-debug- non-zts-20060613/
eaccelerator.so http.so
インストールされたようですので、php.iniを修正します。
# vi /usr/local/lib/php.ini
; Directory in which the loadable extensions (modules) reside.
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613/
extension=http.so
conf_admin.inc.phpを修正前後でどれぐらい応答時間が違うか「最近読んだスレ」の[更新]で測定してみます。(最近読んだスレの記録数は1000にしています。)
$_conf['expack.use_pecl_http'] = 0の場合
192.168.1.xxx - - [10/Sep/2009:21:36:51 +0900] "GET ..... HTTP/1.1" 200 214782 20
$_conf['expack.use_pecl_http'] = 1の場合
192.168.1.xxx - - [10/Sep/2009:21:40:11 +0900] "GET ..... HTTP/1.1" 200 214782 14
20秒→14秒...1.43倍,うーん微妙。
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のこちらの記事も参考になります。
SheevaPlug | メモ | 日記・コラム・つぶやき | 設定メモ
最近のコメント