2009年4月13日月曜日

Ubuntu:はじめての ubuntu-vm-builder:生まれて初めてKVMでゲストからホストのUSBデバイスにアクセス!

最近環境が整ったので、学期はじめのドタバタの合間に仮想化をごにょごにょっとやってみました。
# 今回の題名、嘘ではありませんが、変。
# 具体的には……何だよ、「生まれて初めて」って。

↓ubuntu-vm-builderについてはこちら
http://gihyo.jp/admin/serial/01/ubuntu-recipe/0061

参考にしたサイト
http://www.nongnu.org/qemu/qemu-doc.html
http://www.h7.dion.ne.jp/~qemu-win/qemu-doc-ja.html
http://alien.slackbook.org/dokuwiki/doku.php?id=slackware:qemu
特にこの辺↓
http://www.nongnu.org/qemu/qemu-doc.html#SEC37
http://www.h7.dion.ne.jp/~qemu-win/qemu-doc-ja.html#SEC28
#↑/proc/bus/usb と /dev/bus/usb の typo ?(3.9.2 の 3 の手順のところ)

$ chown -R 自分のユーザー名 /dev/bus/usb
などとし /dev/bus/usb 以下のファイルのパーミッションを変更するか、仮想マシンを root 権限で実行することで、ホストからゲストにUSB機器の制御を移せました。そうではない場合(一般ユーザー権限でkvmを実行し/dev/bus/usb以下のパーミッションに手をつけない場合)は/dev/bus/usb/hoge/fuga にアクセス権が無い等のメッセージが出てゲストからはUSB機器を利用出来ませんでした。
lsusbで目的のデバイスのIDを確認後、「-usbdevice host:hoge:fuga」をkvmのオプションに指定しても上手く行きますが、「-usb」のみkvmに渡してゲストOSを起動後 Ctrl+Alt+2 (←F2ではない) でQEMUのコンソールに落ち、「info usbhost」を実行、目的のデバイスを見つけた後、「usb_add host:hoge:fuga」とし、 Ctrl+Alt+1 (←F1ではない) でゲストOSに帰って、とする方が僕には使いやすく感じられました。

↑この例ではフラッシュメモリを使っています。ホストから半ば強引にUSB機器の制御を奪う感じでしたので、ホストでデバイスを利用中にゲストに制御を渡すようなこと(例えばホストでデータを書き込み中のフラッシュメモリの制御をゲストで奪うような)はしないほうが無難に思えました。

それにしても、KVM(QEMU)でゲストからホストのUSBデバイスが使えるのは新鮮でした。



< はじめての ubuntu-vm-builder で、はまったところ >

「……何か重い」

理由1:
ユーザーをグループkvmに加え忘れていた。

↓そりゃ重くもなる。
$ ls -l /dev/kvm
crw-rw----+ 1 root kvm 10, 232 2009-04-13 08:02 /dev/kvm

理由2:
メモリ割り当てが少なかった。
$ cat ./run.sh
#!/bin/sh

exec kvm -m 128 -smp 1 -drive file=disk0.qcow2 "$@"

↑ ubuntu-vm-builder のつくる ./run.sh はデフォルトでメモリを128MBしか割り当ててくれませんでした。これはデスクトップ用途には少ない量。


「……なんか変なエラー。キーボードの認識も変。」

qemu: warning: unknown keycodes `evdev(jp106)_aliases(qwerty)'

理由:
オプションの不足。kvmに渡すのに -k ja を加えたら幸せになりました。

$ ./run.sh -k ja

↓こちらを参考にしました。多謝。
http://znz.s1.xrea.com/t/?date=20090108



< その他 >
設定次第でサウンドも問題なさげです(サウンド回りはいじっていないのでこの節は当てずっぽうです)。
$env QEMU_AUDIO_DRV=pa ./run.sh --soundhw all
とかでどうだろう。

詳細は
$ kvm -soundhw ?

$ kvm -audio-help
でどうぞ。

全体的なことは
$ kvm --help

$ man kvm
で。

また、以下も参考にしました。
http://www.h7.dion.ne.jp/~qemu-win/Audio-ja.html



< 妄想 >
/usr/share/xsessions/ 以下に適当なデスクトップエントリをこさえてkvmをフルスクリーンモードで起動すればちょっとしたドッキリ。kvm終了と同時にセッションが終了するから、ゲストOSのシャットダウン=ホストOSでのログアウト。「えっ!Jaunty なのに Hardy ?」とか、「ひえぇ!Windows3.1だよぅ!」とか、エイプリルフールの仕込みに使えるかな。



< ぐふぅっ >
がー!遊んでないで溜まったTODO減らさにゃならんのに……何やってんだ自分 orz

2009年3月15日日曜日

Ubuntu:PPA:試してみた

僕のPPA。いえーっ!何か嬉しいなっ!
https://launchpad.net/~fueryuejing/+archive/ppa


水野さんとこPPAの記事レシピの46回やまねさんパッケージ作成講座と やまだあきら氏 著・鵜飼文敏氏 監修の「入門 Debianパッケージ」を参考に、手始めに ememoa を自分の PPA にほおりこんでみました。バージョンとリビジョンの書き方が相当まずい気がしているので次は上手くやらにゃ( PPA に入れたい Debian でパッケージ化されてない奴のバージョン付けってどうすんだろ?ゼロを適当に並べればいいのかな?)。

DTM関連でパッケージ化して欲しいソフトが結構あるので、Debian にパッケージ化の要望を出すのに平行して、それまでの繋ぎ程度の仕事が出来れば、と考えています。また、今後制作予定のアニメの作成時に必要/便利だがパッケージ化されていないソフトを、その都度 Debian にパッケージ化を依頼&繋ぎとして PPA にほおりこんでいこうかなぁと夢想中です。数年来、作品制作サイドとパッケージャ/開発者サイドを多少でも兼ねられれば Ubuntuコミュニティにおいて(ささやかながら)けっこう面白い仕事が出来るんじゃないかと漠然と考えては来ましたが、以前よりは具体化出来てきたように感じます。

# メモリ足らないのか SynfigStudio が立ち上がんねぇぜ。うぇーん。

作品の出来次第では Debian や Ubuntu に被害が及ぶかな〜(考えすぎ)。せめてネガティブキャンペーンにならない程度のモノが描けたら嬉しいです。

PPA は構築時の依存関係の解決に公式以外のリポジトリも突っ込めるっぽかった(Edit dependencies > Add PPA dependency で多分行けるのかな?)ので、その気になれば E17 も配布出来なくはない!出来なくはないが……色々面倒なことになりそうなので僕はパス(←ヘタレ)。

だってさ…… E17 の svn への負荷は減らせるだろうけど、LP への負荷がすごいことになるだろうし、予想される怒涛のバグレポを捌けないだろうし、プログラミング/パッケージングの知識がまだ無いに等しい現状、いざという時役立たずだし。ってことで、E17 ファンの方には日本語フォーラムにちょっとした情報を載せときました。多少の役に立てば。

っと思ったら、こんなのが。
https://launchpad.net/e17-repository
https://launchpad.net/~e17-ubuntu-maintainers
https://launchpad.net/~elbuntuteam

ちなみに E17 開発チームも LP 使ってます。
https://launchpad.net/enlightenment

他にも色々ありそうだけど、LPは僕にはまだ少し検索しにくいや。慣れの問題かな。

そうそう。ememoa は E17 の eina 構築時に利用可能なライブラリですが、パッケージングされていないと(./configure && make && sudo make install してあるだけだと) eina の構築時 deian/rules がライブラリの依存を調べる時にこけてしまい、ememoa を利用する eina を構築出来ません。で、ちょっとパッケージにしてみました。説明には「ふぁすとめもりーぷーるあろけーた」とあったので、eina の挙動が多少効率化されるのかな?

む。暇見てDebianにパッケージ化の要望を出さねば。



感想
dh_make 凄い。checkinstall に毛を生やした程度の手間でパッケージが出来てしまう。

フォーラムでのやりとりなどを見て頂ければわかると思いますが、僕の Linux やプログラミングに対する知識・技能やコミュニケーション能力、日本語能力、英語能力は大したことないです(大部分背伸びと受け売りです。でも度胸には自信ありますよ。男は度胸。それに素手で魚が獲れます……って関係ねぇ!)。そんな僕であってもパッケージを作成し配布出来る環境が既に Ubuntu に整備されていることに、先ず驚きました。

どうやらほんのちょっと、最初の一歩の勇気を出せばすぐ Ubuntu の開発に加われるようです。忙しすぎるのは疲れてしまうし、雰囲気がギスギスしてきちゃって良い仕事の敵です。
# 余裕を失うと作らなくてもいい敵をたくさんこさえてしまいますし(経験者は語る)。
だから、開発メンバは多けりゃ多いほど良いと思います。人数少なくて面子が固定していたら楽屋ネタや内輪ネタが増殖するのは極々自然な成り行き。それが開発へ参加し難い印象を与えていると感じているそこのあなた、解決法は一つ!参加しちゃえばいいんです。往々にして、分断があれば双方で悪口や誤解や軋轢が広がりますが、交流があればそうも言ってられない。愚痴りながら、悩みながらも一緒にやっていく方法を考えざるを得なくなります。そも、壁って自分で作っているもんな気がしますだよ。

ユーザーと制作と開発が分かち難いとこまで混ざっちまえばいいんだっ!



近況報告
相変わらず課題とかで死んでます。勉強の逃避にどっぱーっと Tips の翻訳したり、しなかったり。インスト専門なのに歌モノ作って自分の歌声に orz したり。

「どっぱーっ」と言えば、お腹に来る風邪で一週間ぐらい寝込みました。十数年ぶりにう○こをもらした。研究室やバスや地下鉄の中ではなくて、腹痛をこらえて帰ってきたアパートの扉の前でだったのがせめてもの救い。便所に間に合わなかった。どっぱぁーっ!……しばらく自己嫌悪です。銀魂が読めなくなりそう。

時折、掌編/ショートショート/ショートストーリー等の公募・コンテストに応募するための作品を書いてます。こうも落選が続くと挫けそうに……ならないのが僕様クオリティ。とはいえ作品のクオリティも向上させにゃ。



ではでは!

2009年1月28日水曜日

青写真:ArtWork:Ubuntu+南会津

英語フォーラムで暴れるためのネタ。

「南会津の風景・文物の写真とスケッチ」(←当然、僕の感性にとっぷりと浸り染め尽くされている)から壁紙を起こしアートワークコーナーに投稿する。調子が出てきたら調子に乗って公式リリース用の壁紙にも投稿。全世界に誤った日本像を発信し、最終的に南会津がUbuntuと地球を征する日を現実のものとする。

青写真:プログラミング:日本語コマンド&日本語Shell

パッケージ coreutils で提供されるコマンド群にラッパースクリプトを噛ませて日本語文の並びで命令可能にする。

例)
$rmよ 「hoge」を 強制的に 再帰的に 消せ

↑「rmよ」って名前の、引数の文字列を置換するスクリプトを作成。上の場合は rm -f -r hoge というコマンドラインに翻訳される。gawk&sed で作れそう。全角スペースも半角スペースと同じ扱いに出来たら入力時に楽かな?

誰かが scim-julius みたいなもんを作ってくれれば mlterm の縦書き表示と併せて呪文を唱えるようにしてPCを操れる怪しげなステキな環境が実現出来ると思う。

同様の発想で、実体は「dash+文字列置換」な日本語の語順&てにをはで記述可能なシェルを作る。(ホントは dash なんかをベースに一から組めた方がいいはずだけど)



CLI が取っつきにくい理由は色々あるけど、コマンドやシェルの構文構造が英語だからってのが見落とされているよな、と日本語プログラミング言語「なでしこ」のブースを見て気がついたのでした。

将来日本語Shell を実装する機会があれば「なでしこ」のコードを大いに参考にしたく思います。←その前にコード読めるようにならねば……道は長く険しい(泣)

# ってかコレ、既にやってる人が居そうですね。

今は LaunchPad あたりを使ってプロジェクトに出来たら面白そうだなってぼんやり思ってます。

ゆくゆくは南会津の訛りでコマンド入力可能に!
$rmよ「hoge」 消してけろ。
(↑アホ)

青写真:プログラミング:新型機人界面装置その2

ねくすとじぇねれーしょんまんましんいんたーふぇいす案其ノ弐

コンピュータは融通が効かない。相対する人間の気持ちを察することが出来ないからである。ここにPC対人間の関係性改善の余地がある。

身振り手振りや表情は「ノンバーバルコミュニケーション」の例としてよく取り上げられる。人間に共感を覚えるコンピュータを実現するには人間と非言語的に意志を疎通出来る必要がある。

その第一段階として、Webカメラを通して入力される人間のジェスチャに反応しマウスのようにポインタを移動し、あるいはクリックを再現するシステムを設計・実装しようと思う。



ハイ。またしてもぶちあげました。まぁ……内部構造が全く違う存在の間に共感が成立しうるか?と聞かれると僕も「びみょーだなぁ」と思っています。脳に於けるミラーニューロンの存在や、無理に笑顔を作っても楽しい気持ちが生じてしまうような心身の強い相関、あるいは実は身体反応が感情に先んじているのではないか、などなど、科学雑誌読んで頭に入ってきた自分の受け売り的半可通的知識に照らしても、生活感に溢れ溺れている自分の日常における実感と突き合わせても、ハード的・構造的にある程度似せて作らないとソフトウェアエミュレーションでは感覚的世界の共有は図り難いだろうなぁと感じます。逆に、ブレインマシンインターフェイスの発想をもう一歩推し進めて人間の脳をコンピュータ化するアプローチもありそうですが、お手軽な実験手段がないので僕や〜らない。

さて、実装を考える時点で死ねそうです。関連論文読み漁るところから始めるかなぁ。これにせよ前のにせよ、5年10年(あるいはもっと)単位で動いていかないと他の創作活動や本業と両立出来なそうな気配。期待せず気長に見守って下さいまし。

# 難しすぎたら諦めます orz

独学Linux様のジェダイ養成講座に刺激を受けましてアイディアスケッチをつらつらと。そうです。実はWebCamをHIDに使いたいだけなのです。

青写真:電子工作:新型機人界面装置その1

ねくすとじぇねれーしょんまんましんいんたーふぇいす案其ノ壱

媒体の物理構造・性質と記録されている情報に直接の因果はないものの、情報自体は環境との相互作用により変容し続ける。
生物的な情報(遺伝情報・神経記憶)の特徴として思いつくところである。

これとPC上の情報を比較するに、相互作用と変容の面では「体」を持たない分生物に圧倒的に劣る。例えば言葉は対応する現実があってこそのものだから、翻訳や漢字変換は「文脈」の認識の問題が常に壁となる。

言語に対する感覚や人間に対する適切な応答を持たせるために、PCに五感、あるいは身体感覚と呼べるものを与えるべきであろう。

また、文化の発生過程と子供の発育のどちらにおいても発話が文字に先んじることからも分かるように、人間同士のやりとりは聴覚への依存性が高い。よって、マンマシンインターフェイスにおける音声認識・合成は極めて重要であると考えられる。

同時に重要なものとして認識されるのが表情である。この重要性は「目は口ほどに物を言い」のことわざ一つの例示で充分に伝わることと思う。

そう。コンピュータには五感と表情と発話機能を持つ人形が接続されていて然るべきなのだ。

上記に関する先駆的実験として、物理デバイスとしてUSB接続される「何か/伺か」用シェルを暇をみて作ってみたい。



以上、フザケたデバイスの必要性を屁理屈でこじつけてみました。本気出して作るつもりではいますが、動機は笑いをとりたいからに他なりません。すなわち真顔の冗談です。

http://www.linux.or.jp/JF/JFdocs/Coffee.html
↑コレと同じノリです。今の時代に作るならBluetooth版とか、無線LAN接続版(文字通りコーヒーサーバー)とかを作ってみたいなぁと思っていたり。

Linuxは仕様が公開されていますから、アイデアと時間と執念さえあれば幾らでもネタデバイスが作れる気がしています。

がんばるぞぉっ!

※ 実のところ Asterisk のブースでネギ振ってた「はちゅね」が可愛くて自分も何か作りたくなっただけだったりします。内緒ですよ?

2009年1月26日月曜日

その他:OSC仙台でびびっと電波受信しました(^-^)/

今回はUbuntuJapaneseTeamの皆さんにお会いすることを楽しみに会場に。

OSC自体初参加だったのでとても刺激的でした。

先ず痛感したのが実際に会って初めて気がつくことの多さ。当たり前なのですが、ネットは人間の持つ感覚の内ほんの一部しか伝えてないんだなーとつくづく。特に、ある(実物はとてもお茶目で天然な)方に対する印象が音を立てて組み変わりました。

それから、新しいHNを貰いましたが使いどころがわかりません。自慢したいのにTPOがそれを許しません。

その他にも色々、当たり前のことを再認識したり。

フツーの人達がフツーに凄いことしてるんだなー、喜怒哀楽、悩んだり怒ったり笑ったりふざけたり恋したり酔っぱらったりするフツーの人達なんだなー、とか。

コミュニティーや技術や開発に傾ける情熱とか愛着とか、扱っている物事への誠実さとか。

自分の中でのUbuntuが「Ubuntu for Humanbeings」から「Ubuntu by Humanbeings」に変わった瞬間でした。

ブースを見て回り思いついた変な事々については後程。DamienOSASKAsteriskNetBSDの印象が強烈だったことを書き添えて、ひとまずは筆を置きます。