2008年4月30日

CF-R3 の HDD 交換

3年半使っていた CF-R3 のHDD から異音が発生して、とうとうOSも起動しなくなってしまった。

Let’snote テンプレ Wiki に従って、交換してみた。

持っているCF-R3は、マイレッツ倶楽部モデルで型番 CF-R3DW4AXP で HDD は特殊仕様でなく5Vで駆動する。何にも考えず 2.5HDD ATA100 を適当に選んで交換できる。120G 容量 HTS541612J9AT00 を選んでみた。

D2D のリカバリなのでHDD が逝かれると、工場出荷状態にリカバリできなくなってしまう。

リカバリ領域を移行するには、壊れる前に作業しなければいけない。

もう起動しない。

男は黙って dd かぁ?

リカバリ領域のバックアップ

取り敢えず適当な Linux の Live CD を確保して、USB-CD/DVD 経由で作業用のLinux システムを確保する。

今回は、KNOPPIXを使った。

で、HDD の最後から 392 シリンダー分がリカバリ領域である。 運が良く破損しておらずアクセスできた。

# total=`blockdev --getsz /dev/hda`
# count=`expr 392 \* 16065`
# skip=`expr $total - $count`
# dd if=/dev/hda of=recovery-fat32.img bs=512 skip=$skip count=$count

できたイメージ recover-fat32.img が fat32 としてマウントできれば成功。サイズが3Gもあるので、netcat を使って転送して、別のマシンに保存した。

HDD 交換

交換方法は、動画もあがってるので、そんなに難しいことではない。

リカバリ領域の復活とリカバリ

  1. MS-DOSの起動ディスクにmakebeer.exe/recvmode.exeを仕込んだものを用意する。
  2. 用意した起動ディスクを起動。
  3. makebeer.exe 3
  4. makebeer.exe /fat32
  5. 再度、Linux の Live CD を起動。
  6. /dev/hda4 が作成されているので、「dd if=recovery-fat32.img of=/dev/hda4 」で書き戻し。
  7. GRUB 起動ディスクを用意し、/dev/hda4 のパーティションブートする。
  8. リカバリメニューに従ってWindowsXPをリカバリ。

本当は 「makebeer /copy 」=>「makebeer /remove」=>「recvmode /normal」で、BIOSのリカバリメニューからリカバリできるらしいが、、、うまくいかなかった。

HDD が 4200 ppm -> 5400 ppm に変更されたためか、体感速度が早く感じられる。

また、3年半くらい使えるかなぁ。

2008年4月25日

Debian で VIA の PadLock を使ってみる

以前持っていた EPIA-ME6000 が不幸なことに再起不能になってしまった。直ぐにEPIA-EN12000EGを入手してたのだが、当時のLinuxのSATA_VIAドライバは不安定だったので、放ったらかしにしていた。

症状として、立ち上げ直後は問題ないが、それからしばらくするとディスク関連でエラーを吐いてフリーズしてしまい、長時間運用ができない、、、何じゃこれって感じ。

最近(etch/lenny ともに最新版)試したところ sata_via は非常に安定している気がする。

VIA C7 Esther には、ハードウェア処理のAES暗号化、SHA関数、乱数生成といった目玉な機能が実装されている。

なんで、Linux で使いましょう。。。。

参考 VIA PadLock support for Linux

ハードウェア乱数生成

Debian etch/lenny の Linux 2.6.18/2.6.24? ともに十分なサポートがあり、rng-tools を使うと、/dev/random からの乱数生成の帯域が太くなるらしい。

apt でインストール

# apt-get install rng-tools

設定を行い

/etc/default/rng-tools

...
RNGDOPTIONS="--hrng=via"
...

/etc/modules

via_rng

rngd を立ち上げ、動作確認をする。

# /etc/init.d/rng-tools stop
# dd if=/dev/random of=/dev/null bs=512 count=1000 & pid=$!
# sleep 10 ; kill -USR1 $pid ; sleep 1 ; kill $pid
0+0 records in
0+0 records out
0 bytes (0 B) copied, 10.0067 seconds, 0.0 kB/s
# /etc/init.d/rng-tools start
# dd  if=/dev/random of=/dev/null bs=512 count=1000       
0+1000 records in
0+1000 records out
96169 bytes (96 kB) copied, 1.04326 seconds, 92.2 kB/s

/dev/random に十分なエントロピーが供給されているので、ブロックされることは殆ど無くなる。

VIA Padlock for Linux Crypto API

VIA Padlock は Linux 2.6.19 からフルサポートされる。素のDebian etch のままだと 2.4.18 止まりなのだが、最近 etch-proposed-updates にバージョンに etchnhalf が含まれる linux-image が提供され、こいつが最新カーネルバージョンに追随してるっぽい。なので、etch でも 2.6.24 が使えるのでこいつを使う。

# apt-get install linux-image-2.6-686-etchnhalf
# reboot
...
# uname -r
2.6.24-etchnhalf.1-686

VIA Padlock のモジュールを読み込むように設定

/etc/modules

padlock_aes
padlock_sha

リブートして

# grep driver.*padlock /proc/crypto
driver       : sha256-padlock
driver       : sha1-padlock
driver       : cbc-aes-padlock
driver       : ecb-aes-padlock
driver       : aes-padlock

カーネルで使える暗号化処理 AES/SHA が高速化するらしい。IPSec 、dm-crypt、とかが、、、

# dd if=/dev/zero of=/dev/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.0236812 seconds, 221 MB/s
...
# modprobe padlock_aes
# cryptsetup create -c aes-cbc-essiv:sha256 -d /dev/random ram1 /dev/ram1
# dd if=/dev/zero of=/dev/mapper/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.142272 seconds, 36.9 MB/s
# cryptsetup remove ram1
# rmmod padlock_aes
...
# modprobe aes_i586
# cryptsetup create -c aes-cbc-essiv:sha256 -d /dev/random ram1 /dev/ram1
# dd if=/dev/zero of=/dev/mapper/ram1 bs=1024 count=5x1024
5120+0 records in
5120+0 records out
5242880 bytes (5.2 MB) copied, 0.902938 seconds, 5.8 MB/s
# cryptsetup remove ram1
# rmmod aes_i586

VIA Padlock を使った方が 6倍くらい速くなるらしい。。。

これでユーザランドで高速化されるかと言うと、Linux Crypto API は、userland にはインタフェースを持っていない。。。パッチは2種類(CryptoDev for Linux,OCF-Linux)あるらしいが、いまだに議論があるらしく、マージされてない。

OpenBSD/FreeBSD だと OpenSSLが CryptoDev を使うようになってるので、何もせずに高速化されるらしい。。。いいなぁ。

VIA Padlock for OpenSSL

Debian etch/lenny ともに、VIA Padlock の engine が有効にして構築されていなので、自前で用意する必要がある。どうも共有ライブラリの形でプラグイン化できないのが駄目らしい。

VIA PadLock support for Linux 内の以下のパッチを当て、パッケージを再構築。

  • openssl098-padlock-shared-move.diff
  • openssl098-padlock-shared-makefiles.diff

インストール後、/usr/lib/ssl/engines/libpadlock.so がインストールされる。

# openssl speed -evp aes256            
Doing aes-256-cbc for 3s on 16 size blocks: 1847840 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 575493 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 256 size blocks: 154125 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 39230 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 4929 aes-256-cbc's in 3.00s
...
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-256-cbc       9855.15k    12277.18k    13152.00k    13390.51k    13459.46k
# openssl speed -evp aes256 -engine padlock
engine "padlock" set.
Doing aes-256-cbc for 3s on 16 size blocks: 10478263 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 64 size blocks: 8095021 aes-256-cbc's in 2.99s
Doing aes-256-cbc for 3s on 256 size blocks: 4480017 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 1024 size blocks: 1600314 aes-256-cbc's in 3.00s
Doing aes-256-cbc for 3s on 8192 size blocks: 228568 aes-256-cbc's in 3.00s
...
type             16 bytes     64 bytes    256 bytes   1024 bytes   8192 bytes
aes-256-cbc      55884.07k   173271.35k   382294.78k   546240.51k   624143.02k

via_rng/padlock_aes の効果で、実に約46倍速くなるらしい。。。はや。

OpenSSL を使う奴のほとんどが簡単なパッチを当てる必要があるらしい。そのうち改善されていくのかなぁ。

OpenSSH にパッチを当てて VIA Padlock を有効にした場合、

 ...  ssh/sshd ともにソフトウェアバージョンを利用 ...
# dd if=/dev/zero count=50 bs=1M | ssh -c aes256-cbc localhost "cat >/dev/null"
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 11.8916 seconds, 4.4 MB/s
 ...  ssh/sshd ともに padlock engine を利用 ...
# dd if=/dev/zero count=50 bs=1M | ssh -c aes256-cbc localhost "cat >/dev/null"
50+0 records in
50+0 records out
52428800 bytes (52 MB) copied, 7.88281 seconds, 6.7 MB/s

約 50 % の高速化かぁ。。。

さて EPIA-EN12000EG をどう活用しようかなぁ。

2008年4月14日

Power Mac G5 Quad の内蔵GPUを交換してみて。。。

手持ちのPowerMac G5 Quad には、三昔前くらいのGPUであるGeForce 6600 が内蔵されている。より新しめのカードに交換すれば、もしかしたらとても快適になるかと思って物色してみた。

PowerMac G5 には普通のPC用やMacPro用のGPUカードはBIOSが異なるためか使えないようである。その上、GPUに対応するカーネル拡張が、無かったり、intel 用のみ、とか選択肢が全くない。(GeForce 8xxxx 用のはIntelバイナリのみってのは、、、)

旧世代のマシン向けの拡張カードがあまりでないのは、Apple の方針なのかなぁ。。。さびしい。

結局、PowerMac G5 の BTO の一つである GeForce 7800 GT を Vintage Computer から購入した。

早くなったのか?

XBench でベンチマークをとってみた。

PowerMac G5 w GeForce 6600

Quartz Graphics Test 180.91 
    Line    142.19  9.47 Klines/sec [50% alpha]
    Rectangle   173.37  51.76 Krects/sec [50% alpha]
    Circle  159.51  13.00 Kcircles/sec [50% alpha]
    Bezier  157.00  3.96 Kbeziers/sec [50% alpha]
    Text    454.80  28.45 Kchars/sec
OpenGL Graphics Test    111.88 
    Spinning Squares    111.88  141.92 frames/sec

PowerMac G5 w GeForce 7800

Quartz Graphics Test 184.46 
    Line    143.23  9.54 Klines/sec [50% alpha]
    Rectangle   179.68  53.64 Krects/sec [50% alpha]
    Circle  163.49  13.33 Kcircles/sec [50% alpha]
    Bezier  160.60  4.05 Kbeziers/sec [50% alpha]
    Text    451.39  28.24 Kchars/sec
OpenGL Graphics Test    111.99 
    Spinning Squares    111.99  142.07 frames/sec

全く変わらない。。。

CINEBENCH R10 でも、OpenGL のベンチマークもとってみた。

PowerMac G5 w GeForce 6600

Shading (OpenGL Standard)          : 1861 CB-GFX 

PowerMac G5 w GeForce 7800

Shading (OpenGL Standard)          : 2414 CB-GFX 

約30%くらい速い?のか。。。

どうも、OpenGL のハード処理が早くなるらしい。。。イマイチ効果が分からない。

最後のだめ押し、glclock の OpenGL のベンチマークを取ってみた。

blog20080413

時計の回転が早すぎてチカチカして、結果が正しいかよくわからないが、どうやら GeForce 7800 GT の方が早いらしいのは分かった。でも、イマイチ。

UIの早さも体感の早さは変わらないので、ちょっと損した気がする。ファンレスだったGeForce 6600を使ってたので GeForce 7800 GT のファンの音がちょっとだけ気になる。

静かな方が良いので、GeForce 6600 のほうに軍配が上がる。

で、もとに戻してしまった。

Cocoa Emacs 24.3 構築 (2013/03版)

暫く使っている Cocoa Emacs を更新していなかったので、24.3 に上げてみた。 当てるパッチは inline patch と ポップアップフリーズ対応パッチ くらい。 24.3 には既にフルスクリーン実装が入っているので、よく使われているフルスクリーンパッチは外し...