A.Saitouのページ

カウンタ

コンピュータと陸上競技生活についてまとめる個人のページです.


コンピュータ:2009年のログ
WinXPで任意サイズのファイルを作る2009/02/19

 テスト用に任意サイズのファイルを作りたいときがあります.そのときのコマンドは次の通りです.

C:\ fsutil file createnew c:\hoge.dat [size]
玄箱 kuro-box の U-Boot 化2009/01/17

 玄箱 kuro-box をU-Boot化した時のメモを掲載します.このU-Boot化によってloader.oよりカーネルの切替が安定しました.

 手順は次の通りです.この流れにそって説明します.ただし,玄箱はDebian化が完了している状態とします.

  1. カーネル更新:ターゲット玄箱での作業
  2. 監視側マシン準備:監視側マシンでの作業
  3. U-Boot化:ターゲット玄箱での作業

 カーネルはhttp://www.genbako.com/さんから最新のものを頂いてきます.この文章の作成時点ではkernelimage-2.6.25.1-kuroBOX.tgzとmodules-2.6.25.1-kuroBOX.tgzが最新です.そして,install-new-kernel.sjis.txtの通りカーネル更新を実施します.最後に次のシンボリックリンクを作成します.

# cd /boot
# ln -s uImage vmlinux.UBoot

 次に監視側マシンの準備をします.今回は,シリアルコンソールをつけるのが面倒なので,netcatを使います.うちは玄箱が2台あるので,一台を監視側にするため,次の手順でインストールし,監視状態にします.Winでやる場合はhttp://www.genbako.com/u-boot_loader/にnc111nt.zipが置かれていますので,こちらを利用させて頂きます.

# apt-get install netcat

 そして次の手順で監視状態にします.ただし,Linux(Debian)マシンが監視側の場合です.

(1)IPの追加
 下の内容を /etc/network/interfaces へ追加します.
---
iface eth0:0 inet static
  address 192.168.11.149
  network 192.168.11.0
  netmask 255.255.255.0
  broadcast 192.168.11.255
auto eth0:0
---

(2)ネットワークインタフェースの再起動
 これでIP 192.168.11.149 が追加されます.
---
# /etc/init.d/networking force-reload
---

(3)監視開始
 ユーザモードで実行します.rootでもかまいません.
---
$ nc -v -v -n -u -s 192.168.11.149 -p 6666 192.168.11.150 6666
--

 ここからが本番です.間違うと玄箱がごみ化してしまうので,要注意です.

 まず,U-Bootのバイナリファイルu-boot-hd.flash.binをhttp://www.genbako.com/u-boot_loader/からターゲット玄箱の任意の場所にダウンロードさせて頂きます.ダウンロードしたファイルをmd5sumでハッシュをチェックします.ファイルが不完全だと玄箱がゴミになりますので,必ず確認します.

 次に,下のようにターゲット玄箱をEMモードで起動します.

(1)カーネルバージョンの確認
---
# uname -a
---

(2)カーネル2.4の場合
---
# echo -n "NGNG" > /dev/fl3
---

(3)カーネル2.6の場合
---
# echo -n "NGNG" > /dev/mtdblock2
---

(4)再起動
---
# shutdown -r now
---

 EMモードの玄箱にログインしたら次の手順でコマンドでフラッシュROMを書き換えます.

 ここでは/dev/hda1のrootディレクトリにファイルがあるとします.
(1)U-Bootのバイナリファイルを保存したパーティションをマウント
---
# mount /dev/hda1 /mnt
#
---

(2)ディレクトリ移動とファイル確認
 念にも念を入れて確認します.
---
# cd /mnt/root
#
# ls -l u-boot-hd.flash.bin
---

(3)フラッシュROM書書き換え
---
# cat u-boot-hd.flash.bin >/dev/fl2
#
---

(4)EMモード解除
---
# /usr/bin/write_ok
#
---

(5)再起動
---
# reboot
#
---

 フラッシュROMの書き換えが成功していれば,監視側マシンの画面に下のように表示されます.

$ nc -v -v -n -u -s 192.168.11.149 -p 6666 192.168.11.150 6666
(UNKNOWN) [192.168.11.150] 6666 (?) open

U-Boot 1.1.4 LiSt 2.1.0 (Sep 21 2006 - 00:22:56) LinkStation / KuroBox
stdin :   nc
stdout:   nc
stderr:   nc
IDE:   Bus 0: OK
  Device 0: Model: Memory Card Adapter Firm: 67281306 Ser#: 0
            Type: Removable Hard Disk
            Capacity: 7742.0 MB = 7.5 GB (15855616 x 512)
Boot in 01 seconds ('s' to stop)...
Loading 0:1:boot/vmlinux.UBoot

1432414 bytes read
## Booting image at 00800000 ...
   Image Name:   Linux-2.6.25.1-kurobox
   Image Type:   PowerPC Linux Kernel Image (gzip compressed)
   Data Size:    1432350 Bytes =  1.4 MB
   Load Address: 00000000
   Entry Point:  00000000
   Verifying Checksum ... OK
   Uncompressing Kernel Image ... OK

 お疲れ様でした.m(_ _)m

 U-Boot化後,よく使うコマンドは次の2つです.

(1)EMモード起動
---
run writeng
run emboot
---

(2)EMモードを解除して通常起動
---
run writeok
boot
---

【余談】
 U-Boot化によってlastコマンドを確認したところ,次のような変化がありました.

(1)loader.o カーネル 2.6.25-1
---
$ last
reboot   system boot  2.6.25.1-kurobox Mon Jan 12 22:45 - 23:18  (00:32)
reboot   system boot  2.4.17_kuro-box  Mon Jan 12 22:45 - 22:45  (00:00)
---

(2)U-Boot カーネル 2.6.25-1
---
$ last
reboot   system boot  2.6.20-kurobox   Thu Jan 15 17:24 - 17:31  (00:07)
---

 loader.oでは,一時的にカーネル2.4と2.6の両方が立ち上がり,二重ログインのような状態になっています.対して,U-Boot化後はカーネル2.6だけです.loader.oを使っていた頃,たまにカーネル2.4で起動してしまう現象がありました.これで,2.4で立ち上がることは無くなったかもしれません.

Debian Etch で Postfix(SMTP-AUTH) + qpopper(APOP)2009/01/17

 Debian Etch(玄箱 kuro-box)で Postfix(SMTP-AUTH) + qpopper(APOP)を構築しましたので,その時のメモを掲載します.一度,qmailで環境を構築したのですが,qmailにSMTP-AUTHのパッチを当てる必要があったのでやめました.また,postfixなら普通はcourier-imapなのですが,デフォルトでAPOPに対応していないのでqpopperにしました.

 まず,必要なパッケージをインストールします.

# apt-get install postfix-tls sasl2-bin libsasl2-modules qpopper
#

 インストール中,不要なパッケージを削除してくれたり,必要な設定項目を聞かれます.あとで設定変更するので,デフォルトで進めていきます.

 次に,postfixの設定です.qpopperの設定は特にありません.

(1)main.cfの設定
 うちの環境では,次のように設定しました.細かい設定値はpostfixのマニュアル
などで調べてください.最低限のセキュリティを考慮してます.
# vi /etc/postfix/main.cf
---
smtpd_banner = $myhostname ESMTP

biff = no

append_dot_mydomain = no

disable_vrfy_command = yes
smtpd_helo_required = yes

myhostname = mail.hoge.hoge   # 自分のFQDNを設定
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname
relayhost = 
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

# SMTP-AUTHに関する設定項目
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
smtpd_enforce_tls = no
smtpd_recipient_restrictions =
        permit_mynetworks,
        permit_sasl_authenticated,
        permit_auth_destination,
        reject
broken_sasl_auth_clients = yes
---

(2)smtpd.conf
# vi /etc/postfix/sasl/smtpd.conf
---
pwcheck_method:auxprop
mech_list: plain login cram-md5 digest-md5
---
※Outlook Express用にplainとlogin認証を追加.(2009/04/13追記)


(3)パスワードファイルのハードリンク
 postfixから読めるようにグループを変更します.(2009/04/08追記)
---
# chgrp postfix /etc/sasldb2
#
--
 ここで盛大にはまりました.要注意の設定項目です.ちなみに,シンボリック
リンクではNGでした.
---
# ln /etc/sasldb2 /var/spool/postfix/etc/sasldb2
#
---

 設定はこれで完了です.次にユーザ登録です.SASL(Simple Authentication and Security Layer)とAPOPでそれぞれ分かれていますので,2回ユーザ登録が必要になります.

 user00というユーザを登録するとします.なお,user00にはUNIXアカウントが必要です.

(1)SASLの登録
---
# saslpasswd2 -u mail.hoge.hoge user00
Password: 
Again (for verification): 
#
---

(2)SASLの確認
---
# sasldblistusers2 
mail.hoge.hoge: userPassword
#
---

(3)APOPの初期化
 初回のみ必要です.
---
# popauth -init
#
---

(4)APOPの登録
---
# popauth -user user00
Adding only APOP password for user00.
New password:
Retype new password:
#
---

 最後に,postfixとqpopperを再起動します.

(1)postfixの再起動
---
# /etc/init.d/postfix force-reload
Reloading Postfix configuration...done.
#
---

(2)qpopperの起動(再起動)
---
# kill -HUP `cat /var/run/inetd.pid`
#
---

 これで,SMTP-AUTH+APOPなメールサーバが出来たはずです.ただし,Thunderbird2.0しか試してません.Outlookなど他のメーラでは設定変更が必要かもしれません.

【余談】
 ユーザ管理は,簡単なスクリプトを作った方がいいですね.同じパスワードを4度も入力するなんて許せません.(笑)

PHP高速化 eAccelerator2009/01/16

 PHPソフトウェアを高速化する方法はいくつかありますが,お手軽なeAcceleratorを使ってみました.主な目的は2ch Viewer p2の高速化です.ターゲット環境は無印玄箱-Debian Etch-です.

 手順は次のようになります.バイナリで提供されていないので,ソースからビルドが必要になります.なお,apache2とPHPは導入済みを前提とします.

# apt-get install php5-dev re2c make
# 
# cd /tmp
# wget http://downloads.sourceforge.net/eaccelerator/eaccelerator-0.9.5.2.zip
# unzip eaccelerator-0.9.5.2.zip
# cd eaccelerator-0.9.5.2
# export PHP_PREFIX="/usr/"
# $PHP_PREFIX/bin/phpize
# ./configure --enable-eaccelerator=shared --with-php-config=$PHP_PREFIX/bin/php-config --with-eaccelerator-userid=www-data
# make 
# make install
#

 これでeaccelerator.soが/usr/lib/php5/20060613+lfs/eaccelerator.soにインストールされます.作成されなければ,eaccelerator.soを同フォルダにコピーします.次にキャッシュ用のディレクトリを作成し,パーミッションを設定します.

# mkdir /var/www/cache
# mkdir /var/www/cache/eaccelerator
# chown www-data:www-data /var/www/cache/eaccelerator
#

 次に設定ファイルを作成します.

# vi /etc/php5/conf.d/eaccelerator.ini
--
extension=eaccelerator.so

[eaccelerator]
eaccelerator.shm_size = "32"
eaccelerator.cache_dir = "/var/www/cache/eaccelerator"
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 = "1"
eaccelerator.compress_level = "9"
eaccelerator.keys = "shm_and_disk"
eaccelerator.sessions = "shm_and_disk"
eaccelerator.content = "shm_and_disk"
--

 最後にapacheを再起動して終わりです./var/www/cache/eaccelerator/以下にキャッシュが出来ていれば成功です.

# /etc/init.d/apache2 force-reload
#

 結果,p2のレスポンスがかなり改善されました.非力な玄箱だと効果がよく分かります.