2010年4月アーカイブ
2010年4月27日
PC内温度を監視するよ
OCなんてCPUを早くダメにするだけだと思ってる(本当の所は知らないが)くらいなので、今までPC組むのに冷却なんてほとんど考えてなくて、というか考えるような攻めの構成はほとんどやったことがない。ので、今回Phenom II X4の965BEは爆熱だよなんて話を聞いてちょっと青ざめたのは確かだ。
というか、冷却のためのCPUクーラーがえらいうるさい。リテールクーラーの悪評は紛々たるものらしく、ちょっとぐぐっただけでもブログ記事とか実証動画だとかがアホの子のごとく出てくる。
で、気になって色々と調べてみた。いずれもdebian lenny(kernel: 2.6.26.2)。
まずAMD組、lm-sensorsをつっこもうとしたら、AMD系ではそのままでは温度が取得できないらしい。k10tempというのを持って来てmake & install。すると1ヶ所しか取れないのは何だろう。CPU温度かな。
http://khali.linux-fr.org/devel/misc/k10temp/
Index of /devel/misc/k10temp
# aptitude install linux-headers-2.6.26-2-amd64 (←/lib/modules/2.6.26.2-amd64/buildを見るので) # mkdir k10temp # cd k10temp # wget http://khali.linux-fr.org/devel/misc/k10temp/Makefile # wget http://khali.linux-fr.org/devel/misc/k10temp/k10temp.c # make # make install # depmod -a (←make installの途中でdepmodのところでミスるので手でやりなおした)
hironobu@emma:~$ sensors k10temp-pci-00c3 Adapter: PCI adapter temp1: +38.1°C (high = +70.0°C, crit = +72.0°C)
Atom組の方も見てみると、こちらはlm-sensorsのインストールのみですぐ出て来たものの、M/B温度が70度近くとか言っちゃってこっちもこっちで結構な数字が出ているじゃないか。まあファンレスだから仕方ないんだと思うけども。
hironobu@shirley:~$ sensors w83627thf-isa-0290 Adapter: ISA adapter VCore: +1.15 V (min = +0.00 V, max = +3.84 V) +12V: +3.83 V (min = +15.44 V, max = +2.37 V) ALARM +3.3V: +1.89 V (min = +1.87 V, max = +3.10 V) +5V: +4.91 V (min = +1.25 V, max = +2.56 V) ALARM -12V: +2.03 V (min = +6.06 V, max = -2.74 V) ALARM V5SB: +4.95 V (min = +2.34 V, max = +2.96 V) ALARM VBat: +3.23 V (min = +2.91 V, max = +2.00 V) ALARM fan1: 0 RPM (min = 827 RPM, div = 8) ALARM CPU Fan: 0 RPM (min = 2343 RPM, div = 4) ALARM fan3: 0 RPM (min = 6026 RPM, div = 2) ALARM M/B Temp: +67.0°C (high = -33.0°C, hyst = +32.0°C) ALARM sensor = thermistor CPU Temp: +53.0°C (high = +80.0°C, hyst = +75.0°C) sensor = diode temp3: +53.0°C (high = +80.0°C, hyst = +75.0°C) sensor = diode beep_enable:enabled
2010年4月22日
Knoppixを起動するUSBメモリを作ろう。
さて、旧サーバ(old shirley)を退役させるためにHDDを掃除しなきゃいけないわけですが、以前はUSBフロッピードライブをもってきてDESTROYとかやってたんですけど、先日から探してるのに肝心のドライブが出てこない(何)。そんなわけで、Knoppixを使ってUSBメモリにブートイメージをつっこんでshredすることに。
というわけで皆様材料はこちらになります。鶏肉に卵と玉ねぎ、お醤油みりん砂糖...あれ。
- USBメモリ (容量1GBもあればOK、FATでフォーマット済みの)
- KnoppixのISOイメージ(最新)
- SYSLINUX(最新)
- Linux PC 1台
ぐぐると結構皆さんCD-Rを使って焼いたりとかそうでなくてもDaemontoolsを持って来たりとかやってますが、WindowsでなくてLinuxでやれば、それらと同じ作業はすべて標準で入ってるので、格段に簡単にできます。っていうか、本当は簡単にできるはずなんだけどついつい手順を忘れて何となくめんどくさがりがち...。全然むずかしいこっちゃないですよと、備忘録として記して忘れないようにしておくのでござるよ。
http://www.knopper.net/knoppix-mirrors/
KNOPPIX - Mirrors
Knoppixはこのミラーリストからダウンロード。日本語サイトがなんかやたら古かったりデッドリンクばかりと不安な空気を醸し出しているので、そちらは振り切って本家サイトに逝くでござるよ。
http://www.kernel.org/pub/linux/utils/boot/syslinux/
Index of /pub/linux/utils/boot/syslinux
SYSLINUXも同じく最新を。tar+gzでもtar+bz2でもzipでもどれでもござれ。であとは下のように1)USBメモリをマウント、2)KnoppixのISOもマウント、3)Knoppixの内容物(/boot/isolinux/*,/KNOPPIX)をUSBメモリにコピー、4)USBメモリ内にコピーした/isolinux.cfgを/syslinux.cfgにリネーム、5)SYSLINUXをUSBメモリにインストール、で完了。
~# mkdir ./tmp ~# mount -o loop ./KNOPPIX_V6.2CD-2009-11-18-EN.iso ./tmp ~# mount /dev/sdb /mnt ~# cp -pr ./tmp/boot/isolinux/* /mnt/ ~# cp -pr ./tmp/KNOPPIX /mnt/ ~# cd /mnt ~# mv isolinux.cfg syslinux.cfg ~# ~/syslinux-3.86/linux/syslinux /dev/sdb (※USBメモリを/dev/sdb、またisoとsyslinuxのtarballをrootのホームディレクトリに置いて解凍したとして仮定。)
あとはKnoppixのisoイメージ(~/tmp)とUSBメモリ(/mnt)をアンマウントして、目的のPCにUSBメモリを刺して起動すればいいだよ。
2010年4月21日
Receive-Side Scalingとな?
(11:48訂正、shirley(M/B:D510MO/NIC:Realtek8111DL)だと無手順でばらけました。)
前のエントリで書いたApache Benchの件は、ちと早計というか、違う問題のようだということが分かって来た。あのあとぐぐってみると、気になる記事を見つけたの。
http://blog.nomadscafe.jp/2010/01/cpu.html
アプリケーションがマルチスレッドでもマルチコアCPUを活かせない件 - blog.nomadscafe.jp
memcachedの通信は主にeth1で行われるのですが、このeth1に関する割り込み処理がCPU1でしか行われていません。ソフトウェア割り込みはハードウェア割り込みが行われたCPUでしか行われないのもこの傾向を強めます。
マルチコアCPUの性能を活かすために考えられることは、ネットワークの割り込み処理を複数のCPUに分散することだと思うのですが、最新のNICにはRX/TX Multiple Queue(正式名称がわからない。Receive Side ScalingとかScalable I/O?)機能が備わっています。もともとRX/TX Multiple Queueは10GbpsのNICなどに備わっていた機能で、複数の割り込みチャンネルを持つことでネットワーク処理の分散を実現しています。最近のIntelやBroadcomの1GbpsのNICにも同じ機能があります。
emma:~# cat /proc/interrupts
CPU0 CPU1 CPU2 CPU3
0: 45 0 6 0 IO-APIC-edge timer
1: 0 0 8 0 IO-APIC-edge i8042
6: 1 0 2 0 IO-APIC-edge floppy
7: 0 0 0 0 IO-APIC-edge parport0
8: 0 0 1 0 IO-APIC-edge rtc0
9: 0 0 0 0 IO-APIC-fasteoi acpi
14: 0 0 0 0 IO-APIC-edge ide0
15: 0 0 0 0 IO-APIC-edge ide1
16: 0 0 236 0 IO-APIC-fasteoi ohci_hcd:usb1, ohci_hcd:usb3, hda_intel
17: 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb2
18: 0 0 0 0 IO-APIC-fasteoi ohci_hcd:usb5, ohci_hcd:usb6, ohci_hcd:usb7
19: 0 0 0 0 IO-APIC-fasteoi ehci_hcd:usb4
22: 0 0 2002 2 IO-APIC-fasteoi ohci1394, ahci
25: 0 0 3150 0 PCI-MSI-edge eth0
26: 0 0 0 0 PCI-MSI-edge hda_intel
NMI: 0 0 0 0 Non-maskable interrupts
LOC: 8113 12668 9084 7116 Local timer interrupts
SPU: 0 0 0 0 Spurious interrupts
PMI: 0 0 0 0 Performance monitoring interrupts
PND: 0 0 0 0 Performance pending work
RES: 3646 3930 2110 2260 Rescheduling interrupts
CAL: 42 124 135 122 Function call interrupts
TLB: 4 0 3 7 TLB shootdowns
TRM: 0 0 0 0 Thermal event interrupts
THR: 0 0 0 0 Threshold APIC interrupts
MCE: 0 0 0 0 Machine check exceptions
MCP: 6 6 6 6 Machine check polls
ERR: 4
MIS: 0
確かにこのページで語られてるのと同じ状況。mary,emmaでも同じだった。httpdを入れてないので確認してないけど、/proc/interruptsを見る限りnellyでも同じっぽい。shirleyではばらけたぞ。
うちのマシンは揃ってRealTek製の8111C(shirleyだけ8111DL)のチップだったのだけど、これらは"Receive-Side Scaling"の機能であれば対応しているらしい。
http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PFid=5&Level=5&Conn=4&ProdID=142
Realtek (8111C)
http://www.realtek.com.tw/products/productsView.aspx?Langid=1&PNid=13&PFid=5&Level=5&Conn=4&ProdID=193
Realtek (8111DL)
これがLinux上でどう対応づけすればいいのか調べ中でござる...。
2010年4月19日
Apache Benchがマルチコアに対応してほしいと思うのね。
でだ。
マルチコア環境でApacheのベンチマークがやってみたかったんだ本当は。
最初まだAMD組は1台分しか組めなかったんだけど、Mac Proがあるししかもab標準で入ってるじゃんやったーとか小躍りしてたのさ。で、いざやってみるとどうもおかしい。思ったよりもprefork/worker/event間で差が出ない。まあabじゃあそもそも試験にならんのかもなあ、と思いつつ試験中のapacheの状態をtopでちんたら眺めてみた。そしたらだ。
CPUコア1つしか使ってねえじゃねえの。
こりゃさすがにってことでabのソースを見てみる。
http://svn.apache.org/viewvc/httpd/httpd/tags/2.2.15/support/ab.c?view=markup
[Apache-SVN] Contents of /httpd/httpd/tags/2.2.15/support/ab.c
1700行目のap_pollset_poll()で多重待ち受けをして、readyなソケットからREAD/WRITEを繰り返して行くメインスレッドがあるのみで、読み込みをマルチスレッドで多重化されたりしてるとかはしてない。
マルチスレッド化したのでやりたきゃfloodあたりを使いやがれとのことです。
http://httpd.apache.org/test/flood/
Flood - Flood
なんかめんどくさそうです...。
Highchartsの棒グラフでグループ化の順番がおかしかったので
で、一連のベンチマーク結果のグラフ化にHighchartsを使ってみたんですが、この棒グラフ表示でおかしな点があったので一ヶ所自分で手を入れたのです。
http://www.highcharts.com/demo/?example=bar-basic&theme=default
Highcharts Demo Gallery
具体的に言うとこれですね。
Year 1800/1900/2008とある右上の凡例の順番と、Africa,America,...とある各グループの棒グラフの並びを見て頂きたい。凡例の方は1800の青、1900の赤、2008の...何色だ?これ?^^;;(color panel使って見たら「オリーブ色」らしい)という順番になってるのに、棒の順番は逆になっている。ちゃんとグラフを読めば分かるんだけど、並びが違うことで感覚的におかしな気分になるなと。
パラメータで調整して直るのかもしれなかったけど、突き止めきれなかったのでコードを弄って直すことにしてみました。最新版の1.2.5を元にhighcharts.src.jsに手を入れて、ClosureCompilerを通したのを使ってます。万一これでおかしくなっても大丈夫なようにオリジナルはオリジナルで残しておきましたよ。
--- ./highcharts.src.js.orig 2010-04-13 14:43:26.000000000 +0900
+++ ./highcharts.src.js 2010-04-19 02:33:36.199575268 +0900
@@ -4200,7 +4200,7 @@
// Initialize the series
//initSeries();
- each (options.series || [], function(serieOptions) {
+ each (options.series.reverse() || [], function(serieOptions) {
initSeries(serieOptions);
});
自宅環境を再整備したのでベンチ採るよ その2 (Phoenom/Athlon)
その1(+1a)がAtom組なら、こちらはAMD組になります。さすがに圧勝ですな。Celeron 430が1コア分にしかなりません。
| Dhrystone 2 using register variables | Double-Precision Whetstone | Execl Throughput | File Copy 1024 bufsize 2000 maxblocks | File Copy 256 bufsize 500 maxblocks | File Copy 4096 bufsize 8000 maxblocks | |
|---|---|---|---|---|---|---|
| mary (1 core) | 1567.0 | 558.5 | 1103.3 | 2351.3 | 1740.5 | 3079.1 |
| mary (4 cores) | 6268.8 | 2231.3 | 4577.3 | 1083.4 | 746.8 | 1907.7 |
| emma (1 core) | 1199.1 | 427.9 | 678.8 | 1732.1 | 1323.0 | 2675.3 |
| emma (4 cores) | 4790.3 | 1709.0 | 3527.4 | 865.2 | 593.4 | 1578.0 |
| old shirley (1 core) | 1194.2 | 384.2 | 490.3 | 1314.2 | 1051.2 | 1798.6 |
| Pipe Throughput | Pipe-based Context Switching | Process Creation | Shell Scripts (1 concurrent) | Shell Scripts (8 concurrent) | System Call Overhead | System Benchmarks Index Score | |
|---|---|---|---|---|---|---|---|
| mary (1 core) | 1638.4 | 944.3 | 1215.4 | 2576.9 | 1917.3 | 2441.0 | 1597.3 |
| mary (4 cores) | 6514.9 | 3980.1 | 5403.2 | 1930.2 | 957.9 | 2293.7 | 2496.9 |
| emma (1 core) | 1262.0 | 741.1 | 920.7 | 1629.7 | 1854.6 | 1865.9 | 1215.2 |
| emma (4 cores) | 4974.7 | 3026.8 | 4203.2 | 1797.5 | 954.2 | 2251.5 | 2056.4 |
| old shirley (1 core) | 924.3 | 598.6 | 578.2 | 772.7 | 717.0 | 966.2 | 822.4 |
| CPU | Memory | Chipset | Storage | |
|---|---|---|---|---|
| mary | Phenom(tm) II X4 965 | DDR3 1333 8GB | 785G + SB710 | HDS721050CLA362 (500GB) |
| emma | Athlon(tm) II X4 620 | DDR2 800 8GB | 785G + SB710 | HDS721050CLA362 (500GB) |
| old shirley | Celeron(R) CPU 430 | DDR2 800 2GB | 945GC and ICH7 | HDP725050GLA360 (500GB) |
ただそれでもなんかFile I/Oについてはマルチコアは全然生かせないというか却ってダメですね。unixbench内部でどんな風にテストしてるのか気にしてみた方がいいかもしんない。まあ大体の性能差というか傾向が見えて来たのでひとまずよしとします。これらの内容の精査も気が向いたときに追々やってくとしましょー。
自宅環境を再整備したのでベンチ採るよ その1a (old shirley: ReiserFS→XFS)
old shirleyをXFSにして採り直しました。むしろXFSの方が良くなった。当然ながらFile関連しか変動してませんが。
| Dhrystone 2 using register variables | Double-Precision Whetstone | Execl Throughput | File Copy 1024 bufsize 2000 maxblocks | File Copy 256 bufsize 500 maxblocks | File Copy 4096 bufsize 8000 maxblocks | |
|---|---|---|---|---|---|---|
| nelly (1 core) | 381.0 | 114.6 | 219.9 | 390.6 | 264.1 | 752.7 |
| nelly (4 cores) | 1102.3 | 403.6 | 548.4 | 157.1 | 102.0 | 376.7 |
| shirley (1 core) | 398.1 | 119.8 | 253.3 | 440.1 | 307.2 | 865.9 |
| shirley (4 cores) | 1150.8 | 424.7 | 672.1 | 250.2 | 149.4 | 527.8 |
| old shirley (ReiserFS) | 1188.6 | 384.0 | 493.0 | 996.2 | 750.6 | 1486.9 |
| old shirley (XFS) | 1194.2 | 384.2 | 490.3 | 1314.2 | 1051.2 | 1798.6 |
| Pipe Throughput | Pipe-based Context Switching | Process Creation | Shell Scripts (1 concurrent) | Shell Scripts (8 concurrent) | System Call Overhead | System Benchmarks Index Score | |
|---|---|---|---|---|---|---|---|
| nelly (1 core) | 325.2 | 136.4 | 287.5 | 498.6 | 811.2 | 617.7 | 339.9 |
| nelly (4 cores) | 436.1 | 335.5 | 650.1 | 872.7 | 886.4 | 949.0 | 465.3 |
| shirley (1 core) | 337.1 | 168.1 | 289.1 | 574.3 | 931.1 | 645.8 | 376.1 |
| shirley (4 cores) | 588.4 | 436.2 | 739.7 | 972.1 | 969.0 | 1232.2 | 579.3 |
| old shirley (ReiserFS) | 917.5 | 573.8 | 567.8 | 750.2 | 728.4 | 976.1 | 764.5 |
| old shirley (XFS) | 924.3 | 598.6 | 578.2 | 772.7 | 717.0 | 966.2 | 822.4 |
ReiserFSからXFSにしたことによる変動の分析とか気になるところもありますが、そこは後にしてさらに進めます。
2010年4月18日
自宅環境を再整備したのでベンチ採るよ その1 (Atom)
自宅サーバを一新してせっかくなのでベンチマークを採ってみようかと思います。
| Dhrystone 2 using register variables | Double-Precision Whetstone | Execl Throughput | File Copy 1024 bufsize 2000 maxblocks | File Copy 256 bufsize 500 maxblocks | File Copy 4096 bufsize 8000 maxblocks | |
|---|---|---|---|---|---|---|
| nelly (1 core) | 381.0 | 114.6 | 219.9 | 390.6 | 264.1 | 752.7 |
| nelly (4 cores) | 1102.3 | 403.6 | 548.4 | 157.1 | 102.0 | 376.7 |
| shirley (1 core) | 398.1 | 119.8 | 253.3 | 440.1 | 307.2 | 865.9 |
| shirley (4 cores) | 1150.8 | 424.7 | 672.1 | 250.2 | 149.4 | 527.8 |
| old shirley (1 core) | 1188.6 | 384.0 | 493.0 | 996.2 | 750.6 | 1486.9 |
| Pipe Throughput | Pipe-based Context Switching | Process Creation | Shell Scripts (1 concurrent) | Shell Scripts (8 concurrent) | System Call Overhead | System Benchmarks Index Score | |
|---|---|---|---|---|---|---|---|
| nelly (1 core) | 325.2 | 136.4 | 287.5 | 498.6 | 811.2 | 617.7 | 339.9 |
| nelly (4 cores) | 436.1 | 335.5 | 650.1 | 872.7 | 886.4 | 949.0 | 465.3 |
| shirley (1 core) | 337.1 | 168.1 | 289.1 | 574.3 | 931.1 | 645.8 | 376.1 |
| shirley (4 cores) | 588.4 | 436.2 | 739.7 | 972.1 | 969.0 | 1232.2 | 579.3 |
| old shirley (1 core) | 917.5 | 573.8 | 567.8 | 750.2 | 728.4 | 976.1 | 764.5 |
| CPU | Memory | Chipset | Storage | |
|---|---|---|---|---|
| nelly | Atom(TM) CPU 330 @ 1.60GHz | DDR2 667 2GB | 945GC and ICH7 | X25-V Value SATA SSD (40GB) |
| shirley | Atom(TM) CPU D510 @ 1.66GHz | DDR2 800 4GB | NM10 Express | HDS721025CLA382 (250GB) |
| old shirley | Celeron(R) CPU 430 @ 1.80GHz | DDR2 800 2GB | 945GC and ICH7 | HDP725050GLA360 (500GB) |
(たぶん)わかったこと:
- Atom 4コア分でやっとCeleron 430 1個分くらいのCPUパワー。
- PipeまわりとI/OはAtom 4コアでも及ばない。
- 特にI/Oははげしく劣勢。
- あ、そういえばnelly & shirleyはXFSだけどold shirleyはReiserFSだった。
まさかそれか?むしろXFSの方が早かった。同じにしたらもっと差がついた。こちらを参照のこと。 - SSDでもAtom 330と510の間のCPU差は埋められず。まあ、そうか。
- Shell Scriptはむしろ優勢。8 Concurrentテストなんて1コアでもAtomが勝ってる。なんぞこれ。
こんなとこ?あと何か見つかれば追々。
2010年4月14日
BINDでdynamic dnsやってると勝手にゾーンファイル本体を書き換えようとしてくれやがる件
自宅のNAT内ネットワークをBIND使って固定IPとDHCP分とを合わせて一つのドメインでやってるんですけど、/etc/bind配下に置いてあるゾーンファイルをBIND自身が自分で書き換えようとして困る。まあ自然ちゃあ自然なんだけど...書き換え可能なディレクトリは/var/lib/namedとか/var/cache/namedとかに用意してあるんだし、*.jnlはそっちに吐き出してるわけだし、使い分けて欲しいなあとも思う訳で...。
例えばこんな感じでずっと出とるんですわ。
Apr 14 08:26:37 gw named[7331]: dumping master file: /etc/bind/tmp-VyOSuyztFl: open: permission denied Apr 14 08:30:22 gw dhcpd: Wrote 5 leases to leases file. Apr 14 08:30:22 gw dhcpd: DHCPREQUEST for 192.168.0.205 from xx:xx:xx:xx:xx:xx via eth0 Apr 14 08:30:22 gw dhcpd: DHCPACK on 192.168.0.205 to xx:xx:xx:xx:xx:xx via eth0 Apr 14 08:31:55 gw named[7331]: dumping master file: /etc/bind/tmp-LZ5RZ76NXe: open: permission denied Apr 14 08:35:22 gw dhcpd: DHCPREQUEST for 192.168.0.205 from xx:xx:xx:xx:xx:xx via eth0 Apr 14 08:35:22 gw dhcpd: DHCPACK on 192.168.0.205 to xx:xx:xx:xx:xx:xx via eth0 Apr 14 08:40:22 gw named[7331]: dumping master file: /etc/bind/tmp-rKYx3u6RKw: open: permission denied Apr 14 08:40:22 gw dhcpd: DHCPREQUEST for 192.168.0.205 from xx:xx:xx:xx:xx:x via eth0 Apr 14 08:40:22 gw dhcpd: DHCPACK on 192.168.0.205 to xx:xx:xx:xx:xx:xx via eth0 Apr 14 08:41:20 gw dhcpd: DHCPREQUEST for 192.168.0.202 from yy:yy:yy:yy:yy:yy via eth0 Apr 14 08:41:20 gw dhcpd: DHCPACK on 192.168.0.202 to yy:yy:yy:yy:yy:yy via eth0 Apr 14 08:45:09 gw named[7331]: dumping master file: /etc/bind/tmp-OflOZAy7fk: open: permission denied
debianだとデフォルトで/etc/bindはrootにしかwrite permissionなくて、肝心のnamedはbindユーザになって動作する。
hironobu@nelly:~$ ls -ld /etc/bind drwxr-sr-x 2 root bind 4096 2010-04-13 01:06 /etc/bind hironobu@nelly:~$ ps -C named -Fl F S UID PID PPID C PRI NI ADDR SZ WCHAN RSS PSR STIME TTY TIME CMD 5 S bind 7331 1 0 80 0 - 59460 rt_sig 52868 3 Apr13 ? 00:03:15 /usr/sbin/named -u bind
いくつかぐぐって記事を見てみると「何だよこれならおまえ/etc/bindでchmod g+wすりゃ済むじゃん馬鹿じゃねえのHAHAHA」的な陽気なアメリカンスタイルがこだましている。うーん。それはそれで分かるんだけどさあ的な。でやってみると確かにゾーンファイルが変わってて、DHCP分の最初書いてなかったdyndns分の登録まで入ってる。うわー。
まあ、ゾーンファイルがオリジナルになるんだからdynamic dnsして登録されたホストもゾーンファイルに載らなきゃ困るって話はあるかもしれない。write permissionなしでどないしてゾーンファイル管理しろってんだとBINDからすれば思うかも知れない。しかし/etc/配下を勝手に書き換えられるのも気持ち悪いんだよねえ...。どないしたもんか。
2010年4月13日
オシム本を買ったよ
ちょっといてもたっても居られなくなって近所のエムズ書店@みたけ店逝って買ってきました。2冊ほど。
| オシム勝つ日本 | |
![]() | 文藝春秋 2010-04 売り上げランキング : 1168 Amazonで詳しく見る by G-Tools |
| 考えよ! ――なぜ日本人はリスクを冒さないのか? (角川oneテーマ21 A 114) | |
![]() | 角川書店(角川グループパブリッシング) 2010-04-10 売り上げランキング : 89 Amazonで詳しく見る by G-Tools |
オシムの伝言のほうはまだです。ごめんなさい(何
まだ「勝つ日本」のほう、しかも3章の途中までしか読んでないのでアレですが、2章まではわりと今までも様々な媒体で触れて来られたオシムのコメントとかなりかぶる個所が多いので目新しさという面ではあまりないものの、それだけに繰り返し日本のサッカーにとって足りないものを提示する、重みのある問いかけになってます。あと3章ではオシムの過去の仕事ということで、サラエボに戻って最初の監督の仕事を始めたときの経緯から。クラブ名の「ゼレズニチャール」が鉄道員の意味だとかで、日本での最初の仕事場だったジェフ市原(千葉)のスポンサーがアレとか、浅からぬ因縁というか、思いを馳せてしまいますな。
これでオシムさんの車があたらしくなって暮らしやすくなっていただければと切に願う次第にござる。
2010年4月12日
KAN△
http://natalie.mu/music/news/30306
ナタリー - KAN「Mラバ」で名曲「まゆみ」含む3曲スペシャルライブ
もし「あなたにとって生涯最高のミュージシャンをひとりだけ挙げなさい」なんてなことを言われたら「うぇー無理ムリ絶対決めらんないってば」とかきっと泣き言を言うんだけど、3人くらいにまで負けてもらえるなら、必ずその中に自分はKANを入れる。
| カンチガイもハナハダしい私の人生(DVD付) | |
![]() | KAN UP-FRONT WORKS 2010-03-10 売り上げランキング : 70 おすすめ平均 ![]() 偉大な音楽家 これは売れてほしいですね スバラシイ曲ばかり♪Amazonで詳しく見る by G-Tools |
KANのすばらしいところはいろいろあるけど、私から一つ挙げたいのはその生き様だ。...生き様なんて言ったら本人は笑うかもしれないけど、顔は生き様を映すと言います。KANさんほんまええ顔してまっせ、と言いたい。そんな冒頭楽屋のシーンだった。てか何その鏡向かいのポーズ。
今回の「Music Lovers」でもその話になっていたけど、KANの歴史の中で「愛は勝つ」という曲をどう位置づけるかで「あ、こいつ分かってるな(ニヤリ)」となるかがはっきりと分かれる。ゲストのつるの剛士も本当にちゃんと聴き込んでいたのだろうと思わせるコメントを続けていたのが嬉しかったが、「愛は勝つ」についてこれをKANの楽曲の中では「マニアックな曲」で「『愛は勝つ』なんて直接的な表現はあまり使われてない」というコメントを言っていて、そこからKAN自身からの裏打ちの話に繋げていったところがこの番組秀逸のキーポイントだった。私からも40ポイント。
http://ja.wikipedia.org/wiki/愛は勝つ
愛は勝つ - Wikipedia
そこから「愛は勝つ」のヒットによって自分の周りの何が変わったか、といった話になっていって、いやでもそんな変わったことはないと、自分の中では全て繋がって行ったことだったと言ったコメントが凄く大切だなと思った。
***
100万枚200万枚と売るようなヒットを一度でも飛ばしてしまうと、その後がおかしくなってしまうミュージシャンはどうしても多い。例えば「ガッツだぜ!!」で一躍スターダムにのし上がったウルフルズは、「ガッツだぜ!!」後の曲作りが無意識のうちに硬直してしまったことを「ガッツだぜ症候群」と称して振り返っている。
http://itunes.apple.com/jp/album/id75695586
ウルフルズ「iTunes Originals - ウルフルズ」 - iTunes で「iTunes Originals - ウルフルズ」をダウンロード
その後ジョン・B・チョッパーが脱退したりでバンドとして混迷を経つつも、再度の加入を境にもう一度息を吹き返す。「全肯定」でのトータス松本のコメントは非常に重みがある。
***
KANも「愛は勝つ」以後、状況としては大きく変わったはずである。1990年の発表当時27才。その20代を「悩みすぎて ややこしく生きた」と吐露したのは「めずらしい人生」だった。彼は歌において本当に自身のことを饒舌に表す人なのだなということがよく分かる。同曲の中で告白しているが、父親を亡くしたのもまさにこの頃(Wikipediaによるとまさに「愛は勝つ」と同じ1990年)らしい。そこでこんなことを言うようになっている。
君のために死ぬつもりはない
君なしでうたう勇気もないうちは
ただのピアノ弾きなのか
http://music.goo.ne.jp/lyric/LYRUTND49532/index.html
めずらしい人生 KAN 歌詞情報 - goo 音楽
| めずらしい人生KAN1987~1992 | |
![]() | KAN ポリドール 1992-02-28 売り上げランキング : 2185 おすすめ平均 ![]() KANの影響を受けてるアーティストは意外に多い。ミスチルの桜井さんですらもだ! 極上の短編映画集。 「愛は勝つ」だけじゃない!!Amazonで詳しく見る by G-Tools |
世のラブソングと言うたぐいのものにはだいたいお決まりのフレーズみたいなものがあって、「君のために死ぬ(死ねる)」といった言葉を歌った歌は数多い。KANはそこに対して「死ぬつもりはない」と言い、それが自分にとってあるべきことなのかどうなのか、といった問いかけを行ったのだ。
もしかしたら、自分に誰かの為に「死ぬつもりがない」ことに気がついて愕然としたのかも知れないし、はたまた「死ぬなんてとんでもない」と本気で反論したかったのかも知れないとも思った。本当のところどうなのかは私には分からない。しかし、肉親の死去に際し、大切な人を失うということがどういうことなのか、本気で自問したのではないかと思う。そんな自分を「ただのピアノ弾きなのか」、それでいいのかとまで問うた。このテーマが私にものすごく深く突き刺さった。
さらに言えば、その後にもまた深い言葉がある。
すばらしい人生 今うたをうたってる
そして多くの人々が泣き笑う
めずらしい人生 そんな多くの人を
裏切らないとぼくの明日はないのも知っている
「愛は勝つ」後も順調に音楽活動を重ねつつあった彼は、曲がヒットしたことそのものによって起こる言うなれば「愛は勝つ症候群」みたいなものが曲作りに現れることは無かったのかも知れない。しかし「多くの人を裏切らないと」いけないような考えを持ちつつあったことを素直に表している。これは何を意味していたのだろうか。「愛は勝つ」の発表年である'90年を節目として前後に起こったいくつかの作用がもしかしたら、作詞には変化を及ぼしていたのではないかと思う。わずかに、本当にわずかかかもしれないが。
そしてこの後しばし彼の歌詞には沈痛な顔が見え隠れするようになった。ように思う。言うまでもなく野郎の書くラブソングなんてものは結構な割合で失恋曲が多かったりするもので[要出典]、悲しめの曲が多くなってしまったとしても決して不自然ではない。しかしそれでもなお、「東京の音楽家が世界に出るのは無理だね(香港SAYONARA)」なんて誰も要求してない(オファーか何かあった?もしかして。)のに言って感傷に浸ってみたり、「ラジコンは僕を傷つけたりはしないから(ラジコン)」としんみりさせてみた直後に「焼肉でもいきましょうよ」といった風で妙にカラ元気っぽく調子を上げて見せるなど、もちろんそうした歌詞は他の時期にもあるにはあるけれど、「TOKYOMAN」「弱い男の強い意志 firm wills of a timid man」といったあたりのアルバムにはちょっと「おや?」と思わせる風情がある。ように思う。
そこから「東雲」から「MAN」にかけて、一つ潮目が変わった。特に「MAN」ではこの「君のために死ぬ」という命題についての一つの決算がなされたのだ。とても大きな決算である。
http://music.goo.ne.jp/lyric/LYRUTND47078/index.html
MAN KAN 歌詞情報 - goo 音楽
抱きあってむきあっていつだって綺麗事言ったって
紛れもなく人間は順番をつけたがってる
悲しいかな今一番大切なのは自分自身
でもいつかそんな壁にぶつかって立ち往生してる
こんなぼくを背中から見つめてる君をみつけた時
自分を犠牲にしても君を守りぬきたいと思う
いつの日か詐りなく言い切れる
勇気が持てたとき I'll be a man
同アルバムの発売元であるマーキュリーの当時プロデューサーであった森朝径という人のコメントが帯に載っている。「それまで彼を知らなかった。MANを聞いた。泣いた。」私も泣いた。
この歌詞の中には「死ぬ」ことそのものを言っているわけでは必ずしもないが、そこから繋がっているものであることははっきりと分かる。そして「自分自身」を「今一番大切」と言っている。まず自分が大事。しかしそこが出発点として必要なのであって、そこから脱し、抜け出そうともがく自分を見守ってくれる人を見つけたとき、「自分を犠牲に」≒「君のために死ねる」と言えるんじゃないか?そんな勇気を持てる、かも知れないね。それこそが「MAN」なのだと。
この段階ではまだ「死ねる」と言い切ったわけでもないし、「死ねる」と言えるようにならなきゃいけない、としたわけでもない。しかし、「そのうちなれんじゃね?」「そうなれるようにがんばるくらいでいいんじゃね?」あたりこそが大切なのだと。深い自問自答の末に決して軽はずみでない、しかし重すぎない実にしっくりくる、胃の腑の底にすとんと落ちるその覚悟の持ちように私は涙した。そしてその翌年に桜子さんと出会って2年後結婚。いやあ、KANさんあんた出来過ぎだよ。
| MAN | |
![]() | KAN マーキュリー・ミュージックエンタテインメント 1996-05-27 売り上げランキング : 8939 おすすめ平均 ![]() 是非とも復刻してほしいアルバム うれしい こりゃいい やわらかい 最高傑作かも。Amazonで詳しく見る by G-Tools |
この「MAN」以前のアルバムは私はリアルタイムには追っかけてなくて、大学生だった90年代後半頃に中古CD屋でまとめて見つけたものだったと思う。後追いだったので、見つけた頃にはそこをくぐり抜けた後だったことになる。そして「MAN」に触れ、「TIGERSONGWRITER」「KREMLINMAN」等とも合わせて各アルバムを並べてみたとき、次第次第に熟成の色を深くしてゆくその連なりにある時はたと気がついた。一つ一つの間に順々に繋がって行く道が浮かび上がって見えたのである。
「愛は勝つ」後の活動が大きくなって行ったことを「少しずつ広がって行った」「突然来た感じはしない」と言って非常に肯定的に前向きにとらえていたのは実に本当のことなのだろうなと思う一方で、決して平坦ではなかったのだろうなということも良く分かる。残念ながら私はKANのライブやラジオを良く見聞きしたわけではないので、彼についての話は音楽雑誌等でのいくつかのインタビューを除けばCDかオフィシャルサイトくらいでしか得られていない。それでも、彼の音楽活動そのものが彼の生き様であり、そしてその生き様がこうしてあらゆる「まわり道」を経て今があり、「カンチガイ」すらも飲み込んでここに居る、ということがありありと見えてくる。決してすんなりではないなりにも全て「繋がって」いたのだと。そういうことなのだ。ああ、KANってすげえなと、私が心から思う所以だ。うん。ケビン・コスナーよりかっこいいよほんと。
http://www.kimurakan.com/
KAN オフィシャルウェブサイト - www.kimuraKAN.com
まあ、20代30代というのは誰しも人生悩みどころを特に増やして生きて行く時期なのだろうなとも思う。最近も自分でもそれまで思いもしなかったようなことごとに降って湧かれて途方に暮れたりもしたこともある。そうして思うに、KANのように10年20年と時間を重ね、一瞬だけでない積み重ねをもって私たちに何かを見せてくれるミュージシャンたちには心から敬意を表するものなのです。
2010年4月11日
ちっちゃいディスプレイもえ(何
最近ディスプレイを1台代えたんですが、26型WUXGAサイズから19型FWXGAサイズと思いきってダウンサイジングでござる。
| NEC MultiSync 25.5型ワイド液晶ディスプレイ ブラック LCD2690WUXi2-BK | |
![]() | NEC 2008-11-21 売り上げランキング : 6617 おすすめ平均 ![]() 現段階で最高の選択 NECさん解禁 何とも言えない高画質ですAmazonで詳しく見る by G-Tools |
| 三菱電機(ディスプレイ) 18.5W型三菱液晶ディスプレイ RDT192WLM(BK) | |
![]() | 三菱電機 売り上げランキング : 116163 Amazonで詳しく見る by G-Tools |
2690の方は買った時はLCD-2690WUXi(←2じゃない)だったんですけどね。同系機ということで。俺が買った時は17万くらいしたんだよ。今9万切ってんですって。ずいぶんと下がりましたわねー。
元々デスクトップ環境はMac Pro+30インチCinema Displayでやってたのを、Windowsもデスクトップは必要じゃね?とか思ってて、Mac Pro以前から持ってたLCD2690WUXiを処分せず後生大事に維持して使おうとしてたんです。だけどそしたら奥さん、デスクトップは並べて置けるようなよほど広い机上環境が無いと、離れた場所に置かなきゃいけなくって、その2台の間をいったりきたりするのはあまり現実的ではないなってことが分かって来たんですわよ。そんなこんなで、利用機会の減ったWindowsデスクトップ機を本体とディスプレイ共々退役させることに相成ったわけです。
ただ、そうするとサーバ用に使えるディスプレイが無くなって困ったんです。普段はさすがに不要とはいえ、インストール時やトラブル時にはどうしても要る。いままではどうしてたかっていうと、そのLCD2690WUXiを使ってそこに繋げてたんですよ。けどこいつ13kgもあってすげー重いので、取り回しがただ事じゃなかった。VGAケーブルをひっぱって、ディスプレイのところまで回してたんですよ。おかげで見にくいわキーボードも打ちにくいわで。サーバもケーブルが届く範囲に置かなきゃいけないから、もしくは届かなかったら届く範囲にディスプレイなりサーバなりを配置しなおしたりとかでもうてんやわんやでした。
しかしまあ、ビックカメラのポイントがなぜか2万も貯まってたりとかしてたので、そこそこのサイズでいいから安いディスプレイを一台持っとこうってことになって、19型を所望しました。それがこのLCD192WLMです。
うん、適度に小さくて持ち運びにも困らない、部屋の中でも持ち運び可能でよかったよかった。もう少し小さくてもよかったかなーと思うくらいなんだけど、最近はこのくらいが最安というか、お得な価格帯になってるみたいですねー。
LinuxルータでOCN IPv6設定をやったよ 〜その2 wide-dhcpv6-clientとradvdとその他の巻〜
で引き続きその2。分けたことに余り意味はない。っていうかあまりにいろいろ貼ってたら長くなって来たので途中で一息つきたかっただけですにょ。おほほ。
wide-dhcpv6c(wide-dhcpv6-client)とradvdについては、前出の"Memo - OCN IPv6"と変わる所はありません。そのまま持って来て通ります。
http://www.ln-lab.net/lunar-night.lab/page2-memo_ocnipv6/design-white/lang-ja
Memo - OCNIPv6
# /etc/wide-dhcpv6/dhcp6c.conf
interface ppp2 {
send ia-pd 0;
};
id-assoc pd 0{
prefix-interface eth0 {
sla-id 1;
sla-len 0;
};
};
# /etc/radvd.conf
interface eth0
{
AdvSendAdvert on;
MinRtrAdvInterval 30;
MaxRtrAdvInterval 100;
prefix 2001:380:aaaa:bbbb::/64
{
AdvOnLink on;
AdvAutonomous on;
};
};
wide-dhcpv6-clientを起動して、まず指定のインタフェイスにOCNから指定されたprefixでv6アドレスが付くことを確認しましょう。prefixが"2001:380:aaaa:bbbb"だとしたらこのようになっているはずです。
hironobu@nelly:~$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr xx:xx:xx:xx:xx:xx
inet addr:192.168.0.1 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2001:380:aaaa:bbbb:xxxx:xxxx:xxxx:xxxx/64 Scope:Global
inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:20969 errors:0 dropped:0 overruns:0 frame:0
TX packets:22630 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:3654118 (3.4 MiB) TX bytes:15726726 (14.9 MiB)
Interrupt:252 Base address:0xe000
さらにradvdを起動して、RA(Router Advertisement)が同セグメントの他のPCに配信され、inet6アドレスが付くのを確認します。
hironobu@shirley:~$ /sbin/ifconfig
eth0 Link encap:Ethernet HWaddr zz:zz:zz:zz:zz:zz
inet addr:192.168.0.2 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: 2001:380:aaaa:bbbb:zzzz:zzzz:zzzz:zzzz/64 Scope:Global
inet6 addr: fe80::zzzz:zzzz:zzzz:zzzz/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:98633 errors:0 dropped:0 overruns:0 frame:0
TX packets:60699 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:87034901 (83.0 MiB) TX bytes:6714585 (6.4 MiB)
Interrupt:16 Base address:0x2400
ちなみにnellyがルータで、shirleyは同セグメント上のサーバです。ここまで確認してOKであれば、ipv6用のルーティングを登録します。
# ip -f inet6 route add default dev ppp2 $ ip -f inet6 route 2001:380:aaaa:bbbb::/64 dev eth0 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev eth1 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev eth0 metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev ppp2 metric 256 mtu 1390 advmss 1330 hoplimit 4294967295 fe80::/10 dev ppp2 metric 1 mtu 1390 advmss 1330 hoplimit 4294967295 fe80::/10 dev ppp2 metric 256 mtu 1390 advmss 1330 hoplimit 4294967295 default dev ppp2 metric 1024 mtu 1390 advmss 1330 hoplimit 4294967295
こうすることでipv6パケットがppp2インタフェイスを通じて外に出て行くようになります。早速ping6してみましょう。
hironobu@shirley:~$ ping6 www.ocnipv6.jp PING www.ocnipv6.jp(www.ocnipv6.jp) 56 data bytes 64 bytes from www.ocnipv6.jp: icmp_seq=1 ttl=54 time=17.0 ms 64 bytes from www.ocnipv6.jp: icmp_seq=2 ttl=54 time=17.7 ms 64 bytes from www.ocnipv6.jp: icmp_seq=3 ttl=54 time=16.3 ms 64 bytes from www.ocnipv6.jp: icmp_seq=4 ttl=54 time=16.8 ms 64 bytes from www.ocnipv6.jp: icmp_seq=5 ttl=54 time=17.5 ms
hironobu@shirley:~$ traceroute6 www.ocnipv6.jp traceroute to www.ocnipv6.jp (2001:218:2001:3005::7f), 30 hops max, 40 byte packets 1 2001:380:aaaa:bbbb:xxxx:xxxx:xxxx:xxxx (2001:380:aaaa:bbbb:xxxx:xxxx:xxxx:xxxx) 0.168 ms 0.162 ms 0.184 ms 2 2001:380:8140::a (2001:380:8140::a) 16.904 ms 16.969 ms 17.010 ms 3 2001:380:8140:9::1 (2001:380:8140:9::1) 17.050 ms 17.186 ms 17.353 ms 4 2001:380:8130:3::1 (2001:380:8130:3::1) 17.067 ms 17.177 ms 17.385 ms 5 2001:380:8130:12::4 (2001:380:8130:12::4) 17.594 ms 17.430 ms 17.617 ms 6 2001:380:8230:f::2 (2001:380:8230:f::2) 17.348 ms 16.086 ms 16.258 ms 7 ae-0-1.a20.tokyjp01.jp.ra.gin.ntt.net (2001:218:2000:5000::49) 16.339 ms 14.535 ms 14.307 ms 8 ae-7.r20.tokyjp01.jp.bb.gin.ntt.net (2001:218:0:6000::185) 13.996 ms 14.411 ms 14.337 ms 9 2001:218:0:6000::52 (2001:218:0:6000::52) 17.269 ms 17.430 ms 17.303 ms 10 (2001:218:2001:17::2) 17.715 ms 17.330 ms 17.749 ms 11 www.ocnipv6.jp (2001:218:2001:3005::7f) 17.763 ms 18.246 ms 17.849 ms
接続できましたにょ。
さて残る問題は、前回のxl2tpdも含めて、「OS起動時にどうするか」です。上に述べたようにxl2tpdに名前付きパイプへのechoを使ってxl2tpdへの操作を行いますが、これを/etc/init.d/*でやりたいですよね。Linuxルータを再起動したら何もせずとも自動的にipv6リンクも立ち上がっているようになるのが理想的です。
hironobu@nelly:~$ ls -l /etc/rc*/*xl2tpd lrwxrwxrwx 1 root root 16 2010-04-10 01:02 /etc/rc0.d/K20xl2tpd -> ../init.d/xl2tpd lrwxrwxrwx 1 root root 16 2010-04-10 01:02 /etc/rc1.d/K20xl2tpd -> ../init.d/xl2tpd lrwxrwxrwx 1 root root 16 2010-04-10 01:02 /etc/rc2.d/S20xl2tpd -> ../init.d/xl2tpd lrwxrwxrwx 1 root root 16 2010-04-10 01:02 /etc/rc3.d/S20xl2tpd -> ../init.d/xl2tpd lrwxrwxrwx 1 root root 16 2010-04-10 01:02 /etc/rc4.d/S20xl2tpd -> ../init.d/xl2tpd lrwxrwxrwx 1 root root 16 2010-04-10 01:02 /etc/rc5.d/S20xl2tpd -> ../init.d/xl2tpd lrwxrwxrwx 1 root root 16 2010-04-10 01:02 /etc/rc6.d/K20xl2tpd -> ../init.d/xl2tpd
このxl2tpdが起動されたあとに、できるだけすぐにecho "c ocnipv6" > /var/run/xl2tpd/l2tp-controlを送りたい訳です。私が採った手は、このxl2tpdのすぐ後に起動するinitスクリプトを登録してやることです。下のようなスクリプトを作成し、まず/etc/init.d/ipv6として配置します。
#!/bin/sh
### BEGIN INIT INFO
# Provides: ipv6
# Required-Start: $remote_fs $network $syslog
# Required-Stop: $remote_fs $network $syslog
# Should-Start: $local_fs slapd
# Should-Stop: $local_fs slapd
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: IPv6 service
# Description: (empty)
### END INIT INFO
. /lib/lsb/init-functions
NAME="ocnipv6"
L2TPC="/var/run/xl2tpd/l2tp-control"
CMAX=10
do_start() {
C=0;
while [ ! -p $L2TPC ] && [ $C -lt $CMAX ]; do
sleep 1;
log_progress_msg '.';
let C=C+1;
done
if [ $C -lt $CMAX ]; then
echo "c $NAME" > $L2TPC
return 0
else
return 1
fi
}
do_end() {
echo "d $NAME" > $L2TPC
return 0
}
case "$1" in
start)
log_daemon_msg "Starting ipv6"
if do_start; then
log_end_msg 0
else
log_end_msg 1
exit 1
fi
;;
stop)
log_daemon_msg "Stopping ipv6"
do_end
log_end_msg 0
;;
restart)
log_daemon_msg "Restarting ipv6"
do_end
sleep 3
if do_start; then
log_end_msg 0
else
log_end_msg 1
exit 1
fi
;;
esac
exit 0
次に、update-rc.dを使って登録しますが、ランレベル2-5ではS21、同0-1,6ではK19になるようにします。つまり、起動時(2-5)ではxl2tpdの直後、終了時(0-1,6)ではxl2tpdの直前に、上のスクリプトを呼ぶ訳です。こうしないと、xl2tpdが起動しないうちに/var/run/xl2tpd/l2tp-controlをさわろうとするものの、当然起動前ならこのパイプは存在しないので、失敗することになるためです。
# update-rc.d ipv6 start 21 2 3 4 5 . stop 19 0 1 6 .
hironobu@nelly:~$ ls -l /etc/rc*/*ipv6 lrwxrwxrwx 1 root root 14 2010-04-10 01:26 /etc/rc0.d/K19ipv6 -> ../init.d/ipv6 lrwxrwxrwx 1 root root 14 2010-04-10 01:26 /etc/rc1.d/K19ipv6 -> ../init.d/ipv6 lrwxrwxrwx 1 root root 14 2010-04-10 01:26 /etc/rc2.d/S21ipv6 -> ../init.d/ipv6 lrwxrwxrwx 1 root root 14 2010-04-10 01:26 /etc/rc3.d/S21ipv6 -> ../init.d/ipv6 lrwxrwxrwx 1 root root 14 2010-04-10 01:26 /etc/rc4.d/S21ipv6 -> ../init.d/ipv6 lrwxrwxrwx 1 root root 14 2010-04-10 01:26 /etc/rc5.d/S21ipv6 -> ../init.d/ipv6 lrwxrwxrwx 1 root root 14 2010-04-10 01:26 /etc/rc6.d/K19ipv6 -> ../init.d/ipv6
さらに、スクリプト内でもパイプの生成を待つようにしています。上の例では10回=10秒間待ちますが、CMAXをいじれば調整可能です。
あとはルーティングですが、これはpppdを利用します。ipv6でのリンクが確立すると、pppdは/etc/ppp/ipv6-upおよび/etc/ppp/ipv6-up.d/*のスクリプトを起動しようとします。これを利用して、/etc/ppp/ipv6-up.d/routeスクリプトを下のように設置します。
#!/bin/sh if [ "x$PPP_IFACE" = "xppp2" ]; then ip -f inet6 route add default dev $PPP_IFACE /etc/init.d/wide-dhcpv6-client restart fi
また、/etc/ppp/ipv6-down.dディレクトリにも同じようにrouteスクリプトを置きます。
#!/bin/sh if [ "x$PPP_IFACE" = "xppp2" ]; then ip -f inet6 route del default dev $PPP_IFACE fi
wide-dhcpv6-clientにrestartを掛けている点に注意してください。ipv6スクリプトによってppp2がlink upを開始しますが、その完了を待たずにwide-dhcpv6-clientが起動されてしまうのです。ppp2のリンクが完了したタイミングでもう一度wide-dhcpv6-client
lrwxrwxrwx 1 root root 15 2010-04-07 05:17 S20rsync -> ../init.d/rsync lrwxrwxrwx 1 root root 16 2010-04-11 00:02 S20xl2tpd -> ../init.d/xl2tpd lrwxrwxrwx 1 root root 14 2010-04-10 01:26 S21ipv6 -> ../init.d/ipv6 lrwxrwxrwx 1 root root 28 2010-04-05 23:20 S40wide-dhcpv6-client -> ../init.d/wide-dhcpv6-client
これによって、起動後自動的にipv6リンクの確立とルーティングが行われるようになります。
2010年4月10日
LinuxルータでOCN IPv6設定をやったよ 〜その1 xl2tpdの巻〜
で、前回作ったLinuxルータにOCN IPv6の設定を入れてみた。大まかにはこちらの内容を参考にしてなんだけど、debian(lenny)なので微妙に違えています。
http://www.ln-lab.net/lunar-night.lab/page2-memo_ocnipv6/design-white/lang-ja
Memo - OCNIPv6
xl2tpdの設定
まずxl2tpdを動かします。lennyのパッケージそのままだと1.2.0なんだけど、これだとうまくL2TP接続を確立してくれませんでした。というわけでソースパッケージをそのまま持ってきます。
http://www.xelerance.com/software/xl2tpd/
Xelerance - Xelerance: Software: xL2TPD
こちらからどうぞ。一緒にdebビルド用のスクリプトがdebian/ディレクトリ配下に有るのでこれを使う。
$ wget http://www.xelerance.com/software/xl2tpd/xl2tpd-1.2.4.tar.gz $ tar zxvf xl2tpd-1.2.4.tar.gz $ cd xl2tpd-1.2.4 $ chmod +x ./debian/rules $ env PREFIX=/usr dpkg-buildpackage -rfakeroot
ここで環境変数としてPREFIX=/usrにしてdpkg-buildpackage渡す必要があります。そうしないと出来上がったdebパッケージをインストールしたときに/usr/local/sbin/xl2tpdのパスで入れられちゃうんですけども、一緒にインストールされるinitスクリプトが/usr/sbin/xl2tpdにあることを想定して動くので、かなしいことに(´・ω・`)なります。
で、出来上がりがこうなるので、
hironobu@nelly:~/xl2tpd-1.2.4$ ls -l .. 合計 1148 -rw-r--r-- 1 hironobu hironobu 700 2010-04-10 00:46 l2tpd_1.1.11.dfsg.1-2_all.deb drwxr-xr-x 9 hironobu hironobu 4096 2010-04-10 00:46 xl2tpd-1.2.4 -rw-r--r-- 1 hironobu hironobu 541039 2009-03-09 08:27 xl2tpd-1.2.4.tar.gz -rw-r--r-- 1 hironobu hironobu 500 2010-04-10 00:46 xl2tpd_1.1.11.dfsg.1-2.dsc -rw-r--r-- 1 hironobu hironobu 541003 2010-04-10 00:46 xl2tpd_1.1.11.dfsg.1-2.tar.gz -rw-r--r-- 1 hironobu hironobu 1603 2010-04-10 00:46 xl2tpd_1.1.11.dfsg.1-2_amd64.changes -rw-r--r-- 1 hironobu hironobu 68346 2010-04-10 00:46 xl2tpd_1.1.11.dfsg.1-2_amd64.deb
xl2tpd_1.1.11.dfsg.1-2_amd64.debをインストールすればよいでござる。バージョンが"1.1.11"になってるのは同debianディレクトリ配下のどこか設定ファイルか何かがあるはずのをいじればいいじゃないかな。(適当)
$ sudo dpkg -i xl2tpd_1.1.11.dfsg.1-2_amd64.deb
インストールは完了。で、設定。
; /etc/xl2tpd/xl2tpd.conf [lac ocnipv6] lns = foobar.ocn.ne.jp hostname = aaa@bbb ppp debug = yes pppoptfile = /etc/ppp/peers/ocnipv6 length bit = yes require chap = yes refuse pap = yes require authentication = yes redial = yes redial timeout = 10 max redials = 6
# /etc/ppp/peers/ocnipv6 nodefaultroute noip +ipv6 usepeerdns user aaa@bbb mtu 1390 noipdefault default-asyncmap nopcomp noaccomp noccp novj nobsdcomp nodeflate lcp-echo-interval 30 lcp-echo-failure 2 lock noauth
1つ目はxl2tpd.conf。lnsにはOCNから指定された接続サーバ名を、hostnameにはOCNにPPPoE接続を設定した際のユーザIDをそれぞれ設定する。あとは上に挙げたページからそのまま持って来ています。
2つ目はそのxl2tpd.conf中のpppoptfileオプションを通じて指定される、L2TP上でのppp接続で使われるpppd設定ファイルです。こいつも同じくOCNでのユーザIDを持って来ています。
さらに/etc/xl2tpd/l2tp-secretsにOCNのユーザIDとパスワードを書きます。書式は/etc/ppp/{chap-secrets,pap-secrets}と同じ。
"aaa@bbb" * "ccc"
ここで一度xl2tpdを再起動しておきます。
Apr 11 00:23:41 gw xl2tpd[2606]: setsockopt recvref[22]: Protocol not available Apr 11 00:23:41 gw xl2tpd[2606]: This binary does not support kernel L2TP. Apr 11 00:23:41 gw xl2tpd[2607]: xl2tpd version xl2tpd-1.2.4 started on nelly PID:2607 Apr 11 00:23:41 gw xl2tpd[2607]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc. Apr 11 00:23:41 gw xl2tpd[2607]: Forked by Scott Balmos and David Stipp, (C) 2001 Apr 11 00:23:41 gw xl2tpd[2607]: Inherited by Jeff McAdams, (C) 2002 Apr 11 00:23:41 gw xl2tpd[2607]: Forked again by Xelerance (www.xelerance.com) (C) 2006 Apr 11 00:23:41 gw xl2tpd[2607]: Listening on IP address 0.0.0.0, port 1701
こんな感じに出ますのでね。続いてxl2tpdを操作してL2TP接続を開始させます。
# echo "c ocnipv6" > /var/run/xl2tpd/l2tp-control
でこんなログが出るはず。
Apr 11 00:23:41 gw xl2tpd[2607]: Connecting to host foobar.ocn.ne.jp, port 1701 Apr 11 00:23:41 gw xl2tpd[2607]: Connection established to x.x.x.x, 1701. Local: 36525, Remote: 60956 (ref=0/0). Apr 11 00:23:41 gw xl2tpd[2607]: Calling on tunnel 36525 Apr 11 00:23:41 gw xl2tpd[2607]: Call established with x.x.x.x, Local: 26379, Remote: 27351, Serial: 1 (ref=0/0) Apr 11 00:23:41 gw xl2tpd[2607]: start_pppd: I'm running: Apr 11 00:23:41 gw xl2tpd[2607]: "/usr/sbin/pppd" ... Apr 11 00:23:41 gw pppd[2617]: pppd 2.4.4 started by root, uid 0 ... Apr 11 00:23:41 gw pppd[2617]: CHAP authentication succeeded Apr 11 00:23:41 gw pppd[2617]: CHAP authentication succeeded Apr 11 00:23:41 gw pppd[2617]: sent [IPV6CP ConfReq id=0x1] Apr 11 00:23:41 gw pppd[2617]: rcvd [IPV6CP ConfReq id=0x1 ] Apr 11 00:23:41 gw pppd[2617]: sent [IPV6CP ConfAck id=0x1 ] Apr 11 00:23:41 gw pppd[2617]: rcvd [IPV6CP ConfAck id=0x1 ] Apr 11 00:23:41 gw pppd[2617]: local LL address fe80::xxxx:xxxx:xxxx:xxxx Apr 11 00:23:41 gw pppd[2617]: remote LL address fe80::yyyy:yyyy:yyyy:yyyy Apr 11 00:23:41 gw pppd[2617]: Script /etc/ppp/ipv6-up started (pid 2648)
で最終的に接続が完了すれば、ifconfigで下のようなpppxインタフェイスが出現します。
ppp2 Link encap:Point-to-Point Protocol
inet6 addr: fe80::xxxx:xxxx:xxxx:xxxx/10 Scope:Link
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1390 Metric:1
RX packets:481 errors:0 dropped:0 overruns:0 frame:0
TX packets:297 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:163773 (159.9 KiB) TX bytes:32095 (31.3 KiB)
ここまでで結構長くなったので一旦終わり。次はwide-dhcpv6cの設定に行きます。
2010年4月 7日
routerをSRT100からLinux PCサーバに入れ替えたよ その2
さて。どんな設定したかって話なんですが、びっくりするくらいあっさりしてた。いい世の中になったものですな。
sysctl: ip_forward
/etc/sysctl.confに以下の設定を有効化。IPv6まわりの設定はまだこれからですけど、一応含めました。
net.ipv4.ip_forward = 1 net.ipv6.conf.all.forwarding = 1 net.ipv6.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_ra = 0
iptables(firewall+NAT)
一番戸惑ったのはiptablesをどこで設定するのかというところ。前に見た時は/etc/init.d/iptablesとか何とかあったと思ったんですが、lenny以降は無くなったみたいですね。というわけでこちらに倣って/etc/network/if-pre-up.d/iptablesにスクリプトを置いてみました。えいやで作ったので甘いかもしんないですがとりあえずINPUTとFORWARDはDROPにしとかなきゃだぜぜぜ。
#!/bin/sh IPTABLES='/sbin/iptables' LOCAL_IF=eth0 LOCALNET='x.x.x.x/yy' ########## # initialize $IPTABLES -F $IPTABLES -X $IPTABLES -Z $IPTABLES -t nat -F POSTROUTING $IPTABLES -P INPUT DROP $IPTABLES -P FORWARD DROP $IPTABLES -P OUTPUT ACCEPT ########## $IPTABLES -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED $IPTABLES -A INPUT -j ACCEPT -i lo $IPTABLES -A INPUT -j ACCEPT -s $LOCALNET $IPTABLES -A INPUT -j ACCEPT -p tcp --dport 1723 $IPTABLES -A INPUT -j ACCEPT -p 47 $IPTABLES -A FORWARD -j ACCEPT -m state --state ESTABLISHED,RELATED ########## $IPTABLES -N outer_local ########## $IPTABLES -N local_outer $IPTABLES -A local_outer -j ACCEPT -s $LOCALNET ########## # nat $IPTABLES -t nat -A POSTROUTING -j MASQUERADE -s $LOCALNET -o ! $LOCAL_IF ########## # main table $IPTABLES -A FORWARD -j outer_local -i ! $LOCAL_IF -o $LOCAL_IF $IPTABLES -A FORWARD -j local_outer -i $LOCAL_IF $IPTABLES -A INPUT -j outer_local -i ! $LOCAL_IF
PPPoE周り
pppoeconfっていうパッケージがあるみたいで、これを使ったら本当にあっけなく設定できたんですけど、Bフレッツのマルチセッションを使ってたので結局自分でファイルをいじるしかなかったみたいです。
というわけで、BフレッツONUをeth1側に繋げたことを確認しつつ、まずはデフォルトセッション側に"defaultroute"を付けて。(/etc/ppp/peers/session1)
noipdefault defaultroute hide-password lcp-echo-interval 20 lcp-echo-failure 3 connect /bin/true noauth persist mtu 1492 noaccomp default-asyncmap plugin rp-pppoe.so eth1 user "aaa@bbb" usepeerdns
デフォルトじゃない側では"nodefaultroute"として"usepeerdns"を付けずに、また"noproxyarp"も指定。(/etc/ppp/peers/session2)
noipdefault nodefaultroute noproxyarp hide-password lcp-echo-interval 20 lcp-echo-failure 3 connect /bin/true noauth persist mtu 1492 noaccomp default-asyncmap plugin rp-pppoe.so eth1 user "xxx@yyy"
さらに/etc/ppp/chap-secretsおよび/etc/ppp/pap-secretsに次のようにパスワードを設定。どっちも同じ書式でいいのね。
"aaa@bbb" * "ccc" "xxx@yyy" * "zzz"
あとはこれを自動接続にするように、/etc/network/interfacesに追記。
allow-hotplug eth1 iface eth1 inet static auto ppp0 iface ppp0 inet ppp pre-up /sbin/ifconfig eth1 up provider session1 auto ppp1 iface ppp1 inet ppp pre-up /sbin/ifconfig eth1 up provider session2
で、マルチセッションというからには、destinationによって振り分けてroutingをちゃんと指定しておきたいよね、と。最初/etc/network/interfacesのppp1にup/down行を追加してみたんですが、うまくいかなかったです。代わりに/etc/ppp/ip-up.d/routeというスクリプトを置いてchmod +xしました。
#!/bin/sh if [ "x$PPP_IFACE" = "xppp1" ]; then ip route add a.a.a.a dev $PPP_IFACE ip route add b.b.b.b dev $PPP_IFACE fi
他には...
BINDとかIPv6の設定分とかは次回に続く。
2010年4月 6日
routerをSRT100からLinux PCサーバに入れ替えたよ
一通り設定が終わったのでリプレース、多少てこずったというかひさびさのケーブリングで戸惑ったりしたけど何とか無事に完了。distroはdebian(lenny)で、スペックはAtom 330(Intel D945GCLF2)にメモリ2GBのSSD 40GB(これもIntel)。NICも2枚差し(正確には内1個オンボード)なんて何年振りだろ。多少まごついたけどおさだまりのip_forwardとiptablesでNAT(今回の場合はMASQUERADE)とフレッツ用のpppoeと、そのくらいでだいたい行けた。もちろん(?)kernelソースも持って来てはありますが、まだ使いどころが無かった。
一緒にOCN IPv6サービスも申し込んだので、こちらの設定も追々する予定。ああ、不要なdebパッケージをお掃除したいね。
2010年4月 4日
PostTwiOauthでMTからtwitterに投稿を通知するプラグイン その2
前回のとりあえずの続報、のようなもの。うちの環境(WebARENA SuiteX)でインストールするのに結局下記のような修正を入れました。
diff -ur PostTwiOauth_0.11.orig/plugins/PostTwiOauth/PostTwiOauth.pl PostTwiOauth_0.11/plugins/PostTwiOauth/PostTwiOauth.pl
--- PostTwiOauth_0.11.orig/plugins/PostTwiOauth/PostTwiOauth.pl 2010-03-19 14:42:41.000000000 +0900
+++ PostTwiOauth_0.11/plugins/PostTwiOauth/PostTwiOauth.pl 2010-04-04 03:00:43.000000000 +0900
@@ -135,7 +135,7 @@
}
my $message = "$title $url" . $hashtag;
- $message = MT::I18N::decode_utf8($message);
+ eval('$message = MT::I18N::decode_utf8($message);');
my $API_Method_url = 'https://twitter.com/statuses/update.xml';
my $request_method = 'POST';
diff -ur PostTwiOauth_0.11.orig/plugins/PostTwiOauth/lib/PostTest.pm PostTwiOauth_0.11/plugins/PostTwiOauth/lib/PostTest.pm
--- PostTwiOauth_0.11.orig/plugins/PostTwiOauth/lib/PostTest.pm 2010-03-19 14:42:41.000000000 +0900
+++ PostTwiOauth_0.11/plugins/PostTwiOauth/lib/PostTest.pm 2010-04-03 08:45:07.000000000 +0900
@@ -34,6 +34,7 @@
my $blog_id;
eval {$blog_id = $app->path_info};
$blog_id =~ s!^/!!;
+ $blog_id =~ s!/$!!;
my $plugin = new MT::Plugin::PostTwiOauth({
name => $PLUGIN_NAME,
});
diff -ur PostTwiOauth_0.11.orig/plugins/PostTwiOauth/lib/PostTwiOauthReq.pm PostTwiOauth_0.11/plugins/PostTwiOauth/lib/PostTwiOauthReq.pm
--- PostTwiOauth_0.11.orig/plugins/PostTwiOauth/lib/PostTwiOauthReq.pm 2010-04-03 07:02:25.000000000 +0900
+++ PostTwiOauth_0.11/plugins/PostTwiOauth/lib/PostTwiOauthReq.pm 2010-04-03 08:46:13.000000000 +0900
@@ -34,6 +34,7 @@
my $blog_id;
eval {$blog_id = $app->path_info};
$blog_id =~ s!^/!!;
+ $blog_id =~ s!/$!!;
my $plugin = new MT::Plugin::PostTwiOauth({
name => $PLUGIN_NAME,
});
2010年4月 3日
PostTwiOauthでMTからtwitterに投稿を通知するプラグインを入れてみたんだけどね。
なんか今一ちゃんと動いてるかどうか心配っぽいんだけど、MTへの投稿通知をtwitterに対して行うプラグイン"PostTwiOauth"を入れてみました。
http://www.macminiosx.com/2010/03/movable_typeoauthtwitter_postt.html
Movable Type用OAuth対応Twitter投稿プラグイン PostTwiOAuth - BSDあれこれ
設定時に"oauth.cgi/(blog_id)"や"post_test.cgi/(blog_id)"という形式でCGIページを開く必要があるんだけど((blog_id)は数字)、そのときにパス末尾に/(スラッシュ)がくっついて"oauth.cgi/(blog_id)/"のようになって処理用のモジュールに渡って来てたようで、PostTwiOauthReq.pmとPostTest.pmが正常に動作しなくなってしまって大変往生しました。orz 何だっけこの挙動は...。PATH_INFOの末尾にスラッシュがくっついて来てるっぽいからなんだけど、何かの設定いじって云々とかだっけ...?
あと、途中でMT::I18N::decode_utf8を使うようになっていたのがうまく働いていなかったようなのでEncode::decode_utf8に変更evalで囲ってみた。詳細は追って調べる予定。
2010年4月 2日
Xcode 3.2.2 (iPhone SDK 3.2 beta)の続報
これの続報。昨日、一度Xcodeを完全にアンインストールして、iPhone SDKを除くXcode 3.2.1をインストール、さらにそのあとにiPhone SDK 3.2 GMをインストール、ってやったらhangが起こらなくなった。何ぞ。
$ sudo /Developer/Library/uninstall-devtools --mode=all
2010年4月 1日
Xcode 3.2.2 (iPhone SDK 3.2 beta)にしてからというものビルドのたびにhangしまくるのだが
せっかくGMにもなったことだしと思って最新のiPhone SDKを持って来てインストールすると、ビルドの途中でどうにも固まってばかりでにっちもさっちも行かなくなって困った。
GM以前のbeta 3だか4だかの頃からずっとこうだったので、さすがにどうにかしたい。調べてみると、新規作成したプロジェクトでビルドすると固まらないが、以前から(Xcode 3.2.1とか)使ってたプロジェクトだとダメみたい。うーん。








