トップ 最新 追記
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2009/09/06(Sun) 現実逃避の一環で [長年日記] 編集

_ [雑記]ご挨拶

日記的なものを作ってみた。

更新するかどうかは未定。

プロフィールとかは研究室のHPを参照の事。


2009/09/07(Mon) Z800 3DVisorの使い方 for linux [長年日記] 編集

_ [研究関係][Ubuntu][Linux][Z800]Z800 3DVisorの使い方 for linux

2日目にして既に 日記ではなく自分用のメモページとして使うことになってしまった。

まあそのうち日記も書くだろう。

*Z800 3DVisorの使い方 for linux

・Linuxでz800を使ってヘッドトラッキングしてみる(参考 http://antimass.org/z800/

1。 tracker-0.1.tar.bz2をインストール

Install:

 make
 make install

To test:

 make test
 ./trackerTest

*emaDevice-0.2.tar.bz2 のEMATracker.cppのdecodeData()関数に、16byte bufferが何を示しているかがかかれている。

*rootで動かすべし。

とりあえずこれが動けばz800からデータが取れる。

2。emaDevice-0.2.tar.bz2をインストール

Install (EMA libraries):

 ./bootstrap.sh
 ./configure
 make install

To run the demo program:

 cd test
 make
 #./emaTest

このままだとデモのときにz800が使えないといって怒られるので、-noz800オプションをつけて以下のように行う。

#./emaTest -noz800

描画がおかしい。バグ?

とりあえず、これに入っているライブラリを使ったらデータの読み込み等がめちゃくちゃ簡単になるので、それを流用して新たにテストプログラムを書く。

*trackerのライブラリはデフォルトでは/usr/local/lib/にインストールされる模様。

ソース見たら、z800を切ったらトラッキングも切れてた。

そりゃ動かんわ。

3。

Z800Driver-0.6.tgzをインストール

   make
   make install
   depmod -ae (モジュールの依存関係ファイルを更新)
   make load

インストール後、テストプログラムを走らせてみたが、動かない。

けどトラッキングだけなら必要ないっぽいのでとりあえず無視。

****** libtool関係でエラーが出た場合

$ autoreconf -fiv

を打てば治るよ!

                 ハ_ハ  

               ('(゜∀゜∩ なおるよ!

                ヽ  〈 

                 ヽヽ_)

****************

emaDeviceのライブラリを使って頭部のトラッキングデータを吐き出すための最小限のプログラムを書いてみる。

(fix_emaTestと命名)

出来た。が、バイナリで吐かれても意味分からん・・・

調子に乗って、emaDeviceに付属のテストプログラム(emaTest.cpp)を z800ドライバを使わない状態で使えるように改造。

トラッキングした結果を意味のあるデータで吐き出せるようになった。

(fix_emaTestと命名)

- EMADeviceクラスを介さず、EMATrackerとEMADeviceDataを直接作成。
- z800およびtrackerで検索してヒットする部分をちょこちょこ変更しただけ。

やはり実行にはroot権限が必要。

rでオフセット、cでリセット、qで終了。

後は普通のディスプレイと同じようにz800に画面を映せるように設定すれば頭部トラッキングについては完成。(ただし800*600限定の模様)

ステレオ視がしたい場合は・・・頑張れ。

本日のツッコミ(全2件) [ツッコミを入れる]

_ test [test]

_ test [test2]


2009/09/08(Tue) OpenGLで3Dモデルを読み込む [長年日記] 編集

_ [研究関係][OpenGL]OpenGLで3Dモデルを読み込む

!!!全般的なメモ!!! 大体の場合、サンプルでは.hファイルしか読み込んでいないが、.cファイルもインクルードしないとコンパイル出来ない場合が多い(自分の知識不足?)。

あと、windowsとlinuxで当然読み込むインクルードファイルは変わってくるので適時修正する。(パスとかも要確認)

細々した修正はメモっていないので適当に頑張れ。

_ 「dxfを読み込んでみる」

このサイト (http://www.komoto.org/opengl/sample11.html) を参考にやってみた。

失敗。コンパイルは出来たが表示されない。

_ 「vrml(.wrl)を読み込んでみる」

このサイト (http://www.komoto.org/opengl/sample12.html) を参考にやってみた。

成功。読み込めた。

が、別の複雑な形状のモデルでやると失敗した。残念。

_ 「mqoを読み込んでみる」

GLMetaseq(http://kougaku-navi.net/ARToolKit.html#MakeModel)を使ってみる。

参考サイト:

http://kougaku-navi.net/ARToolKit.html#MakeModel(工学ナビ)

http://wiki.livedoor.jp/mikk_ni3_92/d/%bc%c2%c1%a9%ca%d410

工学ナビにあったサンプルはwindows用だったので、それと下のサイトのサンプルを混ぜて使う。

・・・コンパイルできない。

glGenBuffersARBが初めて出てきたとか言われる。

どうやら下のHPの方も環境がだいぶ違う模様。

とりあえずsynapticでlibglewを選択してglewをインストール。

結局関係なかった...?

よく覚えていないが、glewをインストールしたらglGenBuffersARBとかのエラーメッセージが変わった気がする。

よく分からん。

一応調べた内容をメモっとく

◆glewとかglut使うときのビルドオプション

   glut : -lglut
   glew : -lGLEW   ※大文字だから気をつける

ちなみにglut.hよりも先にglew.hを記述する必要がある。

インクルードファイルに色々追加。

 #include <ctype.h>
 #include <string.h>
 #include <GL/gl.h>
 #include <GL/glu.h>
 #include <GL/glut.h>
 #include "GLMetaseq.h"
 #include "GLMetaseq.cpp"

ちなみにmakeはこんな感じで。

 g++ -I/usr/local/include -I/usr/include/GL -L/usr/local/lib -lGL -lGLU -lglut -L/usr/X11R6/lib -lX11 -lXi -lXmu test.cpp -o test

↑無駄が多いのは分かってるが、面倒なので関係しそうなものを片っ端から指定してみた。

GLMetaseq を使ったプログラムでエラーが出る場合は…

以下引用

そんなときは GLMetaseq.c の 205行目 のコメントアウト(//)を外してからコンパイルしなおしてみてください.

g_isVBOSupported = 0;

このフラグは,vertex_buffer_object(使用する頂点情報をあらかじめグラフィックカードに渡して高速化する仕組み)をサポートしているかどうかのフラグなのですが,グラフィックカードのドライバの問題で正常にチェックできないことがあるようです.また,Windows XP Service Pack 3 にアップデートした後でこの問題が生じることもあるようです.

うん、それ無理。

そもそもg_isVBOSupportedが無いって言われるし。

g_isVBOSupportedが0の時に動かない部分を完全に削除。

動いたぜ。

(fix_GLMetaseqと名前をつけて保存)

以下工学ナビから使い方を引用

GLMetaseq の使い方

本ライブラリはヘッダとソースで配布しています.あなたが作成しているプログラムのプロジェクトに GLMetaseq.h と GLMetaseq.c を追加し,プログラム中で GLMetaseq.h をインクルードしてください. C++で使う場合,GLMetaseq.c の拡張子を.cppに変更する必要はありません.以下に関数の使い方を示します.

【1】 初期化

最初に初期化を行います.初期化を行うタイミングはウィンドウを生成した後です. ARToolKitのプログラムであればargInit()より後です.

 mqoInit();

【2】 ファイルからのモデルの読み込み

MQOファイルをロードします.ロードされるとMQO_MODEL型の変数にモデルの情報が記録されます.引数はモデルのファイル名とスケールです.スケールは1.0で当倍です.スケールを0.5とすると半分のサイズで表示されます.

MQO_MODEL model;
model = mqoCreateModel( "ninja.mqo", 1.0 );

【3】 モデルの呼び出し

MQO_MODEL型の変数を指定するとそのモデルがシーンに呼び出されます.この関数は描画処理のところで使います.メタセコイア上ではY軸が上を向いてますが, ARToolKitのマーカではZ軸が上を向いていますので,適宜X軸回りに90度回転させてください.

mqoCallModel( model );

【4】 モデルの消去

プログラム終了時など,モデルが不要になった時点でモデルを削除してください.

 mqoDeleteModel( model );

【5】 終了処理

プログラム終了時にはmqoCleanup()関数によってGLMetaseqの終了処理を行ってください.

mqoCleanup();

_ 他のmqoファイルでも試してみる。

とりあえずニコニコ動画で検索。

*EVA量産型*

配布先↓ PASS EVA (半角大文字で入力してください)

http://www1.axfc.net/uploader/He/so/232705&key=EVA 

ありがたくいただいてみる。

mqoじゃないやん・・・

さかのぼって大本の製作者様のHP(http://nameniku.blog71.fc2.com/)に行ってみた。

ここ(http://nameniku.web.fc2.com/3dcg/)に3DCGのデータが置かれているようなので見てみる。

素晴らしい。

特にお嬢様。

早速読み込む。(drossel.mqo)

失敗。

サイズの小さい方でやってみる(simple_drossel.mqo)

成功!

・・・が、

 このテクスチャは対応できないフォーマット→drosel_texture.png
 MQOファイル読み込み: 最大オブジェクト数を超えました[50]

とか言ってる。

いろいろと試す。

三次元CG@七葉からnh0428.zipを借りてきた。

OK。

やはり複雑過ぎたりサイズが大きすぎるとSegmentation faultになってしまうようだ。

さてどうするか・・・

お借りしたモデルを使ってみる


2009/09/09(Wed) メモメモ [長年日記] 編集

_ [プロジェクト実習][Ubuntu][Linux][FC]VMWARE Playerを使ってFC6を導入

_ VMWare playerを入れる

公式HP(http://www.vmware.com/jp/products/player/)からファイルを落としてきて

 sudo bash VMware-Player-2.5.2-156735.i386.bundle

インストールをクリック。以上。

_ ゲストOSのイメージファイルをDL&設定

 DL: http://www.vmware.com/appliances/
 FileName: fedora-fc6-i386
 Username: root
 Password: thoughtpolice

基本的に英語圏のものなので、キーボート配列とかを直した方がいい。(JP106とかにする)

yumの設定を書き換え

古いバージョンのFCなのでyumの検索先を変更する必要がある。

/etc/yum.repos.d ディレクトリにある、.repoファイルについて、以下を行う

1.baseurl行のコメントアウトをはずして、アーカイブのURLに書き換える
 baseurl=http://archive.fedoraproject.org/pub/archive
2.mirrorlist行をコメントアウトする

具体的には、

【fodora-core.repo】

[core]
name=Fedora Core $releasever - $basearch
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/os/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/core/$releasever/$basearch/os/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=core-$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora ""  file:///etc/pki/rpm-gpg/RPM-GPG-KEY

[core-debuginfo]
name=Fedora Core $releasever - $basearch - Debug
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/$basearch/debug/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/core/$releasever/$basearch/debug/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=core-debug-$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora ""  file:///etc/pki/rpm-gpg/RPM-GPG-KEY

[core-source]
name=Fedora Core $releasever - Source
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/source/SRPMS/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/core/$releasever/source/SRPMS/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=core-source-$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora ""  file:///etc/pki/rpm-gpg/RPM-GPG-KEY

【fedora-updates.repo】

[updates]
name=Fedora Core $releasever - $basearch - Updates
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/$basearch/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/core/updates/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-fc$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

[updates-debuginfo]
name=Fedora Core $releasever - $basearch - Updates - ""  Debug
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/$basearch/debug/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/core/updates/$releasever/$basearch/debug/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-debug-fc$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

[updates-source]
name=Fedora Core $releasever - Updates Source
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/updates/$releasever/SRPMS/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/core/updates/$releasever/SRPMS/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=updates-released-source-fc$releasever&arch=$basearch
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora

【fedora-extras.repo】

[extras]
name=Fedora Extras $releasever - $basearch
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/extras/$releasever/$basearch/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/extras/$releasever/$basearch/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=extras-$releasever&arch=$basearch
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-extras
gpgcheck=1

[extras-debuginfo]
name=Fedora Extras $releasever - $basearch - Debug
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/extras/$releasever/$basearch/debug/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/extras/$releasever/$basearch/debug/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=extras-debug-$releasever&arch=$basearch
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-extras
gpgcheck=1

[extras-source]
name=Fedora Extras $releasever - Source
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/extras/$releasever/SRPMS/
baseurl=http://archive.fedoraproject.org/pub/archive/fedora/linux/extras/$releasever/SRPMS/
#mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=extras-source-$releasever&arch=$basearch
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-extras
gpgcheck=1

のように書き換えていく。

  • 最終行の改行を忘れないように!

日本語を使えるようにする

 yum install fonts-japanese	(漢字が牌っぽく表示される場合)
 yum groupinstall "Japanese Support"	(日本語入力等)
 yum install scim	(scimメソッドを入れる)
 yum install scim-anthy	(Anthy)
 yum install scim-anthy	(Anthy用のIMEngine)

【SCIM入力メソッド】もしくはscim-configで設定画面を呼び出し、【開始/終了キーの設定】のキーコードにZenkaku_Hankakuを追加する。(全角/半角ボタンで切り替えられるようになる)

yumが使えないとき

 ps x | grep yum

でyum-updatesdを探し、その番号をkillする

yum-updatesdの自動起動を切りたい場合:

 # service yum-updatesd stop
 # chconfig yum-updatesd off

もしくは「システム」【管理】【service】でyum-updatesdを停止させ、チェックを外す

VMware toolsの導入

先にgccとかを入れておく。

 # yum install gcc kernel-devel

VMware Playerには付属していないので、VMWare Serverをダウンロードし、解凍した中のlib\isoimagesからisoイメージを取り出す

 ゲストOSがWindowsなら"windows.iso"
 ゲストOSがLinuxなら"linux.iso"を使う

取り出したisoファイルを仮想OSのあるフォルダと同じ場所にコピーする。

.vmxファイルを以下のように編集

 ide1:0.present = "TRUE"
 ide1:0.fileName = "auto detect"
 ide1:0.deviceType = "atapi-cdrom"

の部分を

 ide1:0.present = "TRUE"
 #ide1:0.fileName = "auto detect"
 #ide1:0.deviceType = "atapi-cdrom"
 ide1:0.fileName = "linux.iso"
 ide1:0.deviceType = "cdrom-image"

に変更(ide1:0.fileNameは自分の環境に合わせる)

ゲストOSを起動すると、CDがマウントされているので、その中からtarボールを取り出し、解凍。

 $ tar zxvf VMwareTools-***.tar.gz
  1. vmware-tools-distrib/vmware-install.plを実行

質問にyesなどデフォルトのまま進む

→gccコンパイラが走る。

起動スクリプトなども自動的に配置してくれている模様

解像度を選択

 ※インストールしてからeth0がなぜか無効になっていたので有効にする
 ※キーボードの形式やレイアウトも変更されていたので元に戻す(Japanese 106key で日本語レイアウト)
 ※ついでにレイアウトのオプションで、Swap Ctrl and CapsLockを有効にしておく(Emacsの為)

終わったら.vmxファイルを元に戻しておく。

VMware tools をX window起動時に自動起動させる

 1. [システム]->[設定]->[他の個人設定]->[セッション] 押下
 2. [自動起動するプログラム]選択
 3.  [追加]押下。自動起動のコマンドに
 vmware-toolbox --iconify

と入力(タスクバーに最小化して起動される)。

パーティションエディタ

 sudo apt-get install gparted
本日のツッコミ(全1件) [ツッコミを入れる]

_ oriesy-online [thanks for the interesting information]


2009/09/11(Fri) しぼむー [長年日記] 編集

_ [雑記]しぼむー

原付の速度超過で反則金とられてしまった・・・


2009/09/12(Sat) 細かなテクニック for Ubuntu(linux) [長年日記] 編集

_ [Ubuntu][研究関係][プロジェクト実習]Ubuntuのディレクトリ名を英語に(デスクトップ→Desktop)

最近のUbuntuはデスクトップとかが日本語でかかれていてCUIで操作しにくいことはなはだしい。

よって直す。

端末から

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

設定画面が出てきて、それぞれの名前を置き換えるのか聞いてくるので、「Don't ask me this again」にチェックを入れて、OKを押せば完了。

なお、ディレクトリが空でない場合、ディレクトリが削除されずに残ってしまうので注意。

また、デスクトップにファイルがある場合は、新たにできた「Desktop」ではなく、古い「デスクトップ」にファイルが残っているのであせらないように!

_ [Ubuntu][Linux][FC][研究関係][プロジェクト実習]「端末を右クリックで起動」を使えるようにする

端末で以下のコマンド実行

 $ sudo apt-get install nautilus-open-terminal

redhat系は、

 # yum install nautilus-open-terminal

_ [Ubuntu]xubuntu、kubuntuの導入

それぞれxubuntu-desktop、kubuntu-desktopをapt-getなどで入れる。

login時にオプションで変えられるようになるはず。

_ [Ubuntu][研究関係][プロジェクト実習]各種開発環境

apt-get等でbuild-essentialを入れれば最低限のものは揃うはず。

_ [Ubuntu][Linux][研究関係][プロジェクト実習][OpenCV]opencvでieee1394を使う

まずはcorianderを入れる。

(./configureで要求されるものをすべて揃える。)

その後OpenCVをソースからインストール。

以下のコマンド

 # sudo apt-get install libcv-dev
 # sudo apt-get install libcv1
 # sudo apt-get install libcvaux-dev
 # sudo apt-get install libcvaux1
 # sudo apt-get install libhighgui-dev
 # sudo apt-get install libhighgui1
 # sudo apt-get install opencv-doc

でも入るはずだが、IEEE1394からの画像が出ない場合が多い?

(注1)

libdc1394は古い方(1.2)も入れること!

そうしないとopencvに認識されないっぽい。

(注2)

IEEE1394が/dev/video1394-0になってしまっているときは、mvでこれを/dev/video1394/0に移すべし!

(注3)

サンプルは/usr/share/doc/opencv-doc/examples/cに入るっぽい。

(注4)

OpenCVのコンパイル例

コンパイル例

 $ g++ -Wall -O2 `pkg-config --cflags opencv` `pkg-config --libs opencv` -o 1394test 1394test.cpp

_ [FC][Ubuntu][Linux]文字コードがおかしくなったとき。

 $ nkf -s --overwrite index.html

でOK。

_ [FC][Ubuntu][Linux]画像のサイズを変更

 $ convert -resize 800x450 topimg_0909.jpg topimg.jpg

みたいにやればいい。

%指定も可能。

 $ convert -resize 50% topimg_0909.jpg topimg.jpg

_ [FC][Ubuntu][Linux]ファイルを名前から探す

 $sudo find / -iname *gl.a	(大文字小文字を区別しない)

もしくは

 $sudo find / -name *gl.a	(区別する)

_ [FC][Ubuntu][Linux]日本語が文字化けしにくいページャを入れる

lvを使えばいい。

 $ sudo apt-get install lv

FCの場合は

 # yum install lv

_ [Ubuntu]apt-getでエラーが起きた場合の対処法

<例1>

apt-get install package を実行した際に、以下のようなメッセージを受け取ったら...

    Reading Package Lists... Done
    Building Dependency Tree... Done
    W: Couldn't stat source package list 'http://people.debian.org unstable/ Packages' (/var/state/apt/lists/people.debian.org_%7ekov_debian_unstable_Packages) - stat (2 No such file or directory)
    W: You may want to run apt-get update to correct these missing files
    E: Couldn't find package penguineyes

最後に /etc/apt/sources.list ファイルを修正した後で、apt-get update を実行するのを忘れている可能性がある。

<例2>

    E: Could not open lock file /var/lib/dpkg/lock - open (13 Permission denied)
    E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?

apt-getの権限がない。もしくはapt-get(またはsynapticとか)を同時に2つ以上動かしている。

よって、前者の場合はrootになるかsudoを使えばいい。

後者の場合はどちらかの実行を止めればいいが、それができなかった場合は、次の 2 つのコマンドを試す。

 # apt-get -f install
 # dpkg --configure -a

_ [Ubuntu][FC][Linux][研究関係][プロジェクト実習]linuxでゲームパッドを使う

1. 「joystick」「xserver-xorg-input-joystick」パッケージをインストール。

2. USBポートにゲームパッドを差す。

dmesgで認識されたことを確認できればOK。

スペシャルファイルは /dev/input/js0。

3. 以下のコマンドで、動作確認が可能。

 jstest --normal /dev/input/js0

2009/09/14(Mon) ピンポイントメモ [長年日記] 編集

_ [FC][Linux][研究関係][プロジェクト実習]Redhat系Linuxでlibstdc++.so.5 を要求された場合

 yum install compat-libstdc++-33

でOK。

_ [FC][Linux][OpenRTM][研究関係][プロジェクト実習]FC6にOpenRTMを

OpenRTMのインストール

HP(http://www.is.aist.go.jp/rt/OpenRTM-aist/html)から一括スクリプト(pkg_install_fedora.sh)をDlし実行。

*OpenRTM-aist-Javaは、Java Development Kit 5.0(JDK 5)でないと正常に動作しない模様。

Eclipse等の準備

HPから全部入りパッケージをDL。好きな場所に解凍するだけ。

eclipse32_rtclink041_rtctemplate041_linux.zipをダウンロード

jpackageを用いてgcjとsunのjavaを切り替える

HPからJDK 5をダウンロードしインストールする

(http://ambiesoft.ddo.jp/blog/archives/8)

(http://www.is.aist.go.jp/rt/OpenRTM-aist/html/E3839EE3838BE383A5E382A2E383AB2FE382A4E383B3E382B9E38388E383BCE383ABJavaUNIX.html#d33984ea)

(http://www.gs.sjts.co.jp/wbs/bulletin/bbs080.do?bbs010forumSid=1&threadSid=331)

インストール手順:

 # rpm --import http://jpackage.org/jpackage.asc
 # cd /etc/yum.repos.d
 # wget http://jpackage.org/jpackage.repo

jpackage.repoを以下のように書き換える

# Be sure to enable the distro specific repository for your distro below:
# - jpackage-fc for Fedora Core
# - jpackage-rhel for Red Hat Enterprise Linux and derivatives

[jpackage-generic]
name=JPackage (free), generic
mirrorlist=http://www.jpackage.org/jpackage_generic_1.7.txt
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1
[jpackage-fc]
name=JPackage (free) for Fedora Core $releasever
mirrorlist=http://www.jpackage.org/jpackage_fedora-$releasever.txt
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1

[jpackage-rhel]
name=JPackage (free) for Red Hat Enterprise Linux $releasever
mirrorlist=http://www.jpackage.org/jpackage_rhel-$releasever.txt
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=0

[jpackage-generic-nonfree]
name=JPackage (non-free), generic
mirrorlist=http://www.jpackage.org/jpackage_generic_nonfree_1.7.txt
failovermethod=priority
gpgcheck=1
gpgkey=http://www.jpackage.org/jpackage.asc
enabled=1

sunのサイトからjdk-1_5_0_14-linux-i586-rpm.binをダウンロードしてインストールする。

   * jdk-1_5_0_14-linux-i586-rpm.binを入手
      → http://java.sun.com/products/archive/j2se/5.0_14/index.html
   * java-1.5.0-sun-compat-1.5.0.14-1jpp.src.rpmを入手
      → http://www.jpackage.org/browser/rpm.php?jppversion=1.7&id=7850

以下のコマンドを実行して、javaの切り替えを可能にする。

 # yum --enablerepo=jpackage-generic-nonfree install java-1.5.0-sun-compat

alternativesコマンドでjavaの切り替えができる。

 # /usr/sbin/alternatives --config java

2009/09/15(Tue) OpenRTMとかいろいろ [長年日記] 編集

_ [FC][Ubuntu][Linux][研究関係][プロジェクト実習]シャットダウンで電源が落ちない場合

/etc/grub.conf のkernelの行にacpi=offを追加する

(もしくはacpi=onを追加する)

_ [FC][Ubuntu][Linux][OpenRTM][研究関係][プロジェクト実習](openrtmの使用後に)シャットダウンが途中で止まる場合

シャットダウンする前にpsでIDを調べてomniNamesをkillしておく。

_ [FC][Ubuntu][Linux][OpenRTM][研究関係][プロジェクト実習]ネットワークを介してOpenRTMのコンポーネントを動かす

ファイアーウォールが動いていると接続できない。

_ [FC][Ubuntu][Linux][OpenRTM][研究関係][プロジェクト実習]ファイアーウォールを無効にする方法

<FCの場合>

 # /etc/rc.d/init.d/iptables stop

自動起動を解除する場合

 # chkconfig iptables off

<Ubuntuの場合>

 $ sudo ufw disable

これの場合、一緒に自動起動も解除されるっぽいので、用事が住んだら次のコマンドで有効化するべし。

 $ sudo ufw enable

ufwは「ソフトウェアファイアウォールとしての機能を,できるだけ単純なインターフェースで設定する」もので、Ubuntu8.04以降はデフォルトで組み込まれている。

なので、iptablesに比べて細かな設定は出来ないものの、簡単に使えるというメリットがある。

ま、Ubuntuにもiptablesは入ってるし、pathも通してくれているので、上のFCの場合のようにiptablesを使うのもいいと思う。

スクリプトとか書きやすいしね。

(FCとは格納されている場所が違うので注意。多分/sbin/iptablesでアクセスできる?)

_ [FC][Ubuntu][Linux][研究関係][プロジェクト実習]マウントの設定

システム起動時にマウントされるデバイスは、/etc/fstabで設定されている。

<例>

LABEL=/ / ext3 defaults 1 1

/dev/devpts /dev/pts devpts gid=5,mode=620 0 0

/dev/shm /dev/shm tmpfs defaults 0 0

/dev/proc /proc proc defaults 0 0

/dev/sys /sys sysfs defaults 0 0

/dev/hda3 swap swap defaults 0 0

/dev/fd0 /media/floppy auto pamconsole,exec,noauto,managed 0 0

/dev/hdd /media/cdrom auto pamconsole,exec,noauto,managed 0 0

/dev/hdc /media/cdrom1 auto pamconsole,exec,noauto,managed 0 0

第1列はマウントするブロックデバイスやラベルなど、その右の第2列にはマウントポイントが記述されている。

第3列がファイルシステムの種類で、第4列がマウント時のオプション。

第5、第6列には、それぞれ数字が記述される。

第5列の数字は、ファイルシステムをdumpする必要があるか否かの指定。

「0」または無記述の場合はdump不要のファイルシステムであると見なされる。

最後の第6列の数字は、システム起動時にfsckチェックを行うか否かの指定。

「0」の場合はチェックを行わない。ルートファイルシステムでチェックを行う場合は「1」を指定する。また、ルートファイルシステム以外でチェックを行う場合は「2」を指定する。


2009/09/16(Wed) 細かな設定 [長年日記] 編集

_ [Ubuntu][FC][Linux][研究関係][プロジェクト実習]癒し系コマンド

Ubuntuの場合

 sudo apt-get install sl

準備完了。

 sh

はらしょー。

さすがubuntu!

俺たちにできないことを平然と(以下略)

その他のLinux

こちら(http://www.tkl.iis.u-tokyo.ac.jp/~toyoda/)のソースを使わせていただく。

解凍してmake。

/usr/local/binに置いておくのがおすすめ。

(オプションはl,a,F)

_ [FC][Ubuntu][Debian][Linux][研究関係][プロジェクト実習]ディレクトリを開くごとにウィンドウを開くのを止める

nautilusをブラウザモードで起動する。

具体的には、--browserオプションをつけて開く。

 % nautilus --browser

ブラウザモードに対し、ディレクトリを開くごとにウィンドウが開くモードをスペーシャル(spatial)モードと言う。

デフォルトでNautilusが旧UIで起動するようにする。

Fedora Coreの場合、Nautilusを旧UIにする設定は、GConfエディタという設定エディタを用いる。

設定する前に、念のため設定ファイルをバックアップする。

 $ cp -r .gconf .gconf.bak

そして、GNOMEメニューの[システムツール]−[設定エディタ]を選択する。あるいは、GNOME端末で、

 $ gconf-editor

としてGConfエディタを起動する。

GConfエディタが起動したら、画面左のボックスで[apps]−[nautilus]−[preferences]を選択して、右のボックスに表示される[always_use_browser]のチェックボックスをオンにする。

GConfエディタで[always_use_browser]をオンに設定したら、GConfエディタを終了する。

その際、保存などの操作は特に必要ない。以後、Nautilisを起動すると、旧UIでウィンドウが表示されるようになる。

入っていない場合は、

 # yum install gconf-editor

で入れる。

_ [FC][Ubuntu][Linux][研究関係][プロジェクト実習]ログイン時の読み込みエラー

”ユーザーの$HOME/.dmrcファイルが読み込まれなかったのでデフォルトのセッション情報と設定した言語は保存されていません。このファイルの所有者をユーザーにし644の権限を付与して下さい。またホームフォルダ$HOMEの所有者をユーザーにして、他のユーザーが書き込めないようにして下さい。”

というエラーが出た場合、素直に言われた通りの操作をすればいい。

具体的には、

ホームディレクトリにある隠しファイル dmrc の所有者を自分に変更し、

 # chown {username} .dmrc

ホームディレクトリにある隠しファイル dmrc のアクセス権を変更し、

 $ chmod 644 .dmrc

ホームディレクトリのアクセス権を変更し、

 $ chmod 755 /home/{username}

ホームディレクトリの所有者を自分に変更

 # chown {username} /home/{username}

でOK。

_ [FC][Ubuntu][Linux]時刻がずれる場合

UTCを使う設定になっていないかを確認する。

 /etc/sysconfig/clock

に記載されているはず。

日本標準時はJSTで、UTC+9時間。

以下に挙げるような、代表的な公開NTPサーバーを追加してみる。

Stratum ホスト名 IPアドレス

Stratum-1 clock.nc.fukuoka-u.ac.jp 133.100.9.2

Stratum-1 clock.tl.fukuoka-u.ac.jp 133.100.11.8

Stratum-2 ntp1.jst.mfeed.ad.jp 210.173.160.27

Stratum-2 ntp2.jst.mfeed.ad.jp 210.173.160.57

Stratum-2 ntp3.jst.mfeed.ad.jp 210.173.160.87

システムとハードウェアの時刻をあわせる

引用元:@IT - 時間を正確に合わせるには

Linuxには、「ハードウェアクロック」と「システムクロック」という2つの時計がある。

ハードウェアクロックとは、PC上のLSIに搭載された時計で、PCの電源を切った状態でも時刻を刻み続ける。時刻をCMOSに保存するので、「CMOS時計」と呼ばれたり、「リアルタイムクロック(RTC)」などと呼ばれることもある。

システムクロックとは、Linuxのカーネルが管理している時計で、システム起動時に1度だけハードウェアクロックから時間を参照し、それ以降 Linuxではシステムクロックが基準となる(つまり、dateコマンドなどで表示される時刻は、常にシステムクロックである)。システムクロックは、「カーネル時計」、「ソフトウェア時計」と呼ばれることもある。

どちらの時計もあまり正確ではないので、正しい時刻を知る必要がある場合は、外部のNTPサーバから正確な時間を入手し、それをハードウェアクロックに反映させる必要がある。

システムとハードウェアの時間確認方法

 # /sbin/hwclock ; date

システムとハードウェアの時刻同期

 # hwclock -w ; hwclock ; date

まあ俺は全てやっても直らんかったけどな!

_ [Ubuntu]VLC Media Playerのインストール

単純に

 $ sudo apt-get install vlc

でOK。


2009/09/17(Thu) Wiiリモコン+linux [長年日記] 編集

_ [Ubuntu][Linux][プロジェクト実習][研究関係] UbuntuでWiiリモコンを使う

Bluetoothの環境を導入

以下のパッケージを導入。(最近のlinuxだと既に入っているかも)

■ bluez-utils

■ libbluetooth2

■ libbluetooth2-dev

■ python-dev

■ python-xlib

■ python-xlib-doc

■ python-bluez

■ gnome-bluetooth

■ PyBluez

自分のPCで試した時(2年前)は最後のPyBluezは下のサイトからソース(pybluez-src-0.9.2.tar.gz)をダウンロードして、展開・インストールした。

が、最近はpython-bluezが元々入っている模様。

http://org.csail.mit.edu/pybluez/download.html

 $ tar zxvf pybluez-src-0.9.2.tar.gz
 $ cd pybluez-src-0.9.2
 $ sudo python setup.py install

これでBluetooth USBアダプタの設定は終了。

きちんと認識されていれば、次のコマンドを実行すると、

 $ hcitool scan
 Scanning ...

という表示が出る。

ここで、Wiiリモコンを用意しておき「Syncボタン」を押すと、Macアドレスが表示される。

 $ hcitool scan
 Scanning ...

    00:19:1D:5E:6D:4F Nintendo RVL-CNT-01

このMacアドレスは後で使うので、メモしておく。なお、Macアドレスは固有のものなので、実際には上と違う値になっている。

ちなみに「Syncボタン」は、裏蓋の中の電池ボックスの右下にある赤いボタン。

Wiiリモコンのドライバを導入

必要なパッケージは下の4つ。

当時はdebからインストールしたが、今はapt-getで入れられるらしい。必要に応じてdevも入れる。

■ libcwiid0

■ libcwiimote-0.2

■ wmgui

■ wminput

xorg.confの設定

Xが正しく起動できなかったときのために、xorg.confのバックアップを取っておくこと。

まあ、別にxorg.confこれをせんでも動くときゃ動くがな!!

むしろ下手に手を出さない方が懸命かも(参考:http://d.hatena.ne.jp/sosuk/20090623/1245770678)

CUIでいじらないのが今の主流か・・・。

ま、せっかくだし一応書いとくが。

/etc/X11/xorg.confの内容を次のように変更する。

■ 最終行に次の6行を追加

 Section "InputDevice"
  Identifier "Wiimote"
  Driver "evdev"
  Option "Name" "Nintendo Wiimote"
  Option "Emulate3Buttons" "true"
 EndSection

■ Section "ServerLayout"の中に次の1行を追加

 InputDevice "Wiimote" "AlwaysCore"

ただ、ディストリビューションによっては"ServerLayout"が無いっぽい。

その場合はおそらくこんな感じのを書き加えればいいはず。

Section "ServerLayout"

      Identifier     "Default Layout"
      Screen      0  "Screen0" 0 0
      InputDevice    "Mouse0" "CorePointer"
      InputDevice    "Keyboard0" "CoreKeyboard"
InputDevice    "Wiimote" "AlwaysCore"

EndSection

当然のことだが、 決して元々書かれていた部分は消さないように!

これでxを立ち上げ直せば(一度ログアウトするだけでいい)動くようになる。

最近のディストリビューションだと高確率で叱られるがな!!

Wiiリモコンを起動

以上の設定が済んだら、再起動して次のコマンドを実行。

 $ sudo modprobe uinput
 $ sudo wminput 00:19:1D:5E:6D:4F

ここではあらかじめ調べておいたMacアドレスを指定。

次のような表示が出たら成功!

 $ sudo wminput 00:19:1D:5E:6D:4F
 Put Wiimote in discoverable mode now (press 1+2)...

あとは表示にある通り、Wiiリモコンの1ボタンと2ボタンを押せば、リモコンの動きに合わせてマウスカーソルが動く。Aボタンが左クリックの役割。

自作プログラムの作成

libwiimoteのサイト(http://libwiimote.sourceforge.net)を参考にすれば、ライブラリを使って簡単に作れるよ!

最後に

更に突っ込んで使い人はココ(http://www.wiili.com/index.php/Main_Page)を見れば幸せになれるかも・・・


2009/09/18(Fri) 利用ユーザ限定され過ぎなメモ [長年日記] 編集

_ [FC][Ubuntu][Linux][OpenRTM][プロジェクト実習]OpenRTMにおけるRTコンポーネントの作り方(やっつけ仕事版)

本家のHP(http://www.is.aist.go.jp/rt/OpenRTM-aist/html/)がわかりにくいので、自分なりに「適当に」まとめた。

インストールやらなんやら思いっきり省いているので、そこは本家HPを見て頑張れ。気が向いたら書くかもしれんが。

基本的にはダウンロードのページからOSにあったパッケージをダウンロードしてインストールする。

ライブラリのバージョンに依存するようなコンポーネントを使う予定がある場合はひとつずつ手動で入れた方がいい。(ACEとかomniあたりは特に)

注)OpenRTMの最新版は1.0だが、1.0はバグだらけなので、0.42を使うのが賢明。なんでやねん!

OpenRTM本体の他にも、

eclipse + RTC Link + System Editor(もしくはRTCBuilder) + RtcTemplate

が必要だが、これもダウンロード->GUIツール関係からDLする。

基本的には全部入りパッケージをDLして好きな場所に解凍するだけでいいはず。

Javaの切り替えについては以前に書いた通り。

ちなみにLinux(Ubuntu,FC)でしか試してないので、他の環境で通じるかは不明。

rtc-template(CUI)を使ってコンポーネントのテンプレートを作成。

適当な作業ディレクトリを作成。

 $ mkdir TextInput

エディタで以下のような内容のシェルスクリプト(gen.sh)を作る。

rtc-template -bcxx \
  --module-name=TextInput --module-type='Input' \
  --module-desc='Text Input Component' \
  --module-version=0.1 --module-vendor='NAIST_robotics' \
  --module-category=Generic \
  --module-comp-type=DataFlowComponent --module-act-type=SPORADIC \
  --module-max-inst=1 \
  --outport=outstr:TimedString \

で、実行。

 $ sh gen.sh

これでTimedString型のoutstrという名前を持ったoutportを1つだけ持つコンポーネントが出来あがる。

また、別の名前を与えれば、複数のinport、outPort、servicePortを持つことも可能。

詳しい説明はコンソールで

 $ rtc-template --help

を打てば表示される。

ヘッダファイルの修正

ヘッダファイル(TextInput.h)を開き、使用したい関数に関する部分をコメントから出す。

<例>

// The finalize action (on ALIVE->END transition)
// formaer rtc_exiting_entry()
// virtual RTC::ReturnCode_t onFinalize();

// The finalize action (on ALIVE->END transition)
// formaer rtc_exiting_entry()
virtual RTC::ReturnCode_t onFinalize();

にする。

基本的には次の5つを使うだけでいいはず。

 onInitialize (起動時の処理)
 onFinalize	(終了時の処理)
 onActivated (System Editerでアクティブにした時の処理)
 onDeactivated (System Editerでディアクティブにしたときの処理)
 onExecute (アクティブ中の処理)

ちなみに、rtc-templateで指定した入出力用の変数もここで宣言されている。

<例>

// DataOutPort declaration
// <rtc-template block="outport_declare">
TimedString m_outstr;
OutPort<TimedString> m_outstrOut;

ソースファイルの修正

ソースファイル(末尾にCompが付かない方。TextInputComp.cppではなく、TextInput.cppの方)を修正する。

ヘッダファイルでコメントから出した関数をコメントから出し、そこにやりたい処理を書く。

*コンポーネントの入出力に関しては上に示した変数を使えばいい。

出力については、m_outstrにデータを書きこみ,m_outstrOutでデータをOutPortからネットワークに送り出す。

例、

RTC::ReturnCode_t TextInput::onExecute(RTC::UniqueId ec_id)
{
   std::string str;
   std::cin >> str;
   m_outstr.data=str.c_str();
   m_outstrOut.write();
   return RTC::RTC_OK;
}

入力については出力のほぼ逆で、最初に

if(m_inStrTalkIn.isNew)
{
  m_inStrTalkIn.read();
}

みたいな形で、更新された入力データを読み込むことで、入力値を変数m_inStrTalkとして扱えるようになる。

コンパイルする

コンパイルにはrtc-templateで作られるMakefile.TextInputを使う。

 $ make -f Makefile.TextInput

コンポーネントを実行する前に

コンポーネントの実行前に、ネームサーバを立ち上げる。

 $ rtm-naming 9876

rtm-namingの後に続く数字は任意でいいが、

実行にはrtc.confが必要となる。

最低限、以下のようなネームサーバーのURLと命名規則だけ書いていれば動く。

<例>

  corba.nameservers: 127.0.0.1:9876
  naming.formats: %n.rtc

ちなみに、

  corba.nameservers: localhost

と書くと、ローカルホスト(大体の場合は127.0.0.1)の9876(デフォルト値)につながる。

さらに言うと、コンポーネントをフォルダ分けして表示したい場合は、

naming.formats: hogehoge./%n.rtc

とすればいい。(hogehogeがフォルダ名)

実行してみる。

_ コンポーネントの実行

こんな感じで実行する。

 $ TextInputComp -f rtc.conf

注1)onInitializeに何も書かれていない場合、当然なんの反応も帰ってこない。

ぱっと見、フリーズしているようにも見えるので、最初はちょっと焦る。

注2)1つのコンポーネントにつき、1つのコンソールが必要。正直うざい。


2009/09/22(Tue) 自己責任でお願いします [長年日記] 編集

_ [FC][Ubuntu][Linux][研究関係][プロジェクト実習]新しいユーザにデータをコピーしたい場合

今回のは失敗したらかなり危険(データにアクセスできなくなる)なので、真似る場合は自己責任でお願いします。

既存のユーザのアカウント名を変更

root権限でusermodコマンドを使う。(この際、変更したいユーザがログインしていないことを確認しておく)

オプション

 -c comment  	ユーザのフルネームをcommentに変更。
 -d home_dir 	ユーザのホームディレクトリをhome_dirに変更。
 -g group 	ユーザのグループIDをgroupに変更。
 -G group[, ...] 	ユーザの所属グループを指定。
 -l loginname 	ユーザのログイン名をloginnameに変更。
 -p passwd 	ユーザのパスワードをpasswdに変更。(一般にはpasswdコマンドを使う)
 -s shell 	ユーザのログインシェルをshellに変更。
 -u uid 	ユーザのユーザ名をuidに変更。
 -m 	ユーザのホームディレクトリがなければ自動的に作成

-lオプションではホームディレクトリ等は変更されない。よって、完全にユーザ名を変更したい場合は、

 # /usr/sbin/usermod -l 新しいユーザー名 旧ユーザー名
 # /usr/sbin/usermod -d 新しいディレクトリ名 ユーザー名

とする。

まあ、本当は新しくアカウントを作ってデータを移動させた方が安全だが。

新しいアカウントを作って、他からホームディレクトリをコピー

と、いうことで、こちらも一応メモる。

まず、アカウントを作成

 # /usr/sbin/useradd -d ホームディレクトリ -m 新規ユーザ名

"-m"オプションで、自動でホームディレクトリが作成される。

で、このままだと入れないので、パスワードを設定する。

 # passwd 作成したユーザ名
   (パスワードを入力)
   (再度パスワードを入力)

んで、ホームディレクトリの中身をコピー。

 # cp -R -a -v コピー元のホームディレクトリ コピー先のホームディレクトリ

ここで-aを忘れると、属性や構造が変わってしまう可能性があるので注意。(-aを付ければ「出来る限り」元通りの状態を保持してくれる)

-vは経過を表示するというオプションなので、別に必須では無い。

が、コピー元のサイズが大きい場合、本当にコピーしているか心配になるのでつけた方が賢明。

これでデータは移せたはずだが、もしかすると権限の問題でアクセスできないファイルが出来たり、下手するとログインが出来なくなったりしているかもしれない。

その場合は、chmodやchownを使って適時処理する。

どうしても、どうやっても直らない!と言うのであれば、/home以下を-R付けて777にしてしまえば大抵の場合は動くようになる。

が、当然セキュリティ上は最悪なので、権限を規定できる部分は規定しておいた方がいい。

ま、ログインできない原因の大半は設定ファイルにアクセスできないからなので、ホームディレクトリの.ファイルとホームディレクトリ、あと、/homeのアクセス制限を確認すれば大体の原因はわかるはず。

念のため書いとくが、隠しファイル(.で始まるファイル)を含めてアクセス権限の設定を表示させたい場合は

 $ ls -a {ディレクトリ名}

でOK。

_ [FC][Ubuntu][Linux][プロジェクト実習][研究関係]ubuntuのLiveCDを使ったgrubの再インストール方法

Ubuntu9.04をいれたPCにFC6を入れて、grubをFCのもので上書きしたら、ubuntuが起動できなくなった。

いろいろ試してみたが、どうやらgrubが古過ぎて読めない模様。

よって、ubuntu側のgrubをもう一度MBRに書き込み直すことにした。

UuntuのLiveCDを使ってHDD内のUbuntuを起動

まず、LiveCDによる起動の最初のメニュー画面でF6キーを押して起動オプションを立ち上げる。

で、立ち上がった起動オプションの文字列の中の”boot=casper"の部分を”root=/dev/sda1" 等に書き換えてEnterを押す。

ここで、/dev/sda1はUbuntuのシステムがインストールされているパーティションを指す。

なので、パーティションの状況によってここをsda2にしたりsdb1にしたりする必要がある。

GRUBの再インストール

無事Ubuntuが立ち上がったら、端末を開き、次のコマンドを入力する。

 $ sudo /usr/sbin/grub-install /dev/sda

これでHDDの先頭にgrubが書き込まれたので、再起動して確認。

おそらく動くはず。が、これはマルチブート前のパーティション状況にあわせた設定だったので、FC6が開けなかった。

マルチブートできるようにmenu.lstを修正

uguntuではgrubの設定は/boot/grub/menu.lstにかかれている。

また、FCの場合はgrubの設定は/boot/grub/grub.confにかかれている。

で、これらの書式はほぼ同じと考えていいっぽい。(厳密には違いそうだが)

なので、ubuntu側のmenu.lstにgrub.confの内容を追加すればいい。

<追加する内容の例>

title Fedora Core (2.6.18-1.2798.fc6)
        root (hd0,4)
        kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet
        initrd /boot/initrd-2.6.18-1.2798.fc6.img

念のため、書き換える前にはバックアップをとっておくこと。

で、書き換えたら保存して再起動。

これでマルチブートになったはず。

_ [FC][Ubuntu][Linux][プロジェクト実習][研究関係][雑記]ある意味すごく重要なこと(T43)

ThinkPad T43は 左上のスピーカボタンで音量を調節できる。

これはハードウェア的なものっぽいので、これを切っているとどうやっても音が出ない。

というか、そんな単純なことに気づかずに一時間ほど悩んでた俺って・・・


2009/09/23(Wed) 以外と面倒だった・・・ [長年日記] 編集

_ [FC][Linux][プロジェクト実習][研究関係]T43に入れたFC6で無線LANを動かす。

下準備

まず、ノート PC に搭載されている無線 LAN チップを lspciコマンドで確認する。

 # /sbin/lspci | grep Wireless

すると、こんな感じのが出てくる。

 04:02.0 Network controller: Intel Corporation PRO/Wireless 2915ABG Network Connection (rev 05)

実は、FC6にはこれ用のドライバ(ipw2200)が既に入っている。

が、ライセンスの問題でファームウェアは自分で入れなければならない。

HPはここ。

Intel PRO/Wireless 2200BG Driver Firmware

http://ipw2200.sourceforge.net/firmware.php

インストールされているドライバのバージョンはmodinfoコマンドで確認できるので、それにあったファームウェアのバージョンを選んでDL。(以下はipw2200の場合の確認方法)。

 # /sbin/modinfo /lib/modules/2.6.18-1.2798.fc6/kernel/drivers/net/wireless/ipw2200.ko

ファームウェアの導入

DLしたファームウェアを適当な場所に解凍し、出てきた.fwファイルを全て/lib/firmware/にコピーする。

 # tar xvzf /tmp/ipw2200-fw-3.0.tgz
 # cp ipw2200-fw-3.0/* /lib/firmware/

ドライバの読み込み&動作確認

modprobeコマンドでドライバを読み込む。

 # /sbin/modprobe ipw2200

ドライバが読み込まれると新たなEthernetインタフェースが認識されるので、iwconfigコマンドで確認する。

 # /sbin/iwconfig

ついでに確認。

 # /sbin/lsmod | grep ipw2200

ドライバの自動ロード設定

システムの起動時にドライバがロードされるように/etc/modprobe.confに以下の1行を追記する。(eth1として認識させる場合)

 alias eth1 ipw2200

追記後、depmodコマンドを実行。(不要かも)

 # /sbin/depmod

これにより、システムの再起動後も自動的にドライバがロードされるようになる。

あとは自分の無線LANの環境に合わせてネットワークの設定をしていく。

無線LAN用の設定ファイルの作成(CUI)

まず、/etc/sysconfig/network-scripts/ifcfg-eth1に以下の記述を行う。

 TYPE=Wireless
 DEVICE=eth1
 BOOTPROTO=dhcp	(dhcpを使わない場合はnoneと書き、IPADDR、NETMASK、GATEWAYに値を書き込む)
 IPADDR=
 NETMASK=
 DOMAIN=
 USERCTL=yes
 IPV6INIT=no
 PEERDNS=no
 ESSID={接続先のESS-IDを書く}
 CHANNEL={チャンネル数(わからなければ1を書いておく)}
 MODE=Managed
 RATE=Auto
 HWADDR={接続先のハードウェアアドレスを書く。# ifconfig eth1で表示されるヤツ}
 ONBOOT=yes
 GATEWAY=

ESSIDがわからない場合、次のコマンドで無線LANで接続できる基地局を表示できる。

 # /sbin/iwlist eth1 scan

続いて。/etc/sysconfig/network-scripts/keys-eth1を開いて、キーの設定を行う。

キーの設定を文字列で行う場合は、「s:」という指定が必要になることに注意すること。

 KEY=s:WEPキー(文字列)

/etc/sysconfig/network-scripts/keys-eth1を作成したら、このファイルにroot以外のユーザーがアクセスできないように、ファイルの属性を変更しておく。

 # chmod 600 /etc/sysconfig/network-scripts/keys-eth1

なお、Fedora Coreの場合は、GUI(GNOMEのsystem-config-network)でも上記の設定を行える。

その場合は、[デスクトップ]メニューの[システム設定]−[ネットワーク]を使う。

新規に登録する場合は、[ネットワーク設定]画面で[新規]ボタンをクリックし、設定していく。

また、登録済みの設定を変更する際は、[ネットワーク設定]画面で変更するデバイスを選択して、[編集]ボタンをクリックする。

ネットワークインタフェースの起動・停止は上記のGUIか、もしくは

 # /sbin/ifdown eth1	(停止)
 # /sbin/ifup eth1	(起動)

で可能。

_ WPA-AES設定されたアクセスポイントへ接続する

@ITの記事から抜粋。

内容重複するので、上までの作業が全て終わっているという仮定で説明する。

前準備

wpa_supplicant(http://hostap.epitest.fi/wpa_supplicant/)を使ってWPAによる暗号化を行う。

なお、FC6)の場合、システムインストール時にデフォルトのインストールオプションを選択していれば自動的に導入されている。

入っていない場合は、yumでインストールする。

 # yum install wpa_supplicant*

で、念のため、無線LAN無線LANが使用できる状態かどうかを確認する。 [システム]-[管理]-[ネットワーク]-[ネットワーク設定]-[ハードウェア]と開き、無線LANのデバイスが認識されていることを確認する。

wpa_supplicantの設定

/etc/sysconfig/wpa_supplicantを以下のように書き換える。

 # INTERFACES="-iwlan0"
 # DRIVERS="-Dndiswrapper"
 DRIVERS="-Dwext"
 INTERFACES="-ieth1" #← -i の後に[ネットワーク設定]ウィンドウで確認したデバイス名

修正が完了したら、/etc/wpa_supplicant/wpa_supplicant.confの作成を行う。

まず、前段階として、 wpa_passphraseコマンドでパスフレーズの暗号化を行う。

 # /usr/sbin/wpa_passphrase {SSID} {パスフレーズ}

結果は標準出力に出力されるので、それをコピーするか、リダイレクトで任意のファイルに保存しておく。

<tmp.confにリダイレクトする場合>

 # /usr/sbin/wpa_passphrase myssid mypassphrase0123456789" > tmp.conf
# cat tmp.conf
network={
  ssid="myssid"
  #psk="mypassphrase0123456789"
  psk=df8c40a0c8c2baa2e2e500ea2512d8143c6f26f655eef6820461e273795aff3e
}

で、暗号化した結果を使って、/etc/wpa_supplicant/wpa_supplicant.confを次のように書き換える。

ctrl_interface=/var/run/wpa_supplicant
ctrl_interface_group=0
ap_scan=1
network={
  ssid="myssid"
  key_mgmt=WPA-PSK
  proto=WPA
  pairwise=CCMP
  group=CCMP
  #psk="mypassphrase0123456789"
  psk=df8c40a0c8c2baa2e2e500ea2512d8143c6f26f655eef6820461e273795aff3e
}

で、起動させてみる。

 # /etc/init.d/wpa_supplicant restart

ここまでの作業が完了したら、wpa_supplicantのサービスを起動する。

 # /sbin/service wpa_supplicant restart

さらに、wpa_supplicantのサービスが自動的に起動するように設定する

 # /sbin/chkconfig wpa_supplicant on

これで、システムを再起動後はWPA-AES設定されたアクセスポイントへ接続できる。

この場合も、ネットワークインタフェースの起動・停止は上記のGUIか、もしくは

 # /sbin/ifdown eth1	(停止)
 # /sbin/ifup eth1	(起動)

で行う。

なお、複数のESSIDに対して設定したい場合には、

 network={
 }

の部分だけを複数書けばいい。

注)オリジナルの@ITの記事では、この後、無線LAN・有線LANの切り替えに「NetworkManager」を使うところまで書いていたが、FC6に付属のヤツはどうもWPAに対応していないっぽいのでやめた。

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/982wpasupplicant.html

注2)接続時になぜかDHCPでIPが取れなかった・・・。どうやらWPAだとDHCPが取れないことがあるらしい。(未確認)

結局、DHCPを使わずシステムネットワーク設定でIPアドレス固定にしたら動くようになった。・・・まあ、動くならいいか。(3日ほど原因を探ってみたがわからなかった)

<おまけメモ>

 「Determining IP information for eth0... failed; no link present. Check cable?」

とかいうエラーが出るが、手動でdhclientするとIPがもらえる、というような状態なら、次のようにすれば動くかも。

ifcfg-eth0にcheck_link_downに関する指定を入れ、DHCPでIPをもらうときに、常にリンクしていることにしてしまう。

  DEVICE=eth0
  BOOTPROTO=dhcp
  ONBOOT=yes
  check_link_down () {
  return 1;
 }

<意味不明>

無線LANが起動中にもかかわらずネットワークにつながらない(pingが通らない)場合、

GUI(GNOMEのsystem-config-network)上で、

同じネットワークデバイス(eth1)を使う、

新たな無線LANネットワークをでっち上げる(パスワードとかも適当)と何故か繋がるようになる。

繋がった後は、でっち上げた方の設定は削除しても大丈夫。

追記:

これやったらDHCPからIPも取れるようになった。マジで意味不明。

*あまり見ていないが、ココ(http://cms.db.tokushima-u.ac.jp/DAV/organization/175608/linux.html)も参考になるかも?


2009/09/24(Thu) 音声認識の精度が上がらない・・・ [長年日記] 編集

_ [FC][Ubuntu][Linux][プロジェクト実習][研究関係]Linuxでマイクを使う

まず、マイクのジャックをPCに差し込む。

Alsamixerを開き、

「設定」-「設定」-「音量コントロールの設定」で、Microphoneにチェックを入れる。

「キャプチャ」にmicrophoneが追加されているので、ボリュームを上げ、オーディオキャプチャ(マイクの記号のヤツ)をONにする。

(スピーカの記号のヤツをONにすると、マイクから入ってきた音をそのままイヤホンに出力するようになる)

更に、captureもチェックし、ボリュームを上げてONにする。

*マイクからの入力が小さすぎる場合には、設定でmic boostを追加し、チェックを入れればいい。が、音が割れやすいので注意。

<参考までに自分の今のalsamixerの設定をメモっておく>

【録音再生】

「Master」、「headphone」、「PCM」のミュートを切り、3つともボリュームをMAXにする。

【キャプチャ】

「maicrophone」のオーディオキャプチャをONにし、(ミュート状態のままにしておく)

「capture」のミュートを切ってオーディオキャプチャをONにする。

2つともボリュームはMAX。

Line-inはオーディオキャプチャ、ミュートの両方を切にしておく。

*ちなみに、

arecord -d 3 test.wav

で録音テスト(ここでは3秒)出来る。

*音量調整ツールを開くと以前のキャプチャの設定が消えるっぽい。注意。


2009/09/25(Fri) メモるぜ! [長年日記] 編集

_ [FC][Ubuntu][Linux][プロジェクト実習][研究関係][雑記]LinuxでCDやDVDを焼きたい場合

Braseroを使うのがいちばん手っ取り早いと思う。

割とメジャーっぽいので、大抵のディストリビューションは

 # apt-get install brasero

とか

 # yum install brasero

で入れられると思う。(FC6には無かったが)

_ [FC][Ubuntu][Linux][プロジェクト実習][研究関係][雑記]Linuxで動画を見たい場合

とりあえず「VLC Media Player」を入れとけば大抵の動画は見れるはず。

Ubuntuの場合、

 # apt-get install vlc

だけで全て入る。

FCの場合、まずはyumのリポジトリにlivnaを追加する。

 # rpm -Uvh http://rpm.livna.org/livna-release.rpm

次いで、

 # yum --enablerepo=livna install vlc

を打つ。これでOK?(未確認)

*--enablerepoは、「enabled=0」と設定されているリポジトリを一時的に有効にするオプション。

*調べたところ、リポジトリからFC6用のvlcが削除されてるっぽい?

まあ、ググればソースとかrpmパッケージぐらいどっかに落ちてるだろうから、頑張れば使えるはず。頑張れ。

*FC6で上のをリポジトリとして登録したらyumが使えなくなった・・・。危険。超危険。速攻で「-e」付けてアンインストールしたぜ。

_ [FC][Linux][プロジェクト実習][研究関係][雑記]Fedora Coreのリポジトリの定義ファイルについて

/etc/yum.repos.dディレクトリにリポジトリの設定ファイルが置かれている。

ちなみに、設定の中で

 enabled=0

となっているリポジトリは普段は無効となっている。

従って、これらを使う場合には

 enable=1

とするするか、--enablerepoオプションを使う必要がある。

*リポジトリとは、インターネット上にある,ソフトウェアの倉庫のようなもの。 apt-getやyumを使うことで、ここから要求されたソフトウェアを捜し出し、適切にインストールしてくれる。

_ [Ubuntu][FC][Linux][プロジェクト実習][研究関係][雑記]RPMとdpkgについて

ある程度の経験があれば、ソースをDLしてコンパイル、インストールということもできるが、これは依存関係とか必要なパッケージの準備とかいろいろ面倒。

なので、最適化やバージョンの指定など、細かな設定が不要な場合にはRPMやdpkgといったパッケージ管理ツールを使った方が便利である。

業務とか研究ではあんまり使える機会がないけどな!

_ [FC][Linux][プロジェクト実習][研究関係][雑記]RPM(.rpm)について

RPMはRedhat系Linuxで使われているパッケージ管理ツールである。

RPMパッケージをインストールするには、「-i」オプション付きでrpmコマンドを使用する。

 # rpm -i hogehoge.rpm

が、これだと進捗情報がわからないので、普段は更に「vh」オプションも付けて、現在の状態を表示する方がいい。

 # rpm -ivh hogehoge.rpm

(-v で詳細な情報を出力、-hでインストールの進行状況を表示)

また、アップグレードの際には「-U」オプションを使う。

 # rpm -Uvh hogehoge.rpm

また、既にインストール済みのパッケージよりも古いパッケージをインストールする場合に使う「--oldpackage」、

インストール済みの他のパッケージに含まれるファイルを置き換えてしまう場合にもインストールを実行する「--replacefiles」、

インストール済みのパッケージを再インストールする場合に使う「--replacepkgs」

等があるが、別にこれらのオプションを使わなくても「--force」を使えば全てに対応できる。(強制的にパッケージをインストールするオプション)

 # rpm -i --force hogehoge.rpm

また、アンインストールしたい場合には「-e」を使えば良い。

 # rpm -e hogehoge

RPMパッケージがほかのパッケージで使用されている場合、アンインストールできないことがある。

が、「-nodeps」オプションを使うと強制的にアンインストールすることも可能。

まあ、依存関係をぶっ壊すことになるので後で困るのは目に見えているが・・・。

ちなみに、インストール済みのパッケージを調べるには、「-qa」オプション付きでrpmコマンドを実行する。

ただし、そのまま実行すると、膨大な量の情報が出てくるので、一般にはgrep等を使って必要な情報のみを取り出す。

 # rpm -qa | grep hogehoge

また、特定のrpmパッケージの情報を確認したい場合には「-qi」オプションを使う。

 # rpm -qi hogehoge

インストールされたRPMパッケージのディレクトリを調べるには、「-ql」オプションを使う。

 # rpm -ql hogehoge

また、プログラムなどがどのRPMパッケージによって入れられたのかを調べるには、「-qf」オプションを使う。

 # rpm -qf /etc/rc.d/init.d/hogehoge

ついでにいうと、実際にインストールを行わずテストだけをする「--test」というオプションもある。

 # rpm -i --test hogehoge.rpm

RPM コマンドの使い方を表示したいときには

 # rpm --help

データベースの再構築もできるぜ!

 # rpm --rebuilddb

まあ、これだけ知っていれば大丈夫のはず。

 # rpm --help

でヘルプが出せるしな!!

_ [Ubuntu][Linux][プロジェクト実習][研究関係][雑記]dpkg(.deb)について

Debian系のLinuxで使われているパッケージ管理ツール。大雑把にいえばDebian版のRPM。

パッケージのインストール

 # dpkg -i hogehoge.deb

依存関係を無視してパッケージを強制的にインストール

 # dpkg -i --force-depends hogehoge.deb

RPMと同様、-v で詳細な情報を出力、-hでインストールの進行状況を表示が可能

 # dpkg -ivh hogehoge.deb

パッケージをアンインストール(設定ファイルなどは残る)

 # dpkg -r hogehoge

設定ファイルを含めてパッケージをアンインストール。

 # dpkg --purge hogehoge

システムにインストールされているパッケージをすべて表示

 # dpkg -l

*RPMのときと同様、この場合も大量の情報が表示される可能性があるので、grepを使って調べたいものだけを表示するのが一般的。

 # dpkg -l | grep hogehoge

インストールされたパッケージのファイル名を一覧表示

 # dpkg -L ntp

特定のファイルが含まれているパッケージ名を調べる

 # dpkg -S /etc/ntp.conf

パッケージファイルの中身を一覧表示

 # dpkg -c hogehoge.deb

これもわからなければ

 # man gppk

でマニュアルが出るので、より複雑なことがしたい場合はこれを見れば良い。

まあ、最後に頼りになるのはソースをコンパイル、インストールだがな!


2009/09/27(Sun) みなぎってきた [長年日記] 編集

_ [雑記]最高位の非商業漫画

Hybrid InsectorのCapter8がいつの間にか更新されてた。

http://www.h7.dion.ne.jp/~n_circus/

こういう燃える漫画大好き。

鉄のラインバレルよりこっちの方が面白い気が・・・。

いや、なんでもない。

_ [Windows][雑記]Windowsでcapsとctrlを入れ替える

Linux(というかEmacs)を使いだすと、capsとctrlの位置を変えたくなってくる。

LinuxやMacの場合、親切にも最初からキーボードの設定でキーの位置変更が可能になっている。

が、Windowsではデフォルトではキーの位置を変えることができない。

なので、レジストリをいじるか、常駐ソフトを使う必要がある。

レジストリをいじる場合(Windows2000/XP/VISTA/7)

レジストリをいじる行為は割と危険なので、当然Administrator権限が必要。

この記事を真似て何か起きても自分は責任はとれません。自己責任で頼みます。

1.「regedit.exe」を起動する。

(「スタート」→「ファイル名を指定して実行」で、「regedit.exe」と入力)

2.ディレクトリを移動する

[HKEY_LOCAL_MACHINE] → [SYSTEM] → [CurrentControlSet] → [Control] → [Keyboard Layout]

3. Scancode Mapを作成する

編集 → 新規 → バイナリを選択し、名前を「Scancode Map」に変更

*「Scancode Map」が何であるかの詳細については自分でググってください。

ココ(http://sgry.jp/articles/scancodemap.html)とか参考になりそう。

4.「 Scancode Map」 を編集する

「Scancode Map」をクリックし、値を以下のように書き変える

0000 00 00 00 00 00 00 00 00

0008 03 00 00 00 3A 00 1D 00

0010 1D 00 3A 00 00 00 00 00

(最後の行に、0018というのが自動で加えられる)

これで、再起動後はCapsとctrlの場所が入れ替わっているはず。

元に戻したい場合は、regedit.exeを使ってレジストリに書き込んだ値を消すか、レジストリそのものを削除すればOKのはず。

キーカスタマイズが出来るようになるソフトを使う

おそらくこれが一番安全。

が、常駐させることになるので、スペックが低いと重くなるかも。

<おすすめソフト>

AltIME(http://www.vector.co.jp/soft/win95/util/se027730.html

動作OSにVISTAが含まれていないが、

AltIMEをマウスの右クリックで現れるメニューの中から、管理者権限で起動

常駐にもチェック

で、動くらしい。(未確認)

ま、正式にはVISTAでの動作は保障されていないので、使う場合はやはり自己責任で。

これ以外のキーボードユーリティソフトを探したいなら、窓の杜とかVectorに行けば、自分に最適なのが見つかるはず。


2009/09/28(Mon) 超雑記+ゲイツ的な情報いくつか [長年日記] 編集

_ [雑記]Windows×Mac×Linux

最近、研究用にLinux、必要に応じてWindows、たまにMacという環境で過ごしています。

そうすると、以前誰かに教えてもらった言葉、

Appleは「お布施」,Microsoftは「税金」

ってのが実感出来てくる訳ですよ。

まあ、

・Macは学校ので管理者権限が無い(十分に魅力が発揮できていない)

・WindowsはOSがVista(買ったタイミングが悪かった)

ってのが主な原因なんだが。

かといって、Linuxが最高かって言われると、そうとも言いきれぬ。

ま、へたれユーザの自分としてはそれぞれ適度に使っていくのがお似合いだろう、これがな。

_ [Windows][雑記]WindowsVistaのエクスプローラでFTPアップロード

1.

適当なフォルダを開き、アドレスバーに「ftp://FTPサーバーアドレス」と入力してEnterキーを押す。

2.

なにかエラーメッセージが出るかもしれないが、とりあえず無視してそのウィンドウを閉める。

3.

「Alt」キーを押し、フォルダのアドレスバーの下にメニューを表示させる。

4.

表れたメニューの中から「ファイル(E)」→「ログイン方法(A)」を選択。

5.

「ログイン方法」のウィンドウが開くので、ユーザー名とパスワードを入力し、「ログオン(L)」ボタンをクリック。

6.

認証に成功すると、FTPアップロード場所としてフォルダが開いた状態になる。

7.

後は、普段やっているみたいにドラッグ&ドロップやコピー&ペーストでファイル操作をするだけ。

エクスプローラで簡単にFTP操作ができるので意外と便利。

_ [Windows][雑記]WindowsからSAMBAサーバーに繋ぐには

Vistaの場合、左下のスタートを開き、一番下に出ているバー(検索の開始とか書いてるやつ)に、

\\sambaのIPアドレス

と入力し、エンター。

(XPの場合は「ファイル名を指定して実行」に入力してエンター)

アドレスが間違っていなければ、ログイン名とパスワードを入力するウィンドウが開くので、入力する。

これでOK。

<おまけ>

「Alt」を押してメニューを出し、「ツール」→「ネットワークドライブの割り当て」をしておくと、色々便利。

_ [Windows][雑記]Vista からSambaへユーザ認証でアクセス

未確認だが、デフォルトの状態ではSAMBAに対してId/Passが通らないらしい。

(上の直接つなぐ方法なら問題なく繋がった)

一応、ググって出てきた解決方法をメモっておく。

1.

コントロールパネルの管理ツールから「ローカルセキュリティポリシー」を開く。

(もしくはスタートメニューの検索ボックスに「secpol.msc」を入力してエンター)

2.

「セキュリティオプション」を開き、「ネットワークセキュリティ:LAN Manager認証レベル」を「NTLM応答のみ送信」にする

これでOKらしい。

_ [FC][Ubuntu][Linux][OpenRTM][プロジェクト実習][研究関係]既存のRTコンポーネントへのポート追加方法

<TimedLong型のModeという名前のインポートを追加する場合>

【*.cppファイルについて】

1.

// <rtc-template block="initializer">

の下に

m_ModeIn("Mode", m_Mode),

を追加。

  m_ModeIn("Mode", m_Mode),
  m_WavFileOut("WavFile", m_WavFile),

注)必ず末尾に「,」を付けること。

2.

// Registration: InPort/OutPort/Service
// <rtc-template block="registration">
// Set InPort buffers

の真下に

registerInPort("Mode", m_ModeIn);

を追加。

【*.hについて】

// </rtc-template>
// DataInPort declaration
// <rtc-template block="inport_declare">

の真下に

  TimedLong m_Mode;
  InPort<TimedLong> m_ModeIn;

を追加。

<TimedOctetSeq型のWavFileという名前のアウトポートを追加する場合>

【*.cppファイルについて】

1.

  // <rtc-template block="initializer">

の真下に

  m_WavFileOut("WavFile", m_WavFile),

を追加。

2.

// Set OutPort buffer

の真下に

 registerOutPort("WavFile", m_WavFileOut);

を追加。

【*.hについて】

// </rtc-template>
// DataOutPort declaration
// <rtc-template block="outport_declare">

の真下に

TimedOctetSeq m_WavFile;
OutPort<TimedOctetSeq> m_WavFileOut;

を追加。