12月 18, 2011

Ubuntu10.04へのCUDAのインストール

NVIDIAのドライバをすべて削除してから最新のものにする

$ sudo add-apt-repository ppa:ubuntu-x-swat/x-updates
$ sudo apt-get update
$ sudo apt-get remove nvidia-*
$ sudo apt-get install nvidia-current nvidia-settings

CUDAのサイトからdevdriver, toolkit, SDKをダウンロードしてきて,ここここを参考にインストールします.

devdriverインストール時のX停止方法
$ sudo stop gdm

これでうまく止まらない場合は
$ sudo vi /etc/init.d/grub
 GRUB_CMDLINE_LINUX_DEFAULT=のところにtextを追加
$ sudo reboot


12月 09, 2011

LLVM + Clangをソースからインストール

LLVMとClangをインストールする基本的な方法
LLVMとClangのソースをここからダウンロード

両方のファイルを解凍して,Clangの方の中身をLLVMフォルダの中のtools/clang/にコピー

$ ./configure
$ make -j2
$ sudo make install

注意:makeするときにgccとg++が必要になるのでインストールしておく


11月 13, 2011

あるクラスのメンバ関数から他のメンバ関数をスレッドとして並列実行

C++でプログラムを書いているときに,クラスの中でスレッドを実行して並列処理を行いたくなった。
Boostという便利なライブラリを使って,これを実現します。

#include <boost/thread.hpp>
#include <boost/bind.hpp>
class hoge{
  private:
    thr_func(int a);
    func(){
      int b;
      boost::thread thr(boost::bind(&hoge::func, this, b); 
      thr.join();
    }
};
Boostの使い方とかはここを参照


9月 17, 2011

recfsusb2n 0.9.2をfit-PC2iに最適化する

fit-PC2iはAtomという非力なCPUを使用しているので,できるだけCPU負荷を減らしてあげる必要があります.
でないと録画がうまくいかない可能性がありますし,省電力PCでCPUを常時使いまくってるのもどうなの?ってのがあるからです.

実はgcc-4.5からAtomの最適化オプションが提供されていて,これを追加してあげるだけでも処理負荷が1/3になったりします.
ぶっちゃけ,このためにここでgcc-4.5.3を入れましたw

ここを参考にやっていきます.(kinumi様ありがとうございます
といってもやることは同じなんですけどねw

$ vi FSUSB2N/Makefile
 この中に最初から書かれている下の二つの行を削除
  CXX = g++
  CXXFLAGS = -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25) 

 その後下を追加
  CXX = /usr/local/gcc-4.5.3/bin/g++
  CXXFLAGS = -O3 -mfpmath=sse -msse -msse2 -msse3 -mtune=atom -march=atom -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25)
  CC = /usr/local/gcc-4.5.3/bin/gcc
  CFLAGS  = -O3 -mfpmath=sse -msse -msse2 -msse3 -mtune=atom -march=atom -g -Wall -pthread -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 $(B25)
$ make
$ sudo cp recfsusb2n /usr/local/bin/


recfsusb2nを使ってfit-PC2iを録画PCに!!

恵安株式会社から発売されているKTV-FSUSB2recfsusb2nを使ってLinuxで地デジを録画できるようにします.
それぞれがどういうものなのかっていうのは各サイトおよびグーグル先生に聞いてみてください.

まず,KTV-FSUSB2は買ってきていろいろ準備をしておきます.
次に,recfsusb2nの設定をページに記載されている順番でつらつらやっていきます.

まず,デバイスを外した状態で使用するための環境を作っていきます.

$ sudo apt-get install g++
$ sudo apt-get install libboost-thread-dev libboost-filesystem-dev
$ sudo groupadd video
$ gpasswd -a 使いたいユーザ名 video
$ sudo vi /lib/udev/rules.d/89-tuner.rules
 で、以下を追加
 # FSUSB2N
 SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="0511", ATTRS{idProduct}=="0029", MODE="0664", GROUP="video"
$ udevadm control --reload-rules

ここで,デバイスを接続して
$ lsusb -d 0511:
 これを実行してなにか入れば,無事に認識できています

recfsusb2nのコンパイルは,ダウンロードしてきたファイルを解凍して,
$ tar zxvf recfsusb2n-0.9.2.tar.gz
$ cd FSUSB2N
$ make
$ sudo cp recfsusb2n /usr/local/bin/

最後に録画の確認をします.
このコマンドはUHF24chを40秒間、test.tsにB25復号しながら記録ものです.
$ recfsusb2n -bv 24 40 test.ts

gccをソースからインストール

公式から適当なバージョンのgccソースを持ってくる.

これを解凍して,configureを実行するとgmpmpfrmpcが必要だ!!って怒られるので,それらもソースからインストールします.
それぞれに依存関係があるので,gmp,mpfr,mpcの順番で入れていきます.
3つとも下の手順で大丈夫です.
./configureの途中で止まった場合は,必要なファイルが足りていないので,何が足りていないのかを調べてそれをインストールしてから再度実行

$ cd 解凍したフォルダ
$ ./configure
$ make
$ sudo make install
$ sudo ldconfig

3つともインストールが完了すると,/usr/local/include以下にgmp.h,mpfr.h,mpf2mpfr.hとmpc.hができていると思います.
これらがあればインストールは無事に完了してると思います.

次にgccをコンパイルすれば完了です.
$ cd gccのフォルダ
$ ./configure --with-gmp=/usr/local/ --with-mpfr=/usr/local/ --with-mpc=/usr/local/ --prefix=/usr/local/gcc-4.5.3
$ make
$ sudo make install
$ sudo ldconfig
$ sudo ln -s /usr/local/gcc-4.5.3/bin/gcc /usr/local/bin/gcc-4.5.3

gccのmake時にjavaが入っていないとコンパイルに失敗するので,入っていない場合はインストールする
$ sudo add-apt-repository 'deb http://archive.canonical.com/ lucid partner'
$ sudo apt-get update 
$ sudo aptitude install sun-java6-jdk  

インストール完了の確認は
$ gcc -v
で,インストールしたバージョンになっていれば大丈夫です


capsをctrlへ置き換え

event_note9月 17, 2011 forumNo comments

Windows用のキーボードだとAの左横がcapsになっていて,普段使っている感じでLinuxをいじれない。。。
ひじょーに使いにくい!!

という訳で,capsはあんまり使わないだろうから,ctrlに置き換えてしまいます.

$ sudo vi /etc/rc.local

 exit 0より上に下のどちらかを追加する.私の場合だと下でうまく動きました
 dumpkeys | sed -e 's/CtrlL_Lock/Control/' | loadkeys
 dumpkeys < /dev/tty1 | sed 's/^\(keycode[ | ][ | ]*58[ | ]*=\).*$/\1 Control/' | loadkeys


Ubuntu10.04 Serverでadd-apt-repositoryを使えるようにする

event_note9月 17, 2011 forumNo comments

レポジトリの追加とかで便利なadd-apt-repositoryコマンドがUbuntu10.04 Serverには入っていないみたいなので,これをいれます.

$ sudo apt-get install python-software-properties
$ sudo apt-get update


fit-PC2iにUbuntu10.04 Serverをインストールする

event_note9月 17, 2011 forumNo comments

以前Ubuntuをインストールしましたが,なにを思ったのかやっぱりServer版にしよう!!ってなってしまい,再度インストールしましたb

まぁ,基本的にインストールは設定したいところを設定して,入れたいものを入れる感じで大丈夫なんですが,(わからない人はデフォルトで大丈夫だと思います。
インストールが一通り終わってからのaptの設定周辺で落ちる落ちる;;
結果からいうと,Ethernetドライバがカーネルパニックを引き起こしてました.(これだから蟹さんはーーー。。r8169ドライバで不具合報告多数
なので,Ethernetケーブルを引っこ抜いてネットワークの設定は後から手動で設定するようにして,無事にインストールすることができました.

無事インストールが完了してもこのままだとネットが使えないので,まずEthernetドライバを入れます.
その辺りはここを参照


9月 06, 2011

fit-PC2iのNICドライバ入れ替え

event_note9月 06, 2011 forumNo comments

デフォルトでインストールされたRealtekのドライバ(R8169)が不調で,負荷をかけるとカーネルパニックで落ちてしまうという現象が発生.
調べてみると,R8169の不具合が結構報告されているので,R8111用のものに入れ替えます.(fit-PC2iはもともとR8111を使っていたはず

ソースをここからダウンロードして,解凍したファイルの中にあるautorun.shを実行します

$ tar jxvf r8186-8.025.00.tar.bz2
$ cd r8186-8.025.00
$ sudo ./autorun.sh

その後,initrd.imgを作りなおして再起動後も有効になるようにします.
$ sudo cp /boot/initrd.img-`uname -r` /boot/initrd.img-`uname -r`.bak
$ sudo mkinitramfs -o /boot/initrd.img-`uname -r` /lib/modules/`uname -r`
$ sudo reboot


fit-PC2iにUbutnu10.04をインストール

event_note9月 06, 2011 forumNo comments
fit-PC2iで遊ぶためにUbuntuを入れます.

基本的にここを参考にしてます.
GMA用のドライバをここを参考にして,
aptのリポジトリに追加して必要になるものをインストールします.

$ sudo add-apt-repository ppa:gma500/ppa
$ sudo apt-get update
$ sudo apt-get install poulsbo-driver-2d poulsbo-driver-3d poulsbo-config
$ sudo reboot

その後,fitPCのサイトからxorg.confをダウンロードして,/etc/X11/xorg.confと入れ替えます.
$ wget -c http://fit-pc2.com/download/ubuntu/files/xorg.conf
$ sudo mv /etc/X11/xorg.conf /etc/X11/xorg.conf.orig
$ sudo mv xorg.conf /etc/X11/xorg.conf
$ sudo chown root:root /etc/X11/xorg.conf

LinuxのIPアドレスを固定する

event_note9月 06, 2011 forumNo comments

LinuxのIPアドレスを固定するには,/etc/network/interfacesを編集します.

変更したいポートのところを,指定したい値に書き換えます.

$ sudo vi /etc/network/interfaces

 自動IPのとき
  auto eth0
  iface eth0 inet dhcp

 固定IPのとき
  auto eth0
  iface eth0 inet static
  address 192.168.0.100
  netmask 255.255.255.0
  gateway 192.168.0.1

DNSの読み込み先は,/etc/resolv.confで設定できます.

設定した後に,デバイスを再起動で完了
sudo /etc/init.d/networking restart

実はこの作業をSSHで入ってやっていたので,
デバイス再起動が完了したメッセージが帰ってこなくて焦りました;;


9月 05, 2011

Xの停止方法

event_note9月 05, 2011 forumNo comments

たまにGUIで作業したいので,デスクトップ版を入れたけどGUIは基本的には使わない.

なので,Xを停止させます.
/etc/default/grubを編集するだけなので,ちゃちゃっとやってしまいます.

$ sudo vi /etc/default/grub

 中に記述されている
 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
 を以下に変更する
 GRUB_CMDLINE_LINUX_DEFAULT="text"

$ sudo update-grub

Xが必要なときは
$ startx


9月 04, 2011

Bloggerで表示されているタイトルの一覧を表示する

event_note9月 04, 2011 forumNo comments

読みたいものを毎回スクロールして探すのはめんどくさいので,トップにタイトルの一覧を表示させる.


Holiday Webmaster BlogクリボウのBlogger TIpsを参考にして,以下をテンプレートに追加すればOK


<b:if cond='data:blog.pageType != "item"'>
<ul id='post-title-navigation'><span>このページの記事一覧</span> <b:loop values='data:posts' var='post'>
<li>
<b:if cond='data:post.link'>
<data:post.dateHeader/> - <a expr:href='data:post.link'><data:post.title/></a>
<b:else/>
<b:if cond='data:post.url'>
<data:post.dateHeader/> - <a expr:href='data:post.url'><data:post.title/></a>
<b:else/>
<data:post.dateHeader/> - <data:post.title/>
</b:if>
</b:if>
</li>
</b:loop> </ul>
</b:if>

BloggerのHTMLの編集で「ウィジェットのテンプレートを展開」にチェックを入れて,すべて展開した状態にした後に,
<b:include data='top' name='status-message'/>を検索して,その下に追加するのが一番楽みたいです.


クリボウさんによると,この記述では同じ日付の投稿があった場合,2つ目のタイトルにタイトルに対して日付がつかないそうです.
一日に複数投稿することは今のところないので,私はこのままでいくつもりです.
まぁ,追々考えていく方向でb


8月 29, 2011

OpenCV2.3.1インストール for Ubuntu10.04

OpenCVWillow Garageが開発を行っているライブラリ。
最近では,画像処理だけでなく機械学習まわりも強化されているため,ひじょーに便利なライブラリです。
私がここ最近書いたプログラムは,ほとんどがこのライブラリに依存している状態ですw


OpenCV2.3.1のインストール

関連ソフトのインストール

OpenCV2.3のバグをとった2.3.1がリリースされたし,使いたい関数もあるのでバージョンをあげるぜーー
また2.3からOpenNIをサポートしているので,kinectの距離画像とかも簡単に取れて遊びたい放題♫

まず,公式からOpenCV2.3.1.tar.bz2をダウンロード
ダウンロードしたらそれを解凍しておく。

$ tar jxvf OpenCV2.3.1.tar.bz2

次に,apt-getで必要になりそうなものをひたすらインストール(詳しくはReadme参照で
$ sudo apt-get install cheese coriander \ 
 cmake pkg-config g++ build-essential \ 
 mencoder mplayer \ 
 libgtk2.0-0 libgtk2.0-dev \ 
 libjpeg-dev libpng-dev libtiff-dev libjpeg62 libjpeg62-dev libjpeg62-dbg \ 
 ffmpeg libavcodec-dev libavcodec52 libavformat-dev libavformat52 libswscale-dev libavfilter-dev \ 
 libdc1394-22 libdc1394-22-dev \ 
 python2.6 python2.6-dev python-numpy \ 
 libtbb2 libtbb-dev \ 
 libgstreamer0.10-0 libgstreamer0.10-dev libgstreamer-plugins-base0.10-0 libgstreamer-plugins-base0.10-dev 
 
$ sudo ldconfig


cmake

次にcmakeをして,必要なパッケージが入っているかを確認する。

$ cd OpenCV2.3.1/
$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON -D WITH_TBB=ON -D WITH_GTK=ON -D BUILD_EXAMPLES=ON .

cmakeを実行した際に出力されるメッセージの最後の方が以下のようなら多分大丈夫b
ほかに入れたいものがあるなら随時インストール
-- General configuration for opencv 2.3.1 =====================================
-- 
--     Built as dynamic libs?:     YES
--     Compiler:                   /usr/bin/c++
--     C++ flags (Release):          -Wall -pthread -march=i686 -ffunction-sections  -O3 -DNDEBUG  -fomit-frame-pointer -msse -msse2 -mfpmath=387 -DNDEBUG 
--     C++ flags (Debug):            -Wall -pthread -march=i686 -ffunction-sections  -g  -O0 -DDEBUG -D_DEBUG -ggdb3 
--     Linker flags (Release):
--     Linker flags (Debug):
-- 
--   GUI: 
--     GTK+ 2.x:                   YES
--     GThread:                    YES
-- 
--   Media I/O: 
--     ZLib:                       YES
--     JPEG:                       TRUE
--     PNG:                        TRUE
--     TIFF:                       TRUE
--     JPEG 2000:                  TRUE
--     OpenEXR:                    NO
--     OpenNI:                     NO
--     OpenNI PrimeSensor Modules: NO
--     XIMEA:                      NO
-- 
--   Video I/O:
--     DC1394 1.x:                 NO
--     DC1394 2.x:                 YES
--     FFMPEG:                     YES
--       codec:                    YES
--       format:                   YES
--       util:                     YES
--       swscale:                  YES
--       gentoo-style:             YES
--     GStreamer:                  YES
--     UniCap:                     NO
--     PvAPI:                      NO
--     V4L/V4L2:                   1/1
--     Xine:                       NO
-- 
--   Other third-party libraries:
--     Use IPP:                    NO
--     Use TBB:                    YES
--     Use ThreadingFramework:     NO
--     Use Cuda:                   NO
--     Use Eigen:                  YES
-- 
--   Interfaces:
--     Python:                     YES
--     Python interpreter:         /usr/bin/python2.6 -B (ver 2.6)
--     Python numpy:               YES
--     Java:                       NO
-- 
--   Documentation:
--     Sphinx:                     NO
--     PdfLaTeX compiler:          /usr/bin/pdflatex
--     Build Documentation:        NO
-- 
--   Tests and samples:
--     Tests:                      YES
--     Examples:                   YES
-- 
--   Install path:                 /usr/local
-- 
--   cvconfig.h is in:             /home/user/Downloads/OpenCV-2.3.1
-- -----------------------------------------------------------------


make

最後にmakeしてインストールをすれば終了

$ make -j2
$ sudo make install
$ sudo ldconfig

インストールが無事に完了は,サンプルのコンパイルで確認することができます.
以下を実行してできた実行ファイルのどれかを動かすことができたらおk
$ cd sample/c/
$ sh build_all.sh


Kinectで遊びたい人は,OpenNIを入れる必要があります.
そのへんのインストールはこっちで