コンピュータやソフトウェアのあれこれ@道民(&元道民)
Linux
第26回北海道開発オフに参加しました
4月 3rd
3月31日(土)に行われた第26回北海道開発オフに参加しました。
なかなか自分のやりたいことにまとまった時間を取る事ができなかったので、まったりと有意義に過ごす事ができました。
シェルスクリプト事始め
Software Design 2011年3月号に載っている「シェルスクリプト事始め」の第一部を読みながら、シェルスクリプトを書いてみました。
ロジックが必要なシェルスクリプトを書いた事がなかったので、新鮮な気持ちで臨みました。
最終的に書いたのはこんな感じでファイルに実行権を与える事のできるスクリプト。
#!/bin/sh
for file
do
if [ -x $file ]
then echo "$file には実行権があります"
else echo "$file には実行権がありません"
echo -n "実行権を付与しますか?[y/n]"
read answer
case $answer in
y) chmod +x $file
echo "$file に実行権を与えました"
ls -l $file
;;
*) echo "$file は変更されませんでした"
;;
esac
fi
done
echo "$# 個のファイルを処理しました!!!"
気になった事
- 何故 if の終わりが fi なのか?
- 何故 case の終わりが esac なのか?
歴史的背景があるのかなあ。esacは覚えられない。
モチベーション3.0を読む
先日行われたAgileJapan札幌サテライト。その中の基調講演で紹介されていた本、気になったので購入しました。
講談社
売り上げランキング: 1117
手元に届いたのが開発オフの前日だったので、じっくり読みました。
まだ、第1部の途中までです。
今は「目の前に人参をぶら下げられただけでは、人間のやる気が上がらない(むしろ逆効果になることもある)」という話を事例とともに分析していっているあたりを読んでます。
開発オフの最後の発表では本に載っていた以下の2つの例を話ました。
人間は自分の利益になることであれば必ず実行する?
Aさんが1万円をBさんにあげるとします。
そのとき、AさんはBさんに条件をつけました。
- Bさんはそのお金をいくらかCさんに分けなければいけません。
- BさんがいくらCさんに分けるかはBさんの言い値で決まります。
- ここで、Bさんの言い値にCさんがOKすれば、AさんはBさんにお金を払い、BさんはCさんにお金を分けます。
- しかし、Bさんの言い値にCさんがNOと言えば、Aさんはお金をあげません。BさんCさん共にお金をもらえません。
このような条件下で実験を行ったとき、Bさんの言い値が1万円の5〜6割であれば、交渉が成立し、BさんCさん共にお金をもらえる確率は高かったのですが、Bさんの言い値が1〜2割だと、交渉が決裂し、両者ともにお金をもらえないケースが多かったそうです。
ここで、考えたいのはCさんの立場です。
Cさんは元々もらえる予定のなかったお金が手に入るわけですから、割合がいくらであっても「自分の得になる事」のはずです。
しかし、なぜ、1〜2割だと自分の利益をふいにしてしまうのでしょうか。
・・・というようなところから、「人間は利益になる事であれば必ずモチベーションが上がるのか?」という話につながっていきます。
楽しいことか仕事か?
幼稚園児を複数のグループに分け、次のような実験をしました。
1日目。あるグループには「絵を描いたらご褒美をあげるよ」と教えます。そして実際にご褒美をあげます。
別のグループにはなにも伝えず、ご褒美もあげません。
2日目。両方のグループにご褒美をあげません。
そうすると、1日目にご褒美をもらっていたグループの子供達は絵を描く事に対する意欲が少なくなったそうです。
ご褒美をもらっていないグループは2日目も楽しく絵を描いていました。
「報酬が発生する時点で、楽しいと思っていた事も仕事になる、その瞬間、内部からやりたい!と思う気持ちが薄れる?」というところから、モチベーション2.0と呼ばれる現代の「飴と鞭」のシステムのよくない点を分析していきます。
事例はだいぶはしょっているので、詳しく知りたい人はぜひ本を読んでみると良いと思います。
個人的にはこの本は小説と同じ、右開き・縦書きで、非常にしっくりと読みやすいです。
時間をみて読み進めたいと思います。
開発オフ恒例ランチ
今回もスープカレーで。カリー・ディ・サヴォイ Curry Di. SAVOY というお店に行きました。
トマトと湯葉と豆腐のスープカレーです。
湯葉としっかりした豆腐と豆腐ハンバーグみたいなものが入っており、けっこうお腹いっぱいになります。
辛かったのだけど、もう少し辛いのも食べてみたくなりました。
あと、キーマカレー気になった。
スペアリブもかなり気になった。
今回も楽しかったです。30回目指して!ゆるーく続けていきたいですね。
SSLのwebページにPOSTしても値が渡らなくなった話
2月 2nd
やあやあ。お仕事の山がひと段落して昼寝していたら怒涛の不機嫌な電話で叩き起こされた僕様ですよ。こんにちは。
SSLのwebページでフォームの値をPOSTで取得しようとしても値が取れないという謎事象。ついでにCSSが取れない、と。検索してもあまり情報当たらなかったから、メモだけ書いておきます。同じことで困った人いたら参考になれば。
環境
- apache 1.3.41 mod_ssl 2.8.31-1.3.41 openssl-0.9.8b
- 色々事情があって上げられないのです察してください
事象
- chrome/IE8 SSLのページでPOSTしてもPOST値が渡らない
- firefoxは大丈夫
- POSTリクエストの直後のGETリクエストが失敗する。apacheのerror_logを見ると、次のようになっている。
Invalid method in request hoge=&fuga=&…. GET /css/nantoka_base.css HTTP/1.1
推察
- この例だと、CSSにPOSTリクエストのパラメタを渡そうとしてしまっているが、CSSファイルはPOSTパラメタなんて受けないので、invalid methodと言ってる気がする(httpd.conf次第だけど)
- 原因はSSLの脆弱性対応でブラウザの動作が変わったこと。POSTデータの投げ方が変わった。このリクエストは受けられない方が標準から外れている。参考リンク
- httpsでバウンダリ文字列が分割されてpostされる (google groups forum)
- https ではじまる Plesk にログインできません。 (google groups forum)
- 通信を保護する「SSL/TLS」の脆弱性を突いたhttps攻撃、研究者が発表へ (セキュリティーホールmemo)
- MS12-006 SSL/TLS の脆弱性のちょっと詳しい解説 (Microsoft 日本のセキュリティチーム)
- たぶんこの、分割してPOSTっていうのに対応できてない。splitting とか fragment とか、その辺がキーワードっぽい。
対策
- chromeのフォーラムにあった「chrome に –
disable-ssl-false- startを付けて起動」を試してみたところ、期待通りの動作になったので、この問題で間違いなさそう - 可能ならApacheとかopensslとかその辺を新しくしちゃえばいい気がする
- やんごとなき理由により出来ない場合(だった)、Microsoftさんの記事の対策が僕の場合は参考になった
- サーバー側で RC4 を優先するよう設定する (Windows Server 2008, Windows Server 2008 R2)
- TLS 1.1 を使用する
- 今回はIE6を捨てられないので RC4のみを使えるようにapacheを設定したところ回避できた。以下のブラウザとりあえずOKぽい
- chrome 16.0.192.77
- IE 8.0.7601.17514
- Fx 3.6.16
- IE 6.0.2900.5512.xpsp_sp3_gdr.080814-1236 (@WindowsXP)
謎のメモ
[root@hagehgae conf]# openssl ciphers -v 'ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM:-SSLv2:!AES:!3DES' DHE-DSS-RC4-SHA SSLv3 Kx=DH Au=DSS Enc=RC4(128) Mac=SHA1 KRB5-RC4-MD5 SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=MD5 KRB5-RC4-SHA SSLv3 Kx=KRB5 Au=KRB5 Enc=RC4(128) Mac=SHA1 RC4-SHA SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=SHA1 RC4-MD5 SSLv3 Kx=RSA Au=RSA Enc=RC4(128) Mac=MD5SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM:-SSLv2:!AES:!3DES
ほか
- たぶん Lotus Notes も同じ対策ぽい
- みんな困ってない?こんな古いの使ってないって話かな
- もし誰かの役に立てばということでまあご容赦を.
- てか、とりあえずのワークアラウンドとしてはこれでいいと思うんですが、抜本的対策法(ARCFOURに絞らない)をご存じの方いらっしゃったら教えてください。
リモート接続が切れてもプログラムの実行を続ける nohup
2月 1st
未来の自分へ。
リモート接続しているサーバー上でバッチジョブを実行する際に、
$ java -jar batch.jar &
と、ただジョブをバックグラウンド処理にするだけではssh接続が切れる or ログアウトするとジョブが終了してしまう。
nohupコマンドを使うと、ジョブをプロセスとして管理することができるので、ログアウト後も処理が続行する。
$ nohup java -jar batch.jar &
コマンドを実行したディレクトリに nohup.out ファイルが作成され、処理中に出力されたメッセージは全てnohup.out に書き込まれる。
nohup.outは追記型なので、同じプログラムを複数実行する場合(テスト中など)は、実行前にnohup.outを消す/移動させるなど対応しておいたほうがよい。
nohupを忘れて時間のかかる処理を実行すると、接続切れないから身動きが取れなくなる(経験談)ので注意する。
コマンドの前にバックスラッシュをつけるとエイリアスを無効にできる
2月 1st
きっといつかまたはまるので、未来の自分に向けて残しておく。
あるデータをフォルダごと上書きコピーする必要があった。
$ cp -rp soure target
バックグラウンド処理にしたいから上書き確認を無視(強制上書き)するために -f オプションを付ける
$ cp -rfp source target
しかし、上書き確認が消えない。
CentOS系のOSの場合、エイリアス設定で -i オプションが付いているらしい。
確認
$ alias alias cp='cp -i'
以下のように書くといいとたくさんのサイトに書いてあった。
$ \cp -rfp source target
できた、できたけど、なぜなのか。気持ち悪いので理由を調べる。
\(バックスラッシュ)をつけてコマンドを実行するとエイリアスを一時的に無効にできるんですね。
しらなかったー、しらなかったー。
参考にしたサイト
http://jehupc.exblog.jp/13355017/
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/214dsblalas.html
CentOSにRubyOnRailsを導入したときにハマったところまとめ
2月 1st
達人出版会から出ている「はじめる!Rails3」を読みはじめました。
基本的に開発はMacで行うのだけど、自鯖があるので環境構築だけでもやってみようと挑戦したところいろいろハマりました。(よって今日は眠い)
環境
CentOS release 5.7 (Final)
ruby 1.9.3p0 (2011-10-30 revision 33570) [i686-linux](rvm使用)
ここに「はじめる!Rails3」通りにサンプルが実行できるよう環境を整えていきました。
sqlite
サンプルアプリ用のDBインストールでいきなり躓く。
$ sudo yum install sqlite3-devel Loaded plugins: priorities, security 144 packages excluded due to repository priority protections Setting up Install Process No package sqlite3-devel available. Nothing to do
・・・ない。
sqliteはあるけど、sqlite3はいない。
SQLite/Rubyライブラリにはsqlite3.6.16以上が必要なのだが、yumではsqlite3.3.6以上はインストールできない事が判明。
ということでSQLiteのサイトからソースコードでインストール。
CentOSの場合は「sqlite-autoconf-3071000.tar.gz」を使いました。
# wget http://www.sqlite.org/sqlite-autoconf-3071000.tar.gz # tar xzvf sqlite-autoconf-3071000.tar.gz # cd sqlite-autoconf-3071000 # ./configure # make # make install
一発で成功したー。(珍しい・・・)
ブログ「俺の作業録」を参考にさせて頂きました。ありがとうございました。
http://d.hatena.ne.jp/pirosikick/20101103/1288796756
Bundlerが使えない
gem install rails でrailsはすんなりと入った。
その後、いざ、railsアプリを作ろうと
$ rails new hinagiku
と打ったところ、何やら末尾に大量のエラーが…。
とりあえず、動くかどうかやってみようと動かしてみたところ、やっぱり動かなかった。
エラー出てたもんね。
$ rails server Could not find jquery-rails-2.0.0 in any of the sources Run `bundle install` to install missing gems.
必要なライブラリがないからbundle installをしなければいけない。
(bundlerはこの前のえにしテックカフェで知ったよ ・∀・)
$ bundle install Fetching source index for https://rubygems.org/ (略・・・)LoadError: no such file to load -- openssl (ずらずらずらとライブラリのインストールエラー)
これ、rails newした時に出ていたのと同じエラーである。
なるほど、rails new したときにbundle installしようとしてコケていたのか。
ライブラリがインストールできていないのだけど、元をたどれば「opensslがない」と。
調べてみたら、rvmでrubyをインストールする場合、opensslのオプションを付けてあげる必要があることがわかった。rvmのサイトを見ながらrubyをreinstallして解決。
$ rvm pkg install openssl $ rvm reinstall 1.9.3 --with-openssl-dir=$rvm_path/usr
このあとbundle installしたら問題なくライブラリのインストール、紐付けが行われた。
期せずしてはじめてのbundle installコマンド。
ちなみに、上記はrvmで管理しているRubyのどれかのバージョンで1回やれば大丈夫みたい。
1.9.3でrails環境を作ったあとに、rvmにインストールした1.9.2(opensslの指定なし)でrails環境作ったときにはエラーにならなかった。
JavaScriptエンジンがない?
これでサーバーは立ち上がる・・・はず・・・!
rails server は rails s でも実行できるのね、ふmふm。
$ rails s (略)/lib/ruby/gems/1.9.3/gems/execjs-1.2.4/lib/execjs/runtimes.rb: \ 45:in `autodetect': Could not find a JavaScript runtime. See https://github.com/sstephenson/execjs for a list of available runtimes.
JavaScript runtimeがない、のか。
調べてみたところ、Rails 3.1 から内部で CaffeeScript を使うようになったことで、実行時にJavaScriptランタイムが必須になったようです。
railsアプリケーションフォルダ直下にあるGemfileに
gem 'therubyracer'
を書いてbundle install。
これでRubyで使えるv8インタプリタのtherubyracerが入りましたー。
node.jsでもよかったみたい。
Macにはnode.jsが入っていたから特にエラーにならなかったのかな。
参考にさせてもらったサイト
http://d.hatena.ne.jp/kano4/20110708/javascript_runtime_error
http://d.hatena.ne.jp/kano4/20111201/javascript_runtime_error_part2
http://blog.glidenote.com/blog/2012/01/07/rails3.1-could-not-find-a-javascript-runtime./
http://www.ruby-forum.com/topic/1899392
上記を乗り越えて、自鯖でrails構築ができるようになりました!
rails sを実行してから、自鯖で開発していたらrails sしても外から簡単にアクセスすることができないじゃないと気がついたりはしたのだけど、環境構築は繰り返して勘を掴んでいくのが慣れる近道なのかも。
ちなみにMacで同じ環境を作ったのだけど、1つも躓くことなくサクっと環境が出来上がりました。
開発や学習はMacメインでやっていく予定です。
MyDNSのリニューアルに合わせてDiCEプラグインを修正
1月 30th
自宅サーバーはダイナミックDNSにMyDNS.JPを使い、DiCEをマシンに入れて、IPの変更を通知させています。
昨年9月にMyDNSが刷新されたのですが、そのタイミングでどうもDiCEの通知がうまく行っていないっぽくて。
しばらく手動で更新していたのですが、DiCEプラグインを修正すれば良い事がわかりました。
やろうやろうと後回しにしていたのですが、DiCEのプラグイン修正を行いましたのでメモしておきます。
DiCE用のプラグインファイル – MyDNS.JPのブログを参考に。
プラグインフォルダの場所
実行コマンド diced と同じ位置に plug-in フォルダがあるよ。
私の場合は
/usr/local/bin/DiCE/plug-in
※若干ディレクトリがおかしい気がする
plug-inフォルダの中にたくさんプラグインファイルがありますが、今回はMyDNS.JP.plgを変更する。
変更内容
- [Updater]Encode
EUC -> UTF-8
- [Response]
1=更新をしました 18=パスワードが違います 1=login_status = 1
↓
1=Login and IP address notify OK 18=パスワードが違います
- [Messages]
1=IPアドレスを更新しました 18=ユーザー名(マスターID)またはパスワードが無効です
↓
1=Login and IP address notify OK 18=ユーザー名(マスターID)またはパスワードが無効です
これも1が変更
1が変更になっている
これで問題なく動くようになるはずです。様子を見てみます。
通知がうまく行っていなかったらこの記事に追記します。
でも2008年から開発が止まっているソフトにIP通知を任せては行けない気がする、そもそも。
UbuntuServer on VMFusion3で???
1月 29th
UbuntuServerを11.04から11.10からアップデートしたら、
host smbus controller not enabled!
って起動時に表示されて、いまいち直せそうもないので、
11.10をクリーンインストールしてみました。
起動時に、Linuxカーネルのバージョンを選択できるのですが、
以前のバージョンだと問題ない様子。
とりあえず、問題の切り分けのためにUbuntu11.10を入れてみます。
今までの記録を漁れば、MovableTypeのテスト環境も構築できるはずだし、
足りなければ追記する予定。
これで、同じメッセージが出たら、11.04入れればいんですかね。
で、とりあえず起動してみました。
結果は、同じメッセージが出ました。
11.10だとVMFusion3じゃアレなんですかね。
それとも、11.04の頃にも出てたのかな。
UbuntuDesktopは、11.10でちゃんと動作してるっぽいんですよね。
とりあえず、様子見ます。
こっちはMovableTypeのテスト環境なので。
おやすみ。
Ubuntu on VMFusionの調子が悪い
9月 20th
Ubuntu11.04でAndroid開発環境を構築して、
とりあえず、その状態でバックアップを取ったのですが、
今日起動してみると、こんなメッセージが。
「CPU はゲスト OS によって無効にされました。」
なにそれ、コワイ。
ってな訳で、起動画面で「Previous Linux〜」を選べば起動できたので、
あーでもない、こーでもないした結果、
「アップデート・マネージャ」の設定から、
「プレリリースされたアップデート」にチェックを付けて更新すれば、
ちゃんとUbuntuが立ち上がるようになりました。
# あと、起動時にeth0がどーのこーのっていうエラーも消えてラッキー
めでたし、めでたし。
Galaxy S2+HID+Debian = Perfect Handheld Computer(後編)
9月 11th
Galaxy S2が面白くて仕方がないよシリーズの後編記事です。
前編は、IS01での挫折の顛末〜Bluetooth Keyboard + MEDIAS N-04C、そしてGalaxy S2(SC-02C)への道程についてでした。後編では、主にSC-02Cのお話が出来ればと思います。
ふつうにHIDとして使う
そんなわけで勢いで機種変更してしまったGalaxy S2、まずはHIDデバイスの使い勝手が気になります。
うん。大変快適でした。キーボードもマウスも認識するっていいよね。Androidをスマホ用OSとして認識している人にとっては、マウスポインタが表示されるという事それ自体が新鮮かもしれません。どちらかと言うと組み込み系の汎用OSという出自で捉えると納得しやすいかと思います。
リモートデスクトップクライアントにしてみる
標準状態のAndroidでも、キーボードとマウスが使えるなら、リモートデスクトップは大いに実用になるはず、と踏んでいました。
早速試してみたところ、
- まあ普通に使える
- 画面解像度が合わないのが辛い。RDPは自由な解像度を許してくれないのだろうか、あるいはクライアントアプリの問題だろうか。
- キーボードもマウスも無い状態で使うRDPよりは100倍快適と思われる
という感触でした。概ね、思惑通りです。
そんなことより、とりあえずroot
で、買って半日もしないうちに、root権限を取るための作業を始めました。そもそも、rootedであることを前提として端末を買っているので、ごく自然な流れです。
※ここから先の話は、見よう見まねでやるとGalaxy S2がゴミになる(文鎮化する)可能性が非常に高い作業ですので、わかる人には参考になるであろう程度に大雑把に書きます。読んでも判らない人には、お勧めしません。このページだけ見てやろうとしても無理です。それでもやろうということであれば、その心意気はとても良いと思いますが、壊れたことを人のせいにするような人は絶対に手を出さないようにしましょう。ジコセキニンってやつです。
作業自体は先達諸兄の足跡をなぞっただけですので、詳説はしません。要するにカスタムROMを書き込むことになります。Galaxy S2は、ht-03aのような状況で、カスタムROMはCPU電圧を調整したりディスプレイ輝度を調整したり、もろもろ手が入ったカスタムROMが何種類もある状況のようです。某巨大掲示板群の当該スレッドを読めば概ね把握できるのではないかと思います。というか僕はそこしか読んでいません。また、ROMイメージの転送方法については、ぐーぐる先生にお伺いを立てれば回答が得られる程度の難度ですので、各自で把握頂ければと思います。
それでどのイメージを転送するかという話になりますが、標準状態のGalaxy S2をちょっと触ってみて、パフォーマンス等々には全く不満を感じなかったので、あくまで標準ベースでrootだけ取れる、というイメージを書き込みました。最近は書き込みのことを「煮る」と言ったりするんでしょうか、それは一部だけでしょうか。その辺はついていけていません…。
カスタムROM制作にトライしている諸兄には篤く御礼申し上げます。
※ところで、カスタムROMを取得して導入するのって、著作権的には違法になるんでしょうか。海外ではカスタムROMを書き込みできるように開放する、といった動きもあるようで、黙認なのかなあと思っているんですが(純正ROMの製造コスト自体は端末の料金に含まれているわけだし)、もし法に触れる(あるいは誰かの迷惑になる)ようであれば、本意ではないので、このエントリは削除します。
そんなわけで無事にrootを取得できました。
なんてお手軽なんでしょう、感動的です。ハックしてる感は、全くありません。ていうかハックしてません。
Debianイメージの作成
続いて、Debian の準備を行います。基本的なアイデアはここに説明されている通りです。ざっと見てもらえればわかると思いますが、要するに
- debootstrapでarm用バイナリを指定してextのイメージファイルを作る
- 作ったイメージファイルをloopback mountして、そこにchrootする
という、それだけの話です。その筋の方なら難しくも何ともないと思います。逆に、先のページの内容を理解出来ないようだと、苦労すると思います。とはいえ、やってみないといつまで経っても出来るようにはならないので、リスクを承知でトライするのは面白いと思います。root取るのさえ失敗しなければ、この作業は失敗したところでdebianが立ち上がらないだけで、Android環境までは壊さない・・・いや/system/ を書き換えて壊そうと思えば壊せるか・・・まあたぶん、よほどじゃなきゃ壊さないと思います。知らん。
で、おいらはdebianを普段使っていないので、ESXiにさくっとdebian環境作って作業しましたよ。CDブートでいいんじゃね?とか、なんか別にCentOS上でも何とかなるんじゃね?って気もしたんですが、debianのインストールって、いま、酷く簡単だし、仮想化のおかげで物理マシンも用意しなくていいし。ラクな方に流れました。
debian.img の作り方はもう手引きの通りです。留意する点としては、
- おそらくSDカード上にイメージを配置しようと考えていると思います。ファイルシステムを確認してください。
- fat32であれば、1ファイルのサイズ上限は4GBまでです。
- 謎の数字で言うと 4194304000 ぐらいの感じです。
あとは特に何もなかった気がします。
ちなみに、armバイナリがあるディストリビューションでいまもアクティブに保守されてるのって、どれぐらい選択肢あるんだろうと思ってwikipediaを見てみたところ、うーん。Debianのほかには、GentooとSlackwareだけですか。さすがにクロスビルドする気合いはありません。
そう・・・玄箱にVineを入れていてね・・・アップデートできなくなって悲しい気持ちになってたんですよ。玄箱うぉううぉうさんのアレです。その玄箱も、半年ほど前、ものすごく忙しいさなかに華麗に逝きました。臭いからして、電源系のコンデンサとかそんな感じで。でも丸6年以上動いたのかな。彼はえらかった。
Debianイメージを端末に持ち込んでchrootする
このステップさえ乗り越えてしまえば勝ったも同然ですね。とりあえず作ったdebian.imgをscpなりで作業端末経由でSDカードに書いてあげて、端末に置いてあげて、までは誰でも出来ると思います。問題は、先の手引きで”bootdebian”として紹介されているシェルスクリプトですね。
答えは載せませんが、要点だけ
- chrootコマンド自体は、Androidマーケットからbusyboxを導入することでわき出てきます。
- 僕はStephen(Stericson)さん作のBusyBoxというのを導入しています
- このアプリはBusyBoxのInstallerということらしく、起動すると導入するBusyBoxのバージョンを選べるのですが、最初導入を選択した1.18.xのバージョンでは、chrootが導入されませんでした。
- v1.17.1 を導入するとchrootのsymlinkが出来ていました
- chrootが無くてすんげーハマった。知らんがな
- まさかyaffs2そのままでやろうって人はいないよね。/dev/block/mtdblock3 とかそのまま使おうって人はいないよね。自分の端末のmountの結果見てから考えるよね。
- そういえばext4にびびった
- Galaxy S2は内蔵ストレージと外付けストレージ(micro SD)がある
- 内蔵ストレージ: /mnt/sdcard
- micro SD: /mnt/sdcard/external_sd
- /system に書きたければ、
mount -o remount,rw -t ext4 /dev/block/mmcblk0p9 /system
大体これぐらいの情報でいけるんじゃないかと思います。行けない人はやめといた方が(略)。いやだってさあ、ここを無理に進めたとしても、X11環境をイチから作ることになるんすよ。.Xresourcesとかxinitとか@im=とか、解ってないと相当辛いと思うんですよね。。。(やったことあっても苦労する)
ちなみに僕のbootdebianは、
export img=/mnt/sdcard/external_sd/debian.img
export home_img=/mnt/sdcard/external_sd/root_home.img
:
losetup /dev/block/loop5 $img
losetup /dev/block/loop6 $home_img
:
mount -t ext2 -o noatime,nodiratime /dev/block/loop5 $mnt
mount -t ext2 -o noatime,nodiratime /dev/block/loop6 $mnt/root
ということになっております。4Gじゃ足りなかったの。
debootstrap –second-stage する
いやもうここまで来ちゃえばね。
眺めてるだけ。特に問題なく終了してくれました。
つまり、
まるっとdebianな訳です!やったね!
環境構築
正直ここから先なんてどうでもいいっていうか、もうAndroid関係ないしおまけみたいなもんです。
- とりあえず # apt-get install gnome とかやってみました(←
- sslcert の導入でコケました。$TEMPDIRが定義されていないのが問題だったので、適当に.bashrcこさえました。
mtabが無いおかげでdfコマンドが使えません。ln -s /proc/mounts /etc/mtab という大味な回避策を取ってみました。いいのかこんなんで。
- Xのビデオドライバなんてあるわけないのでvncサーバを使う。
- tightvncserverしか選択肢がないので、それで。
何か残ってた謎のメモ文字列。
# export USER=root # touch /root/.Xresources # vncserver -geometry 800x480 -depth 24 :1 (なんかパスワード訊かれるから適当に) # export DISPLAY=:1 # vncserver -kill :1 (tightvncの止め方)
gnomeは、使えなくはないんだけど重たいので、WindowManagerはXfce4に落ち着きました。あとはまあ、フォント関係(unifont ttf-kochi-gothic ttf-kochi-mincho ttf-vlgothic)導入したり、日本語入力環境整えたり、ですね。
- http://wiki.debian.org/JapaneseEnvironment
- http://www.softel.co.jp/blogs/tech/archives/2589
- http://www.h7.dion.ne.jp/~maruyosi/pasocom/debian_trial_52.html
意外と難しいのが、AndoroidアプリのVNCクライアントですね。試した中では「アンドロイドのVNC」というアプリが一番良かったです。難しさとしては、
- 2ストロークキーが入力されない
- 画面サイズが上手く指定できず全画面表示に出来ない
- マウスでアプリケーションのウインドウを掴む操作(移動、リサイズなど)が出来ない
- localhostへの通信なのに再描画が入ったりストレスを感じる
という類のモノがあると感じました。その中で一番バランスが良かったのが、アンドロイドのVNCという、直訳ロックなソフトでした。このアプリで不満なのは、Shift+Spaceが認識されないことだけです。(僕は10年前のkinput2の時代からimのスイッチをShift+Spaceでやっている。Windows/Mac環境下ではCtrl+SpaceでIMのスイッチをしている)これは、Shift+↑がなぜか認識されるので、とりあえずそっちに振り分けて妥協することにしました。いいの、非常用だし。Alt+Escとかそんな非人道的なキーよりはいいと思う。あれは指がつると思うんだ。
現状のパフォーマンス
結局どんなもんか、見てもらうのが早いでしょうか。
ごめん、ちょっと作業環境が良くなくて、あまりきれいなビデオ撮れなかったんですが、大体どの程度の感覚なのかはつかめるかと思います。
まず、sylpheed を立ち上げています。キータッチが遅いのは、手前に漫画を積んで、その上にビデオカメラを置いているから。1分前後のあたりで受信箱を開いてから少し待ちがありますが、これは3GでIMAPアクセスをしているからです。通信は全てdocomo 3Gです。
1:30あたりから、firefox (iceweasel)を立ち上げています。これは普通に新聞社サイトを閲覧しています。3G待ちの時間が多い感じですね。
最後に、3:20あたりから、OpenOffice.orgを立ち上げている感じです。
正直、sylpheed とfirefox ぐらいなら全然イケちゃうなあ、という感想です。いや、そりゃ、画面の狭さは如何ともし難いものがありますが、体感的にはPentium2-400MHzよりは早いんじゃないだろうか、と思っています。
まとめ
どうですかね。普通のキーボードとマウスがあって。画面こそ狭くて小さいけれども、これぐらいの処理能力があるコンピュータが、常に携帯できるとしたら。結構魅力的じゃないかと思うんです。正直、F-07Cよりこっちの方がいいんじゃないかと思うんです。だって、Windowsモード時にbluetooth使えないって、あんまりだよF-07C。買う気満々だったのに。
キーボードとマウスが重たいじゃん一緒じゃん、という向きもあるかと思うんですが、考えてください。スマホはいずれにせよ常に持ち歩いてますよね。なので、重量増分は0グラム。僕の場合、AC-USB(iPhone用)と、USBケーブルも常に持ち歩いているので、充電分まで含めて重量増分ナシです。で、キーボードがRBK-2000BT3で、重量は電池含まず180g。電池は単4が2本なので、おおよそ20g、それにケースで20gを見てざっくり220gぐらいでしょうか。マウスがiBuffaloのBSMLB06NWHで、重量が18g。電池2本入れて40gぐらいでしょうか。キーボードとマウスの総計で260gを持ち歩くということになります。
いかにVAIO typePが軽いとはいえ、600gはあるんです。それに、ACアダプタが100gちょいでしたか。そのほかケースだケーブルだ、と考えると、なんだかんだで800gぐらいにはなるんじゃないでしょうか。そう考えると、500gぐらいは違うわけですよ。いつも500mlペット一本無駄に持ち歩く感じな訳です。重いって。普通のPC(レツノとかMBAとか)は本体だけで1kgを軽く越えちゃいますからねえ。ACアダプタまで入れたら1.3kgでもまあ軽いんじゃないでしょうか。1kg違うわけです。
もちろん、かなり制約は厳しいです。非力だし画面は狭いし字は小さいし。でも、最低限出来ないと困ることは提供してくれている、そこに価値があると思うんです。繰り返しになりますが、計算機を使うと解ってるなら、最初っからThinkPadなりTypePなり持参すれば済む話なんですよ。まず使わないけど、最悪の場合のために・・・という理由でPCを持ち歩く事情がある人には、理解してもらえるんじゃないかと思っています。
ところで、僕の中ではGalaxy S2いじりはまだ終わっていなくて、以下のネタがあります。
- USBホストケーブルを使って
- SDカードからデジカメ画像を取り込んでflickrに上げてみる
- セルフパワーのHDDをつなげてみる
- 無理だと思うけど手当たり次第USBデバイスをつないでみる
- HDMI出力ケーブルを使って
- OpenOffice.org の Impress、またはAdobe PDFの最大化表示を使ってプレゼンに挑戦
- qemu動いたりしないかなー
- ビデオとかどうでもいいからエミュレートだけ走ってくれればなあ
- XPをRDPサーバにできれば、描画はAndroidアプリのRDPクライアントを使えばいいよね
- まあ実用になるかというと、アレだけど。
特にqemuの件は先に検証してから日記を書きたかったわけですが、いかんせん最近忙しくなってしまい、まとまった時間を取るのが1ヶ月後ぐらいになりそうなため、pendingのまま日記を上げてしまおうと思います。どなたか時間ある方いらっしゃったら、試してみませんか。すごい面白いと思うんですけど、ダメっすかね。Galaxy S2でエロゲの一本でも動かせば、それなりにインパクトのある感じになると思います。
そんなわけで、Galaxy S2、すごくいいです。Android端末、特にdocomoのAndroid端末を使っている人は、spモードメールアプリの遅さにイラッ☆と来てるに違いないと思いますが、Galaxy S2で使うと超快適です。ブラウザもtwiccaもアホみたいに早いです。iPhone3GとiPhone3GSぐらいの違いがあると思います。きっと、来年あたりは、デュアルコアCPUが主流になるんだろうなあと予感せずにはいられない一台でした。あと、スマホに関して言えば、現時点では国産はダメかもしれない。いままでいいなと思った端末は全部洋物な気がしてきました。MEDIAS(N-04C)は、いつになったら2.3に更新してもらえるんだろう。
それではみなさん、よいモバイル・ライフを。
Galaxy S2+HID+Debian = Perfect Handheld Computer(前編)
9月 11th
Galaxy S2買っちゃったー&そっこーでオモチャにしちゃった。
今回は、なんで唐突にGalaxy S2を買っちゃったのか、そこに至る経緯と、Android はそのままに、Debianのユーザランドを動かす話について書くよ。意外と長くなっちゃったので、前編はGalaxy S2(SC-02C)購入に至るまでのアレコレ、後編はSC-02Cを触ってのアレコレ、という構成になっています。
プロローグ
そもそも僕はハンドヘルドコンピュータが大好きなのです。今にして思えば、PC-9801NS/Tを背負って中学校に通ったあたりから僕のモバイルコンピューティングが始まりました。電子手帳やらpremini(初代)やらSigmarion3やらLibretto50やら、大好きなのです。Willcom D4も当然買いました。IS01も当然に乞食しました。
僕がモバイルに求めるのは、
- 何も考えずに常に持ち歩けること。
- いつ何時必要になるかわからない。
- 必要になると最初からわかっているなら、ThinkPadを持っていけばよい話でしかない
- フルコンピュータとして、一通りの事が出来ること。
- ssh接続して一通りのサーバ保守作業
- SDカード読みこんで画像をflickrに上げたりメール添付したりぐらいは出来ること
- 打ち合わせメモをストレスなく取れること
- メールを見られること。添付で付いてきた.xlsぐらいは読めること。
- I/Oは今ならUSB必須。有線LAN、外部モニタ出力は欲しい。RS-232Cあればなお可だがUSBで逃げてもよし。
- フルキーボード必須。
- マウスポインタはトラックポイント(または準ずるもの)が望ましい
- 最低電池駆動1時間
です。
これらの条件を満たすため、現在はVAIO typePを携帯しています。
この子には基本的に何も不満が無いのですが、最近これですら「重たい」と感じるようになってきました。「いつ必要になるか判らないから常時携帯していたい」ので、常に持ち歩いている訳ですが、言い換えると「9割方使わない」わけで、やっぱり使わないとなると、無駄な重量だと感じてしまうのです。歳のせいにしておきたいと思います。
そんな折、IS01でDebianが使える、という記事を見かけました。VNCをXサーバとして使うことで、X11環境も構築できるようです。
IS01でX11 環境の夢を見た
「ほうほうこれは興味深い、では僕も早速・・・」ということで、購入後一度もファームアップしていない自慢のIS01を掘り出してきてですね
MobileHackerzさん謹製「IS01 rooter」を
いやーなんてお手軽なんでしょう。もう、ハックなんて恥ずかしくて呼べないレベルまでお手軽になっちゃってます。ただの設定、ですね。だってもう、本スレのログ読む必要すら無いレベルですよ。
ありがたや。指示通りに操作するだけで何の問題もなくroot取れました。あ、01.00.07 でも問題なく特権取れてます。留意点は、せいぜい、super userは別途導入してあげないといけない、ってぐらいでしょうか。とにかく簡単すぎて、もうあまり記憶がありません。
さて、まあとにかくrootは取れたので、次はdebianのイメージを作って。。。って、このキーボード、パイプ(|)入力できないのかよ!!!!
あー、ごめん、無理。一時的にはソフトキーで逃げれるけど、、、
僕の目的は前述の通り、linuxのシェルぐらい操作出来ないと困るわけで、パイプがソフトキーとか、ちょっと考えたくないです。 ps -ax | grep hoge って入力するのに、ソフトキーボードは、ねえ。大体、外でターミナル開かないといけないってのは、割と平時な状況ではないわけでして、あんまりのんびりもしてられないわけで。
じゃあ、IS01にキーボードだけ外付けすればいいじゃん、と考えるわけです。Bluetoothキーボードをですね・・・って調べてみたら、IS01はHIDをサポートしてないんですね。そうですかそうですか。確かに、標準のキーボードとトラックボール、いいですもんね。外付けキーボードなんていらないですよね。
そんな理由でIS01にDebianを載せるのはやめちゃいました。IS01には、このまま主に車載マルチメディア端末として活躍していただこうと思います。彼がいないと、渋滞したときにNHKニュースすら見られなくて困るのです。
なぜかBluetoothキーボードを買ってMEDIAS N-04Cで活用してみる
ところで、Bluetoothの外付けキーボードを調べていくと、HID非対応、SPPプロファイル対応、という端末でも(無理やり)キーボードを使える製品というのがいくつかあるのですね。その中でも、リュウドのRBK-2000BT3あたりは、僕が使っているMEDIAS N-04Cも(非公式)対応しており、そこそこ安価なようです。打ち合わせメモぐらい取れるようになるといいなーと思い、ぽちったのが先々週?の話です。
到着したら、張り切って使うわけじゃないですか。
そんなわけで打ち合わせメモをMEDIAS N-04Cで取ってみた感想は・・・
- とりあえず使える
- 使えないわけじゃない
- Androidスマホ単体で使う事を考えたら遥かに快適だ
- キータイプに微妙についてこない事がある
- やっぱ打ち合わせメモだけ取れても仕方ないかなあ・・・
というものでした。まあ、概ね予想通りというところですね。入力を実現するためにBlueKeyboard だっけな、そういったアプリを使うのですが、キーボードの切り替えを毎回意識しなければならないのが手間なのと、タイプについてこない事があるのとがストレスかなあ、と感じました。
ここでやめておけば良かった。「ちなみに、HIDをサポートしているスマホって何があるんだろう」と、docomoの公式をつらつらと見てしまったのが悪かった。圧倒的なスペックで話題のGalaxy S2のBluetooth欄には「HID」としっかり書いてあった。そして、Galaxy S2は、既に先達により、rootedだった。この状況で、僕が物欲を抑えることが出来るだろうか。
結論から言うと、3回目のヨドバシカメラで、屈した。だって、デュアルコアだし。
書いてて思ったんですが、わりとココまで全てどーでもいい内容ですね。前後編に分けた方が、見る人にとって優しい気がしてきました。そんなわけで、全六部作は無理ですが、全二部作にしようかと思います。
つまり、後編に続きます。




















