February 17, 2012

January 30, 2012

CentOS6 における仮想マシンまわりのあれこれ

CentOS6になってKVMがデフォルトとなり,色々勝手がかわっているようなので,
目につくたびにちょこちょこ更新する.


仮想ブリッジの構築
virbrとかNATとかいらない(ことが私の環境では多い)ので,恒久的なブリッジを手で作ることにする.
まず,virbrを破棄
# virsh net-destroy default
# virsh net-autostart default --disable
次いで,NetworkManagerを止めてnetworkに戻す.(この辺はやりようが他にある気がするが…)
# chkconfig NetworkManager off
# chkconfig network on
# service NetworkManager stop
# service network start
さらに,ブリッジ作成用にbridge-utilsを導入(普通は入っているかも)
# yum install bridge-utils
で,ようやくブリッジを作成する.ブリッジ名をbr0とする.ifcfg-br0を新規作成し,ifcfg-eth0を修正する.
# vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=0
# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
DEVICE="eth0"
HWADDR="9C:8E:99:7B:F4:93"
ONBOOT="yes"
BRIDGE=br0
注意事項として,上記の設定をするとホストマシンのゲートウェイデバイスはeth0ではなくbr0になる.
インターフェイス名を指定して設定してあるものは,eth0をbr0に書き換える必要がある.
このブリッジを仮想マシン構築時にネットワークデバイスとして指定すればよい.


仮想マシンのコピー
下記コマンドでコピーする.LVMで切り出した論理ボリュームをまるっと割り当てている.
# virt-clone --original master_vm --name copy_vm --file /dev/VolumeGroup/LogicalVolumeCopy
注意すべきはNIC.
原因がCentOS6由来なのかKVM由来なのか調べていないが,
ネットワークデバイス名がeth0->eth1となってしまう.
eth0が存在せずeth1があるのは気持ちが悪いので対処しておく.
コピー後に以下の手順で対処する.



  • 一度NICを消してVMを起動
  • そのままVM終了
  • NICを追加して起動

  • NICの消去・追加はGUIからだと楽ちん.
    直接いじりたい人は/etc/libvirt/qemu以下のファイルを編集
    全く別件をいじっていて気がついたのだけど、これってudev関係なので、
    仮想マシンのコピーの前に、/etc/udev/以下のルールでNIC関連のを消しておくだけでいいっぽい。

    January 5, 2012

    Arduino と W5200 ( WIZ820IO )を接続する


    追記(2012/03/24):
    なんか急にアクセスが増えてきたので、フォローをしておくと、
    http://avr.paslog.jp/article/2361305.html
    こんな話もあって、この対策を取ると安定する可能性がある。まだ試せてない。
    3.3V系のArduinoとつないで動かす場合に下記の問題が発生しない、という話もある。
    その辺をまとめて丸っと検証したいが時間がないなう。
    追記(2012/03/30)
    ココで検証はじめました。
    やっぱりなんか怪しい。
    ArduinoのOfficialEthernetShieldにはWizNet社の W5100 が採用されている。
    W5100のパッケージは0.4mmピッチのQFP80pinである。
    私は不器用なので基板を自作する際、0.4mmピッチは実に辛い。

    ところでW5100 はSPI接続とバス接続のいずれかが選択できるようになっているが、上記シールドではSPI接続を選択している。
    よって実はArduinoとW5100は高々7本のラインでしか接続していない。
    しかし0.4mm,80pinものハンダ付けを”強いられているんだ!!”

    これは不合理なので同社製の W5200 に乗り換えたい。
    こちらはW5100のSPI接続専用版で0.5mmピッチのQFN48pinである。(多少スペックが上がっていたりもする)
    QFNである点はイマイチだが0.5mmピッチになり、かつpin数も半分程度になる。
    ぜひW5200に乗り換えるべきである。

    さて、ここで問題になるのは2点。
    ・標準ライブラリこそがArduinoの売りであるためEthernetライブラリからはW5100と同等にみえなければならない
    ・動くか判らんうちから基板をおこすのは怠い

    まず後者を金で解決する。こことかここで評価用基板( WIZ820IO )がうっている。
    OfficialEthernetShieldと比べると半値以下だ。

    そして前者の解決策はここにある。
    そう、ベンダー自らArduinoでW5100と同様に使えるようライブラリを提供してくれているのだ。
    Downloadタブの中に"Library for Arduino + Ethernet ( IDE ver1.0 )"があるのでこれをDLして所定の位置に展開・上書きすれば良い。

    ただしこれを上書きしてしまうと、W5100へのアクセスが出来なくなりそう。
    W5100とW5200の切り替えが出来ると良いなぁ、とおもうのでそのうち手を入れて適当に公開することにしよう。

    というわけで、SPI系をまるっと接続したら即動いた。 拍子抜け過ぎる。
    写真の左、Etherのケーブルが刺さってるコネクタだけのように見えるのがWIZ820IOである。


    追記(2012/01/06):
    どうも挙動が安定しない。
    ExampleのWebServerをそのまま入れて、watchコマンドで5秒に一回取得してみると、1時間ぐらいで死んでしまう。こまった。
    オフィシャルの方でも実験してみて再現するならEthernetライブラリの問題。
    しないならW5200あるいは入れ替えたW5200用Ethernetライブラリの問題。


    追記(2012/01/06):
    W5100で同様の実験を行っているが、9時間異常なし。
    W5200あるいはW5200用Ethernetライブラリに問題があると見ていいんだろうなぁ。。。ガクリ。

    追記(2012/01/07):
    丸一日以上異常なし。
    W5100は安定しておる。


    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=~/")

    以上