November 28, 2011

vim で .pde ファイルにカラーアノテーションをつける

Arduinoのエディタがいまいちだなーとおもったので、vimで編集したいのだけど、カラーアノテーションされないのは辛い。 .pdeなんてC++なんだからなんとかなるのだろうと調べてみると、 こんなのがあった。

上記リンクから最新のsyntaxファイルをDLして、~/.vim/syntaxに入れておく。
.vimrcに
au BufNewFile,BufRead *.pde setf arduino
を追記してvimで.pdeを開くと、ちゃんと色がついてる! めでたし!

July 27, 2011

Ubuntu10.10 での Arduino開発環境導入

ちょっと遊んでみたくて環境を構築した。

すでにaptに登録があるので
$ sudo aptitude install arduino
で依存関係一式は入る。

しかし、古いので新しいのを公式から落としてくる。
今回はLinux 64 bitを落として展開する。
展開後のディレクトリをホームディレクトリ以下にでも置く。

起動するときはフルパスで~/arduino-0023/arduinoあたりを直接たたく。
起動時のパスで各種の利用ディレクトリを決定するため、シンボリックリンクだとうまくいかないことがある。

July 19, 2011

CentOS6 日本語&開発用ワークステーションで導入後、home以下のディレクトリ名を英語化する

CentOS6.0を日本語&開発用ワークステーションで導入したら
homeディレクトリ以下の各種ディレクトリ名が日本語表記でだいぶ萎える。

たぶんUbuntuと同じ方法で対処できるだろうということでためしたらうまくいった。

$ LANG=C xdg-user-dirs-gtk-update

July 6, 2011

Ubuntu10.10 での OpenCV2.3 with CUDA4.0 の導入

以前はOpenCV2.3RCをつかってCUDA対応のOpenCVを導入してみたが、
RCがとれたのでインストールしてみる。
RCとれるのはやいなー。
<追記>OpenCV-2.3.1でも同様に導入できることを確認した

環境としては
OS:Ubuntu10.10 desktop 64bit
OpenCV:OpenCV-2.3.0
CUDA:4.0

CUDA4.0の導入についてはこの記事を参照

まずは依存を解決する。
$ sudo apt-get install libtbb2 libtbb-dev libgtk2.0-dev build-essential pkg-config libpng12-0 libpng12-dev libpng3 libpng3-dev libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools  libjpeg62 libjpeg62-dev libjpeg62-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev openexr libswscale0 libswscale-dev libeigen2-dev libopenexr-dev subversion subversion-tools doxygen doxygen-gui python-sphinx cmake
また、今回からgtestが必要になったようなのでそちらも導入。
$ sudo aptitude install libgtest-dev

あとはソースをsourceforgeから落としてきて導入。
また、途中でCMakeLists.txtをsedで編集している。これはUbuntuのPythonがsite-packagesを見にいかないため。
さらにdebで管理するためにCheckInstallでdeb化して導入する。RHELと異なりaptitudeで導入できる。
$ mkdir -p ~/local/src
$ cd ~/local/src
$ wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.3/OpenCV-2.3.0.tar.bz2
$ tar jxvf OpenCV-2.3.0rc.tar.bz2
$ cd OpenCV-2.3.0
$ sed -i s/site-packages/dist-packages/g CMakeLists.txt
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON -D WITH_CUDA=ON -D BUILD_DOXYGEN_DOCS=ON ../
$ make -j2
$ sudo aptitude install checkinstall
$ sudo checkinstall
$ sudo ldconfig
checkinstall中にいろいろきかれるが適宜答えておく。
checkinstallにいろいろ聞かれるのが煩わしい人はcheckinstallの代わりに"make install"とでもしておけば良い。
これで導入は完了。

せっかくなので、このページにかかれているサンプルをコンパイルしてみる。
コンパイルは
$ g++ -I/usr/local/include/opencv2 -L/usr/local/lib -lopencv_gpu test.cpp
で通る。
これは問題なく動いている。

July 5, 2011

CUDA4.0 実験用マシンの追加

以前、ML110G6にGeForceGTX560Tiを載せたCUDA実験機を作成したが、
電源の換装が必要であったり、全体の改修費用が高額であったり、と問題が多かった。

そこで、手軽に実験できるよう、
・電源換装の必要なし
・総額1万以内で購入できる
という観点からグラボを選定しなおした。



これをML110G6に搭載し、この記事を参考に導入を進めればCUDA対応環境での実験が可能となる。

GTX560Tiとの性能比較はまた後日。

June 28, 2011

ちょっとワロタw

$ sl
プログラム 'sl' はまだインストールされていません。  次のように入力することでインストールできます:
sudo apt-get install sl
ワロタw
あるのかよw

Ubuntu10.10で"右クリックのコンテキストメニューからTerminal起動"をできるようにする

意外となかったので、メモ。
$ sudo aptitude install nautilus-actions
$ nautilus-actions-config-tool
でnautilus-actionsを導入して起動
"File"から"NewAction"で新規アクション追加
Actionタブで"Display item in selection context menu"と"Display item in location context menu"にチェックを入れて適当なContext label名をつける。
Commandタブで好きなコマンドを入力する。(私の場合はPATH:"/usr/bin/terminator" Parameter:"--working-directory=~/")

以上

Ubuntu10.10にGoogle日本語入力Mozcを導入する

新しい環境を作っているのでメモ。
$ sudo aptitude install ibus-mozc
$ killall ibus-daemon
$ ibus-daemon -d -x &
$ ibus-setup
で出てきたウィンドウの"インプットメソッド"タブを選択
"インプットメソッドの選択"から日本語→Mozcを選択
"追加"ボタンをクリック
Mozcを選択して"上へ"ボタンをクリック
で完了。

June 23, 2011

Ubuntu10.10 での OpenCV2.3RC with CUDA4.0 の導入

前回はOpenCV2.2のsvn版をつかってCUDA対応のOpenCVを導入してみたが、
OpenCV2.3RCが出たのでインストールしてみる。
RCがとれたのでやってみたのはこっち。

環境としては
OS:Ubuntu10.10 desktop 64bit
OpenCV:OpenCV-2.3.0RC
CUDA:4.0

CUDA4.0の導入についてはこの記事を参照

まずは依存を解決する。
$ sudo apt-get install libtbb2 libtbb-dev libgtk2.0-dev build-essential pkg-config libpng12-0 libpng12-dev libpng3 libpng3-dev libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools  libjpeg62 libjpeg62-dev libjpeg62-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev openexr libswscale0 libswscale-dev libeigen2-dev libopenexr-dev subversion subversion-tools doxygen doxygen-gui python-sphinx cmake
また、今回からgtestが必要になったようなのでそちらも導入。
$ sudo aptitude install libgtest-dev

あとはソースをsourceforgeから落としてきて導入。
また、途中でCMakeLists.txtをsedで編集している。これはUbuntuのPythonがsite-packagesを見にいかないため。
さらにdebで管理するためにCheckInstallでdeb化して導入する。RHELと異なりaptitudeで導入できる。
$ mkdir -p ~/local/src
$ cd ~/local/src
$ wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.3/OpenCV-2.3.0rc.tar.bz2
$ tar jxvf OpenCV-2.3.0rc.tar.bz2
$ cd OpenCV-2.3.0
$ sed -i s/site-packages/dist-packages/g CMakeLists.txt
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON -D WITH_CUDA=ON -D BUILD_DOXYGEN_DOCS=ON ../
$ make -j2
$ sudo aptitude install checkinstall
$ sudo checkinstall
$ sudo ldconfig
checkinstall中にいろいろきかれるが適宜答えておく。
checkinstallにいろいろ聞かれるのが煩わしい人はcheckinstallの代わりに"make install"とでもしておけば良い。
これで導入は完了。

opencv_test_gpuがきちんと終わらないのは変わらないなー。
RCでも変化がないということはこちらの設定ミスを疑ってみる。
追々チェックしていく。

せっかくなので、このページにかかれているサンプルをコンパイルしてみる。
コンパイルは
$ g++ -I/usr/local/include/opencv2 -L/usr/local/lib -lopencv_gpu test.cpp
で通る。
これは問題なく動いている。

June 21, 2011

Ubuntu10.10 での OpenCV2.2 with CUDA4.0 の導入

::OpenCV2.3RCの導入法はこちら

以前にもOpenCVを導入したが、
今回はCUDA対応を施しインストールする。(他にも些細な改善をする)

環境としては
OS:Ubuntu10.10 desktop 64bit
OpenCV:OpenCV-2.2.0
CUDA:4.0

CUDAの導入については前回を参照

まずは依存を解決する。
$ sudo apt-get install libtbb2 libtbb-dev libgtk2.0-dev build-essential pkg-config libpng12-0 libpng12-dev libpng3 libpng3-dev libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools  libjpeg62 libjpeg62-dev libjpeg62-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev openexr libswscale0 libswscale-dev libeigen2-dev libopenexr-dev subversion subversion-tools doxygen doxygen-gui python-sphinx cmake
あとはソースをsubversionから落としてきて導入。
tar版はCUDA4.0に対応していないため。
また、途中でCMakeLists.txtをsedで編集している。これはUbuntuのPythonがsite-packagesを見にいかないため。
さらにdebで管理するためにCheckInstallでdeb化して導入する。RHELと異なりaptitudeで導入できる。
$ mkdir -p ~/local/src
$ cd ~/local/src
$ mkdir OpenCV-2.2.0-svn
$ cd OpenCV-2.2.0-svn
$ svn checkout https://code.ros.org/svn/opencv/trunk/
$ cd trunk/opencv/
$ sed -i s/site-packages/dist-packages/g CMakeLists.txt
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON -D WITH_CUDA=ON -D BUILD_DOXYGEN_DOCS=ON ../
$ make -j2
$ sudo aptitude install checkinstall
$ sudo checkinstall
$ sudo ldconfig
checkinstall中にいろいろきかれるが適宜答えておく。
checkinstallにいろいろ聞かれるのが煩わしい人はcheckinstallの代わりに"make install"とでもしておけば良い。
これで導入は完了。

opencv_test_gpuでいくつか通らないテストがあるのだけどどうしたもんかな…
来月にはOpenCVの新しいヴァージョンも出るらしいので、それに期待かな。
ま、追々対応していく。とりあえず完了。

せっかくなので、このページにかかれているサンプルをコンパイルしてみる。
コンパイルは
$ g++ -I/usr/local/include/opencv2 -L/usr/local/lib -lopencv_gpu test.cpp
で通る。
一応動いているみたいで一安心。

Ubuntu10.10 での CUDA4.0 導入

以前、GPUを換装したので、CUDA環境をインストールしてみる。

前提とする環境は
OS:Ubuntu10.10 desktop 64bit
GPU:GeForce GTX 560Ti
CUDA:4.0

まず、公式サイトからCUDA関連ファイルをDLしておく。
必要なのは
・Developer Drivers for Linux : devdriver_4.0_linux_64_270.41.19.run
・CUDA Toolkit for Ubuntu Linux 10.10 : cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
・GPU Computing SDK code samples : gpucomputingsdk_4.0.17_linux.run
・CUDA Tools SDK : cudatools_4.0.17_linux_64.run
の4つ。サンプルとかは適当に。

大まかな流れとしては
・依存の解決
・ドライバの導入
・Toolkitの導入
・SDKの導入
となる。

まず、依存関係をクリアする。
Ubuntu11.4の場合はこれの他に、gcc-4.4,g++-4.4の(バージョンを明記した)導入が必要(11.4は4.5系)
$ sudo aptitude install libxi-dev libxmu-dev freeglut3-dev libglut3-dev g++
で、ディスプレイドライバをいじるのでXを落として、セットアップスクリプトを実行。
$ sudo service gdm stop
$ sudo sh devdriver_4.0_linux_64_270.41.19.run
色々聞かれるが適度に妥当に答える。
おわったら"startx"などでグラフィカルモードにもどる。

次にCUDAのToolkitを導入する。
$ sudo ./cudatoolkit_4.0.17_linux_64_ubuntu10.10.run
これでCUDAのライブラリ等も導入された。
ライブラリを登録する。
/etc/ld.so.conf.d/以下にcuda.confというファイルを作成し、
/lib/local/cuda/lib
/lib/local/cuda/lib64
と編集する。編集が終わったら、"sudo ldconfig"で反映しておく。
また、"/usr/loca/cuda/bin"をPATHに追加しておく。
追加の仕方は各自調査のこと。

また、cudatoolsも導入しておく。
$ sudo sh cudatools_4.0.17_linux_64.run

さて、ここで、なぜか/usr/lib/libGL.soがリンク切れをしている。(mesaのパッケージに問題有るのかな?)
正しい解決方法を探すのが面倒だったので
$ sudo rm /usr/lib/libGL.so
$ sudo ln -s /usr/lib/libGL.so.1 /usr/lib/libGL.so
としておく。

これでSDKを導入する準備ができた。
SDKはデフォルトでは各自のホームディレクトリ以下に入る。
よって"sudo"する必要はない。
$ sh ./gpucomputingsdk_4.0.17_linux.run
導入が終わったら、
$ cd ~/NVIDIA_GPU_Computing_SDK
$ make
で一式をコンパイルする。

コンパイルが終わったら、
$ ~/NVIDIA_GPU_Computing_SDK/C/bin/linux/release/deviceQuery
で動作確認。

今後、Kernelアップデートするたびに、ドライバのインストールを繰り返す必要があるかも。
なにかオシャレな対策はないのかな…?

以上

OpenCVとの連携はこちらを参照のこと。

LinkedInのInvitationの取り下げ方

LinkedInに誘われたので入会してみた。
そうしたら、Gmailの履歴から友達にもInvitationを送れるぜ、というので試しにやってみた。
まさかページングされてると思わず…
気がつけば400通近いInvitationが飛んでいた…
そんな抜かったことをやらかしました。
つらい…

さて、そのことに気がついて、即LinkedInの
・Inbox→Sent→SentInvitation
を消しました。

あとはInvitationを送りつけた人たちに謝るだけだ、とおもっていたら…

数日後、
" Reminder about your invitation from XXXXXX XXXXXXX "という題名のメールが
前述のInvitationを送ってしまった人に、さらに飛んでいるらしい…

なんかこのリマインダというシステム自体が微妙に日本人の感性に会わない気がします。

さて、これはどう対処したらいいのか。
どうも
https://help.linkedin.com/app/answers/detail/a_id/26/session/L2F2LzEvdGltZS8xMzA4NjEzOTQxL3NpZC9Ha21ldSp3aw%3D%3D
のように対処をすべきだったようです。
つまり”招待の取り下げ”を先に行わないといけなかったようです。

とはいえ、もうInvitationをすべて消してしまったので自分で取り下げることもできません。
そこで
https://help.linkedin.com/app/answers/detail/a_id/3882
の下のほうにある"Contact us"リンクからメールフォームに飛んで、
必要事項を記入しYour Issue Typeに"Inbox/Invitation/message"を選んで
”Withdraw All Pending Invitations”と題名に入力して送信してください。

それで対処される”はず”です。

これでまだ招待が飛ぶならLinkedIn退会するかな。

ご迷惑をおかけしている方にはほんとに申し訳ない限りです…

June 14, 2011

ML110G6 に Windows7 を導入すると不明なデバイスが残る件

ML110G6にWindows7 x64を導入すると、不明なデバイスがひとつ残ってしまう。
コンバネから情報を調べると
ACPI\HPQ000B
とのこと。
何かと思って調べてみると、こんな情報があった。

これにしたがって、
HP ProLiant 100シリーズ マネジメント コントローラ ドライバ for Windows Server 2003/2008 x64 edition
をインストールする。
Windows7用ではないが問題はない。

これで不明なデバイスはなくなった。すっきり!

HP ProLiant ML110G6 に GeForceGTX560Ti を導入する

CUDA を使いたいので ML110 G6 にGPUを導入することにした。
GT430 とかでスモールスタートするのもいいが、もうちょっと気合を入れてみたい。
(ML110G6+1万円で組める激安CUDA環境はこちら)
お財布との相談の結果、 GeForceGTX560Ti をねらうことにする。
2万円前半台でそこそこ性能は良さそう。
560Tiを使うにはML110G6の電源は貧弱なので電源も換装することにした。

実際に購入した製品は
グラフィックカード:MSI:N560GTX-Ti TwinFrozrII
電源:Scythe:剛力短2 700W 80PLUSブロンズ SPGT2-700P

ML110 G6は電源はATXそのままなのだが、ケースの関係上ショートサイズの電源を選ぶ必要がある。

電源は何事もなく換装完了し、グラボの搭載をしようとしたのだが、どうにもうまく嵌らない。
というのもこのグラボ、2スロット占有であり、どうも拡張スロットのセパレータであるケースの突起が邪魔なようだ。
邪魔なのでペンチで突起ごとケースを歪ませて対応した。

LinuxでGPUのベンチをどう取ったらいいのか迷ったので、Windows7を導入。
FFXIVベンチを走らせてみた。
HighでもLowでも3000強。期待より低い。というかHighとLowで変化がないのは何でだぜ…

小さいケースに無理くり押し込んだ手前、温度上昇が気になる。
ベンチをループさせながらGPU-ZでGPUの温度変化を追ってみた。
・FanSpeed55%で温度60度で安定
・GPULoadがそもそも40%ぐらいまでしか上昇しない…
・30分実験継続して温度の上昇傾向なし
・ベンチを終了すると室温+10度程度で安定
LoadがMAXまでいかないのは、GPU以外が足を引っ張ってるからなのかな…
まぁ、暴走したら対策を考えよう。とりあえずは大丈夫そう。

あとは、CUDAの導入OpenCVのCUDA対応、PyCUDAの導入という流れを考えている。

June 7, 2011

CentOS5におけるPython2.6の導入

CentOS5(RHEL5)のPythonは2.4系で色々辛いのでPython2.6を導入する。
CentOS6になればPython2.6系になるのだけど…

迂闊な事をするとpythonをつかっているスクリプトに影響を与える可能性があるので注意。
可能性の中で一番辛いのはyumが死ぬこと。
要は現状のpython(/usr/bin/pythonと/usr/lib/python2.4以下)を傷つけなければ問題ない。
DLして解凍
# cd /usr/local/src
# wget http://www.python.org/ftp/python/2.6.7/Python-2.6.7.tgz
# tar zxvf Python-2.6.7.tgz 
# cd Python-2.6.7
Modules/Setup.dist内のzlibに関するコメントアウトを解除する
#zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
↓
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lz
CheckInstallでrpm化して導入、libを登録
# ./configure --enable-shared
# make
# checkinstall
# rpm -ihv /usr/src/redhat/RPMS/x86_64/Python-2.6.7-1.x86_64.rpm 
# echo "/usr/local/lib" > /etc/ld.so.conf.d/python2.6.conf
# ldconfig
で、旧来のpython(/usr/bin/python)とは別に新しいpython(/usr/local/bin/python)が導入された。
PATHの設定にもよるが、デフォルトでは/usr/local/binが先に書かれているはずなので、
コマンドラインでpythonとだけ指定すると新しい方が呼ばれるはず。
最後にeasy_installが2.4系にしか入っていないので、新たに入れ直す。
# wget http://peak.telecommunity.com/dist/ez_setup.py
# python ez_setup.py
これでeasy_installが2.6系でも使えるようになった。
と、ここまで書いてeasy_install自体もpacoで管理すれば良かったことに気がつくもときすでに遅し…
pacoって"make install"にあたる部位で-オプションをつけると
pacoへのオプションだと認識されてしまうようでにっちもさっちも!まぁいいか…
で、最後に便利系を入れておく。
# paco -p pip easy_install pip
# paco -p virtualenv easy_install virtualenv
# paco -p virtualenvwrapper easy_install virtualenvwrapper
以上

pacoの導入

前回CheckInstallを導入した。
"make install"するソフトはCheckInstallするとして、
easy_install経由でインストール方法をとるパッケージの管理をするために、pacoを導入する。
(他にも使えるだろうけど。ついでにいえばpip使えよって話かもだけど。)
これもcheckinstallでrpm化して導入する。
# cd /usr/local/src
# wget http://downloads.sourceforge.net/paco/paco-2.0.9.tar.gz
# tar zxvf paco-2.0.9.tar.gz 
# cd paco-2.0.9
# ./configure --disable-gpaco
# make
# checkinstall
# rpm -ihv /usr/src/redhat/RPMS/x86_64/paco-2.0.9-1.x86_64.rpm 
以上

CheckInstallの導入

ソースから導入するソフトウェアは一定数存在する。
しかしRHELではrpmでパッケージ管理を行っている。
可能ならばrpmですべてのパッケージ管理を行いたい。
そこでCheckInstallを導入する。
CheckInstallを使えば、"make install"する類のパッケージをrpm化することができる。
(Ubuntuなどで採用されているdeb形式にも出力できる)
rpmは/usr/src/redhat/RPMSに生成される。
# cd /usr/local/src/
# wget http://www.asic-linux.com.mx/~izto/checkinstall/files/source/checkinstall-1.6.2.tar.gz
# tar zxvf checkinstall-1.6.2.tar.gz 
# cd checkinstall-1.6.2
# make
# make install
で導入する。
CheckInstall自体もrpmで管理するため、CheckInstallもrpm化して上書きする。
# checkinstall
# rpm -ihv /usr/src/redhat/RPMS/x86_64/checkinstall-1.6.2-1.x86_64.rpm
以上

June 1, 2011

" Can't remove open logical volume "対策

どこからも利用してない"はず"のLVMのLV"hoge"が Can't remove open logical volume "hoge" と言われて消去できない、
みたいなことがある。再起動したりしてみてもダメ…
そんなときは
# fuser /dev/VolGroupXX/hoge
で、どのプロセスが利用中なのか調べる。
プロセスIDがわかるのであとはpsでなんのプロセスなのか確認、対処する。

問答無用で殺したい時は
# fuser -km /dev/mapper/hogehoge
でok。

May 29, 2011

Ubuntu10.10 に OpenCV2.2 をインストールする

::OpenCV2.2でCUDA対応する導入法はこちら
::OpenCV2.3RCの導入法はこちら

UbuntuにはaptitudeでもOpenCVは導入可能だが、その場合Versionが2.1になってしまう。
せっかくなので2.2を入れる。
主にここここを参考にする。
Ubuntu10.10デスクトップ版を対象とする。

まず依存を解決する
$ sudo apt-get install libtbb2 libtbb-dev libgtk2.0-dev build-essential pkg-config libpng12-0 libpng12-dev libpng3 libpng3-dev libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev libjasper-dev libjasper-runtime libjasper1 pngtools libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools  libjpeg62 libjpeg62-dev libjpeg62-dbg libjpeg-progs ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libgstreamer0.10-0-dbg libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libxine1-ffmpeg libxine-dev libxine1-bin libunicap2 libunicap2-dev libdc1394-22-dev libdc1394-22 libdc1394-utils swig libv4l-0 libv4l-dev python-numpy libpython2.6 python-dev python2.6-dev openexr libswscale0 libswscale-dev libeigen2-dev libopenexr-dev subversion subversion-tools doxygen doxygen-gui cmake

あとはソースを落としてきて導入。
また、途中でCMakeLists.txtをsedで編集している。これはUbuntuのPythonがsite-packagesを見にいかないため。
$ mkdir -p ~/local/src
$ cd ~/local/src
$ wget http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.2/OpenCV-2.2.0.tar.bz2
$ tar jxvf OpenCV-2.2.0.tar.bz2
$ cd OpenCV-2.2.0
$ sed -i s/site-packages/dist-packages/g CMakeLists.txt
$ mkdir release
$ cd release
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BULD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_QT=ON -D WITH_QT_OPENGL=ON -D BUILD_DOXYGEN_DOCS=ON ../
$ make -j2
$ sudo make install

忘れずにldconfig
$ sudo ldconfig

CUDA対応もそんなに難儀しなさそうなので、今度やってみよう。

64bit Ubuntu10.10 でChromeを入れてもFlashがbuilt-inされてない…

なんの因果か64bit版UbuntuにChromeを入れてもFlashがbuilt-inされていない。
絶望したのでライブラリをAdobeから落としてきて対処する。

公式サイトから"Download plug-in for 64-bit Linux"をたどってtar.gzファイルをDL

解答した中身を
$ sudo mv libflashplayer.so /usr/lib64/
$ sudo mkdir /opt/google/chrome/plugins
$ sudo sudo ln -s /usr/lib64/libflashplayer.so /opt/google/chrome/plugins/
と配置してChromeを再起動すればok

May 24, 2011

OpenCV haartraining が segmentation fault する件

最近は画像処理で遊んでいる。
OpenCVに関しては導入から利用まで一通り後でまとめるとして(まとめた)、haarliketrainingが落ちる理由が非常にションボリだったのでここに書き連ねておく。

このあたりの記事を参考にオブジェクト検出器をつくろうとおもって負例500件、正例1件をあつめ,neg.txt(前述記事中のNG.txt)をつくり,(正例は1個だけだったのでリストはつくっていない)
$ #正例にアフィン変換をかけて正例を増やす
$ opencv_createsamples -img pos/pos.jpg -vec pos.vec -num 1000 -bgcolor 255 -w 100 -h 100
$ #負例と合わせて学習
$ opencv_haarliketraining -data training -vec pos.vec -bg neg.txt -npos 1000 -nneg 500  -w 100 -h 100 -mode ALL -nonsysm -mem 1000
とやってみると、segmentation faultする。
Google先生に聞くと、OpenCV1.x系だとneg.txtに記述されている負例のうち、実体がないものがあるとセグフォ、とおっしゃるのだがちゃんと全てのファイルは実在するしpathも間違ってない。そもそもOpenCV2.x系だしなぁ…
ということでうろうろしていると、
I had this problem as well, see bug #964145 on SourceForge. In short,
the negative samples have to be at least twice as wide and twice as
high as the positive samples, otherwise training will crash at some
stage.
http://tech.groups.yahoo.com/group/OpenCV/message/24290
ということらしい。
つまり、すべての負例が正例サンプルのタテヨコ2倍以上の大きさが無いと落ちるらしい…

ドキュメントの目立つところにそれぐらい書いておいて欲しい…

負例の最小値が100x40だったので
$ #正例をアフィン変換をかけて正例を増やす
$ opencv_createsamples -img pos/pos.jpg -vec pos.vec -num 1000 -bgcolor 255 -w 50 -h 20
$ #負例と合わせて学習
$ opencv_haarliketraining -data training -vec pos.vec -bg neg.txt -npos 1000 -nneg 500  -w 50 -h 20 -mode ALL -nonsysm -mem 1000
で問題なく学習完了

ちなみに学習完了までものすごい時間がかかる。

May 10, 2011

Ubuntu10.10デスクトップ版のhome以下のディレクトリ名を英語化する

日本語でUbuntu10.10デスクトップ版を導入したら
homeディレクトリ以下の各種ディレクトリ名が日本語表記でだいぶ萎える。

一般には、
"英語で導入し追加言語で日本語を選ぶ"
のが原則らしい。

再インストールとか面倒なので下記のコマンドを実行して対応する。

$ LANG=C xdg-user-dirs-gtk-update

April 8, 2011

CentOS5におけるDell Open Manage導入

Dellのハードウェア管理系ツールとしてOpenManageがDell社から提供されている。
数々の恩恵に与れるため是非とも導入したい。

RHELはサポート対象であるがCentOSは対象外であるため、小細工をする。
/etc/redhat-releaseを
Red Hat Enterprise Linux Server release 5.6 (Tikanga)
と書き換える。これでOpenManageのインストール時のチェックは回避できる。

次に、OpenManageを導入する。
公式を確認し最新のOpenManageを確認する。執筆時では、6.4が最新である。
レポジトリを導入し、OpenManage,FirmwareTools,最新ファームウェアまでをインストールする。
# wget -q -O - http://linux.dell.com/repo/hardware/OMSA_6.4/bootstrap.cgi | bash
# yum install srvadmin-all
# yum install dell_ft_install
# yum install $(bootstrap_firmware)
インストールが終わったら
# /opt/dell/srvadmin/sbin/srvadmin-services.sh start
# omreport chassis
でステータスが出れば導入は成功。使い方はmanを参照のこと

RHEL5.6におけるapcupsdを用いた APC SmartUPS1500 with AP9630 による電源保護

知人の会社のUPSをシリアル接続からネットワーク接続に変更したので
そのときの作業メモ。

AP9630は、ネットワーク経由でのUPSとの通信を可能とするオプションボードである。
まず、AP9630をUPSに導入する。UPSの電源を落とし(電源スイッチ長押しでDCも切る)、商用電源側・負荷側すべての電源ケーブルを抜く。背面のスロットのカバーを外し、AP9630を挿入し、ねじで固定する。

商用電源側の電源ケーブルを接続し、付属のシリアルケーブルを用いAP9630とノートPCを接続する。
9600bps, データビット 8, パリティ なし, ストップビット 1, フロー制御 なし
でシリアルポートを設定した後、UPSに電源を投入する。

起動後、ターミナルにプロンプトが出るのでID,PASSを入力しAP9630にログインする
(デフォルトではapc:apc)
# tcpip -i 192.168.1.100
# tcpip -g 192.168.1.254
# tcpip -s 255.255.255.0
# reboot
などと設定して、Etherケーブルを接続する。
apcupsdの導入は、rpmファイルを公式からDLしてきて
# yum install net-snmp net-snmp-libs
# rpm -ihv apcupsd-3.14.8-1.el5.x86_64.rpm
設定は、/etc/apcupsd/apcupsd.confを
UPSCABLE ether
UPSTYPE snmp
DEVICE 192.168.1.100:161:APC:public
と変更する。
# chkconfig apcupsd on
# service apcuspd start
# service apcupsd status
でUPSのステータスが表示されれば完了。

各種パラメータの設定はWebを参照のこと。

April 7, 2011

CentOS5.5からCentOS5.6へのUpgrade

待望のCentOS5.6が公開された!!リリースノート
ext4 正式サポート
仮想化API libvirt 0.8.2
Ethernet ブリッジファイアウォールebtables の追加
PHP5.3
と素敵な内容である。早急にupgradeしたい!
(追記:4/10現在、もはや下記のyumレポジトリをいじる操作は必要ない、読み飛ばしていただきたい)
しかし、まだyumレポジトリが切り替えられていない。
待ちきれないので設定ファイルを一時的にいじってUpgradeしてしまう。
# cd /etc/yum.repos.d/
# cp CentOS-Base.repo CentOS-Base.repo.orig
# sed -ie "s/\$releasever/5.6/g" CentOS-Base.repo 
# sed -ie "s/mirrorlist/#mirrorlist/g" CentOS-Base.repo
# sed -ie "s/#baseurl/baseurl/g" CentOS-Base.repo 
で5.6を参照するようになる。
(追記:4/10現在、必要なのは下記手順のみである)
ここからあとはクリティカル気味なのでscreen等をつかって接続が切れないように気をつける。
# yum clean all
# yum update glibc\*
# yum update yum\* rpm\* pyth\*
# yum clean all
# yum update mkinitrd nash
# yum update selinux\*
# yum update
# shutdown -r now
でUpgrade完了。時期を見てCentOS-Base.repo.origを書き戻す。
CentOS6もこの勢いで公開されると大変に素敵である。
CentOSチームを応援している。

March 31, 2011

RHEL5からCentOS5への移行

ローカルネットに設置後、なんだかんだで落としっぱなしになっていたRHEL5.4のサーバを実験に使おうと思って立ち上げたらサブスクリプションが切れていた。(愚劣の極み…)
せっかくなのでCentOS5にレポジトリを切り替えてみる。

公式にマイグレーションの手引きがあるのでそれに従う。
公式はi386用の例なので、x86_64ならば
# cp /etc/redhat-release /etc/redhat-release-orig
# rpm -e --nodeps redhat-release-notes redhat-release yum-rhn-plugin redhat-logos
# rpm -ihv \
  http://mirror.centos.org/centos/5/os/x86_64/CentOS/centos-release-5-5.el5.centos.x86_64.rpm \
  http://mirror.centos.org/centos/5/os/x86_64/CentOS/centos-release-notes-5.5-0.x86_64.rpm \
  http://mirror.centos.org/centos/5/os/x86_64/CentOS/redhat-logos-4.9.99-11.el5.centos.noarch.rpm
# yum clean all
# yum update
といった感じ。

参考:
http://wiki.centos.org/HowTos/MigrationGuide

March 28, 2011

RHEL5におけるローカルyum repositoryの設置

前々回前回ではCentOS5,RHEL5のyum repositoryを別サーバに設置したが、
客先で1台のみのセットアップを行う、等といった場合には適さない。
今回はローカルレポジトリを当該サーバ内に設置する。
RHNへ接続できない オフライン環境 で、サブスクリプション登録なし でRHELを用いたシステムのセットアップを行う場合などを想定。

インストールメディアがあればそれを使う。
なければRHNからisoをDLしておく。
ISOをマウントするなり、インストールメディアをマウントするなりしたのち、
# mkdir /var/localrepos
# cp -rap /mnt/RHELDVD/Server /var/localrepos/
# cp -rap /mnt/RHELDVD/VT /var/localrepos/
# cp -rap /mnt/RHELDVD/Cluster /var/localrepos/
# cp -rap /mnt/RHELDVD/ClusterStorage /var/localrepos/
で必要なファイルをコピー。
createrepoを導入。
# rpm -ivh /mnt/RHELDVD/Server/createrepo-0.4.11-3.el5.noarch.rpm
repodataをグループファイルを抜き出して消去し、レポジトリ情報を再構成する
# cd /var/localrepos
# mv {Server,VT,Cluster,ClusterStorage}/repodata/comps* .
# rm -rf {Server,VT,Cluster,ClusterStorage}/repodata
# createrepo -g /var/localrepos/comps-rhel5-server-core.xml /var/localrepos/Server/
# createrepo -g /var/localrepos/comps-rhel5-vt.xml /var/localrepos/VT/
# createrepo -g /var/localrepos/comps-rhel5-cluster.xml /var/localrepos/Cluster/
# createrepo -g /var/localrepos/comps-rhel5-cluster-st.xml /var/localrepos/ClusterStorage/
あとは、/etc/yum.repos.d/rhel-debuginfo.reposを
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - Server
baseurl=file:///var/localrepos/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[VT]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - VT
baseurl=file:///var/localrepos/VT
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[Cluster]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - Cluster
baseurl=file:///var/localrepos/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[ClusterStorage]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - ClusterStorage
baseurl=file:///var/localrepos/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
と編集して、
# yum clean all
# yum update
などと実行して問題なく終了すれば完成


参考:
http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/ec7481a5abd4ed3149256f9400478d7d/4925722f004efe92492574110028b37b/$FILE/rhel5_yum_guide_v1.1.pdf

RHEL5における独自yum repositoryの設置

前回、CentOS5用のyum repositoryを設置した。
RHEL5に対しても同様に設置してみる。
RHNへ接続できない オフライン環境 で、サブスクリプション登録なし でRHELを用いたシステムのセットアップを行う場合などを想定。
前回の環境を利用しているので要参照

インストールメディアがあればそれを使う。
なければRHNからisoをDLしてくる。
CentOSの流儀に沿ってディレクトリを用意
# mkdir -p /var/yumrepos/rhel/5.6/os/x86_64
# ln -s /var/yumrepos/rhel/5.6 /var/yumrepos/rhel/5
# chown -R reposman. /var/yumrepos/rhel
ISOをマウントするなり、インストールメディアをマウントするなりしたのち、
repomanユーザーとなりディスクの中身をすべて/var/yumrepos/rhel/5.6/os/x86_64にコピー
以降の作業はrepomanユーザーで行う
ネットワークインストールのときにレポジトリを再利用したいのでディレクトリ構造には手を付けない。
/var/yumrepos/rhel/5.6/os/x86_64/Server/repodata/
/var/yumrepos/rhel/5.6/os/x86_64/VT/repodata/
/var/yumrepos/rhel/5.6/os/x86_64/Cluster/repodata/
/var/yumrepos/rhel/5.6/os/x86_64/ClusterStorage/repodata/
以下のcomp*以外のファイルを削除し
$ cd /var/yumrepos/rhel/5.6/os/x86_64/
$ createrepo -g Server/repodata/comps-rhel5-server-core.xml Server/
$ createrepo -g VT/repodata/comps-rhel5-vt.xml VT/
$ createrepo -g Cluster/repodata/comps-rhel5-cluster.xml Cluster/
$ createrepo -g ClusterStorage/repodata/comps-rhel5-cluster-st.xml ClusterStorage/
でレポジトリ情報を作り直す。
あとは、RHELがインストールされているマシンで/etc/yum.repos.d/rhel-debuginfo.repoをバックアップを取った上で、
[Server]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - Server
baseurl=http://REPOSSERVER_IP/yumrepos/rhel/5.6/os/$basearch/Server
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[VT]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - VT
baseurl=http://REPOSSERVER_IP/yumrepos/rhel/5.6/os/$basearch/VT
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[Cluster]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - Cluster
baseurl=http://REPOSSERVER_IP/yumrepos/rhel/5.6/os/$basearch/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

[ClusterStorage]
name=Red Hat Enterprise Linux $releasever - $basearch - Debug - ClusterStorage
baseurl=http://REPOSSERVER_IP/yumrepos/rhel/5.6/os/$basearch/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
と編集して、
# yum clean all
# yum update
などと実行して問題なく終了すれば完成


参考:
http://www-06.ibm.com/jp/domino01/mkt/cnpages7.nsf/ec7481a5abd4ed3149256f9400478d7d/4925722f004efe92492574110028b37b/$FILE/rhel5_yum_guide_v1.1.pdf
IBM様は偉大

March 24, 2011

CentOS5における独自yum repositoryの設置

自前のyum repositoryを設置する。これは、自社ネットワークの配下にある数百台の仮想サーバが、アップデートなどのために一斉に外部のレポジトリにアクセスすると、帯域圧迫が激しいためである

レポジトリの実態を/var/yumrepos、レポジトリの管理者ユーザーをreposmanとして
# mkdir -p /var/yumrepos/centos/5.5
# ln -s /var/yumrepos/centos/5.5 /var/yumrepos/centos/5
# useradd reposman
# chown -R reposman. /var/yumrepos
# chkconfig httpd on
と環境を作り、公開のために/etc/httpd/conf.d/yumrepos.confを作成し
Alias /yumrepos /var/yumrepos
<Directory /var/yumrepos>
   Options Indexes FollowSymLinks
</Directory>
を記入し、httpdをスタート。(httpd.confでAllowOverride Allにしておく必要有り)
当然iptablesの80番portは開けておく。
また、レポジトリ作成のためにcreaterepoを導入する
# yum install createrepo
以下の作業はreposmanユーザーにて行う。
まず、外部のレポジトリからファイルを丸ごとコピーしてくる
$ rsync -avrt --exclude='/isos/' --exclude='i386/' --exclude='SRPMS' --exclude='repodata/' rsync://ftp.riken.jp/centos/5.5/ /var/yumrepos/centos/5.5/
このコピーは大変に相手方のサーバーに負荷をかけてしまう
実行時間帯には気を配るべき
また、インストールディスクを所持しているならiso/x86_64以下にコピーして、--exclude='/iso/'をオプションに追加すれば/os以下分負荷を減らせる

コピーが終わったらグループファイルを配置しておく
$ mkdir -m 775 /var/yumrepos/centos/5.5/os/x86_64/repodata
$ mkdir -m 775 $mkdir -m 775 /var/yumrepos/centos/5.5/extras/x86_64/repodata
$ cd /var/yumrepos/centos/5.5/os/x86_64/repodata
$ wget http://ftp.riken.jp/Linux/centos/5/os/x86_64/repodata/comps.xml
$ cd /var/yumrepos/centos/5.5/extras/x86_64/repodata
$ wget http://ftp.riken.jp/Linux/centos/5/extras/x86_64/repodata/yumgroups.xml
createrepoを実行する。
extras,osにはグループファイルがあるのでそれを適用する。
$ createrepo /var/yumrepos/centos/5.5/addons/x86_64/
$ createrepo /var/yumrepos/centos/5.5/contrib/x86_64/
$ createrepo /var/yumrepos/centos/5.5/fasttrack/x86_64/
$ createrepo /var/yumrepos/centos/5.5/updates/x86_64/
$ createrepo /var/yumrepos/centos/5.5/centosplus/x86_64/
$ createrepo -g /var/yumrepos/centos/5.5/extras/x86_64/repodata/comps.xml /var/yumrepos/centos/5.5/extras/x86_64/
$ createrepo -g /var/yumrepos/centos/5.5/os/x86_64/repodata/yumgroups.xml /var/yumrepos/centos/5.5/os/x86_64/
終了したら他のマシンで/etc/yum.repos.d/CentOS-Base.repoから
・mirrorlist行をコメントアウト
・baseurl行を復活、自前のレポジトリを参照するよう変更
させて、
# yum clean all
# yum update
などと実行して問題なく終了すれば完成

March 21, 2011

CentOS5におけるudevを用いたiSCSIのデバイス名固定 とパーティションノードの作成に関して

iSCSIのデバイス名が固定されず不便なので、udevをつかってデバイス名を固定する
この手順は、multipath を使用していないホストのためだけに使用
multipathを使用する場合はこちら

まず、/etc/scsi_id.config ファイルを編集
options=-b の行がコメントアウトしてあることを確認し、以下の行を追加
options=-g
次に対象のiSCSIデバイス(/dev/sdX)のUUIDを調べる
# scsi_id -g -s /block/sdX
3600a0b800013275100000015427b625e
最後に、/ect/udev/rules.d/20-iscsi.rulesを作成し
KERNEL=="sd*", BUS=="scsi", PROGRAM="/lib/udev/scsi_id -g -s /block/%k", RESULT=="3600a0b800013275100000015427b625e", NAME="mydevice"
を記述して終わり
再接続すれば/dev/mydeviceができている.

[2011/11/15追記]
この手法でiscsiのブロックデバイスの名前を固定しても各パーティションまでは名前が固定されない。
つまり、
# parted /dev/mydevice
などとしてパーティションを切っても、mydevice1は見えず、/dev/sd*1だけが見える。
仮想マシンにブロックデバイスごと提供する場合は問題ないが、マウントして使う場合はだいぶ難儀なので、これを解決するためにパーティションノードも作成する。/ect/udev/rules.d/20-iscsi.rulesを
KERNEL=="sd*", BUS=="scsi", PROGRAM="/lib/udev/scsi_id -g -s /block/%k", RESULT=="3600a0b800013275100000015427b625e", NAME{all_partitions}="mydevice"
とする。これでmydevice1~15が作成される。
(1つしかパーティションを切ってなくても15個できるがキニシナイ)
cf. http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html#usbstorage-extra

検索で引っかかるサイトの記述が細かいところで抜けていて死ぬ

参考
http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html
http://docs.redhat.com/docs/ja-JP/Red_Hat_Enterprise_Linux/5/html/Virtualization/sect-Virtualization-Virtualized_block_devices-Configuring_persistent_storage_in_Red_Hat_Enterprise_Linux_5.html

March 19, 2011

CentOS5におけるiSCSIイニシエータの導入・設定

iSCSIイニシエータ環境を整える
# yum install iscsi-initiator-utils
# chkconfig iscsid on
# service iscsid start
でイニシエータを導入・起動

前回設定したターゲットを登録・接続テストを行う
# iscsiadm -m discovery --type sendtargets -p targetip
# iscsiadm -m node targetip,1 -T targetname -l
# iscsiadm -m session -P 3
できちんと出てきていれば問題なし
ログアウトしておく
# iscsiadm -m node targetip,1 -T targetname --logout
一度接続したターゲットに関しては/var/lib/iscsi/nodes 以下にコンフィグファイルが配置される
iscsi(not iscsid)を有効にしておくとコンフィグファイルを読み込んで自動で接続する
iscsi(not iscsid)はlibvirtを使う場合はバッティングするため無効にしておく必要がある
iscsiを有効にしている環境で、自動接続したくない場合は/var/lib/iscsi/nodes以下のdefaultファイルを
node.startup=automatic

node.startup=manual
と修正するか
# iscsiadm --mode node --op update --targetname targetname --name=node.startup --value=manual
を実行する

/etc/iscsi/iscsid.confのnode.startupを変更しておけばnode 登録をした時に automatic になるか manual になるかの規定値を変更できる

また、iscsi-targetは、イニシエータが正常なログアウト処理を行わずに停止した場合、そのイニシエータに対するセッションを保持し続ける。このイニシエータがログアウト処理をせずに再起動され、ターゲットにログインしようとすると、ターゲット側には同一パス・同一イニシエータ名のセッションが残っているため、ターゲットはこのログインを拒否する。このため、このイニシエータはストレージにアクセスできなくなってしまう。これを避けるためイニシエータの起動スクリプトを変更する。
サービスiscsiおよびiscsidの起動スクリプト(initscript)/etc/init.d/{iscsi,iscsid}を修正する。これらのスクリプト中、再起動・停止(RUNLEVEL 6および0)のときに以降の処理を行わない部分があるので、これをコメントアウトし、ターゲットからのログアウトを実行するように変更する。
上記二つの起動スクリプトのstopに対し
#if [ "$RUNLEVEL" = "6" -o "$RUNLEVEL" = "0" -o "$RUNLEVEL" = "1" ]; then
#        success
#        return
#fi
と、該当箇所をコメントアウトする。
ただし、lvm, dm, mdなどマウントしたあとのiSCSIボリュームをいじっているモノとの
RUNLEVEL6,0時の挙動に関しては注意が必要

以上

参考:
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs4iscsi.html
http://www.asahi-net.or.jp/~aa4t-nngk/iscsi.html

CentOS5におけるiSCSIターゲットの導入・設定

iSCSIターゲット環境を整える
iSCSI Enterprise Tagetを導入する
# cd /usr/local/src
# wget http://downloads.sourceforge.net/project/iscsitarget/iscsitarget/1.4.20.2/iscsitarget-1.4.20.2.tar.gz
現在運用してるkernelにあわせてkernel-develを導入しておく。
また、現在運用していないkernel,kernel-develはremoveしておくとWarningが出ない。
kernel,kernel-develの準備ができたら
# rpmbuild -ta iscsitarget-1.4.20.2.tar.gz
# cd /usr/src/redhat/RPMS
# rpm -ihv iscsitarget* kmod-iscsitarget*
で導入完了。
続いて、設定を行う。設定ファイル/etc/iet/ietd.confを編集する
以下の内容を追記
Target iqn.2011-03.com.example,iscsi:lvm01
 Lun 0 Path=/dev/VolGroup00/lvm01,Type=blockio
 MaxConnections 1
ここでTarget に設定する文字列は "iqn.[ドメイン取得年]-[ドメイン取得月].[ドメイン名 (逆順)]:[任意の識別子]" という形式で指定する必要がある
また、上記の例ではLVMの論理ボリュームをブロックデバイスとして供出している
/etc/sysconfig/networkに設定されたhost名等と相違無いことを確認
# chkconfig iscsi-target on
して再起動
再起動後/var/log/messagesにエラーがはかれていないことを確認
iptablesを設定している場合はiscsi-targetのためにudp,tcpの3260番を解放
アクセス制限は/etc/iet/initiators.allowにて行う
現在動いている設定は
# cat /proc/net/iet/volume
現在のTargetへの接続状況については
# cat /proc/net/iet/session
で確認できる。

正しく設定されているかをイニシエータを用意して確認、別のマシンで
# yum install iscsi-initiator-utils
# chkconfig iscsi on
# service iscsi start
でイニシエータを導入・起動
接続テストを行う
# iscsiadm -m discovery --type sendtargets -p targetip
# iscsiadm -m node targetip,1 -T targetname -l
# iscsiadm -m session -P 3
できちんと出てきていれば問題なし
ログアウトは
# iscsiadm -m node targetip,1 -T targetname --logout
また、経路の多重化を行う場合は下記を参照
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs3iscsi.html
http://ken-etsu-tech.blogspot.com/2008/03/rhcs-iscsi-dm-mp-clvm-and-gfs5device.html

以上