2010年12月30日木曜日

VirtualBox でゲストからホストの生ディスクを使うには

VirtualBox では生のパーティションも扱えると聞いていたので,そっちを試してみることにする.参考にしたのは
 - 物理パーティションにインストールしたOSをVirtual Boxで使う
 - Windows 上の VirtualBox で実パーティション上の Linux を起動する
 - Using a raw host hard disk from a guest
あたり.


Step 1. 仮想ディスクの作成


 まず,vmdk 形式の仮想ディスクを作成する必要がある.VirtualBox 付属の VBoxManage コマンドを使うのだが,Linux で作成したディスクを Windows で使ったりは出来ないようだ.(出来れば楽だったんだが.もしかすると VirtualBox のバージョンが違ってたかも)

VBoxManage internalcommands createrawvmdk -filename FILE.vmdk -rawdisk /dev/sda

にて作成するが (この時はディスクにアクセスするため,root or 管理者権限が必要になる),デバイス名は Win -> "\\.\PhysicalDrive0", Mac -> "/dev/disk1" 等に読み変える.基本的にはこれで終了だが,この仮想ディスクを使っているゲスト OS から,ホスト OS で使っているパーティションにアクセスすると VirtualBox が落ちてしまうので,アクセス禁止にしておくのが無難だ.それには作成時にアクセスを許可するパーティションを指定してやればいい.今回の場合,

VBoxManage internalcommands createrawvmdk -filename FILE.vmdk -rawdisk \\.\PhysicalDrive0 -partitions 3,5,6,7,8

とやって Linux 方面にのみアクセスするようにした.この状態で起動した場合でも,p1,p2 は見えなくなるわけではなく,単にアクセスエラーになる.従って fstab を書き換える等の手間は不要だ.
パーティションを限って .vmdk を作成すると,FILE.vmdk と FILE-pt.vmdk の 2 つのファイルが出来る.多分両方必要なのだと思うが,仮想ディスクとして指定するのは FILE.vmdk のほうだ.(両ファイルを同じ場所に置くことを推奨したい)

Step 2. 新規仮想マシンの作成


 ディスクが出来たら VirtualBox を起動する.この時もディスクにアクセスするので root or 管理者権限が必要だ.新しい設定を作っていく途中で仮想ディスクとして上で作成した FILE.vmdk を指定してやれば OK.
(もっとも今回は,生 Arch が amd64 バイナリだったため,起動に失敗した.やれやれ)
 (64bit ゲストを動かすためには,設定で 64bit を選択する必要がある)

Step 3. 起動


 その状態で起動すると,不思議なことに生パーティションを使って起動できる.MBR は,/dev/sda のものが FILE.vmdk にコピーされているようだ.他サイトで説明されているように,ディスク作成時に指定してやることで好きな MBR を使うこともできる.また,読み書きするのに "-relative" オプションも不要.(ホストが Linux の時には必要?)

 速度は,仮想ディスクを使う時よりもわずかに遅いようだ.他は変るところはないと思う.


2010年12月27日月曜日

VirtualBox

Win でしか使えないハードを使う機会が増えてきたので、何度も再起動するハメになり面倒だ。そのへんをなんとかしてみようかと Virtualbox を試してみることにした。ホストは Win7 でゲストには ArchLinux と debian。
VirtualBox のインストールは簡単。インストール後はウィザードに従って設定、起動には USB CD を使ってもいいし CD-image を使ってもいい。どちらも試したが、まあ image のほうが楽かな。静かだし。

最初の難関は xorg。単に入れただけだと 800x600 (しかも遅い) で動く。メニューから "Guest Addition のインストール" を選ぶことで /dev/sr0 あたりにゲスト OS 用ツールの cd-image がセットされる。それをマウントして OS に合致したものを導入する (shell script)。Linux の場合は、カーネルモジュールをコンパイルするので、arch なら base-devel と kernel26-headers、debian なら build-essential あたりをあらかじめ入れておく。
スクリプトを動かすと、カーネルモジュールとツールがインストールされる。場所は /opt あたり。リンクも作成してくれる。vboxvideo あたりが上っている状態で xorg を動かすと、好きな解像度で GUI を使える。私の好みはフルスクリーンかな。

debian は問題なかったのだが、arch のほうは一般ユーザで xorg を起動しようとしても失敗する現象が発生.root では問題ないのでパーミッションかな?と思うがよく判らない。結局、/etc/skel に入っていた .xsession が「何もしない」設定になっていたためと判明。"exec openbox" を記載してやることで動くようになった。(まったくこんなことで時間を取られるなんざ... )

 使ってみたがなかなか速い。例の pdftoppm ベンチにしても、2 割ほど遅いぐらいで済んでいる。描画のほうも問題ないようだ。1280x764 とかの flv でもスムーズに再生する.

ところが usb メモリを読もうとしたら反応しなくなった.usb cdrom は問題ないのになあ.起動から終了まで付けていたからかな?
ファイルのやりとりには共有フォルダを使うのが良いようだ.Virtualbox の方で設定して,ゲストの Linux に入った後は "mount -t vboxsf DIRNAME /MOUNTPOINT" でマウントできる.

 後,気付いたのは,ネットの接続が遅いことか.速度が出ないというわけではなく,最初の接続に時間がかかる印象.これは設定が NAT になっているからかもしない.bridged にしてみるべきかも.

別にある Linux ホスト w2k ゲストの環境で共有フォルダを使ってみる.ホストのマネージャのほうを設定して,ゲストのほうでは「ネットワークドライブの設定」あたりで "\\vboxsrv\SHARE_NAME" みたいなかんじで割り付けしてやると使えるようになる.今迄は smbmount していたが,ずいぶん簡単だ.それに "smb 共有を解除する前に VirtulaBox を終了してしまったぁ" なんてこともおこらないし.

2010年12月20日月曜日

パスワード定期変更考察.

(「パスワード定期変更云々」を読んで の続き)

 関連のところをちょっと辿って 続パスワードの定期変更は神話なのか に到達.こちらの計算は私が考えたのと同じ.このような観点からパスワードの定期変更を考えたことはなかったのだが.なかなかにおもしろい.
例えば,全数アタックするのに「入社から退職までの」40 年 (=365*40+10 = 14610日) を必要とする強度のパスワードがあったとして,毎日パスワードを変更した場合,破られない確率は
( 1 - 1/14610 ) ^ 14610 = 0.36786685... = 36.8%
となる (これは理想値である 1/e = 0.36787944... にかなり近い).でも結局 63.2% の確率で破られるわけだ.

次に鍵空間を全部チェックできる時間と,パスワードの定期変更による破られる確率の変化について考えてみる.鍵空間を全部チェックできるだけの時間パス ワードを変更しなかった場合,破られる確率は当然 1 だ.1/2 の時間で変更した場合は 0.75.大幅に上昇する.その先は...
変更回数(探索終了までに)突破確率グラフ
1 回 (最初だけ)1.000
2 回0.750
3 回0.704
4 回0.684
5 回0.672
6 回0.665
7 回0.660
8 回0.656
...
∞ 回0.632
と,5回あたりからサチってくる.そしてどんなに頑張っても 63.2% までしか下がらない.
前提のように,パスワードをチェックし終るまでに 40 年かかる場合であれば,
8 年毎に変更すれば毎日変更するのとそう変わらない強度を保てる
ことになる.(逆にいえばそれ以上の頻度で変更しても無駄.コストに合わない)

 対して,パスワードを英数 1 文字 (= 62種類) 分増やしていたとすると鍵空間も探索時間も 62 倍になるので退職日までにチェックできるパスワードも全鍵空間の 1/62,すなわち破られる確率は 1.6% にすぎない.
しかもこの数字は,
40 年間一度もパスワードを変更しなくても達成できる
のである.
 計算機力の増加を勘案してない,とか,単に長くても辞書攻撃にやられるようなパスワードではダメ,とかいろいろあるが,基本はそんなところだ.さらに言えばこれは計算機力だけを元にしているので,/etc/passwd が可視だろうが,ログイン再試行までに wait が入るまいが関係ない.


 パスワード強度を教えてくれるサイト How Secure Is My Password? によれば,9 文字で英数のパスワードだと解析までに 42 年かかるそうなのでなかなか近い.でもここって別に文字数と文字種ばっかり見てるわけじゃないんだなあ."50% mathematics, 51% witchcraft." で予測していると書いてあるや.
IPA による試算 (2008) によれば,8 文字英数を突破するまでに 50 年とある.そんなもんかね.

計算機力は毎年上がっていくので,その時点で有効なパスワードの桁数を求めるのはなかなかやっかいだが,ちょっとだけ試算.
ムーアの法則に習って,計算機力は 1.5 年毎に倍増していくと考える.年あたりに直すと... 1.59 倍だ.対してパスワードのほうは,英数一文字 (62種類) 増やす毎に 62 倍になる.英数一文字を増やした場合,それに計算機力が追いつくには... 8.93 年かかるのか.9 年に一文字増やせば同じ強度を保っておける,と推測できる (楽観的には).
まあ計算機力の向上は単純に CPU の性能ばかりではなく,どれだけの資源を用意できるかという問題もある.最近 (?) の流行は クラウドによるパスワード解析 のようだが,こういう手法は計算機力を一気に向上させる可能性を持つ.この記事のように,パスワード n 文字を解析するのにいくら,という考え方はなかなか新鮮だ.


 うちの会社の例でいえば,パスワードの条件は「英数記号で 8 文字以上,辞書の単語は駄目」だ.IPA の試算で言えば,突破までに約 1000 年.今は半年毎に変更させられているが,この条件なら
200年毎に変更
とか
10 年毎に変更で最小文字数を一文字づつ増やす
でいいかも.

2010年12月11日土曜日

pdftoppm ベンチ.64bit と 32bit の違い他.

pdftoppm ベンチ.64bit と 32bit の違い他.

ModelCPUSpeed(GHz)OSbinarytime(sec)rate
HP Z400C2Q3.06openSUSEx86_64135.3116.3

C2Q3.06ubuntui386157.4100
Lenovo X200C2D2.67ubuntu (wubi)x86_64149.0194.3

C2D2.67archx86_64169.0171.3

C2D2.67debianamd64179.3161.5

C2D2.67debiani386289.5100
HP dc7700C2D2.4ubuntu (wubi)x86_64169.0147.5

C2D2.4ubuntu (wubi)i386249.3100
HPC (HDAMD)Opteron2ubuntux86_64310.6139.6

Opteron2archi686447.5100
Lenovo A61eAthlon X22debiani386512.6-
ubuntu が多いのは wubi を使うと (アン) インストールが簡単だから.ちょっと試すのに最適.

懸案の 32/64 bit 比較だが,確実に 64bit のほうが速い.OS の条件も揃った HP dc7700 の場合 1.5 倍,X200 に至っては 2 倍速くなっている.これだけはっきり差が出るとはなあ.64 を使わんわけにはいかんやんけ.
もひとつ心配していた X200 の速度だが,64bit の場合,Core2 系はほぼ周波数通りだった.綺麗な結果になっている.

ちなみに,windows 系だと 64bit と 32bit の速度差は 5% 程度らしい.特に乗り換えたくなる程ではないね.

※ 2010/12/31: X200 Debian amd64 と arch x86_64 の結果を追加.Ubuntu x86_64 との速度差の理由は不明.(pdftoppm のバージョンは deb: 0.12, arch: 0.14, ubu: 0.14)


2010年12月10日金曜日

「パスワード定期変更云々」を読んで


元はセキュリティホールめもの記事.

パスワード定期変更云々 を見た.

うーん... 100 日で全部試行できるとして,50 日で変更した場合,最初の 50日でクラックされない確率が 1/2.そこで変更するが,変更したパスワードが既に試したところに入る確率が 1/2.従って 100 日後に無事な確率ってのは 1/2*1/2 (=25%) なんじゃないかなあ?
一般的に言えば総当たりにかかる時間の 1/n の時間で変更するとした時,最初のターンで無事な確率は 1-1/n,次のターンで無事な確率は (1-1/n)^2... と来て,全試行時間後も無事な確率は (1-1/n)^n と.具体的に言えば,毎日変更した場合クラックされる確率は 1% = 安全な確率は 99% と.次の日も無事でいられる確率は 99% * 99% で以下同文,みたいな.

ということは複利計算なので,無限に短くパスワードを変更したとしても,1/e (約 36.8%) 以上に安全にはできない,のかな?
対してパスワードを [A-Za-z0-9] の中の一文字増やしたとすると,破られる確率が同じになるまでの時間が 62 倍になるわけだ.2 文字増やせば 3844 倍.どっちが良いか考えるまでもない.

X200, cpufreq あたり

Thinkpad X200 を Linux で使っている時,AC を繋いでいてもバッテリが外してあると CPU の周波数が最大まで上がり切らない.(P8800 の場合,1600MHz まで)

でも Windows なら OK.

2010年11月16日火曜日

Thinkpad X60s, HDD 換装

X200 の HDD を換装したので,あまった HDD を X60s へ.250 -> 320GB.そんなに小さかったっけ?
OS は XP メインでいいかなあ,ということで再インストール.

 まず,新しいディスクの最後に partition 2 (p2) として 4.5GB 程確保.古いディスクの p2 を dd でコピー.disk2disk のリカバリなので,ここにプログラムとデータが入っている./boot/grub を作って grub と grub4dos も入れておく.

 その後換装.Thinkpad なのですぐ.X60s のフタは上 (本体とは垂直の方向) に引き上げるようになってるんだよなあ.X200 と違うやん.

 再インストールのためのプログラムは WinPE で動くようになっている.ちと面倒だが usb から grub を起動,本体の grab を MBR に setup したところで再起動.
今度は本体の grub から grub4dos (grub.exe) を起動して,そこからさらに chainloader /peldr.これで修復プログラムが起動する.注意点は,usb の grub4dos から peldr を起動しようとしても認識しているディスク順が違うのでうまく起動しないこと,peldr を起動する前に p1 を削除しておかないと peldr が必要ファイルを p1 に見にいって「無いよ再起動」されてしまうことだ.

 WinPE が起動したらメニューから「工場出荷時に戻す」を選び,プリインストールアプリを最小限に設定して再インストール終了.
まとめて書くと簡単だが,試行錯誤したりアプリ標準でインストールしようとして途中で停止したりしたので,かなり時間がかかってしまった.待ち時間が多いからまだマシだけどね.

2010年11月12日金曜日

Thinkpad X200, HDD 換装

最近はディスクも安くなっているようなので X200 の HDD を交換.しかし全然使ってないよな.使うと気分悪いもんな,Lenovo のおかげで.
まあそれはそれとして,日立の 500GB,5400rpm [HTS545050B9A300] を買った.5300 円ぐらい.

 IBM Thinkpad なので換装は楽々.5 分ぐらいで終了.悩んだのはフタの開けかたかな.長方形をしているのだが,ネジがついていないほうの端は本体に差し込むかんじで爪をひっかけてあるのが判 らなかった.そのまま引こうとしたり,上にずらそうとしてみたが,ネジを抜いたら長辺方向へ引っぱるのが正解.

 まず Win7 を入れる.リカバリディスクを作成していたので,それを使って 2 時間弱で終了.設定項目はなく,終了するとパーティションが 3 つ出来ていた.sda1/1GB はリカバリソフト,sda3/10GB はよくわからんが,大きい割には空っぽく,sda2/480GB が Win7 の構成.大きさに関係なく認識してくれるのはいいが,全部 C: ってのはどうよ?

 さて,ntfsresize と fdisk で領域を空けて... と考えていると面倒になったので RIP Linux を起動して GUI の gparted を使い,一気に変更した.sda3/不明 は削除,sda2/Win7 は 64GB まで縮小,400GB 強を Linux 領域とした.
後は debian testing の CD から起動してインストールして両方の環境をちょこっといぢって終了.面倒なところはまったくない.

2010年11月6日土曜日

USBメモリのID確認

USBメモリには個有のIDがついているが,linux からそれを確認する時は,

udevadm info --query=property --name=/dev/sdb

とか.

2010年10月2日土曜日

grub2 が他のOSを探さないようにするには

sid に新しいカーネルが来ていたが,grub2 の設定で止まった.しかも止まることもあれば止まらないこともあるというのが嫌らしい.今回は 3 回目で通った.
止まる時は大抵,os-prober のあたりで止まる.そもそも私の環境では MBR に MBM を入れていて,パーティション先頭をチェーンロードするようにしているので,grub2 に全部のパーティションの面倒を見てもらう必要なんかないんだよな.余計なことをしようとした上に (時々) 止まるとか,勘弁して欲しいよ.

 /etc/grub.d/30_os-prober を見ると,GRUB_DISABLE_OS_PROBER=true で抑制できるらしい./etc/default/grub に書いておけばいいのかな?特に読み込んでいるようには見えんが.
[その後の検証によれば抑制できる]
さらにちょっとググると,os-prober は grub2 の一部ではなく別パッケージであることに気付いた.そうなんだ.迷わず remove して終了.

 update-grub2 をかけると,ずいぶんと早くなった.見えるのは sid だけ.楽々.


2010年9月25日土曜日

ポケモン相性表

google の blog には等幅フォントはないの? 

  |ノ|炎|水|電|草|氷|格|毒|地|飛|エ|虫|岩|ゴ|ド|悪|鋼|
ノ| | | | | | | | | | | | |△|×| | |△|ノ
炎| |△|△| |○|○| | | | | |○|△| |△| |○|炎
水| |○|△| |△| | | |○| | | |○| |△| | |水
--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
電| | |○|△|△| | | |×|○| | | | |△| | |電
草| |△|○| |△| | |△|○|△| |△|○| |△| |△|草
氷| |△|△| |○|△| | |○|○| | | | |○| |△|氷
--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
格|○| | | | |○| |△| |△|△|△|○|×| |○|○|格
毒| | | | |○| | |△|△| | | |△|△| | |×|毒
地| |○| |○|△| | |○| |×| |△|○| | | |○|地
--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
飛| | | |△|○| |○| | | | |○|△| | | |△|飛
エ| | | | | | |○|○| | |△| | | | |×|△|エ
虫| |△| | |○| |△|△| |△|○| | |△| |○|△|虫
--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
岩| |○| | | |○|△| |△|○| |○| | | | |△|岩
ゴ|×| | | | | | | | | |○| | |○| |△|△|ゴ
ド| | | | | | | | | | | | | | |○| |△|ド
--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
悪| | | | | | |△| | | |○| | |○| |△|△|悪
鋼| |△|△|△| |○| | | | | | |○| | | |△|鋼
  |ノ|炎|水|電|草|氷|格|毒|地|飛|エ|虫|岩|ゴ|ド|悪|鋼|

2010年8月19日木曜日

flashlight 購入

自転車用の懐中電灯を買った.4Sevens から通販.LED フラッシュライトに関心のないかたはご存知ないと思うが,それなりに有名なメーカー (およびサイト) である.
 サイトから注文して,次の日には発送のお知らせが入っていた.早い.そしてそれがちょうど 2 週間で届いた."2-6 weeks for international orders to arrive" と書いてあったので,最短の部類だ.払いは paypal."Declared Value: $ 90" (申告価額 $90) だったので,関税も無料.この手の製品の場合,関税がかかるのは 1 万円以上から,らしい.
 買ったのは 4Sevens Quark Mini AA (1AA, R5) と Fenix LD20 (2AA, R4).単三電池 1 本 / 2 本の,オーソドックスなやつである.LED も Cree の XP-G R5/R4 だ.Cree ってのは LED フラッシュライトに関(ry まあ有名どころである.

 明るさについては,最近のフラッシュライトはルーメン を使って統一的に表示するようだ (それでも LED から出た時の値なのか,反射板,レンズ等を通過後の値なのか,といった違いはあるようだが).ルーメンは,人間の目の周波数感度を考えに入れた明るさ,と いったところだろうか.人間の目は黄色あたりに最大感度があるので,そのへんの周波数の光であればエネルギーが小さくても明るく見えるし,逆に青には感度 が低いので,エネルギーとして大きくてもあまり明るくは感じられない.そこを考慮した明るさ,ということだ.
 今回買ったうちで最高の光度は LD20 の 205lm だが,正直半分の 105lm と比べてそんなに明るいかというと微妙.人間の感覚はべき乗でしか効かないので,エネルギーが倍になっても 1.3 倍にしか感じない... とかそのあたりだと思う.

 今,日常使いのキーライトが LED LENSER V2 Micro,自転車用ライトが CATEYE HL-EL510 なのだが,前者は単4 x 1本で 10h,単3 x 4本で 60h のランタイムと書いてある.
新旧のライトと (感覚で) 比べてみるに,V2 Micro のほうは Quark Mini AA の 25lm (8h) あたり,HL-EL510 のほうは LD20 の 50lm (11h) あたりに相当するように思う.電池の違いを考えても新しい分のランタイムが短いように思うが,旧の分がダラダラと暗くなっていくのに対して,新の分は最後 まで明るさが落ちないコンバータを使っているため,まあ妥当なところではないだろうか.HL-EL510 なんて 10~20h も使えば電池交換をしてしまいたくなるぐらいだし.

 さて,LD20 のほうは LED っぽい青白な色なのだが,Quark Mini AA のほうは "Neutral-white" を選択した.
そもそもなぜ LED が青白い色をしているかというと,基本的に高いエネルギーを出せる LED というのが青色発光ダイオードしかないからだ.人間の目には青は見難いので,蛍光塗料 (YAG 系とか) を塗って周波数変換して白っぽく見せているのである.このへんは通常の蛍光灯なんかも同じ仕組みだ.水銀蒸気中で放電すると紫外線が出るが,それを蛍光塗料で可視光にしているのである.
LED の場合,効率的な問題からだと思うが,青と黄色にピークを持つような出力特性にして,その混合光が白く見えるようにしてある.-> Cool and Warm White LED Comparison
cool white とあるのが通常の白色 LED だ.450nm と 570nm にピークがあるのが判ると思う.これが混ざると白に見えるのだが,450nm のピークのほうが高いので色温度としては高く見える.だいたい 6500K あたりになるようだ.(でも,新品の電池でオーバードライブになっていると 9000K ぐらいには感じる)
対して Neutral White や Warm White の LED は,青のピークを低く押さえて黄色のピークが赤のほうにずれるように調整をしている.その分エネルギー的にはロスがあるが,色温度は Neutral 4000K / Warm 3700K (Cree の場合) 程になり,なんというか電球色っぽくなる.[こちらの色のほうが,より見やすいと評価する人も多い]
感覚的な話しかできないが,通常の 6500K の光というのは,数値からすると太陽光と同じ温度であるが,やはり青く感じる.電球色のほうが目に優しい感じ.このへんは暗いところにおける人間の脳のホワイトバランスの問題かもしれない.

2010年8月11日水曜日

debian の grep が遅い

debian 系 の grep -i はマルチバイトで遅い.
GREP_USE_DFA=1
を設定しておけば OK.

2010年8月4日水曜日

google 測地系

 google 測地系
+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 + k=1.0 +units=m +nadgrids=@null +no_defs

2010年7月20日火曜日

ダウンロード窓をタブで開くには (Firefox)

chrome://mozapps/content/downloads/downloads.xul
へアクセス.

2010年5月20日木曜日

とりあえず

再開してみる.
タイトルには特に意味はない.