2009/04/20
2009/04/14
Windows Xp のメインストリーム・サポートが終了
Windows Xp のメインストリームサポートが本日(4/14)で終了し、
以後は延長サポートになるとの事です。
使用している Windows 環境が数台の Windows 2000 を除いて
殆どが Windows Xp なので若干気になっていたのですが、
延長サポート扱いでもセキュリティパッチは提供されるとの事なので、
当面安心していても大丈夫なんでしょうかね。
Windows Xp が発表された 2001 年当時といえば、
FreeBSD では 4.4-RELEASE、RedHat Linux では 7.3 の頃なので、
非常に長生きしている OS ですね。
2009/04/09
POSIX.2 標準仕様のシェルによる変数展開
シェルスクリプトを作成する際に
シェル変数に値を代入したり参照したりする事は頻繁に発生するが、
シェル変数の展開にも便利な使い方がある。
basename (1) や dirname (1) と同様な動作が
シェルの組込みとして利用できるので資源の節約にもつながり、
上手に利用すると可読性の高いスクリプトが作成できる。
機能一覧
${parameter:-word} | デフォルト値への置換 |
${parameter:=word} | デフォルト値の代入 |
${parameter:?[word]} | 値の検査とエラー |
${parameter:+word} | 代替値の使用 |
${#parameter} | 文字列長の取得 |
${parameter%word} | 最短後置パターンの削除 |
${parameter%%word} | 最長後置パターンの削除 |
${parameter#word} | 最短前置パターンの削除 |
${parameter##word} | 最長前置パターンの削除 |
デフォルト値への置換
- ${parameter:-word}
${parameter} が NULL の場合 word に置換される。
$ echo ${foo} $ echo ${foo:-FOO} FOO $ echo ${foo} $ foo=BAR $ echo ${foo:-FOO} BAR
デフォルト値の代入
- ${parameter:=word}
${parameter} が NULL の場合 word に置換され、 かつ parameter に代入される。
$ echo ${foo} $ echo ${foo:=FOO} FOO $ echo ${foo} FOO $ echo ${foo:=BAR} FOO
値の検査とエラー
- ${parameter:?[word]}
${parameter} が NULL の場合 word が指定されていればその値を、 指定されていない場合はデフォルトの値を表示し、 非対話実行されているシェルをエラー終了させる。
$ echo ${foo} $ echo ${foo:?value not set} value not set
代替値の使用
- ${parameter:+word}
${parameter} が NULL 以外の場合 word に置換される
$ echo ${foo:+FOO} $ echo ${foo} $ foo=BAR $ echo ${foo} BAR $ echo ${foo:+FOO} FOO
文字列長の取得
- ${#parameter}
${parameter} の文字列としての長さに置換される
$ echo ${foo} $ echo ${#foo} 0 $ foo=FOO $ echo ${foo} FOO $ echo ${#foo} 3
最短後置パターンの削除
- ${parameter%word}
${parameter} の右から word で示されるパターンの最短部分を削除する
$ foo=/foo/bar/baz $ echo ${foo%/*} /foo/bar $ foo=foo.c $ echo ${foo%.*} foo $ foo=foo $ echo ${foo%.*} foo
最長後置パターンの削除
- ${parameter%%word}
${parameter} の右から word で示されるパターンの最長部分を削除する
$ foo=foo.example.com $ echo ${foo%%.*} foo $ foo=http://www.example.com:8888/ $ echo ${foo%%:*} http $ foo=foo $ echo ${foo%%.*} foo
最短前置パターンの削除
- ${parameter#word}
${parameter} の左から word で示されるパターンの最短部分を削除する
$ foo=foo.c $ echo ${foo#*.} c $ foo=foo.example.com $ echo ${foo#*.} example.com $ foo=foo $ echo ${foo#*.} foo
最長前置パターンの削除
- ${parameter##word}
${parameter} の左から word で示されるパターンの最長部分を削除する
$ foo=foo.example.com $ echo ${foo##*.} com $ foo=/foo/bar/baz $ echo ${foo##*/} baz $ foo=foo $ echo ${foo##*.} foo
2009/04/08
HP ProLiant ML110 G5 で FreeBSD 7.0-RELEASE を稼働させる
PCクラスの筐体でサーバとして稼働できる Hewlett-Packard 社の ProLiant ML110 G5 に FreeBSD 7.0-RELEASE をインストールしてみた。
ML110 G5 はマザーボードから IDE やパラレルポートといった
旧いインタフェイスが省略されている
所謂『レガシーフリー』なサーバなので、
当然光学ドライブも SATA 接続となる。
FreeBSD 7.0 では(一部の) SATA 接続光学ドライブとは相性が悪いので、
起動時のメニューで boot prompt を表示し、
"hw.ata.atapi_dma='0'" を指定すると、
スムーズにインストールできる様になる。
インストールした後は /boot/loader.conf に
以下の記述を追加しておくと自動で設定されて便利だ。
hw.ata.atapi_dma="0"
ML110 のマザーボードに搭載されている NIC は Broadcom 社の GbE だが、 型番が "NetXtreme BCM5722 Gigabit Ethernet PCIe" となっていて 標準のカーネルでは利用できないので、 インストールの際は CD からのインストールや USB 接続の NIC などを利用してインストールを済ませる。
インストール完了後、pciconf (8) を実行してみると チップセット ID が 0x165a となっているのが確認できた。
# pciconf -lv : : bge0@pci0:14:0:0: class=0x020000 card=0x7051103c chip=0x165a14e4 rev=0x00 hdr=0x00 vendor = 'Broadcom Corporation' device = 'NetXtreme BCM5722 Gigabit Ethernet PCIe' class = network subclass = ethernet
そこで以下のパッチを適用してカーネルの再構築を行ってみると 無事にギガビットイーサが利用できるようになる。
diff -cr /usr/src/sys.orig /usr/src/sys *** /usr/src/sys.orig/dev/bge/if_bge.c 2009-04-03 12:05:39.000000000 +0900 --- /usr/src.sys/dev/bge/if_bge.c 2009-04-02 12:51:46.000000000 +0900 *************** *** 169,174 **** --- 169,175 ---- { BCOM_VENDORID, BCOM_DEVICEID_BCM5715S }, { BCOM_VENDORID, BCOM_DEVICEID_BCM5720 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM5721 }, + { BCOM_VENDORID, BCOM_DEVICEID_BCM5722 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM5750 }, { BCOM_VENDORID, BCOM_DEVICEID_BCM5750M }, { BCOM_VENDORID, BCOM_DEVICEID_BCM5751 }, diff -cr bge.orig/if_bgereg.h bge/if_bgereg.h *** /usr/src/sys.orig/dev/bge/if_bgereg.h 2009-04-03 12:05:39.000000000 +0900 --- /usr/src/sys/dev/bge/if_bgereg.h 2009-04-02 12:51:13.000000000 +0900 *************** *** 2011,2016 **** --- 2011,2017 ---- #define BCOM_DEVICEID_BCM5715S 0x1679 #define BCOM_DEVICEID_BCM5720 0x1658 #define BCOM_DEVICEID_BCM5721 0x1659 + #define BCOM_DEVICEID_BCM5722 0x165A #define BCOM_DEVICEID_BCM5750 0x1676 #define BCOM_DEVICEID_BCM5750M 0x167C #define BCOM_DEVICEID_BCM5751 0x1677
ハードウェア構成にもよるがデュアルコアの Xeon は早くてなかなか快適だ。
2009/04/02
地デジカ
公式サイトが乗っ取られてるみたいですね。
素でやっているとしたら…まぁ、それはそれで(苦笑)
2009/04/30 追記
どうやら chidejika.jp は公式サイトではない様です。第三者が取得したドメインの様ですが… まぁ、本家の脇が甘すぎだという事には変わらないですが。
現在はトップの画像にぼかしが入ってる様ですね。
2009/03/31
Dual Head + KVM Switch + Synergy その3
ATEN の CS-1734A を入手したのでデスクトップ環境を変更してみた。
メインの生活環境となる FreeBSD マシンはビデオカードに
nVidia の GeForce 7300 を使用しているので、
Dual Head を活用して画面を VGA と DVI に出力している。
VGA 出力は CS-1734A 経由で正面の BENQ 24 インチメインディスプレイに繋がり、
- 生活環境としての FreeBSD
- あまり使う機会は少ないが何となく必要な Windows Xp Professional
- 使いやすさと美しさが最高な Mac OS X 10.5 Leopard
- 検証や Linux 独自の作業に必要な ubuntu
DVI 出力は メインディスプレイの右隣に設置してある
19 インチのサブディスプレイに直接接続しており、
常時 FreeBSD の画面を表示している。
コンソール使用時は双方に同じ内容が出力されているが、
X Window を起動するとそれぞれ独立した別のスクリーンとして動作できるので、
メインディスプレイに FreeBSD の画面以外が表示されている場合でも
サブディスプレイには FreeBSD の画面が表示されていて便利である。
勿論キーボードとマウスはそれぞれのスクリーンを透過的にアクセスできるので、
メインディスプレイにも FreeBSD の X Window が表示されている場合、
マウスカーソルはメインディスプレイの右側からサブディスプレイの左側にかけて
連続して移動する。
CS-1734A 経由で接続されているメインキーボード/マウス以外に、 FreeBSD マシンには BlueTooth 経由でサブキーボード/マウスも接続されているので、 メインディスプレイに FreeBSD が表示されていない (メインのキーボード/マウスが他の OS で利用されている)場合でも、 サブキーボード/マウスを利用してサブディスプレイ上に表示されている FreeBSD を操作する事が可能である。
更にサブディスプレイ上に表示されている X Window のスクリーンでは
synergy サーバが動作しており、
Windows Xp、Mac OS X、ubuntu がそれぞれ synergy クライアントとなっているので
各 OS 上でのコピー & ペーストが可能になっている。
ちなみにサブディスプレイ側でマウスカーソルを画面上部に移動すると Mac OS X、
画面下部に移動すると Windows Xp、画面右に移動すると ubuntu に
キーボードとマウスの対話権が移動する。
例えばメインディスプレイに Mac OS X が表示されている場合、
メインキーボード/マウスを操作するとメインディスプレイ上で
Mac OS X の操作ができ、
サブキーボード/マウスを操作するとサブディスプレイ上で
FreeBSD の操作ができるのだが、
サブディスプレイ上でサブマウスのカーソルを画面上部に移動すると、
メインディスプレイ上の Mac OS X の操作を
synergy 経由のサブキーボード/マウスでできてしまう。
文章で説明するのが困難な程複雑な仕組みになってしまった気がする。
複雑な仕組みになってしまったのでたまに混乱してしまう…
2009/03/30
ATEN CS-1734A + Logicool V450 Nano
職場で利用しているマウスが 10 年以上前に購入した有線マウスなので、
ワイヤレスで快適な環境を目指し Logicool の V450 Nano を購入した。
本日届いたので早速 CS-1734A の CONSOLE ポートに接続してみると…
マウスカーソルが縦方向にしか移動しない。
それぞれの OS が動作するハードウェアの USB ポートに V450 Nano の
レシーバを直接差し込むと当然ながら正常に動作しており、
CS-1734A につながっている FreBSD、Windows Xp、Leopard、Linux の
全てで同じ動作なので OS の問題ではなく KVM Switch の問題らしい。
USB マウスは CS-1734A(というか KVM Switch)との相性があるんですね…がっかり。
とりあえず CONSOLE ポートではなく裏面の USB HUB に接続したら動作した。
裏面の USB HUB は前面のスイッチを短くタッチした場合は
ディスプレイと連動しないので前面のスイッチを長押するか
ホットキーで切替える必要がある。
普段からホットキーのみで切替ているので良しとするか
追記
ディスプレイの切替のたびに USB マウスの挿抜が検出されてしまい、 FreeBSD は USB デバイスのエラーが発生してしまった。なので当面は V450 Nano は使用できない。
2009/03/29
Mac OS X で CS-1734A 経由の HHK(PD-KB02)を利用する
ATEN の KVM Switch CS-1734A は Mac 対応をうたっているが、 PS/2 接続の Happy Hacking Keyboard(PD-KB02) を CS-1734A に付属する PS/2 -> USB 変換ケーブルを利用して Mac OS X Leopard に接続する様な使い方の場合、 キーボード手前の左右 Meta キー ('◇' )が何故か 'a' になってしまう。
市販の PS/2-USB 変換アダプタを利用して PS/2 接続の Happy Hacking Keyboard を Mac OS X で利用するための デバイスドライバ HHKPS2USBDriver をみつけたので、 リストにない変換アダプタでの動作を確認する方法を参考に CS-1734A の Vendor ID と Product ID を登録したところ、 キーボード手前の左右 Meta キー ('◇') が Command キーとして正しく動作する様になった。
ちなみに ATEN の Vendor ID は 1367(10)、 Product ID は 8723(10) なので、
1<key>HHK via ATEN CS-1734A</key> 2<dict> 3 <key>CFBundleIdentifier</key> 4 <string>org.nnip.driver.HHKPS2USBDriver</string> 5 <key>HIDDefaultBehavior</key> 6 <string></string> 7 <key>IOClass</key> 8 <string>HHKPS2USBDriver</string> 9 <key>IOProviderClass</key> 10 <string>IOUSBInterface</string> 11 <key>bConfigurationValue</key> 12 <integer>1</integer> 13 <key>bInterfaceNumber</key> 14 <integer>0</integer> 15 <key>idProduct</key> 16 <integer>8723</integer> <!-- Product ID --> 17 <key>idVendor</key> 18 <integer>1367</integer> <!-- Vendor ID --> 19</dict>の記述を追加した。
2009/03/15
FreeBSD で BlueTooth マウスとキーボードを同時使用する
Logicool の V470 BlueTooth マウスに引き続き、
Apple Wireless Keyboard も FreeBSD マシンに接続してみる。
キーボードは元々認証する設定だったので、
/etc/bluetooth/hcsecd.confファイルのキーボードの設定部分で、
PIN を利用する設定とし hcsecd (8) コマンドを再起動する。
device { bdaddr XX:XX:XX:XX:XX:XX; name "任意の名称"; key nokey; pin "PIN"; }次にキーボードの場合もマウス同様 bthidcontrol (8) コマンドの query オプションを利用してハードウェア情報を取得し、 /etc/bluetooth/bthidd.conf ファイルに出力した後で、 bthidd (8) コマンドを再起動すればキーボードは利用可能になる。
# bthidcontrol -a 名称 query > /etc/bluetooth/bthidd.conf
しかし、キーボード使える様になると
なぜだかマウスが利用できなくなった。
bthidcontrol (8) コマンドで query しても
Permission denied(13) と表示されてしまう。
ネットで検索してもあまり有効な情報は得られなかったが、
試行錯誤の結果、キーボードが接続された後で
BlueTooth の認証を disable に設定するとマウスも接続できた。
# hccontrol -n ubt0hci write_authentication_enable 0
はたしてこの解決が正しいのだろうか?
FreeBSD 上での BlueTooth 利用はまだまだ情報が少ないので、
快適に利用するのはなかなか大変である。